<?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>109501</bug_id>
          
          <creation_ts>2013-02-11 15:26:30 -0800</creation_ts>
          <short_desc>Remove web intents code</short_desc>
          <delta_ts>2013-02-12 07:48:46 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>109586</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nico Weber">thakis</reporter>
          <assigned_to name="Nico Weber">thakis</assigned_to>
          <cc>abarth</cc>
    
    <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>830207</commentid>
    <comment_count>0</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2013-02-11 15:26:30 -0800</bug_when>
    <thetext>Remove web intents code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830210</commentid>
    <comment_count>1</comment_count>
      <attachid>187696</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2013-02-11 15:27:49 -0800</bug_when>
    <thetext>Created attachment 187696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830225</commentid>
    <comment_count>2</comment_count>
      <attachid>187700</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2013-02-11 15:32:30 -0800</bug_when>
    <thetext>Created attachment 187700
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830227</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 15:34:12 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830248</commentid>
    <comment_count>4</comment_count>
      <attachid>187700</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-11 15:49:40 -0800</bug_when>
    <thetext>Comment on attachment 187700
Patch

Yay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830255</commentid>
    <comment_count>5</comment_count>
      <attachid>187700</attachid>
    <who name="Dan Beam">dbeam</who>
    <bug_when>2013-02-11 15:52:22 -0800</bug_when>
    <thetext>Comment on attachment 187700
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        See thread &quot;Removing ENABLE(WEB_INTENTS) code&quot; on webkit-dev.

here&apos;s a link to the thread if you&apos;d like to include it in your ChangeLog entry - https://lists.webkit.org/pipermail/webkit-dev/2013-January/023537.html (seems easier to follow than &quot;see &lt;thread title&gt;&quot;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830317</commentid>
    <comment_count>6</comment_count>
      <attachid>187700</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 16:41:34 -0800</bug_when>
    <thetext>Comment on attachment 187700
Patch

Clearing flags on attachment: 187700

Committed r142549: &lt;http://trac.webkit.org/changeset/142549&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830318</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 16:41:39 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187696</attachid>
            <date>2013-02-11 15:27:49 -0800</date>
            <delta_ts>2013-02-11 15:32:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109501-20130211152435.patch</filename>
            <type>text/plain</type>
            <size>178749</size>
            <attacher name="Nico Weber">thakis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2QwOGRkNmM3OWUyOTYw
ZDBjMWQyYzdkMjM2OGZlNzRiMmViMGM4Mi4uMzdmNDc0MGY3OWIwM2NiYmJkNTlmODIzYjRlOGI4
YWYwZjA1ZWUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEzLTAyLTExICBOaWNv
IFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW1vdmUgd2ViIGludGVu
dHMgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA5NTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2VlIHRocmVhZCAiUmVtb3ZpbmcgRU5BQkxFKFdFQl9JTlRFTlRTKSBjb2RlIiBvbiB3ZWJraXQt
ZGV2LgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1bGVz
L2ludGVudHMvRE9NV2luZG93SW50ZW50cy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy9pbnRlbnRzL0RPTVdpbmRvd0ludGVudHMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L2ludGVudHMvRE9NV2luZG93SW50ZW50cy5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy9pbnRlbnRzL0RlbGl2ZXJlZEludGVudC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy9pbnRlbnRzL0RlbGl2ZXJlZEludGVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
aW50ZW50cy9EZWxpdmVyZWRJbnRlbnQuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
aW50ZW50cy9JbnRlbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvaW50ZW50cy9J
bnRlbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ludGVudHMvSW50ZW50LmlkbDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy9pbnRlbnRzL0ludGVudFJlcXVlc3QuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL2ludGVudHMvSW50ZW50UmVzdWx0Q2FsbGJhY2suaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ludGVudHMvSW50ZW50UmVzdWx0Q2FsbGJhY2suaWRs
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvaW50ZW50cy9OYXZpZ2F0b3JJbnRlbnRzLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ludGVudHMvTmF2aWdhdG9ySW50ZW50cy5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvaW50ZW50cy9OYXZpZ2F0b3JJbnRlbnRzLmlk
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL2dl
bmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlcyk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50ZW50Q3VzdG9tLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBodG1sL0hUTUxJbnRlbnRFbGVtZW50LmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBodG1sL0hUTUxJbnRlbnRFbGVtZW50Lmg6IFJlbW92ZWQuCisgICAgICAg
ICogaHRtbC9IVE1MSW50ZW50RWxlbWVudC5pZGw6IFJlbW92ZWQuCisgICAgICAgICogbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAg
ICAgICAoRW1wdHlGcmFtZUxvYWRlckNsaWVudCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5pZGw6CisKIDIwMTMtMDItMDYgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtWOF0gUmVuYW1lIGlzb2xhdGVkKCkgdG8gZ2V0V29ybGQoKSwgcmVuYW1l
IHdvcmxkRm9yRW50ZXJlZENvbnRleHRJZklzb2xhdGVkKCkgdG8gd29ybGRGb3JFbnRlcmVkQ29u
dGV4dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDM1YTBhN2RmNDBiMzQyM2E0NDdm
ZTgwN2QzODJmZTE1NTg0YWY5NDkuLjAwNTg3ZWNkNGVkYjA0NWRhODA4MTc1ZGMxZTBjYjFlMjIy
NDY1NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTMt
MDItMTEgIE5pY28gV2ViZXIgIDx0aGFraXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbW92
ZSB3ZWIgaW50ZW50cyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDk1MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTZWUgdGhyZWFkICJSZW1vdmluZyBFTkFCTEUoV0VCX0lOVEVOVFMpIGNvZGUi
IG9uIHdlYmtpdC1kZXYuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIGZlYXR1
cmVzLmd5cGk6CisgICAgICAgICogcHVibGljL1dlYkRlbGl2ZXJlZEludGVudENsaWVudC5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZS5oOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYkZyYW1lKToKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogcHVibGljL1dlYkludGVudC5oOiBSZW1vdmVk
LgorICAgICAgICAqIHB1YmxpYy9XZWJJbnRlbnRSZXF1ZXN0Lmg6IFJlbW92ZWQuCisgICAgICAg
ICogcHVibGljL1dlYkludGVudFNlcnZpY2VJbmZvLmg6IFJlbW92ZWQuCisgICAgICAgICogcHVi
bGljL1dlYlJ1bnRpbWVGZWF0dXJlcy5oOgorICAgICAgICAoV2ViUnVudGltZUZlYXR1cmVzKToK
KyAgICAgICAgKiBzcmMvRGVsaXZlcmVkSW50ZW50Q2xpZW50SW1wbC5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogc3JjL0RlbGl2ZXJlZEludGVudENsaWVudEltcGwuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChGcmFtZUxvYWRlckNsaWVudEltcGwpOgorICAg
ICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwu
aDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJGcmFtZUltcGwpOgorICAgICAgICAq
IHNyYy9XZWJJbnRlbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9XZWJJbnRlbnRSZXF1
ZXN0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvV2ViSW50ZW50U2VydmljZUluZm8uY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwOgorCiAyMDEz
LTAyLTEwICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W2Nocm9taXVtXSBFbmFibGUgbW9yZSBvZiB3ZWJraXRfdW5pdF90ZXN0cyBpbiBjb21wb25lbnQg
YnVpbGRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA5OWNiNGY4ZjJlMTk5MmU1
NzVkYmRmNzQ3MGY0NjA1NmQ0OGViMTQ3Li4wYTU5ZDU5ZWE0OTBiNGIwZmVmY2YwMzMzMzA2OGZl
OWIxOGYyYzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTk3Nyw3ICs5Nzcs
NiBAQCBJRExfSU5DTFVERVMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2dhbWVwYWQgXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbiBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL2luZGV4ZWRkYiBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ludGVudHMgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXNvdXJjZSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbmV0d29ya2luZm8gXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0RPTVdpbmRvd0ludGVudHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0RPTVdpbmRvd0ludGVudHMuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmJhNTkxOTBmZDcyZDA3NjM5MzQ1NjA5NGJi
NDhjNWNlMWNjZWM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9ET01XaW5kb3dJbnRlbnRzLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRPTVdpbmRvd0ludGVudHMuaCIKLQotI2lm
IEVOQUJMRShXRUJfSU5URU5UUykKLQotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgotI2luY2x1ZGUg
IkRlbGl2ZXJlZEludGVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLURPTVdpbmRvd0lu
dGVudHM6OkRPTVdpbmRvd0ludGVudHMoRE9NV2luZG93KiB3aW5kb3cpCi0gICAgOiBET01XaW5k
b3dQcm9wZXJ0eSh3aW5kb3ctPmZyYW1lKCkpCi17Ci19Ci0KLURPTVdpbmRvd0ludGVudHM6On5E
T01XaW5kb3dJbnRlbnRzKCkKLXsKLX0KLQotY29uc3QgY2hhciogRE9NV2luZG93SW50ZW50czo6
c3VwcGxlbWVudE5hbWUoKQotewotICAgIHJldHVybiAiRE9NV2luZG93SW50ZW50cyI7Ci19Ci0K
LURPTVdpbmRvd0ludGVudHMqIERPTVdpbmRvd0ludGVudHM6OmZyb20oRE9NV2luZG93KiB3aW5k
b3cpCi17Ci0gICAgQVNTRVJUKHdpbmRvdyk7Ci0gICAgRE9NV2luZG93SW50ZW50cyogc3VwcGxl
bWVudCA9IHN0YXRpY19jYXN0PERPTVdpbmRvd0ludGVudHMqPihTdXBwbGVtZW50PERPTVdpbmRv
dz46OmZyb20od2luZG93LCBzdXBwbGVtZW50TmFtZSgpKSk7Ci0gICAgaWYgKCFzdXBwbGVtZW50
KSB7Ci0gICAgICAgIHN1cHBsZW1lbnQgPSBuZXcgRE9NV2luZG93SW50ZW50cyh3aW5kb3cpOwot
ICAgICAgICBwcm92aWRlVG8od2luZG93LCBzdXBwbGVtZW50TmFtZSgpLCBhZG9wdFB0cihzdXBw
bGVtZW50KSk7Ci0gICAgfQotICAgIHJldHVybiBzdXBwbGVtZW50OwotfQotCi1EZWxpdmVyZWRJ
bnRlbnQqIERPTVdpbmRvd0ludGVudHM6OndlYmtpdEludGVudChET01XaW5kb3cqIHdpbmRvdykK
LXsKLSAgICByZXR1cm4gZnJvbSh3aW5kb3cpLT53ZWJraXRJbnRlbnQoKTsKLX0KLQotRGVsaXZl
cmVkSW50ZW50KiBET01XaW5kb3dJbnRlbnRzOjp3ZWJraXRJbnRlbnQoKQotewotICAgIHJldHVy
biBtX2ludGVudC5nZXQoKTsKLX0KLQotdm9pZCBET01XaW5kb3dJbnRlbnRzOjpkZWxpdmVyKFBh
c3NSZWZQdHI8RGVsaXZlcmVkSW50ZW50PiBpbnRlbnQpCi17Ci0gICAgaWYgKCFmcmFtZSgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX2ludGVudCA9IGludGVudDsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0RPTVdpbmRvd0ludGVudHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9ET01XaW5kb3dJbnRlbnRzLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwOTVmZTVmNjNlNTEzYzYyZWUyMzVjYThjNzNkYzQ2NjQ4
OWVlMzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0RPTVdpbmRvd0ludGVudHMuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBE
T01XaW5kb3dJbnRlbnRzX2gKLSNkZWZpbmUgRE9NV2luZG93SW50ZW50c19oCi0KLSNpZiBFTkFC
TEUoV0VCX0lOVEVOVFMpCi0KLSNpbmNsdWRlICJET01XaW5kb3dQcm9wZXJ0eS5oIgotI2luY2x1
ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRE9N
V2luZG93OwotY2xhc3MgRGVsaXZlcmVkSW50ZW50OwotCi1jbGFzcyBET01XaW5kb3dJbnRlbnRz
IDogcHVibGljIERPTVdpbmRvd1Byb3BlcnR5LCBwdWJsaWMgU3VwcGxlbWVudDxET01XaW5kb3c+
IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5ET01XaW5kb3dJbnRlbnRzKCk7Ci0gICAgc3RhdGlj
IERPTVdpbmRvd0ludGVudHMqIGZyb20oRE9NV2luZG93Kik7Ci0KLSAgICBzdGF0aWMgRGVsaXZl
cmVkSW50ZW50KiB3ZWJraXRJbnRlbnQoRE9NV2luZG93Kik7Ci0KLSAgICB2b2lkIGRlbGl2ZXIo
UGFzc1JlZlB0cjxEZWxpdmVyZWRJbnRlbnQ+KTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBE
T01XaW5kb3dJbnRlbnRzKERPTVdpbmRvdyopOwotCi0gICAgRGVsaXZlcmVkSW50ZW50KiB3ZWJr
aXRJbnRlbnQoKTsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKLQot
ICAgIFJlZlB0cjxEZWxpdmVyZWRJbnRlbnQ+IG1faW50ZW50OwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTKQotCi0jZW5kaWYgLy8g
RE9NV2luZG93SW50ZW50c19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
dGVudHMvRE9NV2luZG93SW50ZW50cy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVu
dHMvRE9NV2luZG93SW50ZW50cy5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYz
N2MxNGQ0M2IwMzAyODU2NTEzYjZmZjI4YTUyYjJiMDQyYzZiNDEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRl
bnRzL0RPTVdpbmRvd0ludGVudHMuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCX0lOVEVOVFMs
Ci0gICAgU3VwcGxlbWVudGFsPURPTVdpbmRvdwotXSBpbnRlcmZhY2UgRE9NV2luZG93SW50ZW50
cyB7Ci0gICAgW1Y4RW5hYmxlZEF0UnVudGltZV0gYXR0cmlidXRlIEludGVudENvbnN0cnVjdG9y
IFdlYktpdEludGVudDsKLQotICAgIFtSZXBsYWNlYWJsZSwgVjhFbmFibGVkQXRSdW50aW1lXSBy
ZWFkb25seSBhdHRyaWJ1dGUgRGVsaXZlcmVkSW50ZW50IHdlYmtpdEludGVudDsKLX07Ci0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9EZWxpdmVyZWRJbnRlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0RlbGl2ZXJlZEludGVudC5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwZDhjYTNlYjY4Yjc0N2E1OGFjZDIxM2Yx
YzQ5YzU4NmI3MjRkOGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0RlbGl2ZXJlZEludGVudC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUsIEluYy4gKCJHb29nbGUiKSBub3IgdGhlIG5h
bWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0g
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkRlbGl2ZXJlZEludGVudC5oIgotCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotCi0jaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiRnJh
bWUuaCIKLSNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGFzc1JlZlB0cjxEZWxpdmVyZWRJ
bnRlbnQ+IERlbGl2ZXJlZEludGVudDo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgUGFzc093blB0cjxE
ZWxpdmVyZWRJbnRlbnRDbGllbnQ+IGNsaWVudCwgY29uc3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0
IFN0cmluZyYgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgUGFzc093
blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYg
ZXh0cmFzKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVsaXZlcmVkSW50ZW50KGZyYW1l
LCBjbGllbnQsIGFjdGlvbiwgdHlwZSwgZGF0YSwgcG9ydHMsIGV4dHJhcykpOwotfQotCi1EZWxp
dmVyZWRJbnRlbnQ6OkRlbGl2ZXJlZEludGVudChGcmFtZSogZnJhbWUsIFBhc3NPd25QdHI8RGVs
aXZlcmVkSW50ZW50Q2xpZW50PiBjbGllbnQsIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBT
dHJpbmcmIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5
PiBwb3J0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+JiBleHRyYXMpCi0gICAgOiBJbnRlbnQoYWN0aW9uLCB0eXBlLCBkYXRh
LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PigpLCBleHRyYXMsIEtVUkwoKSwg
VmVjdG9yPEtVUkw+KCkpCi0gICAgLCBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIoZnJhbWUpCi0g
ICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX3BvcnRzKHBvcnRzKQotewotfQotCi12b2lk
IERlbGl2ZXJlZEludGVudDo6ZnJhbWVEZXN0cm95ZWQoKQotewotICAgIEZyYW1lRGVzdHJ1Y3Rp
b25PYnNlcnZlcjo6ZnJhbWVEZXN0cm95ZWQoKTsKLSAgICBtX2NsaWVudC5jbGVhcigpOwotfQot
Ci1NZXNzYWdlUG9ydEFycmF5KiBEZWxpdmVyZWRJbnRlbnQ6OnBvcnRzKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9wb3J0cy5nZXQoKTsKLX0KLQotU3RyaW5nIERlbGl2ZXJlZEludGVudDo6Z2V0
RXh0cmEoY29uc3QgU3RyaW5nJiBrZXkpCi17Ci0gICAgcmV0dXJuIGV4dHJhcygpLmdldChrZXkp
OwotfQotCi12b2lkIERlbGl2ZXJlZEludGVudDo6cG9zdFJlc3VsdChQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSkKLXsKLSAgICBpZiAoIW1fY2xpZW50KQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBtX2NsaWVudC0+cG9zdFJlc3VsdChkYXRhKTsKLX0KLQotdm9pZCBEZWxp
dmVyZWRJbnRlbnQ6OnBvc3RGYWlsdXJlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBkYXRhKQotewotICAgIGlmICghbV9jbGllbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1f
Y2xpZW50LT5wb3N0RmFpbHVyZShkYXRhKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbnRlbnRzL0RlbGl2ZXJlZEludGVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbnRlbnRzL0RlbGl2ZXJlZEludGVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAyM2E5NjJhNmFmODhhN2VkMGM5NzE2NThlNDE1NTNiMmQ5MjBmODcxLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW50ZW50cy9EZWxpdmVyZWRJbnRlbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0g
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSwgSW5jLiAoIkdvb2dsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0g
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIERlbGl2ZXJlZEludGVudF9oCi0jZGVmaW5lIERlbGl2ZXJlZEludGVudF9oCi0KLSNp
ZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0KLSNpbmNsdWRlICJGcmFtZURlc3RydWN0aW9uT2JzZXJ2
ZXIuaCIKLSNpbmNsdWRlICJJbnRlbnQuaCIKLSNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgotI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZyYW1lOwotY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOwotCi0vLyBKUyBjYWxscyB0byBwb3N0UmVzdWx0L3Bvc3RGYWlsdXJlIG9uIERlbGl2ZXJl
ZEludGVudCB3aWxsIGJlIGZvcndhcmRlZCAKLS8vIHRvIHRoaXMgY2xpZW50IGludGVyZmFjZS4g
VGhlIG9iamVjdCBpcyBvd25lZCBieSB0aGUgRGVsaXZlcmVkSW50ZW50IHRvCi0vLyB3aGljaCBp
dCBpcyBhdHRhY2hlZCwgYW5kIHdpbGwgYmUgZGVsZXRlZCB3aGVuIHRoZSBkZWxpdmVyZWQgaW50
ZW50IHdpbGwgaXNzdWUKLS8vIG5vIGZ1cnRoZXIgY2FsbHMgdG8gaXQuIEJlZm9yZSB0aGF0IHBv
aW50LCB0aGUgZGVzdHJveSgpIG1ldGhvZCBpcyBpbnZva2VkLgotY2xhc3MgRGVsaXZlcmVkSW50
ZW50Q2xpZW50IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5EZWxpdmVyZWRJbnRlbnRDbGllbnQo
KSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBwb3N0UmVzdWx0KFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RGYWlsdXJlKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKSA9IDA7Ci19OwotCi1jbGFzcyBE
ZWxpdmVyZWRJbnRlbnQgOiBwdWJsaWMgSW50ZW50LCBwdWJsaWMgRnJhbWVEZXN0cnVjdGlvbk9i
c2VydmVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWxpdmVyZWRJbnRlbnQ+
IGNyZWF0ZShGcmFtZSosIFBhc3NPd25QdHI8RGVsaXZlcmVkSW50ZW50Q2xpZW50PiwgY29uc3Qg
U3RyaW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKTsK
LQotICAgIHZpcnR1YWwgfkRlbGl2ZXJlZEludGVudCgpIHsgfQotCi0gICAgTWVzc2FnZVBvcnRB
cnJheSogcG9ydHMoKSBjb25zdDsKLSAgICBTdHJpbmcgZ2V0RXh0cmEoY29uc3QgU3RyaW5nJiBr
ZXkpOwotICAgIHZvaWQgcG9zdFJlc3VsdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gZGF0YSk7Ci0gICAgdm9pZCBwb3N0RmFpbHVyZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gZGF0YSk7Ci0KLSAgICB2b2lkIHNldENsaWVudChQYXNzUmVmUHRyPERlbGl2ZXJl
ZEludGVudENsaWVudD4pOwotCi0gICAgdmlydHVhbCB2b2lkIGZyYW1lRGVzdHJveWVkKCkgT1ZF
UlJJREU7Ci0KLXByaXZhdGU6Ci0gICAgRGVsaXZlcmVkSW50ZW50KEZyYW1lKiwgUGFzc093blB0
cjxEZWxpdmVyZWRJbnRlbnRDbGllbnQ+LCBjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3Ry
aW5nJiB0eXBlLAotICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4sCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jik7Ci0KLSAgICBPd25QdHI8RGVsaXZl
cmVkSW50ZW50Q2xpZW50PiBtX2NsaWVudDsKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4g
bV9wb3J0czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCi0KLSNlbmRp
ZiAvLyBJbnRlbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRz
L0RlbGl2ZXJlZEludGVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvRGVs
aXZlcmVkSW50ZW50LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzlhMGYxN2Fk
YTE3ODdmMzBkMGRkMTAxZjRjNmJjN2M4NWZmYzAwNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvRGVs
aXZlcmVkSW50ZW50LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1b
Ci0gICAgQ29uZGl0aW9uYWw9V0VCX0lOVEVOVFMsCi1dIGludGVyZmFjZSBEZWxpdmVyZWRJbnRl
bnQgOiBJbnRlbnQgewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydEFycmF5IHBv
cnRzOwotCi0gICAgW1RyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbF0gRE9NU3RyaW5nIGdl
dEV4dHJhKGluIERPTVN0cmluZyBrZXkpOwotICAgIHZvaWQgcG9zdFJlc3VsdChpbiBTZXJpYWxp
emVkU2NyaXB0VmFsdWUgcmVzdWx0KTsKLSAgICB2b2lkIHBvc3RGYWlsdXJlKGluIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSByZXN1bHQpOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW50ZW50cy9JbnRlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRz
L0ludGVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4OGU1ZDg5OTBhYzhl
MWFiMWJlNThiZDM3YzFhYjQwNWIxYWQ5ZDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlLCBJbmMuICgiR29vZ2xlIikgbm9yIHRo
ZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJJbnRlbnQuaCIKLQotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLQotI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgotI2luY2x1ZGUgIlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotUGFzc1JlZlB0cjxJbnRlbnQ+IEludGVudDo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBkYXRhLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5JiBwb3J0cywgRXhjZXB0aW9u
Q29kZSYgZWMpCi17Ci0gICAgaWYgKGFjdGlvbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgZWMgPSBT
WU5UQVhfRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgaWYgKHR5cGUuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
fQotCi0gICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscyA9IE1lc3Nh
Z2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKCZwb3J0cywgZWMpOwotCi0gICAgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4gZXh0cmFzOwotICAgIEtVUkwgc2VydmljZVVSTDsKLSAgICBWZWN0b3I8S1VS
TD4gc3VnZ2VzdGlvbnM7Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEludGVudChhY3Rpb24s
IHR5cGUsIGRhdGEsIGNoYW5uZWxzLnJlbGVhc2UoKSwgZXh0cmFzLCBzZXJ2aWNlVVJMLCBzdWdn
ZXN0aW9ucykpOwotfQotCi1QYXNzUmVmUHRyPEludGVudD4gSW50ZW50OjpjcmVhdGUoU2NyaXB0
U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRpb25D
b2RlJiBlYykKLXsKLSAgICBTdHJpbmcgYWN0aW9uOwotICAgIGlmICghb3B0aW9ucy5nZXQoImFj
dGlvbiIsIGFjdGlvbikgfHwgYWN0aW9uLmlzRW1wdHkoKSkgewotICAgICAgICBlYyA9IFNZTlRB
WF9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIFN0cmluZyB0eXBlOwotICAg
IGlmICghb3B0aW9ucy5nZXQoInR5cGUiLCB0eXBlKSB8fCB0eXBlLmlzRW1wdHkoKSkgewotICAg
ICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIFN0
cmluZyBzZXJ2aWNlOwotICAgIEtVUkwgc2VydmljZVVybDsKLSAgICBpZiAob3B0aW9ucy5nZXQo
InNlcnZpY2UiLCBzZXJ2aWNlKSAmJiAhc2VydmljZS5pc0VtcHR5KCkpIHsKLSAgICAgIHNlcnZp
Y2VVcmwgPSBLVVJMKEtVUkwoKSwgc2VydmljZSk7Ci0gICAgICBpZiAoIXNlcnZpY2VVcmwuaXNW
YWxpZCgpKSB7Ci0gICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICAgIHJldHVybiAw
OwotICAgICAgfQotICAgIH0KLQotICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydHM7Ci0gICAgT3du
UHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVsczsKLSAgICBpZiAob3B0aW9ucy5n
ZXQoInRyYW5zZmVyIiwgcG9ydHMpKQotICAgICAgICBjaGFubmVscyA9IE1lc3NhZ2VQb3J0Ojpk
aXNlbnRhbmdsZVBvcnRzKCZwb3J0cywgZWMpOwotCi0gICAgU2NyaXB0VmFsdWUgZGF0YVZhbHVl
OwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWREYXRhOwotICAg
IGlmIChvcHRpb25zLmdldCgiZGF0YSIsIGRhdGFWYWx1ZSkpIHsKLSAgICAgICAgYm9vbCBkaWRU
aHJvdyA9IGZhbHNlOwotICAgICAgICBzZXJpYWxpemVkRGF0YSA9IGRhdGFWYWx1ZS5zZXJpYWxp
emUoc2NyaXB0U3RhdGUsICZwb3J0cywgMCwgZGlkVGhyb3cpOwotICAgICAgICBpZiAoZGlkVGhy
b3cpIHsKLSAgICAgICAgICAgIGVjID0gREFUQV9DTE9ORV9FUlI7Ci0gICAgICAgICAgICByZXR1
cm4gMDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGV4
dHJhczsKLSAgICBEaWN0aW9uYXJ5IGV4dHJhc0RpY3Rpb25hcnk7Ci0gICAgaWYgKG9wdGlvbnMu
Z2V0KCJleHRyYXMiLCBleHRyYXNEaWN0aW9uYXJ5KSkKLSAgICAgICAgZXh0cmFzRGljdGlvbmFy
eS5nZXRPd25Qcm9wZXJ0aWVzQXNTdHJpbmdIYXNoTWFwKGV4dHJhcyk7Ci0KLSAgICBIYXNoU2V0
PEF0b21pY1N0cmluZz4gc3VnZ2VzdGlvbnNTdHJpbmdzOwotICAgIFZlY3RvcjxLVVJMPiBzdWdn
ZXN0aW9uczsKLSAgICBpZiAob3B0aW9ucy5nZXQoInN1Z2dlc3Rpb25zIiwgc3VnZ2VzdGlvbnNT
dHJpbmdzKSkgewotICAgICAgICBmb3IgKEhhc2hTZXQ8QXRvbWljU3RyaW5nPjo6aXRlcmF0b3Ig
aXRlciA9IHN1Z2dlc3Rpb25zU3RyaW5ncy5iZWdpbigpOyBpdGVyICE9IHN1Z2dlc3Rpb25zU3Ry
aW5ncy5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgICAgICBLVVJMIHN1Z2dlc3RlZFVSTCA9IEtV
UkwoS1VSTCgpLCAqaXRlcik7Ci0gICAgICAgICAgICBpZiAoIXN1Z2dlc3RlZFVSTC5pc1ZhbGlk
KCkpIHsKLSAgICAgICAgICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdWdnZXN0aW9ucy5hcHBlbmQo
c3VnZ2VzdGVkVVJMKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSW50ZW50KGFjdGlvbiwgdHlwZSwgc2VyaWFsaXplZERhdGEucmVsZWFzZSgpLCBjaGFubmVs
cy5yZWxlYXNlKCksIGV4dHJhcywgc2VydmljZVVybCwgc3VnZ2VzdGlvbnMpKTsKLX0KLQotSW50
ZW50OjpJbnRlbnQoY29uc3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlwZSwKLSAg
ICAgICAgICAgICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBQYXNz
T3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBwb3J0cywKLSAgICAgICAgICAgICAgIGNv
bnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBleHRyYXMsIGNvbnN0IEtVUkwmIHNlcnZpY2Us
IGNvbnN0IFZlY3RvcjxLVVJMPiYgc3VnZ2VzdGlvbnMpCi0gICAgOiBtX2FjdGlvbihhY3Rpb24p
Ci0gICAgLCBtX3R5cGUodHlwZSkKLSAgICAsIG1fcG9ydHMocG9ydHMpCi0gICAgLCBtX3NlcnZp
Y2Uoc2VydmljZSkKLSAgICAsIG1fZXh0cmFzKGV4dHJhcykKLSAgICAsIG1fc3VnZ2VzdGlvbnMo
c3VnZ2VzdGlvbnMpCi17Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fZGF0YSA9IGRhdGE7Ci0g
ICAgZWxzZQotICAgICAgICBtX2RhdGEgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1
ZSgpOwotfQotCi12b2lkIEludGVudDo6c2V0RXh0cmFzKGNvbnN0IFdURjo6SGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4mIGV4dHJhcykKLXsKLSAgICBtX2V4dHJhcyA9IGV4dHJhczsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBjMGY1YmNjYmE0ZDgyZjc0MTFjMjk2OTlmM2Q4OGQ2MWU2Zjc5NTJiLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW50ZW50cy9JbnRlbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSwgSW5j
LiAoIkdvb2dsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IEludGVudF9oCi0jZGVmaW5lIEludGVudF9oCi0KLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0K
LSNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgotI2luY2x1ZGUgIk1l
c3NhZ2VQb3J0LmgiCi0jaW5jbHVkZSAiTWVzc2FnZVBvcnRDaGFubmVsLmgiCi0jaW5jbHVkZSAi
U2NyaXB0U3RhdGUuaCIKLSNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KLWNsYXNzIEludGVu
dCA6IHB1YmxpYyBSZWZDb3VudGVkPEludGVudD4gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEludGVudD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcm
IHR5cGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBNZXNz
YWdlUG9ydEFycmF5JiBwb3J0cywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEludGVudD4gY3JlYXRlKFNjcmlwdFN0YXRlKiwgY29uc3QgRGljdGlvbmFyeSYsIEV4Y2Vw
dGlvbkNvZGUmKTsKLQotICAgIHZpcnR1YWwgfkludGVudCgpIHsgfQotCi0gICAgY29uc3QgU3Ry
aW5nJiBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FjdGlvbjsgfQotICAgIGNvbnN0IFN0cmlu
ZyYgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9Ci0KLSAgICBN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheSogbWVzc2FnZVBvcnRzKCkgY29uc3QgeyByZXR1cm4gbV9w
b3J0cy5nZXQoKTsgfQotICAgIGNvbnN0IEtVUkwmIHNlcnZpY2UoKSBjb25zdCB7IHJldHVybiBt
X3NlcnZpY2U7IH0KLSAgICBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgZXh0cmFzKCkg
Y29uc3QgeyByZXR1cm4gbV9leHRyYXM7IH0KLSAgICBjb25zdCBWZWN0b3I8S1VSTD4mIHN1Z2dl
c3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9zdWdnZXN0aW9uczsgfQotCi0gICAgdm9pZCBzZXRF
eHRyYXMoY29uc3QgV1RGOjpIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpOwotCi1wcm90ZWN0ZWQ6
Ci0gICAgSW50ZW50KGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsCi0g
ICAgICAgICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBQYXNzT3du
UHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBwb3J0cywKLSAgICAgICAgICAgY29uc3QgSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz4mIGV4dHJhcywgY29uc3QgS1VSTCYgc2VydmljZSwgY29uc3Qg
VmVjdG9yPEtVUkw+JiBzdWdnZXN0aW9ucyk7Ci0KLXByaXZhdGU6Ci0gICAgU3RyaW5nIG1fYWN0
aW9uOwotICAgIFN0cmluZyBtX3R5cGU7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gbV9kYXRhOwotICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gbV9wb3J0czsK
LSAgICBLVVJMIG1fc2VydmljZTsKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX2V4dHJh
czsKLSAgICBWZWN0b3I8S1VSTD4gbV9zdWdnZXN0aW9uczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBJbnRlbnRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ludGVudHMvSW50ZW50LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YTJjZjVkYTU0NzMxZWUwNzU4ODcxODc5MGRlYzE4MGRmYjA1OTM3Yi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
dGVudHMvSW50ZW50LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0g
IGludGVyZmFjZSBbCi0gIENvbmRpdGlvbmFsPVdFQl9JTlRFTlRTLAotICBDdXN0b21Db25zdHJ1
Y3RvciwKLSAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIGFjdGlvbiwgaW4gRE9NU3RyaW5nIHR5
cGUsIGluIFtPcHRpb25hbD1EZWZhdWx0SXNOdWxsU3RyaW5nLCBUcmFuc2Zlckxpc3Q9dHJhbnNm
ZXJMaXN0XSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgZGF0YSwgaW4gW09wdGlvbmFsPURlZmF1bHRJ
c1VuZGVmaW5lZF0gQXJyYXkgdHJhbnNmZXJMaXN0KSwKLSAgQ29uc3RydWN0b3JSYWlzZXNFeGNl
cHRpb24KLSAgXSBJbnRlbnQgewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgYWN0
aW9uOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdHlwZTsKLSAgICByZWFkb25s
eSBhdHRyaWJ1dGUgU2VyaWFsaXplZFNjcmlwdFZhbHVlIGRhdGE7Ci0gIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDUwYmFkYTNjZDllZTcwNTUwNWQwYjEzNGI3ZDY4MDZlNjc3YjE3
YWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudFJlcXVlc3QuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMTA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSwgSW5jLiAoIkdvb2dsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgR09PR0xFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW50ZW50UmVxdWVz
dC5oIgotCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NSZWZQdHI8SW50ZW50UmVxdWVzdD4gSW50ZW50UmVxdWVz
dDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPEludGVudD4gaW50
ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFz
c1JlZlB0cjxJbnRlbnRSZXN1bHRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxJbnRlbnRS
ZXN1bHRDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBSZWZQdHI8SW50ZW50UmVxdWVz
dD4gaW50ZW50UmVxdWVzdChhZG9wdFJlZihuZXcgSW50ZW50UmVxdWVzdChjb250ZXh0LCBpbnRl
bnQsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpKTsKLSAgICBpbnRlbnRSZXF1ZXN0
LT5zdXNwZW5kSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gaW50ZW50UmVxdWVzdC5yZWxlYXNlKCk7
Ci19Ci0KLUludGVudFJlcXVlc3Q6OkludGVudFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxJbnRl
bnQ+IGludGVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxJbnRl
bnRSZXN1bHRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQYXNzUmVmUHRyPEludGVudFJlc3VsdENhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQot
ICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCi0gICAgLCBtX2ludGVudChpbnRl
bnQpCi0gICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCi0gICAgLCBtX2Vy
cm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFjaykKLSAgICAsIG1fc3RvcHBlZChmYWxzZSkKLXsKLX0K
LQotdm9pZCBJbnRlbnRSZXF1ZXN0Ojpjb250ZXh0RGVzdHJveWVkKCkKLXsKLSAgICBDb250ZXh0
RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERlc3Ryb3llZCgpOwotICAgIG1fc3RvcHBlZCA9
IHRydWU7Ci19Ci0KLXZvaWQgSW50ZW50UmVxdWVzdDo6c3RvcCgpCi17Ci0gICAgbV9zdG9wcGVk
ID0gdHJ1ZTsKLX0KLQotdm9pZCBJbnRlbnRSZXF1ZXN0Ojpwb3N0UmVzdWx0KFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKQotewotICAgIGlmIChtX3N0b3BwZWQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIC8vIENhbGxiYWNrIGNvdWxkIGxlYWQgdG8gZGVsZXRpb24gb2Yg
dGhpcy4KLSAgICBSZWZQdHI8SW50ZW50UmVxdWVzdD4gcHJvdGVjdG9yKHRoaXMpOwotCi0gICAg
aWYgKCFtX3N1Y2Nlc3NDYWxsYmFjaykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdWNjZXNz
Q2FsbGJhY2stPmhhbmRsZUV2ZW50KGRhdGEpOwotCi0gICAgbV9zdWNjZXNzQ2FsbGJhY2suY2xl
YXIoKTsKLSAgICBtX2Vycm9yQ2FsbGJhY2suY2xlYXIoKTsKLX0KLQotdm9pZCBJbnRlbnRSZXF1
ZXN0Ojpwb3N0RmFpbHVyZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSkK
LXsKLSAgICBpZiAobV9zdG9wcGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBDYWxsYmFj
ayBjb3VsZCBsZWFkIHRvIGRlbGV0aW9uIG9mIHRoaXMuCi0gICAgUmVmUHRyPEludGVudFJlcXVl
c3Q+IHByb3RlY3Rvcih0aGlzKTsKLQotICAgIGlmICghbV9lcnJvckNhbGxiYWNrKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX2Vycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGRhdGEpOwotCi0g
ICAgbV9zdWNjZXNzQ2FsbGJhY2suY2xlYXIoKTsKLSAgICBtX2Vycm9yQ2FsbGJhY2suY2xlYXIo
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9J
TlRFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVu
dFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3ZjMwYTllNjc5OWJhZjgxOTEwYzQy
ZTU3YTA2OGZhNzE5MzNlZDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudFJlcXVlc3QuaAor
KysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSwgSW5jLiAoIkdvb2dsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgR09PR0xFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEludGVudFJlcXVlc3RfaAotI2RlZmlu
ZSBJbnRlbnRSZXF1ZXN0X2gKLQotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLQotI2luY2x1ZGUg
IkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgIkludGVudC5oIgotI2luY2x1ZGUgIkludGVu
dFJlc3VsdENhbGxiYWNrLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKLQotY2xhc3MgSW50ZW50UmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVk
PEludGVudFJlcXVlc3Q+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJbnRlbnRSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SW50ZW50PiwgUGFzc1JlZlB0cjxJbnRlbnRSZXN1bHRDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEludGVudFJlc3VsdENhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrKTsKLQotICAgIEludGVudCogaW50ZW50KCkgeyByZXR1cm4gbV9pbnRlbnQuZ2V0
KCk7IH0KLQotICAgIHZvaWQgcG9zdFJlc3VsdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4pOwotICAgIHZvaWQgcG9zdEZhaWx1cmUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+KTsKLQotICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkgT1ZFUlJJREU7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOwotCi1wcml2YXRlOgotICAgIElu
dGVudFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SW50ZW50Piwg
UGFzc1JlZlB0cjxJbnRlbnRSZXN1bHRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVm
UHRyPEludGVudFJlc3VsdENhbGxiYWNrPiBlcnJvckNhbGxiYWNrKTsKLQotICAgIFJlZlB0cjxJ
bnRlbnQ+IG1faW50ZW50OwotICAgIFJlZlB0cjxJbnRlbnRSZXN1bHRDYWxsYmFjaz4gbV9zdWNj
ZXNzQ2FsbGJhY2s7Ci0gICAgUmVmUHRyPEludGVudFJlc3VsdENhbGxiYWNrPiBtX2Vycm9yQ2Fs
bGJhY2s7Ci0gICAgYm9vbCBtX3N0b3BwZWQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gSW50ZW50UmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50UmVzdWx0Q2FsbGJhY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXN1bHRDYWxsYmFjay5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3N2YwYjMzZDQ1ZDc5Y2U1ZWE0YjBiY2JlMGE1ZGU0YTZm
ZTczYTRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXN1bHRDYWxsYmFjay5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlLCBJbmMuICgiR29vZ2xlIikgbm9yIHRoZSBuYW1lcyBv
ZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBHT09HTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
Ci0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgSW50ZW50UmVzdWx0Q2FsbGJhY2tfaAotI2Rl
ZmluZSBJbnRlbnRSZXN1bHRDYWxsYmFja19oCi0KLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0K
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7Ci0KLWNs
YXNzIEludGVudFJlc3VsdENhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8SW50ZW50UmVzdWx0
Q2FsbGJhY2s+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5JbnRlbnRSZXN1bHRDYWxsYmFjaygp
IHsgfQotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gcmVzdWx0KSA9IDA7Ci19OwotCi19Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8g
SW50ZW50UmVzdWx0Q2FsbGJhY2tfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbnRlbnRzL0ludGVudFJlc3VsdENhbGxiYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW50ZW50cy9JbnRlbnRSZXN1bHRDYWxsYmFjay5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDQzMGZkZDNjMWJjNTE4M2Q1YWEzMjZiMjY3MWM5YmU0ODc0MjQ0OTEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbnRlbnRzL0ludGVudFJlc3VsdENhbGxiYWNrLmlkbAorKysgL2Rldi9udWxsCkBA
IC0xLDMxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0gIGludGVyZmFjZSBbCi0gIENvbmRpdGlvbmFsPVdFQl9J
TlRFTlRTLAotICBDYWxsYmFjawotICBdIEludGVudFJlc3VsdENhbGxiYWNrIHsKLSAgYm9vbGVh
biBoYW5kbGVFdmVudChpbiBTZXJpYWxpemVkU2NyaXB0VmFsdWUgcmVzdWx0KTsKLSAgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9OYXZpZ2F0b3JJbnRlbnRz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9OYXZpZ2F0b3JJbnRlbnRzLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzFmNWY0ZmQ3ZDI3ZDJhNjM3MDk4OTM3
NDA3NGY4NDk0ZTU2NWM0My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvTmF2aWdhdG9ySW50ZW50cy5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0g
KiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRQotICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0gKiBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZCi0gKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKLSAqIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTmF2aWdhdG9ySW50ZW50cy5oIgotCi0jaWYgRU5BQkxF
KFdFQl9JTlRFTlRTKQotCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgot
I2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiSW50ZW50LmgiCi0jaW5j
bHVkZSAiSW50ZW50UmVxdWVzdC5oIgotI2luY2x1ZGUgIkludGVudFJlc3VsdENhbGxiYWNrLmgi
Ci0jaW5jbHVkZSAiTmF2aWdhdG9yLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLU5hdmlnYXRvckludGVudHM6Ok5hdmlnYXRvckludGVu
dHMoKQotewotfQotCi1OYXZpZ2F0b3JJbnRlbnRzOjp+TmF2aWdhdG9ySW50ZW50cygpCi17Ci19
Ci0KLXZvaWQgTmF2aWdhdG9ySW50ZW50czo6d2Via2l0U3RhcnRBY3Rpdml0eShOYXZpZ2F0b3Iq
IG5hdmlnYXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
YXNzUmVmUHRyPEludGVudD4gaW50ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBhc3NSZWZQdHI8SW50ZW50UmVzdWx0Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVm
UHRyPEludGVudFJlc3VsdENhbGxiYWNrPiBlcnJvckNhbGxiYWNrLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlm
ICghbmF2aWdhdG9yLT5mcmFtZSgpIHx8ICFpbnRlbnQpIHsKLSAgICAgICAgZWMgPSBJTlZBTElE
X1NUQVRFX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChpbnRlbnQtPmFj
dGlvbigpLmlzRW1wdHkoKSB8fCBpbnRlbnQtPnR5cGUoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAg
ZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
ICghU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpIHsKLSAgICAgICAg
ZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBS
ZWZQdHI8SW50ZW50UmVxdWVzdD4gcmVxdWVzdCA9IEludGVudFJlcXVlc3Q6OmNyZWF0ZShuYXZp
Z2F0b3ItPmZyYW1lKCktPmRvY3VtZW50KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50LCBzdWNjZXNzQ2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2spOwotICAgIG5hdmlnYXRvci0+ZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgp
LT5kaXNwYXRjaEludGVudChyZXF1ZXN0KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbnRlbnRzL05hdmlnYXRvckludGVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW50ZW50cy9OYXZpZ2F0b3JJbnRlbnRzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDQ3MWUyMTg4NDNhZjdlZDY0YmUxMmRlNTQ3NjY4MDJhN2Y5OGY1MGUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbnRlbnRzL05hdmlnYXRvckludGVudHMuaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLSAqCi0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0gKiBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
Ci0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QKLSAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSAqIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SAotICogREFNQUdFLgotICovCi0KLSNpZm5kZWYgTmF2aWdhdG9ySW50ZW50c19oCi0jZGVmaW5l
IE5hdmlnYXRvckludGVudHNfaAotCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotCi0jaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJbnRl
bnQ7Ci1jbGFzcyBJbnRlbnRSZXN1bHRDYWxsYmFjazsKLWNsYXNzIE5hdmlnYXRvcjsKLQotdHlw
ZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKLQotY2xhc3MgTmF2aWdhdG9ySW50ZW50cyB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIHZvaWQgd2Via2l0U3RhcnRBY3Rpdml0eShOYXZpZ2F0b3IqLCBQYXNz
UmVmUHRyPEludGVudD4sIFBhc3NSZWZQdHI8SW50ZW50UmVzdWx0Q2FsbGJhY2s+IHN1Y2Nlc3ND
YWxsYmFjaywgUGFzc1JlZlB0cjxJbnRlbnRSZXN1bHRDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywg
RXhjZXB0aW9uQ29kZSYpOwotCi1wcml2YXRlOgotICAgIE5hdmlnYXRvckludGVudHMoKTsKLSAg
ICB+TmF2aWdhdG9ySW50ZW50cygpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTKQotCi0jZW5kaWYgLy8gTmF2aWdhdG9ySW50ZW50
c19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvTmF2aWdhdG9y
SW50ZW50cy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvTmF2aWdhdG9ySW50
ZW50cy5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1ZTY2ZjY4NzRiNjM0MmI0
ZDA4M2Y0MGQ2YmUyZjAyNTZhYTExZWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL05hdmlnYXRvcklu
dGVudHMuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi1bCi0gICAgQ29uZGl0
aW9uYWw9V0VCX0lOVEVOVFMsCi0gICAgU3VwcGxlbWVudGFsPU5hdmlnYXRvcgotXSBpbnRlcmZh
Y2UgTmF2aWdhdG9ySW50ZW50cyB7Ci0gICAgW1Y4RW5hYmxlZEF0UnVudGltZV0gdm9pZCB3ZWJr
aXRTdGFydEFjdGl2aXR5KGluIEludGVudCBpbnRlbnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEludGVu
dFJlc3VsdENhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gSW50ZW50
UmVzdWx0Q2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrKQotICAgICAgICByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKLX07Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNv
cmUuZ3lwIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKaW5kZXggZDAx
ZDA4NjE1NTA5YmZmMmE2Y2Q5YzY1MjFmZjQ5YTRjMmZmNGZmZS4uZWU0YzYyNzRmNzUxZWM2YjQz
MmI3NDFkYjcyZTIzM2U0MmQ0Y2MxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXAvV2ViQ29yZS5neXAKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29y
ZS5neXAKQEAgLTU2LDcgKzU2LDYgQEAKICAgICAgICcuLi9Nb2R1bGVzL2ZpbGVzeXN0ZW0vY2hy
b21pdW0nLAogICAgICAgJy4uL01vZHVsZXMvZ2FtZXBhZCcsCiAgICAgICAnLi4vTW9kdWxlcy9n
ZW9sb2NhdGlvbicsCi0gICAgICAnLi4vTW9kdWxlcy9pbnRlbnRzJywKICAgICAgICcuLi9Nb2R1
bGVzL2luZGV4ZWRkYicsCiAgICAgICAnLi4vTW9kdWxlcy9pbmRleGVkZGIvY2hyb21pdW0nLAog
ICAgICAgJy4uL01vZHVsZXMvbWVkaWFzb3VyY2UnLApAQCAtMTE4MCw3ICsxMTc5LDYgQEAKICAg
ICAgICAgICAgICdnZW5lcmF0b3JfaW5jbHVkZV9kaXJzJzogWwogICAgICAgICAgICAgICAnLS1p
bmNsdWRlJywgJy4uL01vZHVsZXMvZmlsZXN5c3RlbScsCiAgICAgICAgICAgICAgICctLWluY2x1
ZGUnLCAnLi4vTW9kdWxlcy9pbmRleGVkZGInLAotICAgICAgICAgICAgICAnLS1pbmNsdWRlJywg
Jy4uL01vZHVsZXMvaW50ZW50cycsCiAgICAgICAgICAgICAgICctLWluY2x1ZGUnLCAnLi4vTW9k
dWxlcy9tZWRpYXNvdXJjZScsCiAgICAgICAgICAgICAgICctLWluY2x1ZGUnLCAnLi4vTW9kdWxl
cy9tZWRpYXN0cmVhbScsCiAgICAgICAgICAgICAgICctLWluY2x1ZGUnLCAnLi4vTW9kdWxlcy9u
YXZpZ2F0b3Jjb250ZW50dXRpbHMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDZmMzNhODA2MjUzYTZm
ZDZhZGQ3ZmY4MjY3MGQ4YTI1ODAzNTBjZTEuLmNiYjBiN2I2MjA2MWZlYmM4OGI2ZDA3NDY4M2I1
YzdhMTY2NjE0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTUzLDExICs1Myw2IEBACiAgICAgICAg
ICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaWRsJywKICAgICAgICAgICAg
ICdNb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaWRsJywKICAgICAgICAg
ICAgICdNb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJDb250ZXh0SW5kZXhlZERhdGFiYXNlLmlkbCcs
Ci0gICAgICAgICAgICAnTW9kdWxlcy9pbnRlbnRzL0RlbGl2ZXJlZEludGVudC5pZGwnLAotICAg
ICAgICAgICAgJ01vZHVsZXMvaW50ZW50cy9ET01XaW5kb3dJbnRlbnRzLmlkbCcsCi0gICAgICAg
ICAgICAnTW9kdWxlcy9pbnRlbnRzL0ludGVudC5pZGwnLAotICAgICAgICAgICAgJ01vZHVsZXMv
aW50ZW50cy9JbnRlbnRSZXN1bHRDYWxsYmFjay5pZGwnLAotICAgICAgICAgICAgJ01vZHVsZXMv
aW50ZW50cy9OYXZpZ2F0b3JJbnRlbnRzLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRp
YXNvdXJjZS9NZWRpYVNvdXJjZS5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXJMaXN0LmlkbCcsCkBAIC0zMTAsNyArMzA1LDYgQEAKICAgICAgICAgICAgICdo
dG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbCcsCi0g
ICAgICAgICAgICAnaHRtbC9IVE1MSW50ZW50RWxlbWVudC5pZGwnLAogICAgICAgICAgICAgJ2h0
bWwvSFRNTEtleWdlbkVsZW1lbnQuaWRsJywKICAgICAgICAgICAgICdodG1sL0hUTUxMSUVsZW1l
bnQuaWRsJywKICAgICAgICAgICAgICdodG1sL0hUTUxMYWJlbEVsZW1lbnQuaWRsJywKQEAgLTc4
MiwxNyArNzc2LDYgQEAKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJDb250
ZXh0SW5kZXhlZERhdGFiYXNlLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL2No
cm9taXVtL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlQ2hyb21pdW0uY3BwJywKICAgICAgICAg
ICAgICdNb2R1bGVzL2luZGV4ZWRkYi9jaHJvbWl1bS9JREJGYWN0b3J5QmFja2VuZEludGVyZmFj
ZUNocm9taXVtLmgnLAotICAgICAgICAgICAgJ01vZHVsZXMvaW50ZW50cy9EZWxpdmVyZWRJbnRl
bnQuY3BwJywKLSAgICAgICAgICAgICdNb2R1bGVzL2ludGVudHMvRGVsaXZlcmVkSW50ZW50Lmgn
LAotICAgICAgICAgICAgJ01vZHVsZXMvaW50ZW50cy9ET01XaW5kb3dJbnRlbnRzLmNwcCcsCi0g
ICAgICAgICAgICAnTW9kdWxlcy9pbnRlbnRzL0RPTVdpbmRvd0ludGVudHMuaCcsCi0gICAgICAg
ICAgICAnTW9kdWxlcy9pbnRlbnRzL0ludGVudC5jcHAnLAotICAgICAgICAgICAgJ01vZHVsZXMv
aW50ZW50cy9JbnRlbnQuaCcsCi0gICAgICAgICAgICAnTW9kdWxlcy9pbnRlbnRzL0ludGVudFJl
cXVlc3QuY3BwJywKLSAgICAgICAgICAgICdNb2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5o
JywKLSAgICAgICAgICAgICdNb2R1bGVzL2ludGVudHMvSW50ZW50UmVzdWx0Q2FsbGJhY2suaCcs
Ci0gICAgICAgICAgICAnTW9kdWxlcy9pbnRlbnRzL05hdmlnYXRvckludGVudHMuY3BwJywKLSAg
ICAgICAgICAgICdNb2R1bGVzL2ludGVudHMvTmF2aWdhdG9ySW50ZW50cy5oJywKICAgICAgICAg
ICAgICdNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCcsCiAgICAgICAgICAgICAn
TW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oJywKICAgICAgICAgICAgICdNb2R1bGVz
L21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuY3BwJywKQEAgLTEzOTEsNyArMTM3NCw2
IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5z
cGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SW50ZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwJywKQEAgLTMxMjcsOCArMzEw
OSw2IEBACiAgICAgICAgICAgICAnaHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3BwJywKICAgICAgICAg
ICAgICdodG1sL0hUTUxJbWFnZUxvYWRlci5oJywKICAgICAgICAgICAgICdodG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwJywKLSAgICAgICAgICAgICdodG1sL0hUTUxJbnRlbnRFbGVtZW50LmNwcCcs
Ci0gICAgICAgICAgICAnaHRtbC9IVE1MSW50ZW50RWxlbWVudC5oJywKICAgICAgICAgICAgICdo
dG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MS2V5Z2Vu
RWxlbWVudC5oJywKICAgICAgICAgICAgICdodG1sL0hUTUxMSUVsZW1lbnQuY3BwJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVk
RmVhdHVyZXMuY3BwCmluZGV4IDgyMGY1YTZhZjllYjc0MjM3ODE5Nzk2ZGIyODA1ZDVhMmU2YTc5
M2EuLjJjNjg4NzQwNDU3YzA0YjdjYjBkMmE3NmYyNGFmMzY0NjVhNGRjOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmNwcApAQCAtMjM3LDggKzIzNyw0IEBAIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6YXJlRXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkCiBi
b29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmFyZVNlYW1sZXNzSUZyYW1lc0VuYWJsZWQgPSBm
YWxzZTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotYm9vbCBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjppc1dlYkludGVudHNFbmFibGVkID0gdHJ1ZTsKLSNlbmRpZgotCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
ZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCmluZGV4IDIxNTMyZTljZWVhYjczZWY3
MDhlNTY1YmVjYWZhODQwNTA4NWI1ZTAuLjUyNjZmMzBhODhhN2FlMjFlZWQ5NWM0MzI1MjZjZTIy
NzE4NTcxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVy
aWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCkBAIC0yNjksMTMgKzI2OSw2IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCBzZXRSZXF1ZXN0QXV0b2NvbXBsZXRlRW5hYmxlZChib29sIGlzRW5h
YmxlZCkgeyBpc1JlcXVlc3RBdXRvY29tcGxldGVFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5k
aWYKIAotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRTdGFy
dEFjdGl2aXR5RW5hYmxlZCgpIHsgcmV0dXJuIGlzV2ViSW50ZW50c0VuYWJsZWQ7IH0KLSAgICBz
dGF0aWMgYm9vbCB3ZWJraXRJbnRlbnRFbmFibGVkKCkgeyByZXR1cm4gaXNXZWJJbnRlbnRzRW5h
YmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYktpdEludGVudEVuYWJsZWQoKSB7IHJldHVybiBp
c1dlYkludGVudHNFbmFibGVkOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0V2ViSW50ZW50c0VuYWJs
ZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNXZWJJbnRlbnRzRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQot
I2VuZGlmCi0KIHByaXZhdGU6CiAgICAgLy8gTmV2ZXIgaW5zdGFudGlhdGUuCiAgICAgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcygpIHsgfQpAQCAtMzg1LDEwICszNzgsNiBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyBib29sIGFyZVNlYW1sZXNzSUZyYW1lc0VuYWJsZWQ7CiAjZW5kaWYKIAotI2lmIEVO
QUJMRShXRUJfSU5URU5UUykKLSAgICBzdGF0aWMgYm9vbCBpc1dlYkludGVudHNFbmFibGVkOwot
I2VuZGlmCi0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnRlbnRDdXN0b20uY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhODY3MDYyN2Q0YTk4MDA0ZWU4ZTE0OWQ1NWU5ZGM1MzgxZWFk
NzQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUsIEluYy4gKCJHb29nbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0g
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEdPT0dMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkludGVudC5o
IgotCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Lmgi
Ci0jaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCi0KLSNpbmNsdWRlICJWOEJpbmRp
bmcuaCIKLSNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKLSNpbmNsdWRlICJWOEludGVudC5oIgot
I2luY2x1ZGUgIlY4TWVzc2FnZVBvcnQuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4K
LQotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnRlbnQ6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCi0g
ICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKLSAgICBpZiAoYXJncy5MZW5ndGgoKSA9PSAxKSB7Ci0gICAgICAgIC8vIFVzZSB0aGUg
ZGljdGlvbmFyeSBjb25zdHJ1Y3Rvci4gVGhpcyBibG9jayB3aWxsIHJldHVybiBpZiB0aGUKLSAg
ICAgICAgLy8gYXJndW1lbnQgaXNuJ3QgYSB2YWxpZCBEaWN0aW9uYXJ5LgotICAgICAgICBWOFRS
WUNBVENIKERpY3Rpb25hcnksIG9wdGlvbnMsIERpY3Rpb25hcnkoYXJnc1swXSwgYXJncy5HZXRJ
c29sYXRlKCkpKTsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIFJlZlB0
cjxJbnRlbnQ+IGltcGwgPSBJbnRlbnQ6OmNyZWF0ZShTY3JpcHRTdGF0ZTo6Y3VycmVudCgpLCBv
cHRpb25zLCBlYyk7Ci0gICAgICAgIGlmIChlYykKLSAgICAgICAgICAgIHJldHVybiBzZXRET01F
eGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLQotICAgICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgICAgICBWOERPTVdyYXBwZXI6
OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBl
ciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwot
ICAgICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICB9Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8
PiwgYWN0aW9uLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRl
ZmluZWQpKTsKLSAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVz
b3VyY2U8PiwgdHlwZSwgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMSwgRGVmYXVsdElz
VW5kZWZpbmVkKSk7Ci0gICAgTWVzc2FnZVBvcnRBcnJheSBtZXNzYWdlUG9ydEFycmF5VHJhbnNm
ZXJMaXN0OwotICAgIEFycmF5QnVmZmVyQXJyYXkgYXJyYXlCdWZmZXJBcnJheVRyYW5zZmVyTGlz
dDsKLSAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDMpIHsKLSAgICAgICAgaWYgKCFleHRyYWN0VHJh
bnNmZXJhYmxlcyhhcmdzWzNdLCBtZXNzYWdlUG9ydEFycmF5VHJhbnNmZXJMaXN0LCBhcnJheUJ1
ZmZlckFycmF5VHJhbnNmZXJMaXN0LCBhcmdzLkdldElzb2xhdGUoKSkpCi0gICAgICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoIkNvdWxkIG5vdCBleHRyYWN0IHRyYW5zZmVyYWJsZXMiLCBh
cmdzLkdldElzb2xhdGUoKSk7Ci0gICAgfQotICAgIGJvb2wgZGF0YURpZFRocm93ID0gZmFsc2U7
Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMl0sICZtZXNzYWdlUG9ydEFycmF5VHJhbnNmZXJMaXN0LCAm
YXJyYXlCdWZmZXJBcnJheVRyYW5zZmVyTGlzdCwgZGF0YURpZFRocm93KTsKLSAgICBpZiAoZGF0
YURpZFRocm93KQotICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKERBVEFfQ0xPTkVfRVJS
LCBhcmdzLkdldElzb2xhdGUoKSk7Ci0KLSAgICBSZWZQdHI8SW50ZW50PiBpbXBsID0gSW50ZW50
OjpjcmVhdGUoYWN0aW9uLCB0eXBlLCBkYXRhLCBtZXNzYWdlUG9ydEFycmF5VHJhbnNmZXJMaXN0
LCBlYyk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBh
cmdzLkdldElzb2xhdGUoKSk7Ci0KLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIg
PSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdy
YXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwg
V3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7Ci0gICAgcmV0dXJuIHdyYXBwZXI7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnRlbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEludGVudEVsZW1lbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWNm
YjMyYjY3NWMxNzAzNWI3ODY0YmM1MGMyYjc1MTNkMjg1MWI4Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEludGVu
dEVsZW1lbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJIVE1MSW50ZW50RWxlbWVudC5oIgotCi0jaWYgRU5B
QkxFKFdFQl9JTlRFTlRTX1RBRykKLQotI2luY2x1ZGUgIkNocm9tZS5oIgotI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVu
dC5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRl
ICJRdWFsaWZpZWROYW1lLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKLQotSFRNTEludGVudEVsZW1lbnQ6OkhUTUxJbnRlbnRFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IEhU
TUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQotewotICAgIEFTU0VSVChoYXNUYWdOYW1lKGlu
dGVudFRhZykpOwotfQotCi1QYXNzUmVmUHRyPEhUTUxJbnRlbnRFbGVtZW50PiBIVE1MSW50ZW50
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxJbnRlbnRFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KSk7Ci19Ci0KLU5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVl
c3QgSFRNTEludGVudEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRp
b25Qb2ludCkKLXsKLSAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50
KTsKLQotICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpICYmIGRvY3VtZW50KCkt
PmZyYW1lKCkpIHsKLSAgICAgICAgS1VSTCB1cmwgPSBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChm
YXN0R2V0QXR0cmlidXRlKGhyZWZBdHRyKSk7Ci0gICAgICAgIGRvY3VtZW50KCktPmZyYW1lKCkt
PmxvYWRlcigpLT5jbGllbnQoKS0+cmVnaXN0ZXJJbnRlbnRTZXJ2aWNlKAotICAgICAgICAgICAg
ZmFzdEdldEF0dHJpYnV0ZShhY3Rpb25BdHRyKSwgZmFzdEdldEF0dHJpYnV0ZSh0eXBlQXR0ciks
IHVybCwgZmFzdEdldEF0dHJpYnV0ZSh0aXRsZUF0dHIpLCBmYXN0R2V0QXR0cmlidXRlKGRpc3Bv
c2l0aW9uQXR0cikpOwotICAgIH0KLQotICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwotfQotCi19
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW50ZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW50ZW50RWxlbWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MWFjMjYz
OWZlZmYxZGVkMDYxZTI0ZmU0NGY0YjAxZmU4ZmJiOTM5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEludGVudEVs
ZW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEhU
TUxJbnRlbnRFbGVtZW50X2gKLSNkZWZpbmUgSFRNTEludGVudEVsZW1lbnRfaAotCi0jaWYgRU5B
QkxFKFdFQl9JTlRFTlRTX1RBRykKLQotI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBRdWFsaWZpZWROYW1lOwot
Ci1jbGFzcyBIVE1MSW50ZW50RWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEludGVudEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotcHJpdmF0ZToKLSAgICBIVE1MSW50ZW50RWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgIHZpcnR1YWwgSW5z
ZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSopIE9W
RVJSSURFOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKLQotI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnRlbnRFbGVtZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEludGVudEVsZW1lbnQuaWRsCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmMWRmOWJlOTA2MzhlODE2ZjQ1ZWRmYTM1ZWQ4N2Q0YzA2MzdiYzhl
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEludGVudEVsZW1lbnQuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0g
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJfSU5URU5UU19UQUcKLV0gaW50
ZXJmYWNlIEhUTUxJbnRlbnRFbGVtZW50IDogSFRNTEVsZW1lbnQgewotICAgIFtSZWZsZWN0XSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGFjdGlvbjsKLSAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0
cmluZyB0eXBlOwotICAgIFtSZWZsZWN0LCBVUkxdIGF0dHJpYnV0ZSBET01TdHJpbmcgaHJlZjsK
LSAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyB0aXRsZTsKLSAgICBbUmVmbGVjdF0g
YXR0cmlidXRlIERPTVN0cmluZyBkaXNwb3NpdGlvbjsKLX07Ci0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggMzg5ODQ2MWFkMWRjNDM5MzhjN2ZjYzVjNjQ5YWJhNzJi
NDNmZjliOC4uZTYwMDBkYTEwMThlZjk0YjQ4YzRiYzQxZGM2YTBiMjRiMTJiZmIzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTQwLDEwICs0MCw2IEBACiAjaW5j
bHVkZSAiQ29sb3JDaG9vc2VyLmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJfSU5URU5UUykg
Ci0jaW5jbHVkZSAiSW50ZW50UmVxdWVzdC5oIiAKLSNlbmRpZiAKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB2b2lkIGZpbGxXaXRoRW1wdHlDbGllbnRzKFBhZ2U6OlBhZ2VDbGllbnRzJiBwYWdl
Q2xpZW50cykKQEAgLTE2NywxMiArMTYzLDYgQEAgUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtpbmdD
b250ZXh0PiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVOZXR3b3JraW5nQ29udGUKICAg
ICByZXR1cm4gUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PigpOwogfQogCi0jaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQotdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aEludGVudChQYXNzUmVmUHRyPEludGVudFJlcXVlc3Q+KQotewotfQotI2VuZGlmCi0KIHZvaWQg
RW1wdHlUZXh0Q2hlY2tlckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoUGFzc1JlZlB0
cjxUZXh0Q2hlY2tpbmdSZXF1ZXN0PikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuaAppbmRleCA2OGNkMDM0MGQwYzY2MjY1N2MxZDdmYmE5YWE3MjBkYTA1ODgzNGQ1Li4zNjYx
ZWMzZmJmOTBlNDFmYzM5MDQzY2RmNTYwZjExNTgwZjE0YmVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCkBAIC0zODEsMTAgKzM4MSw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29u
dGV4dCgpIE9WRVJSSURFOwogCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaEludGVudChQYXNzUmVmUHRyPEludGVudFJlcXVlc3Q+KSBPVkVSUklERTsK
LSNlbmRpZgotCiAjaWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZXF1ZXN0QXV0b2NvbXBsZXRlKFBhc3NSZWZQdHI8Rm9ybVN0YXRlPikgT1ZFUlJJ
REU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5k
ZXggY2IyN2U1ODEwZGNkODc4ZmYyZDdhMTM4YjMxYWFkYWFhNjAyZDliZS4uY2FjMGQyYTM0OTJm
OGU3ODE5MDlhZTgzNmQwNGRmYTFiODk3MWFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKQEAgLTgyLDkgKzgyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
I2VuZGlmCiAgICAgY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CiAgICAgY2xhc3MgSW50U2l6ZTsK
LSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgY2xhc3MgSW50ZW50UmVxdWVzdDsKLSNlbmRp
ZgogICAgIGNsYXNzIEtVUkw7CiAgICAgY2xhc3MgTWFpblJlc291cmNlTG9hZGVyOwogICAgIGNs
YXNzIE1lc3NhZ2VFdmVudDsKQEAgLTM0MywxMyArMzQwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VOYW1lKGNvbnN0IFN0cmluZyYpIHsg
fQogCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hJbnRlbnQoUGFzc1JlZlB0cjxJbnRlbnRSZXF1ZXN0PikgPSAwOwotI2VuZGlmCi0jaWYgRU5B
QkxFKFdFQl9JTlRFTlRTX1RBRykKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVySW50ZW50
U2VydmljZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJikgeyB9Ci0jZW5kaWYKLQogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hXaWxsT3BlblNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUqKSB7IH0K
IAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hHbG9iYWxPYmplY3RBdmFpbGFibGUoRE9N
V3JhcHBlcldvcmxkKikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggNTBjZTQz
YmNjY2JhYzVkMzExMWY4NDliZjhmNGU1NDZkZGZmMTc1OC4uZDkzY2Y3MzhmM2JlMzVlOThkNTIx
YzM3OTMwYmJiNmI0ZTc4ODdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtNTA4
LDggKzUwOCw2IEBACiAgICAgW0NvbmRpdGlvbmFsPVZJREVPLCBWOEVuYWJsZWRBdFJ1bnRpbWVd
IGF0dHJpYnV0ZSBIVE1MU291cmNlRWxlbWVudENvbnN0cnVjdG9yIEhUTUxTb3VyY2VFbGVtZW50
OwogICAgIFtDb25kaXRpb25hbD1WSURFTywgVjhFbmFibGVkQXRSdW50aW1lXSBhdHRyaWJ1dGUg
TWVkaWFDb250cm9sbGVyQ29uc3RydWN0b3IgTWVkaWFDb250cm9sbGVyOwogCi0gICAgW0NvbmRp
dGlvbmFsPVdFQl9JTlRFTlRTX1RBR10gYXR0cmlidXRlIEhUTUxJbnRlbnRFbGVtZW50Q29uc3Ry
dWN0b3IgSFRNTEludGVudEVsZW1lbnQ7Ci0KICAgICBhdHRyaWJ1dGUgQ2FudmFzUGF0dGVybkNv
bnN0cnVjdG9yIENhbnZhc1BhdHRlcm47CiAgICAgYXR0cmlidXRlIENhbnZhc0dyYWRpZW50Q29u
c3RydWN0b3IgQ2FudmFzR3JhZGllbnQ7CiAgICAgYXR0cmlidXRlIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRENvbnN0cnVjdG9yIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cAppbmRleCBiNDU0NTliZDQyMDk5ZTIyYTUwNTY1M2JkZGRiM2VlMmIxOTFj
NzUzLi4wYTU1ZjEwZWVlZjc4YWZlYzczYjE2NmY4ZWJiYjVjYTVmMzM2ZTk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0xMzUsNyArMTM1LDYgQEAKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYkRhdGVUaW1lSW5wdXRUeXBlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViRGF0ZVRpbWVDaG9vc2VyQ29tcGxldGlvbi5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYkRhdGVUaW1lQ2hvb3NlclBhcmFtcy5oJywKLSAgICAgICAgICAgICAgICAncHVibGljL1dl
YkRlbGl2ZXJlZEludGVudENsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRl
dlRvb2xzQWdlbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZUb29sc0FnZW50
Q2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRGV2VG9vbHNGcm9udGVuZC5o
JywKQEAgLTE5Myw5ICsxOTIsNiBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSW1hZ2VE
ZWNvZGVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSW5wdXRFbGVtZW50LmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSW5wdXRFdmVudC5oJywKLSAgICAgICAgICAgICAg
ICAncHVibGljL1dlYkludGVudC5oJywKLSAgICAgICAgICAgICAgICAncHVibGljL1dlYkludGVu
dFJlcXVlc3QuaCcsCi0gICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJbnRlbnRTZXJ2aWNlSW5m
by5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYktpdC5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYkxhYmVsRWxlbWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
Yk1lZGlhUGxheWVyLmgnLApAQCAtMzMzLDggKzMyOSw2IEBACiAgICAgICAgICAgICAgICAgJ3Ny
Yy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0NvbnRl
eHRNZW51Q2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL0RhdGFiYXNlT2JzZXJ2
ZXIuY3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL0RlbGl2ZXJlZEludGVudENsaWVudEltcGwu
Y3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL0RlbGl2ZXJlZEludGVudENsaWVudEltcGwuaCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmgnLAog
ICAgICAgICAgICAgICAgICdzcmMvRE9NVXRpbGl0aWVzUHJpdmF0ZS5jcHAnLApAQCAtNTEzLDkg
KzUwNyw2IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbnB1dEV2ZW50LmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaCcsCi0gICAgICAgICAgICAgICAg
J3NyYy9XZWJJbnRlbnQuY3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL1dlYkludGVudFJlcXVl
c3QuY3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL1dlYkludGVudFNlcnZpY2VJbmZvLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJLaXQuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYkxhYmVsRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsLmNwcCcsCkBAIC03NTksMTkgKzc1MCw2IEBACiAgICAgICAgICAgICAgICAg
ICAgICAgICB9XSwKICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICB9XSwK
LSAgICAgICAgICAgICAgICBbJ2VuYWJsZV93ZWJfaW50ZW50cz09MCcsIHsKLSAgICAgICAgICAg
ICAgICAgICdzb3VyY2VzISc6IFsKLSAgICAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZWxp
dmVyZWRJbnRlbnRDbGllbnQuaCcsCi0gICAgICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSW50
ZW50LmgnLAotICAgICAgICAgICAgICAgICAgICAncHVibGljL1dlYkludGVudFJlcXVlc3QuaCcs
Ci0gICAgICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSW50ZW50U2VydmljZUluZm8uaCcsCi0g
ICAgICAgICAgICAgICAgICAgICdzcmMvRGVsaXZlcmVkSW50ZW50Q2xpZW50SW1wbC5jcHAnLAot
ICAgICAgICAgICAgICAgICAgICAnc3JjL0RlbGl2ZXJlZEludGVudENsaWVudEltcGwuaCcsCi0g
ICAgICAgICAgICAgICAgICAgICdzcmMvV2ViSW50ZW50LmNwcCcsCi0gICAgICAgICAgICAgICAg
ICAgICdzcmMvV2ViSW50ZW50UmVxdWVzdC5jcHAnLAotICAgICAgICAgICAgICAgICAgICAnc3Jj
L1dlYkludGVudFNlcnZpY2VJbmZvLmNwcCcsCi0gICAgICAgICAgICAgICAgICBdLAotICAgICAg
ICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgIFsndXNlX2RlZmF1bHRfcmVuZGVyX3RoZW1l
PT0xJywgewogICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzogWwogICAgICAgICAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9kZWZhdWx0JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVy
ZXMuZ3lwaQppbmRleCA3ZDY3NTQ1MmVjMjcyNWI4OGIxNDIwZWIzMzMxMzgzYjA0YWM5MjIzLi5i
NGIxZjY1MzViOGNhYjVhOTY3Y2Y5ZDU5YWU3NDU2MWZjZTAzYzI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9mZWF0dXJlcy5neXBpCkBAIC0yMjgsMTYgKzIyOCw2IEBACiAgICAgICAgICAgJ0VOQUJM
RV9PUEVOVFlQRV9WRVJUSUNBTD0xJywKICAgICAgICAgXSwKICAgICAgIH1dLAotICAgICAgWydl
bmFibGVfd2ViX2ludGVudHM9PTEnLCB7Ci0gICAgICAgICdmZWF0dXJlX2RlZmluZXMnOiBbCi0g
ICAgICAgICAgJ0VOQUJMRV9XRUJfSU5URU5UUz0xJywKLSAgICAgICAgXSwKLSAgICAgIH1dLAot
ICAgICAgWydlbmFibGVfd2ViX2ludGVudHNfdGFnPT0xJywgewotICAgICAgICAnZmVhdHVyZV9k
ZWZpbmVzJzogWwotICAgICAgICAgICdFTkFCTEVfV0VCX0lOVEVOVFNfVEFHPTEnLAotICAgICAg
ICBdLAotICAgICAgfV0sCiAgICAgICBbJ09TPT0ibWFjIicsIHsKICAgICAgICAgJ2ZlYXR1cmVf
ZGVmaW5lcyc6IFsKICAgICAgICAgICAnRU5BQkxFX1JVQkJFUl9CQU5ESU5HPTEnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGVsaXZlcmVkSW50ZW50Q2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZWxpdmVyZWRJbnRlbnRD
bGllbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThkZDFlYTBhNzcxYTBmMjdm
OTFmNTdkZjVmYTA5Mzk2MDFiOTk2Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZWxpdmVyZWRJ
bnRlbnRDbGllbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkRl
bGl2ZXJlZEludGVudENsaWVudF9oCi0jZGVmaW5lIFdlYkRlbGl2ZXJlZEludGVudENsaWVudF9o
Ci0KLSNpbmNsdWRlICIuLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9u
LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJTZXJpYWxpemVkU2NyaXB0VmFs
dWU7Ci0KLS8vIFRoZSBlbWJlZGRlciBpbXBsZW1lbnRzIHRoaXMgaW50ZXJmYWNlIHRvIHJlY2Vp
dmUgcmVwbHkgY2FsbHMgZnJvbSB0aGUgc2VydmljZQotLy8gaW4gcmVzcG9uc2UgdG8gdGhlIGRl
bGl2ZXJ5IG9mIGEgd2ViIGludGVudC4gVGhpcyBjbGllbnQgbXVzdCByZW1haW4gdmFsaWQKLS8v
IHVudGlsIHRoZSBkZXN0cm95KCkgbWV0aG9kIGlzIGNhbGxlZC4KLS8vIFNlZSBzcGVjIGF0IGh0
dHA6Ly93d3cuY2hyb21pdW0ub3JnL2RldmVsb3BlcnMvZGVzaWduLWRvY3VtZW50cy93ZWJpbnRl
bnRzYXBpCi1jbGFzcyBXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQgewotcHVibGljOgotICAgIHZp
cnR1YWwgfldlYkRlbGl2ZXJlZEludGVudENsaWVudCgpIHsgfQotCi0gICAgdmlydHVhbCB2b2lk
IHBvc3RSZXN1bHQoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiBkYXRhKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RGYWlsdXJlKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSYgZGF0YSkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgPSAw
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJEZWxpdmVyZWRJ
bnRlbnRDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKaW5k
ZXggN2Q5MjMwNzFlNjk5ZTBhMzMyZTNlOWVkNTUyOTgyMDA3N2NkYTZiYS4uMGZhZTlhYzYyMWFm
MTMzY2JlYjk0ZmZjOGEwZWUzMmQ5YjA1MjUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGcmFtZS5oCkBAIC01OCwxMyArNTgsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBj
bGFzcyBXZWJBbmltYXRpb25Db250cm9sbGVyOwogY2xhc3MgV2ViRGF0YTsKIGNsYXNzIFdlYkRh
dGFTb3VyY2U7Ci1jbGFzcyBXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQ7CiBjbGFzcyBXZWJEb2N1
bWVudDsKIGNsYXNzIFdlYkVsZW1lbnQ7CiBjbGFzcyBXZWJGb3JtRWxlbWVudDsKIGNsYXNzIFdl
Ykhpc3RvcnlJdGVtOwogY2xhc3MgV2ViSW5wdXRFbGVtZW50OwotY2xhc3MgV2ViSW50ZW50Owog
Y2xhc3MgV2ViUGVyZm9ybWFuY2U7CiBjbGFzcyBXZWJSYW5nZTsKIGNsYXNzIFdlYlNlY3VyaXR5
T3JpZ2luOwpAQCAtNjM0LDE0ICs2MzIsNiBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IFdlYkRP
TUV2ZW50JikgPSAwOwogCiAKLSAgICAvLyBXZWIgSW50ZW50cyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIC8vIENhbGxlZCBv
biBhIHRhcmdldCBzZXJ2aWNlIHBhZ2UgdG8gZGVsaXZlciBhbiBpbnRlbnQgdG8gdGhlIHdpbmRv
dy4KLSAgICAvLyBUaGUgcG9ydHMgYXJlIGFueSB0cmFuc2ZlcnJlZCBwb3J0cyB0aGF0IGFjY29t
cGFueSB0aGUgaW50ZW50IGFzIGEgcmVzdWx0Ci0gICAgLy8gb2YgTWVzc2FnZVBvcnQgdHJhbnNm
ZXIuCi0gICAgdmlydHVhbCB2b2lkIGRlbGl2ZXJJbnRlbnQoY29uc3QgV2ViSW50ZW50JiwgV2Vi
TWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIHBvcnRzLCBXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQq
KSA9IDA7Ci0KLQogICAgIC8vIFV0aWxpdHkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgLy8gUmV0dXJucyB0aGUgY29u
dGVudHMgb2YgdGhpcyBmcmFtZSBhcyBhIHN0cmluZy4gIElmIHRoZSB0ZXh0IGlzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAppbmRleCBlMTJhODRi
ZmY5ZWVmNDEyNjdjYTkzNDM0OGY2NmMzNjA2MTM5NGViLi4zMGI4MDhiYzVjMDA1MzNlYWYzZmU2
Y2VjYzdkYzQ0ZWUwMzYzZTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGcmFtZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkZyYW1lQ2xpZW50LmgKQEAgLTU2LDkgKzU2LDYgQEAgY2xhc3MgV2ViRGF0YVNvdXJjZTsK
IGNsYXNzIFdlYkRPTUV2ZW50OwogY2xhc3MgV2ViRm9ybUVsZW1lbnQ7CiBjbGFzcyBXZWJGcmFt
ZTsKLWNsYXNzIFdlYkludGVudDsKLWNsYXNzIFdlYkludGVudFJlcXVlc3Q7Ci1jbGFzcyBXZWJJ
bnRlbnRTZXJ2aWNlSW5mbzsKIGNsYXNzIFdlYk1lZGlhUGxheWVyOwogY2xhc3MgV2ViTWVkaWFQ
bGF5ZXJDbGllbnQ7CiBjbGFzcyBXZWJOb2RlOwpAQCAtMzk5LDE1ICszOTYsNiBAQCBwdWJsaWM6
CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YUluQnl0ZXMsCiAgICAgICAgIFdl
YlN0b3JhZ2VRdW90YUNhbGxiYWNrcyopIHsgfQogCi0gICAgLy8gV2ViIEludGVudHMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICAvLyBS
ZWdpc3RlciBhIHNlcnZpY2UgdG8gaGFuZGxlIFdlYiBJbnRlbnRzLgotICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlckludGVudFNlcnZpY2UoV2ViRnJhbWUqLCBjb25zdCBXZWJJbnRlbnRTZXJ2aWNl
SW5mbyYpIHsgfQotCi0gICAgLy8gU3RhcnQgYSBXZWIgSW50ZW50cyBhY3Rpdml0eS4gVGhlIGNh
bGxlZSB1c2VzIHRoZSB8V2ViSW50ZW50UmVxdWVzdHwKLSAgICAvLyBvYmplY3QgdG8gY29vcmRp
bmF0ZSByZXBsaWVzIHRvIHRoZSBpbnRlbnQgaW52b2NhdGlvbi4KLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hJbnRlbnQoV2ViRnJhbWUqLCBjb25zdCBXZWJJbnRlbnRSZXF1ZXN0JikgeyB9Ci0K
ICAgICAvLyBXZWJTb2NrZXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAogICAgIC8vIEEgV2ViU29ja2V0IG9iamVjdCBpcyBnb2luZyB0byBv
cGVuIG5ldyBzdHJlYW0gY29ubmVjdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkludGVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSW50ZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxNWJjMDRmMDAyNDY0
OWQ1MjA1YzU3NzgxMWZhMTViMDIwODgzNzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJJbnRlbnRfaAotI2Rl
ZmluZSBXZWJJbnRlbnRfaAotCi0jaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgIi4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJQcml2YXRlUHRyLmgiCi0jaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYlN0cmluZy5oIgotI2luY2x1ZGUgIi4uLy4uLy4uL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJVUkwuaCIKLSNpbmNsdWRlICIuLi8uLi8uLi9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViVmVjdG9yLmgiCi0jaW5jbHVkZSAiV2ViTWVzc2FnZVBvcnRDaGFubmVs
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSW50ZW50OyB9Ci0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotCi0vLyBIb2xkcyBkYXRhIHBhc3NlZCB0aHJvdWdoIGEgV2ViIEludGVudHMgaW52
b2NhdGlvbiBjYWxsIGZyb20gdGhlIEphdmFzY3JpcHQKLS8vIEludGVudCBvYmplY3QuCi0vLyBT
ZWUgc3BlYyBhdCBodHRwOi8vd3d3LmNocm9taXVtLm9yZy9kZXZlbG9wZXJzL2Rlc2lnbi1kb2N1
bWVudHMvd2ViaW50ZW50c2FwaQotY2xhc3MgV2ViSW50ZW50IHsKLXB1YmxpYzoKLSAgICBXZWJJ
bnRlbnQoKSB7IH0KLSAgICBXZWJJbnRlbnQoY29uc3QgV2ViSW50ZW50JiBvdGhlcikgeyBhc3Np
Z24ob3RoZXIpOyB9Ci0gICAgfldlYkludGVudCgpIHsgcmVzZXQoKTsgfQotCi0gICAgV2ViSW50
ZW50JiBvcGVyYXRvcj0oY29uc3QgV2ViSW50ZW50JiBvdGhlcikKLSAgICB7Ci0gICAgICAgYXNz
aWduKG90aGVyKTsKLSAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgV0VCS0lUX0VY
UE9SVCBzdGF0aWMgV2ViSW50ZW50IGNyZWF0ZShjb25zdCBXZWJTdHJpbmcmIGFjdGlvbiwgY29u
c3QgV2ViU3RyaW5nJiB0eXBlLCBjb25zdCBXZWJTdHJpbmcmIGRhdGEsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYg
ZXh0cmFzTmFtZXMsIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBleHRyYXNWYWx1ZXMpOwot
Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7Ci0gICAgV0VCS0lUX0VYUE9SVCBib29s
IGlzTnVsbCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBlcXVhbHMoY29uc3QgV2Vi
SW50ZW50JikgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJJ
bnRlbnQmKTsKLQotICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGFjdGlvbigpIGNvbnN0Owot
ICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIHR5cGUoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQ
T1JUIFdlYlN0cmluZyBkYXRhKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJVUkwgc2Vy
dmljZSgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgV2ViVmVjdG9yPFdlYlVSTD4gc3VnZ2Vz
dGlvbnMoKSBjb25zdDsKLQotICAgIC8vIFJldHJpZXZlIGEgbGlzdCBvZiB0aGUgbmFtZXMgb2Yg
ZXh0cmEgbWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZQotICAgIC8vIGludGVudC4KLSAgICBX
RUJLSVRfRVhQT1JUIFdlYlZlY3RvcjxXZWJTdHJpbmc+IGV4dHJhc05hbWVzKCkgY29uc3Q7Ci0K
LSAgICAvLyBSZXRyaWV2ZSB0aGUgdmFsdWUgb2YgYW4gZXh0cmEgbWV0YWRhdGEgZWxlbWVudC4g
VGhlIGFyZ3VtZW50IHNob3VsZAotICAgIC8vIGJlIG9uZSBvZiB0aGUgbmFtZXMgcmV0cmlldmVk
IHdpdGggfGV4dHJhc05hbWVzfC4gUmV0dXJucyBhbiBlbXB0eQotICAgIC8vIHN0cmluZyBpZiB0
aGUgbmFtZSBpcyBpbnZhbGlkLgotICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGV4dHJhc1Zh
bHVlKGNvbnN0IFdlYlN0cmluZyYpIGNvbnN0OwotCi0gICAgLy8gQ2FsbGVyIHRha2VzIG93bmVy
c2hpcCBvZiB0aGUgcG9ydHMuCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheSogbWVzc2FnZVBvcnRDaGFubmVsc1JlbGVhc2UoKSBjb25zdDsKLQotI2lmIFdFQktJ
VF9JTVBMRU1FTlRBVElPTgotICAgIFdlYkludGVudChjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6SW50ZW50PiYpOwotICAgIG9wZXJhdG9yIFdlYkNvcmU6OkludGVudCooKSBjb25zdDsK
LSNlbmRpZgotCi1wcml2YXRlOgotICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6SW50ZW50PiBt
X3ByaXZhdGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYklu
dGVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRl
bnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnRSZXF1
ZXN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExMWNiMDMzNTJmMGIzM2NmOWZm
NmNhMmM2MjY0NzRiNGZjZDQ2MzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50UmVxdWVz
dC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViSW50ZW50UmVxdWVz
dF9oCi0jZGVmaW5lIFdlYkludGVudFJlcXVlc3RfaAotCi0jaW5jbHVkZSAiLi4vLi4vLi4vUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgIi4uLy4uLy4uL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQcml2YXRlUHRyLmgiCi0jaW5jbHVkZSAiLi4vLi4v
Li4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlN0cmluZy5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7IGNsYXNzIEludGVudFJlcXVlc3Q7IH0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNs
YXNzIFdlYkludGVudDsKLWNsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLQotLy8gSG9s
ZHMgZGF0YSBwYXNzZWQgdGhyb3VnaCBhIFdlYiBJbnRlbnRzIGludm9jYXRpb24gY2FsbCBmcm9t
IHRoZSBKYXZhc2NyaXB0Ci0vLyBJbnRlbnQgb2JqZWN0LgotLy8gU2VlIHNwZWMgYXQgaHR0cDov
L3d3dy5jaHJvbWl1bS5vcmcvZGV2ZWxvcGVycy9kZXNpZ24tZG9jdW1lbnRzL3dlYmludGVudHNh
cGkKLWNsYXNzIFdlYkludGVudFJlcXVlc3QgewotcHVibGljOgotICAgIFdlYkludGVudFJlcXVl
c3QoKSB7IH0KLSAgICBXZWJJbnRlbnRSZXF1ZXN0KGNvbnN0IFdlYkludGVudFJlcXVlc3QmIG90
aGVyKSB7IGFzc2lnbihvdGhlcik7IH0KLSAgICB+V2ViSW50ZW50UmVxdWVzdCgpIHsgcmVzZXQo
KTsgfQotCi0gICAgV2ViSW50ZW50UmVxdWVzdCYgb3BlcmF0b3I9KGNvbnN0IFdlYkludGVudFJl
cXVlc3QmIG90aGVyKQotICAgIHsKLSAgICAgICBhc3NpZ24ob3RoZXIpOwotICAgICAgIHJldHVy
biAqdGhpczsKLSAgICB9Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7Ci0gICAgV0VC
S0lUX0VYUE9SVCBib29sIGlzTnVsbCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBl
cXVhbHMoY29uc3QgV2ViSW50ZW50UmVxdWVzdCYpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQg
dm9pZCBhc3NpZ24oY29uc3QgV2ViSW50ZW50UmVxdWVzdCYpOwotCi0gICAgV0VCS0lUX0VYUE9S
VCB2b2lkIHBvc3RSZXN1bHQoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJik7Ci0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHBvc3RGYWlsdXJlKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSYpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJJbnRlbnQgaW50ZW50KCkgY29uc3Q7Ci0K
LSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJJbnRlbnRSZXF1ZXN0KGNvbnN0IFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PiYpOwotI2VuZGlmCi0KLXByaXZh
dGU6Ci0gICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PiBtX3ByaXZhdGU7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkludGVudFJlcXVl
c3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50
U2VydmljZUluZm8uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkludGVudFNl
cnZpY2VJbmZvLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2ZWI2ZWZjODRmYmJh
MDNhNjYxZjlkZDZlODg3ZGVhOTdmZDM5NDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50
U2VydmljZUluZm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYklu
dGVudFNlcnZpY2VJbmZvX2gKLSNkZWZpbmUgV2ViSW50ZW50U2VydmljZUluZm9faAotCi0jaW5j
bHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbW1vbi5oIgotI2lu
Y2x1ZGUgIi4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTdHJpbmcuaCIKLSNp
bmNsdWRlICIuLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMLmgiCi0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi0vLyBIb2xkcyBkYXRhIHVzZWQgdG8gaW5pdGlhbGl6ZSBhIFdl
YiBJbnRlbnRzIHNlcnZpY2UgKGhhbmRsZXIpLgotLy8gU2VlIHNwZWMgYXQgaHR0cDovL3d3dy5j
aHJvbWl1bS5vcmcvZGV2ZWxvcGVycy9kZXNpZ24tZG9jdW1lbnRzL3dlYmludGVudHNhcGkKLWNs
YXNzIFdlYkludGVudFNlcnZpY2VJbmZvIHsKLXB1YmxpYzoKLSAgICBXZWJJbnRlbnRTZXJ2aWNl
SW5mbygpIHsgfQotICAgIH5XZWJJbnRlbnRTZXJ2aWNlSW5mbygpIHsgfQotCi0gICAgLy8gVGhl
IGxvY2F0aW9uIG9mIHRoZSBoYW5kbGVyIHBhZ2UgcmVnaXN0ZXJlZCBieSB0aGUgc2VydmljZS4K
LSAgICBXRUJLSVRfRVhQT1JUIFdlYlVSTCB1cmwoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0VVJMKGNvbnN0IFdlYlVSTCYpOwotCi0gICAgLy8gVGhlIHNob3J0IG5hbWUgdGhl
IHNlcnZpY2Ugd2lsbCBiZSBrbm93biBieSB3aGVuIHRoZSB1c2VyCi0gICAgLy8gaW5pdGlhdGVz
IGFuIGludGVudC4KLSAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyB0aXRsZSgpIGNvbnN0Owot
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJTdHJpbmcmKTsKLQotICAg
IC8vIFRoZSBraW5kIG9mIGludGVudCB0aGUgc2VydmljZSB3aWxsIGhhbmRsZS4KLSAgICBXRUJL
SVRfRVhQT1JUIFdlYlN0cmluZyBhY3Rpb24oKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0QWN0aW9uKGNvbnN0IFdlYlN0cmluZyYpOwotCi0gICAgLy8gVGhlIHR5cGUgb2YgcGF5
bG9hZCBkYXRhIHdoaWNoIHRoZSBzZXJ2aWNlIHdpbGwgaGFuZGxlLgotICAgIFdFQktJVF9FWFBP
UlQgV2ViU3RyaW5nIHR5cGUoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0VHlw
ZShjb25zdCBXZWJTdHJpbmcmKTsKLQotICAgIC8vIEEgaGludCB0byB0aGUgY2xpZW50IGFib3V0
IHdoZXRoZXIgdGhlIHNlcnZpY2UgY2FuIGJlIHJ1biB3aXRoaW4KLSAgICAvLyBhbiAiaW5saW5l
IiBjb250ZXh0IHdpdGhpbiB0aGUgY2FsbGluZyBwYWdlLCBvciBpbiBhIG5ldyB0YWIKLSAgICAv
LyBjb250ZXh0ICh0aGUgZGVmYXVsdCkuCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgZGlz
cG9zaXRpb24oKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RGlzcG9zaXRpb24o
Y29uc3QgV2ViU3RyaW5nJik7Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJJ
bnRlbnRTZXJ2aWNlSW5mbyhjb25zdCBXZWJTdHJpbmcmIGFjdGlvbiwgY29uc3QgV2ViU3RyaW5n
JiB0eXBlLCBjb25zdCBXZWJVUkwmIGhyZWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgV2ViU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViU3RyaW5nJiBkaXNwb3NpdGlvbik7Ci0jZW5k
aWYKLQotcHJpdmF0ZToKLSAgICBXZWJTdHJpbmcgbV9hY3Rpb247Ci0gICAgV2ViU3RyaW5nIG1f
dHlwZTsKLSAgICBXZWJVUkwgbV9ocmVmOwotICAgIFdlYlN0cmluZyBtX3RpdGxlOwotICAgIFdl
YlN0cmluZyBtX2Rpc3Bvc2l0aW9uOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZiAvLyBXZWJJbnRlbnRTZXJ2aWNlSW5mb19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJSdW50aW1lRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlJ1bnRpbWVGZWF0dXJlcy5oCmluZGV4IGVjNjQxMWU0MDJjNTIxZTdh
ODQ2NjNiNmVmNGRlNDUxOWE4MDI1MmYuLjRhM2FjNDM1OTA1NzE1NTRkZDlmZmU4NGFmYmY2MzBj
NzQ1YjczNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJ1
bnRpbWVGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJ1
bnRpbWVGZWF0dXJlcy5oCkBAIC0xNjQsOSArMTY0LDYgQEAgcHVibGljOgogICAgIFdFQktJVF9F
WFBPUlQgc3RhdGljIHZvaWQgZW5hYmxlU2VhbWxlc3NJRnJhbWVzKGJvb2wpOwogICAgIFdFQktJ
VF9FWFBPUlQgc3RhdGljIGJvb2wgYXJlU2VhbWxlc3NJRnJhbWVzRW5hYmxlZCgpOwogCi0gICAg
V0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBlbmFibGVXZWJJbnRlbnRzKGJvb2wpOwotICAgIFdF
QktJVF9FWFBPUlQgc3RhdGljIGJvb2wgaXNXZWJJbnRlbnRzRW5hYmxlZCgpOwotCiAgICAgLy8g
SWYgdGhlIGZsYWcgaXMgc2V0LCB3ZSB1c2UgV2ViVmlld0NsaWVudDo6c2hvd1ZhbGlkYXRpb25N
ZXNzYWdlIGFuZAogICAgIC8vIGhpZGVWbGlkYXRpb25NZXNzYWdlIGZvciBpbnRlcmFjdGl2ZSBm
b3JtIHZhbGlkYXRpb24uCiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBlbmFibGVOYXRp
dmVWYWxpZGF0aW9uTWVzc2FnZShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0RlbGl2ZXJlZEludGVudENsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvRGVsaXZlcmVkSW50ZW50Q2xpZW50SW1wbC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDUwYzAxZDJiM2MxM2UwZGM5ZWEyMTQ1YzBmZWY5ZjE2YWRiMTQyNTUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvRGVsaXZlcmVkSW50ZW50Q2xpZW50SW1wbC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRlbGl2
ZXJlZEludGVudENsaWVudEltcGwuaCIKLQotI2luY2x1ZGUgIldlYkRlbGl2ZXJlZEludGVudENs
aWVudC5oIgotI2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotRGVsaXZlcmVkSW50ZW50Q2xpZW50SW1wbDo6RGVsaXZlcmVkSW50ZW50
Q2xpZW50SW1wbChXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fY2xp
ZW50KGNsaWVudCkKLXsKLX0KLQotRGVsaXZlcmVkSW50ZW50Q2xpZW50SW1wbDo6fkRlbGl2ZXJl
ZEludGVudENsaWVudEltcGwoKQotewotICAgIG1fY2xpZW50LT5kZXN0cm95KCk7Ci0gICAgbV9j
bGllbnQgPSAwOwotfQotCi12b2lkIERlbGl2ZXJlZEludGVudENsaWVudEltcGw6OnBvc3RSZXN1
bHQoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEpCi17Ci0g
ICAgbV9jbGllbnQtPnBvc3RSZXN1bHQoZGF0YSk7Ci19Ci0KLXZvaWQgRGVsaXZlcmVkSW50ZW50
Q2xpZW50SW1wbDo6cG9zdEZhaWx1cmUoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGRhdGEpCi17Ci0gICAgbV9jbGllbnQtPnBvc3RGYWlsdXJlKGRhdGEpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0RlbGl2ZXJlZEludGVudENsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0RlbGl2ZXJlZEludGVudENsaWVudEltcGwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNWVjZTRlZWQxODJhYWE0M2U3YjYzZmM3NTU0NTQ4MTQ3YmY1ZjBjMi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9EZWxpdmVyZWRJbnRlbnRDbGllbnRJbXBsLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBEZWxpdmVyZWRJbnRlbnRDbGllbnRJbXBsX2gKLSNkZWZpbmUg
RGVsaXZlcmVkSW50ZW50Q2xpZW50SW1wbF9oCi0KLSNpbmNsdWRlICJEZWxpdmVyZWRJbnRlbnQu
aCIKLSNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlIDxwdWJsaWMv
V2ViQ29tbW9uLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLWNsYXNzIFdlYkRlbGl2ZXJlZEludGVudENsaWVudDsKLWNsYXNzIFdlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTsKLQotLy8gVGhlIGVtYmVkZGVyIGltcGxlbWVudHMgdGhpcyBpbnRl
cmZhY2UgdG8gcmVjZWl2ZSByZXBseSBjYWxscyBmcm9tIHRoZSBzZXJ2aWNlCi0vLyBpbiByZXNw
b25zZSB0byB0aGUgZGVsaXZlcnkgb2YgYSB3ZWIgaW50ZW50LiBUaGlzIGNsaWVudCBtdXN0IHJl
bWFpbiB2YWxpZAotLy8gdW50aWwgdGhlIGRlc3Ryb3koKSBtZXRob2QgaXMgY2FsbGVkLCBvciB1
bnRpbCB0aGUgV2ViRnJhbWUgdG8gd2hpY2ggaXQgaXMKLS8vIGRlbGl2ZXJlZCBpcyBkZXN0cm95
ZWQuCi0vLyBTZWUgc3BlYyBhdCBodHRwOi8vd3d3LmNocm9taXVtLm9yZy9kZXZlbG9wZXJzL2Rl
c2lnbi1kb2N1bWVudHMvd2ViaW50ZW50c2FwaQotY2xhc3MgRGVsaXZlcmVkSW50ZW50Q2xpZW50
SW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpEZWxpdmVyZWRJbnRlbnRDbGllbnQgewotICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKERlbGl2ZXJlZEludGVudENsaWVudEltcGwpOwotcHVibGljOgotICAg
IGV4cGxpY2l0IERlbGl2ZXJlZEludGVudENsaWVudEltcGwoV2ViRGVsaXZlcmVkSW50ZW50Q2xp
ZW50Kik7Ci0gICAgdmlydHVhbCB+RGVsaXZlcmVkSW50ZW50Q2xpZW50SW1wbCgpOwotCi0gICAg
dmlydHVhbCB2b2lkIHBvc3RSZXN1bHQoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGRhdGEpOwotICAgIHZpcnR1YWwgdm9pZCBwb3N0RmFpbHVyZShQYXNzUmVmUHRy
PFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSk7Ci0KLXByaXZhdGU6Ci0gICAg
V2ViRGVsaXZlcmVkSW50ZW50Q2xpZW50KiBtX2NsaWVudDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gRGVsaXZlcmVkSW50ZW50Q2xpZW50SW1wbF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcApp
bmRleCA4MDY0ZjAzMmZiMTNmNDQ5NWE2MDRkNGYwNjQ3MjgwY2EwNDkxYTEyLi5lOGEwYjI1ODZm
ZWQ1ZWM4MGMxZjc5NmU4OTQ2ZmY2YjY3ZmJmZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKQEAgLTQ3LDcgKzQ3LDYg
QEAKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAj
aW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgotI2luY2x1ZGUgIkludGVudFJlcXVlc3QuaCIKICNp
bmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAj
aW5jbHVkZSAiTW91c2VFdmVudC5oIgpAQCAtNzMsOCArNzIsNiBAQAogI2luY2x1ZGUgIldlYkZv
cm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJG
cmFtZUltcGwuaCIKLSNpbmNsdWRlICJXZWJJbnRlbnRSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiV2Vi
SW50ZW50U2VydmljZUluZm8uaCIKICNpbmNsdWRlICJXZWJOb2RlLmgiCiAjaW5jbHVkZSAiV2Vi
UGVybWlzc2lvbkNsaWVudC5oIgogI2luY2x1ZGUgIldlYlBsdWdpbi5oIgpAQCAtMTY0MiwyOCAr
MTYzOSw2IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaWRDaGFuZ2VOYW1lKGNvbnN0
IFN0cmluZyYgbmFtZSkKICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkQ2hhbmdlTmFtZSht
X3dlYkZyYW1lLCBuYW1lKTsKIH0KIAotI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi12b2lk
IEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6cmVnaXN0ZXJJbnRlbnRTZXJ2aWNlKAotICAgICAgICBj
b25zdCBTdHJpbmcmIGFjdGlvbiwKLSAgICAgICAgY29uc3QgU3RyaW5nJiB0eXBlLAotICAgICAg
ICBjb25zdCBLVVJMJiBocmVmLAotICAgICAgICBjb25zdCBTdHJpbmcmIHRpdGxlLAotICAgICAg
ICBjb25zdCBTdHJpbmcmIGRpc3Bvc2l0aW9uKSB7Ci0gICAgaWYgKCFtX3dlYkZyYW1lLT5jbGll
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV2ViSW50ZW50U2VydmljZUluZm8gc2Vydmlj
ZShhY3Rpb24sIHR5cGUsIGhyZWYsIHRpdGxlLCBkaXNwb3NpdGlvbik7Ci0gICAgbV93ZWJGcmFt
ZS0+Y2xpZW50KCktPnJlZ2lzdGVySW50ZW50U2VydmljZShtX3dlYkZyYW1lLCBzZXJ2aWNlKTsK
LX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotdm9pZCBGcmFtZUxvYWRlckNs
aWVudEltcGw6OmRpc3BhdGNoSW50ZW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6SW50ZW50UmVxdWVz
dD4gaW50ZW50UmVxdWVzdCkKLXsKLSAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlzcGF0Y2hJ
bnRlbnQod2ViRnJhbWUoKSwgaW50ZW50UmVxdWVzdCk7Ci19Ci0jZW5kaWYKLQogdm9pZCBGcmFt
ZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoV2lsbE9wZW5Tb2NrZXRTdHJlYW0oU29ja2V0U3Ry
ZWFtSGFuZGxlKiBoYW5kbGUpCiB7CiAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPndpbGxPcGVu
U29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjp0b1dlYlNvY2tldFN0cmVh
bUhhbmRsZShoYW5kbGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmgKaW5kZXggODIwOTdhYzZhZTUwMzRjNDliMGRhMDhlOTMwZTVh
N2E2MThlZjA1My4uZTlhNWU4MDRmNDdkYzc0NmFhMDcyODM4ZGEyOWI4M2U5NGE5NmI1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBs
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBs
LmgKQEAgLTIxMSwxNyArMjExLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB3aWxsQ2hl
Y2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdGFyZ2V0
LCBXZWJDb3JlOjpNZXNzYWdlRXZlbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlTmFtZShjb25zdCBTdHJpbmcmKTsKIAotI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi0g
ICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVySW50ZW50U2VydmljZShjb25zdCBTdHJpbmcmIGFjdGlv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYg
dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNv
cmU6OktVUkwmIGhyZWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBTdHJpbmcmIHRpdGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgU3RyaW5nJiBkaXNwb3NpdGlvbik7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCX0lO
VEVOVFMpCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoSW50ZW50KFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SW50ZW50UmVxdWVzdD4pIE9WRVJSSURFOwotI2VuZGlmCi0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hXaWxsT3BlblNvY2tldFN0cmVhbShXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUq
KSBPVkVSUklERTsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCA5ZWY1MDAyMTc0Njc2NDAyYWQ3MDkz
MTQ1MWQyM2I3N2NhYThlYTI2Li41ZGMxMzRhZGJjYjlkYmU0NWUzYzJlN2M0NDRmMDZhODdiN2Zl
MDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKQEAg
LTgxLDcgKzgxLDYgQEAKICNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRE9N
VXRpbGl0aWVzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgotI2luY2x1ZGUgIkRP
TVdpbmRvd0ludGVudHMuaCIKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRl
ICJEaXJlY3RvcnlFbnRyeS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCkBAIC0xNTgsNyArMTU3
LDYgQEAKICNpbmNsdWRlICJXZWJET01FdmVudC5oIgogI2luY2x1ZGUgIldlYkRPTUV2ZW50TGlz
dGVuZXIuaCIKICNpbmNsdWRlICJXZWJEYXRhU291cmNlSW1wbC5oIgotI2luY2x1ZGUgIldlYkRl
bGl2ZXJlZEludGVudENsaWVudC5oIgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRQcml2YXRl
LmgiCiAjaW5jbHVkZSAiV2ViRG9jdW1lbnQuaCIKICNpbmNsdWRlICJXZWJGaW5kT3B0aW9ucy5o
IgpAQCAtMTY3LDcgKzE2NSw2IEBACiAjaW5jbHVkZSAiV2ViSGlzdG9yeUl0ZW0uaCIKICNpbmNs
dWRlICJXZWJJY29uVVJMLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFbGVtZW50LmgiCi0jaW5jbHVk
ZSAiV2ViSW50ZW50LmgiCiAjaW5jbHVkZSAiV2ViTm9kZS5oIgogI2luY2x1ZGUgIldlYlBlcmZv
cm1hbmNlLmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2luLmgiCkBAIC0xOTUsMTEgKzE5Miw2IEBACiAj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAot
I2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSNpbmNsdWRlICJEZWxpdmVyZWRJbnRlbnQuaCIKLSNp
bmNsdWRlICJEZWxpdmVyZWRJbnRlbnRDbGllbnRJbXBsLmgiCi0jZW5kaWYKLQogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjA4NiwzMiArMjA3OCw2
IEBAIGludCBXZWJGcmFtZUltcGw6OnNlbGVjdEZpbmRNYXRjaCh1bnNpZ25lZCBpbmRleCwgV2Vi
UmVjdCogc2VsZWN0aW9uUmVjdCkKICAgICByZXR1cm4gb3JkaW5hbE9mRmlyc3RNYXRjaEZvckZy
YW1lKHRoaXMpICsgbV9hY3RpdmVNYXRjaEluZGV4SW5DdXJyZW50RnJhbWUgKyAxOwogfQogCi12
b2lkIFdlYkZyYW1lSW1wbDo6ZGVsaXZlckludGVudChjb25zdCBXZWJJbnRlbnQmIGludGVudCwg
V2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIHBvcnRzLCBXZWJEZWxpdmVyZWRJbnRlbnRDbGll
bnQqIGludGVudENsaWVudCkKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgT3duUHRy
PFdlYkNvcmU6OkRlbGl2ZXJlZEludGVudENsaWVudD4gY2xpZW50KGFkb3B0UHRyKG5ldyBEZWxp
dmVyZWRJbnRlbnRDbGllbnRJbXBsKGludGVudENsaWVudCkpKTsKLQotICAgIFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSBpbnRlbnREYXRhID0gV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpmcm9t
U3RyaW5nKGludGVudC5kYXRhKCkpOwotICAgIGNvbnN0IFdlYkNvcmU6OkludGVudCogd2ViY29y
ZUludGVudCA9IGludGVudDsKLQotICAgIC8vIFNlZSBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5l
bC5jcHAKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzOwotICAg
IGlmIChwb3J0cyAmJiBwb3J0cy0+c2l6ZSgpKSB7Ci0gICAgICAgIGNoYW5uZWxzID0gYWRvcHRQ
dHIobmV3IE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KHBvcnRzLT5zaXplKCkpKTsKLSAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBwb3J0cy0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAg
IFJlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gcGxhdGZvcm1DaGFubmVsID0gUGxh
dGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZSgoKnBvcnRzKVtpXSk7Ci0gICAgICAgICAg
ICAoKnBvcnRzKVtpXS0+c2V0Q2xpZW50KHBsYXRmb3JtQ2hhbm5lbC5nZXQoKSk7Ci0gICAgICAg
ICAgICAoKmNoYW5uZWxzKVtpXSA9IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHBsYXRmb3Jt
Q2hhbm5lbCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+
IHBvcnRBcnJheSA9IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCooZnJhbWUo
KS0+ZG9jdW1lbnQoKSksIGNoYW5uZWxzLnJlbGVhc2UoKSk7Ci0KLSAgICBSZWZQdHI8RGVsaXZl
cmVkSW50ZW50PiBkZWxpdmVyZWRJbnRlbnQgPSBEZWxpdmVyZWRJbnRlbnQ6OmNyZWF0ZShmcmFt
ZSgpLCBjbGllbnQucmVsZWFzZSgpLCBpbnRlbnQuYWN0aW9uKCksIGludGVudC50eXBlKCksIGlu
dGVudERhdGEsIHBvcnRBcnJheS5yZWxlYXNlKCksIHdlYmNvcmVJbnRlbnQtPmV4dHJhcygpKTsK
LQotICAgIERPTVdpbmRvd0ludGVudHM6OmZyb20oZnJhbWUoKS0+ZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCkpLT5kZWxpdmVyKGRlbGl2ZXJlZEludGVudC5yZWxlYXNlKCkpOwotI2VuZGlmCi19Ci0K
IFdlYlN0cmluZyBXZWJGcmFtZUltcGw6OmNvbnRlbnRBc1RleHQoc2l6ZV90IG1heENoYXJzKSBj
b25zdAogewogICAgIGlmICghZnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RnJhbWVJbXBsLmgKaW5kZXggYWQxZjA1MzRkZGJjMGM0NzNkOThjZTI1NDEyNmNiNzIzZjIyNjdh
Ny4uNzVmODRiNTgzZjM2OTIyMTdkMGVmYTNiMTlmNjcxZmY2NjZkNjBjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKQEAgLTU3LDkgKzU3LDcgQEAgc3RydWN0
IFdpbmRvd0ZlYXR1cmVzOwogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBDaHJvbWVQcmludENv
bnRleHQ7CiBjbGFzcyBXZWJEYXRhU291cmNlSW1wbDsKLWNsYXNzIFdlYkRlbGl2ZXJlZEludGVu
dENsaWVudDsKIGNsYXNzIFdlYklucHV0RWxlbWVudDsKLWNsYXNzIFdlYkludGVudDsKIGNsYXNz
IFdlYkZyYW1lQ2xpZW50OwogY2xhc3MgV2ViUGVyZm9ybWFuY2U7CiBjbGFzcyBXZWJQbHVnaW5D
b250YWluZXJJbXBsOwpAQCAtMjM1LDggKzIzMyw2IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3Qg
V2ViU2VjdXJpdHlPcmlnaW4mIGludGVuZGVkVGFyZ2V0T3JpZ2luLAogICAgICAgICBjb25zdCBX
ZWJET01FdmVudCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGRlbGl2ZXJJbnRlbnQoY29uc3QgV2Vi
SW50ZW50JiwgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqLCBXZWJEZWxpdmVyZWRJbnRlbnRD
bGllbnQqKTsKLQogICAgIHZpcnR1YWwgV2ViU3RyaW5nIGNvbnRlbnRBc1RleHQoc2l6ZV90IG1h
eENoYXJzKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlN0cmluZyBjb250ZW50QXNNYXJrdXAoKSBj
b25zdDsKICAgICB2aXJ0dWFsIFdlYlN0cmluZyByZW5kZXJUcmVlQXNUZXh0KFJlbmRlckFzVGV4
dENvbnRyb2xzIHRvU2hvdyA9IFJlbmRlckFzVGV4dE5vcm1hbCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnRlbnQuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZDY3MmNhM2E0M2NmN2RmZWY1NzhmNjc4M2U5ZDJhZDg0YjkyODQwNC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJbnRlbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTk3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViSW50ZW50LmgiCi0KLSNpbmNsdWRlICJJbnRlbnQu
aCIKLSNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtTWVzc2FnZVBv
cnRDaGFubmVsLmgiCi0jaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCi0jaW5jbHVk
ZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYkludGVudCBXZWJJbnRlbnQ6OmNyZWF0ZShjb25z
dCBXZWJTdHJpbmcmIGFjdGlvbiwgY29uc3QgV2ViU3RyaW5nJiB0eXBlLCBjb25zdCBXZWJTdHJp
bmcmIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViVmVjdG9yPFdl
YlN0cmluZz4mIGV4dHJhc05hbWVzLCBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgZXh0cmFz
VmFsdWVzKQotewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICBXZWJDb3JlOjpFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBXZWJDb3JlOjpNZXNzYWdlUG9ydEFycmF5IGR1bW15UG9ydHM7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkludGVudD4gaW50ZW50ID0gV2ViQ29yZTo6SW50ZW50Ojpj
cmVhdGUoYWN0aW9uLCB0eXBlLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZUZyb21XaXJlKGRhdGEpLCBkdW1teVBvcnRzLCBlYyk7Ci0gICAgaWYgKGVjKQotICAgICAgICBy
ZXR1cm4gV2ViSW50ZW50KCk7Ci0KLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBleHRyYXM7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleHRyYXNOYW1lcy5zaXplKCkgJiYgaSA8IGV4
dHJhc1ZhbHVlcy5zaXplKCk7ICsraSkKLSAgICAgICAgZXh0cmFzLmFkZChleHRyYXNOYW1lc1tp
XSwgZXh0cmFzVmFsdWVzW2ldKTsKLSAgICBpbnRlbnQtPnNldEV4dHJhcyhleHRyYXMpOwotCi0g
ICAgcmV0dXJuIFdlYkludGVudChpbnRlbnQucmVsZWFzZSgpKTsKLSNlbmRpZgotfQotCi0jaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQotV2ViSW50ZW50OjpXZWJJbnRlbnQoY29uc3QgUGFzc1JlZlB0
cjxXZWJDb3JlOjpJbnRlbnQ+JiBpbnRlbnQpCi0gICAgOiBtX3ByaXZhdGUoaW50ZW50KQotewot
fQotI2VuZGlmCi0KLXZvaWQgV2ViSW50ZW50OjpyZXNldCgpCi17Ci0jaWYgRU5BQkxFKFdFQl9J
TlRFTlRTKQotICAgIG1fcHJpdmF0ZS5yZXNldCgpOwotI2VuZGlmCi19Ci0KLWJvb2wgV2ViSW50
ZW50Ojppc051bGwoKSBjb25zdAotewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICByZXR1
cm4gbV9wcml2YXRlLmlzTnVsbCgpOwotI2Vsc2UKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgot
fQotCi1ib29sIFdlYkludGVudDo6ZXF1YWxzKGNvbnN0IFdlYkludGVudCYgb3RoZXIpIGNvbnN0
Ci17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIHJldHVybiAobV9wcml2YXRlLmdldCgp
ID09IG90aGVyLm1fcHJpdmF0ZS5nZXQoKSk7Ci0jZWxzZQotICAgIHJldHVybiB0cnVlOwotI2Vu
ZGlmCi19Ci0KLXZvaWQgV2ViSW50ZW50Ojphc3NpZ24oY29uc3QgV2ViSW50ZW50JiBvdGhlcikK
LXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2
YXRlOwotI2VuZGlmCi19Ci0KLVdlYlN0cmluZyBXZWJJbnRlbnQ6OmFjdGlvbigpIGNvbnN0Ci17
Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIHJldHVybiBtX3ByaXZhdGUtPmFjdGlvbigp
OwotI2Vsc2UKLSAgICByZXR1cm4gV2ViU3RyaW5nKCk7Ci0jZW5kaWYKLX0KLQotV2ViU3RyaW5n
IFdlYkludGVudDo6dHlwZSgpIGNvbnN0Ci17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAg
IHJldHVybiBtX3ByaXZhdGUtPnR5cGUoKTsKLSNlbHNlCi0gICAgcmV0dXJuIFdlYlN0cmluZygp
OwotI2VuZGlmCi19Ci0KLVdlYlN0cmluZyBXZWJJbnRlbnQ6OmRhdGEoKSBjb25zdAotewotI2lm
IEVOQUJMRShXRUJfSU5URU5UUykKLSAgICByZXR1cm4gbV9wcml2YXRlLT5kYXRhKCktPnRvV2ly
ZVN0cmluZygpOwotI2Vsc2UKLSAgICByZXR1cm4gV2ViU3RyaW5nKCk7Ci0jZW5kaWYKLX0KLQot
V2ViVVJMIFdlYkludGVudDo6c2VydmljZSgpIGNvbnN0Ci17Ci0jaWYgRU5BQkxFKFdFQl9JTlRF
TlRTKQotICAgIHJldHVybiBXZWJVUkwobV9wcml2YXRlLT5zZXJ2aWNlKCkpOwotI2Vsc2UKLSAg
ICByZXR1cm4gV2ViVVJMKCk7Ci0jZW5kaWYKLX0KLQotV2ViVmVjdG9yPFdlYlVSTD4gV2ViSW50
ZW50OjpzdWdnZXN0aW9ucygpIGNvbnN0Ci17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAg
IFdlYlZlY3RvcjxXZWJVUkw+IHN1Z2dlc3Rpb25zKG1fcHJpdmF0ZS0+c3VnZ2VzdGlvbnMoKS5z
aXplKCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wcml2YXRlLT5zdWdnZXN0aW9u
cygpLnNpemUoKTsgKytpKQotICAgICAgICBzdWdnZXN0aW9uc1tpXSA9IG1fcHJpdmF0ZS0+c3Vn
Z2VzdGlvbnMoKS5hdChpKTsKLSAgICByZXR1cm4gc3VnZ2VzdGlvbnM7Ci0jZWxzZQotICAgIHJl
dHVybiBXZWJWZWN0b3I8V2ViVVJMPigpOwotI2VuZGlmCi19Ci0KLVdlYk1lc3NhZ2VQb3J0Q2hh
bm5lbEFycmF5KiBXZWJJbnRlbnQ6Om1lc3NhZ2VQb3J0Q2hhbm5lbHNSZWxlYXNlKCkgY29uc3QK
LXsKLSAgICAvLyBOb3RlOiBzZWUgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OnBvc3RNZXNz
YWdlVG9SZW1vdGUuCi0gICAgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIHdlYkNoYW5uZWxz
ID0gMDsKLSAgICBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheSogbWVzc2FnZVBvcnRz
ID0gbV9wcml2YXRlLT5tZXNzYWdlUG9ydHMoKTsKLSAgICBpZiAobWVzc2FnZVBvcnRzKSB7Ci0g
ICAgICAgIHdlYkNoYW5uZWxzID0gbmV3IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KG1lc3Nh
Z2VQb3J0cy0+c2l6ZSgpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtZXNzYWdl
UG9ydHMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybU1lc3Nh
Z2VQb3J0Q2hhbm5lbCogcGxhdGZvcm1DaGFubmVsID0gbWVzc2FnZVBvcnRzLT5hdChpKS0+Y2hh
bm5lbCgpOwotICAgICAgICAgICAgKCp3ZWJDaGFubmVscylbaV0gPSBwbGF0Zm9ybUNoYW5uZWwt
PndlYkNoYW5uZWxSZWxlYXNlKCk7Ci0gICAgICAgICAgICAoKndlYkNoYW5uZWxzKVtpXS0+c2V0
Q2xpZW50KDApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHdlYkNoYW5uZWxzOwot
fQotCi1XZWJJbnRlbnQ6Om9wZXJhdG9yIFdlYkNvcmU6OkludGVudCooKSBjb25zdAotewotICAg
IHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7Ci19Ci0KLVdlYlZlY3RvcjxXZWJTdHJpbmc+IFdlYklu
dGVudDo6ZXh0cmFzTmFtZXMoKSBjb25zdAotewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAg
ICBzaXplX3QgbnVtRXh0cmFzID0gbV9wcml2YXRlLT5leHRyYXMoKS5zaXplKCk7Ci0gICAgV2Vi
VmVjdG9yPFdlYlN0cmluZz4ga2V5U3RyaW5ncyhudW1FeHRyYXMpOwotICAgIFdURjo6SGFzaE1h
cDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yOjpLZXlzIGtleUl0ZXIgPSBtX3ByaXZh
dGUtPmV4dHJhcygpLmJlZ2luKCkua2V5cygpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBrZXlJ
dGVyICE9IG1fcHJpdmF0ZS0+ZXh0cmFzKCkuZW5kKCkua2V5cygpOyArK2tleUl0ZXIsICsraSkK
LSAgICAgICAga2V5U3RyaW5nc1tpXSA9ICprZXlJdGVyOwotICAgIHJldHVybiBrZXlTdHJpbmdz
OwotI2Vsc2UKLSAgICByZXR1cm4gV2ViVmVjdG9yPFdlYlN0cmluZz4oKTsKLSNlbmRpZgotfQot
Ci1XZWJTdHJpbmcgV2ViSW50ZW50OjpleHRyYXNWYWx1ZShjb25zdCBXZWJTdHJpbmcmIG5hbWUp
IGNvbnN0Ci17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIFdURjo6SGFzaE1hcDxTdHJp
bmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIHZhbCA9IG1fcHJpdmF0ZS0+ZXh0cmFzKCkuZmlu
ZChuYW1lKTsKLSAgICBpZiAodmFsID09IG1fcHJpdmF0ZS0+ZXh0cmFzKCkuZW5kKCkpCi0gICAg
ICAgIHJldHVybiBXZWJTdHJpbmcoKTsKLSAgICByZXR1cm4gdmFsLT52YWx1ZTsKLSNlbHNlCi0g
ICAgcmV0dXJuIFdlYlN0cmluZygpOwotI2VuZGlmCi19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50UmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnRlbnRSZXF1ZXN0LmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjI4ODY4MTNjOGYyNTVjYjQwYzA1NzBjYzdl
OWVhOTY4NDFlNjhhZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnRlbnRSZXF1ZXN0LmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IldlYkludGVudFJlcXVlc3QuaCIKLQotI2luY2x1ZGUgIkludGVudC5oIgotI2luY2x1ZGUgIklu
dGVudFJlcXVlc3QuaCIKLSNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNs
dWRlICJXZWJJbnRlbnQuaCIKLSNpbmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIK
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi1XZWJJbnRl
bnRSZXF1ZXN0OjpXZWJJbnRlbnRSZXF1ZXN0KGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6SW50
ZW50UmVxdWVzdD4mIGludGVudFJlcXVlc3QpCi0gICAgOiBtX3ByaXZhdGUoaW50ZW50UmVxdWVz
dCkKLXsKLX0KLSNlbmRpZgotCi12b2lkIFdlYkludGVudFJlcXVlc3Q6OnJlc2V0KCkKLXsKLSNp
ZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgbV9wcml2YXRlLnJlc2V0KCk7Ci0jZW5kaWYKLX0K
LQotYm9vbCBXZWJJbnRlbnRSZXF1ZXN0Ojppc051bGwoKSBjb25zdAotewotI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKLSAgICByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOwotI2Vsc2UKLSAgICBy
ZXR1cm4gdHJ1ZTsKLSNlbmRpZgotfQotCi1ib29sIFdlYkludGVudFJlcXVlc3Q6OmVxdWFscyhj
b25zdCBXZWJJbnRlbnRSZXF1ZXN0JiBvdGhlcikgY29uc3QKLXsKLSNpZiBFTkFCTEUoV0VCX0lO
VEVOVFMpCi0gICAgcmV0dXJuIChtX3ByaXZhdGUuZ2V0KCkgPT0gb3RoZXIubV9wcml2YXRlLmdl
dCgpKTsKLSNlbHNlCi0gICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKLX0KLQotdm9pZCBXZWJJbnRl
bnRSZXF1ZXN0Ojphc3NpZ24oY29uc3QgV2ViSW50ZW50UmVxdWVzdCYgb3RoZXIpCi17Ci0jaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIG1fcHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsKLSNl
bmRpZgotfQotCi1XZWJJbnRlbnQgV2ViSW50ZW50UmVxdWVzdDo6aW50ZW50KCkgY29uc3QKLXsK
LSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgcmV0dXJuIFdlYkludGVudChtX3ByaXZhdGUt
PmludGVudCgpKTsKLSNlbHNlCi0gICAgcmV0dXJuIFdlYkludGVudCgpOwotI2VuZGlmCi19Ci0K
LXZvaWQgV2ViSW50ZW50UmVxdWVzdDo6cG9zdFJlc3VsdChjb25zdCBXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUmIGRhdGEpCi17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIG1fcHJpdmF0
ZS0+cG9zdFJlc3VsdChQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4o
ZGF0YSkuZ2V0KCkpOwotI2VuZGlmCi19Ci0KLXZvaWQgV2ViSW50ZW50UmVxdWVzdDo6cG9zdEZh
aWx1cmUoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiBkYXRhKQotewotI2lmIEVOQUJM
RShXRUJfSU5URU5UUykKLSAgICBtX3ByaXZhdGUtPnBvc3RGYWlsdXJlKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPihkYXRhKS5nZXQoKSk7Ci0jZW5kaWYKLX0KLQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkludGVudFNlcnZpY2VJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkludGVudFNlcnZpY2VJbmZvLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjA4YWI0ODg1NmQ5M2UwNTNiMTI1OTI4ODg2ODhiZDExNjgyNTIyNC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJbnRlbnRTZXJ2aWNlSW5mby5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkludGVudFNlcnZpY2VJbmZvLmgi
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJVUkwgV2ViSW50ZW50U2VydmljZUluZm86OnVy
bCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faHJlZjsKLX0KLQotdm9pZCBXZWJJbnRlbnRTZXJ2
aWNlSW5mbzo6c2V0VVJMKGNvbnN0IFdlYlVSTCYgdXJsKQotewotICAgIG1faHJlZiA9IHVybDsK
LX0KLQotV2ViU3RyaW5nIFdlYkludGVudFNlcnZpY2VJbmZvOjp0aXRsZSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fdGl0bGU7Ci19Ci0KLXZvaWQgV2ViSW50ZW50U2VydmljZUluZm86OnNldFRp
dGxlKGNvbnN0IFdlYlN0cmluZyYgdGl0bGUpCi17Ci0gICAgbV90aXRsZSA9IHRpdGxlOwotfQot
Ci1XZWJTdHJpbmcgV2ViSW50ZW50U2VydmljZUluZm86OmFjdGlvbigpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fYWN0aW9uOwotfQotCi12b2lkIFdlYkludGVudFNlcnZpY2VJbmZvOjpzZXRBY3Rp
b24oY29uc3QgV2ViU3RyaW5nJiBhY3Rpb24pCi17Ci0gICAgbV9hY3Rpb24gPSBhY3Rpb247Ci19
Ci0KLVdlYlN0cmluZyBXZWJJbnRlbnRTZXJ2aWNlSW5mbzo6dHlwZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fdHlwZTsKLX0KLQotdm9pZCBXZWJJbnRlbnRTZXJ2aWNlSW5mbzo6c2V0VHlwZShj
b25zdCBXZWJTdHJpbmcmIHR5cGUpCi17Ci0gICAgbV90eXBlID0gdHlwZTsKLX0KLQotV2ViU3Ry
aW5nIFdlYkludGVudFNlcnZpY2VJbmZvOjpkaXNwb3NpdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fZGlzcG9zaXRpb247Ci19Ci0KLXZvaWQgV2ViSW50ZW50U2VydmljZUluZm86OnNldERp
c3Bvc2l0aW9uKGNvbnN0IFdlYlN0cmluZyYgZGlzcG9zaXRpb24pCi17Ci0gICAgbV9kaXNwb3Np
dGlvbiA9IGRpc3Bvc2l0aW9uOwotfQotCi1XZWJJbnRlbnRTZXJ2aWNlSW5mbzo6V2ViSW50ZW50
U2VydmljZUluZm8oY29uc3QgV2ViU3RyaW5nJiBhY3Rpb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiB0eXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlVSTCYgaHJlZiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcm
IHRpdGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFdlYlN0cmluZyYgZGlzcG9zaXRpb24pCi0gICAgOiBtX2FjdGlvbihhY3Rpb24pCi0gICAgLCBt
X3R5cGUodHlwZSkKLSAgICAsIG1faHJlZihocmVmKQotICAgICwgbV90aXRsZSh0aXRsZSkKLSAg
ICAsIG1fZGlzcG9zaXRpb24oZGlzcG9zaXRpb24pCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUnVudGltZUZl
YXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlJ1bnRpbWVGZWF0dXJl
cy5jcHAKaW5kZXggMTk2M2U5MTRkMzg3M2JjMzAzZmRhM2Q1M2RlNGQyMDkxODMzNTA2Ny4uZDVi
MGNkYzU0YmJkYjMxZGQxMDk2YzEwZWNiYjE3YTlhMWYzZDk0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUnVudGltZUZlYXR1cmVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwCkBAIC02OTksMjIgKzY5
OSw0IEBAIGJvb2wgV2ViUnVudGltZUZlYXR1cmVzOjppc1JlcXVlc3RBdXRvY29tcGxldGVFbmFi
bGVkKCkKICNlbmRpZgogfQogCi12b2lkIFdlYlJ1bnRpbWVGZWF0dXJlczo6ZW5hYmxlV2ViSW50
ZW50cyhib29sIGVuYWJsZSkKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2V0V2ViSW50ZW50c0VuYWJsZWQoZW5hYmxlKTsKLSNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKGVuYWJsZSk7Ci0jZW5kaWYKLX0KLQotYm9vbCBXZWJSdW50aW1lRmVh
dHVyZXM6OmlzV2ViSW50ZW50c0VuYWJsZWQoKQotewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykK
LSAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0U3RhcnRBY3Rpdml0eUVu
YWJsZWQoKTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDc3MGUyOWZjYTk0M2EyOWQwNTY4NWE0ZjY2YTdmMTA4Mjg0YjMyYzIuLjY4MWEy
ZDRhMDIzYTI1MmFjMzBjODYzOWU3YzU1ODU1NDkxMDUyY2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMy0wMi0x
MSAgTmljbyBXZWJlciAgPHRoYWtpc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHdl
YiBpbnRlbnRzIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwOTUwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFNlZSB0aHJlYWQgIlJlbW92aW5nIEVOQUJMRShXRUJfSU5URU5UUykgY29kZSIgb24g
d2Via2l0LWRldi4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9UZXN0UnVubmVyLmg6CisgICAgICAgIChUZXN0UnVubmVyKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJCbGFja0JlcnJ5LmNwcDoKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVs
ZWdhdGUuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5OjpkaWRFbmRFZGl0aW5nKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OlRlc3RSdW5uZXIp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RS
dW5uZXIuaDoKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHA6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0Lmg6CisgICAgICAgIChXZWJWaWV3SG9zdCk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcDoKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93
aW4vVGVzdFJ1bm5lcldpbi5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1
bm5lcld4LmNwcDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG06
CisKIDIwMTMtMDItMTAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCBhdHRlbXB0ZWQgYnVpbGQgZml4IGZvciBHdGsgYWZ0ZXIgcjE0
MjQxMgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCBjODE3ZDUyMzBjNDQ4YTdh
MWRkN2Q3NDM5YWIxMmFhM2EwODlkMzRiLi5hYmQwMzBiNDYxM2Y4NDMzZmQ5OWMyMWQ5NWYxODcw
Y2E4YTRmYmJjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtMTc4MSwzOSAr
MTc4MSw2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFdlYlZpZXdFZGl0YWJsZUNhbGxiYWNrKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOwogfQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBzZW5kV2ViSW50ZW50
UmVzcG9uc2VDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rp
b24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBK
U1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCi17Ci0gICAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHJlc3BvbnNlOwotICAgIGlmIChhcmd1bWVudENvdW50ID09
IDEpIHsKLSAgICAgICAgcmVzcG9uc2UuYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0
LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOwotICAgICAgICBBU1NFUlQoISpleGNlcHRpb24p
OwotICAgIH0gZWxzZQotICAgICAgICByZXNwb25zZS5hZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygwKSk7Ci0KLSAgICBUZXN0UnVubmVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nh
c3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgY29u
dHJvbGxlci0+c2VuZFdlYkludGVudFJlc3BvbnNlKHJlc3BvbnNlLmdldCgpKTsKLQotICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLX0KLQotc3RhdGljIEpTVmFsdWVS
ZWYgZGVsaXZlcldlYkludGVudENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
LXsKLSAgICBpZiAoYXJndW1lbnRDb3VudCA8IDMpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0KTsKLQotICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhY3Rp
b24oQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNl
cHRpb24pKTsKLSAgICBBU1NFUlQoISpleGNlcHRpb24pOwotICAgIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiB0eXBlKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50
c1sxXSwgZXhjZXB0aW9uKSk7Ci0gICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKLSAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gZGF0YShBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0
LCBhcmd1bWVudHNbMl0sIGV4Y2VwdGlvbikpOwotICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7Ci0K
LSAgICBUZXN0UnVubmVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpT
T2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgY29udHJvbGxlci0+ZGVsaXZlcldl
YkludGVudChhY3Rpb24uZ2V0KCksIHR5cGUuZ2V0KCksIGRhdGEuZ2V0KCkpOwotCi0gICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotfQotCiBzdGF0aWMgSlNWYWx1ZVJl
ZiBhYm9ydE1vZGFsQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1
bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29u
c3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAg
IFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTIxNTAsNyArMjExNyw2IEBAIEpTU3RhdGlj
RnVuY3Rpb24qIFRlc3RSdW5uZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgImNsb3Nl
V2ViSW5zcGVjdG9yIiwgY2xvc2VXZWJJbnNwZWN0b3JDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8iLCBjb21wdXRlZFN0eWxlSW5j
bHVkaW5nVmlzaXRlZEluZm9DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkZWNvZGVIb3N0
TmFtZSIsIGRlY29kZUhvc3ROYW1lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKLSAgICAgICAgeyAiZGVsaXZl
cldlYkludGVudCIsIGRlbGl2ZXJXZWJJbnRlbnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJkaXNhbGxvd0luY3JlYXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhIiwgZGlzYWxsb3dJbmNy
ZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90YUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
ImRpc3BhdGNoUGVuZGluZ0xvYWRSZXF1ZXN0cyIsIGRpc3BhdGNoUGVuZGluZ0xvYWRSZXF1ZXN0
c0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImRpc3BsYXkiLCBkaXNwbGF5Q2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKQEAgLTIyMDMsNyArMjE2OSw2IEBAIEpTU3RhdGljRnVuY3Rpb24qIFRlc3RSdW5u
ZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgInJlbW92ZU9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5IiwgcmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnlDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJyZXBhaW50U3dlZXBIb3Jpem9udGFsbHkiLCByZXBhaW50U3dlZXBI
b3Jpem9udGFsbHlDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJyZXNldFBhZ2VWaXNpYmls
aXR5IiwgcmVzZXRQYWdlVmlzaWJpbGl0eUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCi0gICAgICAgIHsgInNl
bmRXZWJJbnRlbnRSZXNwb25zZSIsIHNlbmRXZWJJbnRlbnRSZXNwb25zZUNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgICAgIHsgInNldEFjY2VwdHNFZGl0aW5nIiwgc2V0QWNjZXB0c0VkaXRpbmdDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxl
VVJMcyIsIHNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICAgICAgeyAic2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzIiwgc2V0QWxsb3dG
aWxlQWNjZXNzRnJvbUZpbGVVUkxzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RS
dW5uZXIuaAppbmRleCBhYTRhYWMyMWEwY2QxMTdkYWNjNDU1OGVkM2JjZDhiMzU4M2E3NWI4Li4x
MzI3ZGZmNmNlNDE4YzNlMDg0MGQ5OTZhYmYyOTk0OTRlNjM5NjhmIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
VGVzdFJ1bm5lci5oCkBAIC01Niw3ICs1Niw2IEBAIHB1YmxpYzoKICAgICBib29sIGNhbGxTaG91
bGRDbG9zZU9uV2ViVmlldygpOwogICAgIEpTU3RyaW5nUmVmIGNvcHlEZWNvZGVkSG9zdE5hbWUo
SlNTdHJpbmdSZWYgbmFtZSk7CiAgICAgSlNTdHJpbmdSZWYgY29weUVuY29kZWRIb3N0TmFtZShK
U1N0cmluZ1JlZiBuYW1lKTsKLSAgICB2b2lkIGRlbGl2ZXJXZWJJbnRlbnQoSlNTdHJpbmdSZWYg
YWN0aW9uLCBKU1N0cmluZ1JlZiB0eXBlLCBKU1N0cmluZ1JlZiBkYXRhKTsKICAgICB2b2lkIGRp
c3BhdGNoUGVuZGluZ0xvYWRSZXF1ZXN0cygpOwogICAgIHZvaWQgZGlzcGxheSgpOwogICAgIHZv
aWQgZGlzcGxheUludmFsaWRhdGVkUmVnaW9uKCk7CkBAIC04MSw3ICs4MCw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHF1ZXVlTm9uTG9hZGluZ1NjcmlwdChKU1N0cmluZ1JlZiBzY3JpcHQpOwogICAg
IHZvaWQgcXVldWVSZWxvYWQoKTsKICAgICB2b2lkIHJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpOwot
ICAgIHZvaWQgc2VuZFdlYkludGVudFJlc3BvbnNlKEpTU3RyaW5nUmVmIHJlc3BvbnNlKTsKICAg
ICB2b2lkIHNldEFjY2VwdHNFZGl0aW5nKGJvb2wpOwogICAgIHZvaWQgc2V0QWxsb3dVbml2ZXJz
YWxBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCk7CiAgICAgdm9pZCBzZXRBbGxvd0ZpbGVBY2Nlc3NG
cm9tRmlsZVVSTHMoYm9vbCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFj
a2JlcnJ5L1Rlc3RSdW5uZXJCbGFja0JlcnJ5LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Js
YWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwCmluZGV4IDZiY2VmZTVkYWI0NWI2NDA5
YjFjNTJjNTU3MTQwNjhjMDM4MTVjZmYuLmJiMDU4NjVhYzVkYTcxOTVkNWI2NGNlMGZjNDUxOTNl
OGQzYjdjYjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVz
dFJ1bm5lckJsYWNrQmVycnkuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVy
cnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwCkBAIC03NjksMTYgKzc2OSw2IEBAIHZvaWQgVGVz
dFJ1bm5lcjo6c2V0QXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoYm9vbCkKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNlbmRXZWJJbnRlbnRSZXNwb25z
ZShKU1N0cmluZ1JlZikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFRlc3RS
dW5uZXI6OmRlbGl2ZXJXZWJJbnRlbnQoSlNTdHJpbmdSZWYsIEpTU3RyaW5nUmVmLCBKU1N0cmlu
Z1JlZikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB2b2lkIFRlc3RSdW5uZXI6OnNl
dFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbChkb3VibGUpCiB7CiAgICAgLy8gRklYTUU6IElt
cGxlbWVudCB0aGlzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdERlbGVnYXRlLmggYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaAppbmRleCBmMzZk
NTBkZjk2MGYyYmYwMzNkYzA4MzNiNDUxZDYzNTFiZWM3MDk2Li43YTA2M2EzZTBhMGE3Y2Y5MmUy
YzZjNzcwMTYxNDVlZjUxMGVjODc4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUu
aApAQCAtMzksNyArMzksNiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJEZXZpY2VP
cmllbnRhdGlvbjsKIGNsYXNzIFdlYkdhbWVwYWRzOwotY2xhc3MgV2ViSW50ZW50UmVxdWVzdDsK
IHN0cnVjdCBXZWJSZWN0Owogc3RydWN0IFdlYlVSTEVycm9yOwogfQpAQCAtNzIsOCArNzEsNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJLaXQ6OldlYlVSTCByZXdyaXRlTGF5b3V0VGVzdHNV
UkwoY29uc3Qgc3RkOjpzdHJpbmcmKSB7IHJldHVybiBXZWJLaXQ6OldlYlVSTCgpOyB9CiAgICAg
dmlydHVhbCBXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMoKSB7IHJldHVybiAwOyB9CiAgICAg
dmlydHVhbCB2b2lkIGFwcGx5UHJlZmVyZW5jZXMoKSB7IH07Ci0gICAgdmlydHVhbCB2b2lkIHNl
dEN1cnJlbnRXZWJJbnRlbnRSZXF1ZXN0KGNvbnN0IFdlYktpdDo6V2ViSW50ZW50UmVxdWVzdCYp
IHsgfTsKLSAgICB2aXJ0dWFsIFdlYktpdDo6V2ViSW50ZW50UmVxdWVzdCogY3VycmVudFdlYklu
dGVudFJlcXVlc3QoKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBzdGQ6OnN0cmluZyBtYWtl
VVJMRXJyb3JEZXNjcmlwdGlvbihjb25zdCBXZWJLaXQ6OldlYlVSTEVycm9yJikgeyByZXR1cm4g
c3RkOjpzdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnRXaW5kb3dSZWN0KGNv
bnN0IFdlYktpdDo6V2ViUmVjdCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzaG93RGV2VG9vbHMo
KSB7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvcHVibGljL1dlYlRlc3RQcm94eS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5LmgKaW5kZXggOTA2MjQ1YmRjNDhlZjY2MTky
OTA2ZDU0Y2JiOGFmZGE4OWQzYmYxZC4uYTg5MzQ0YTM1Mjc5ZjA3MzRiOTQyNTc5ZjhkZWMwOTMx
YWZiNWRjYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5LmgKQEAgLTU0LDggKzU0LDYgQEAg
Y2xhc3MgV2ViRGF0YVNvdXJjZTsKIGNsYXNzIFdlYkRyYWdEYXRhOwogY2xhc3MgV2ViRnJhbWU7
CiBjbGFzcyBXZWJJbWFnZTsKLWNsYXNzIFdlYkludGVudFJlcXVlc3Q7Ci1jbGFzcyBXZWJJbnRl
bnRTZXJ2aWNlSW5mbzsKIGNsYXNzIFdlYk5vZGU7CiBjbGFzcyBXZWJQbHVnaW47CiBjbGFzcyBX
ZWJSYW5nZTsKQEAgLTEyMCw4ICsxMTgsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaWRDaGFu
Z2VTZWxlY3Rpb24oYm9vbCBpc0VtcHR5U2VsZWN0aW9uKTsKICAgICB2b2lkIGRpZENoYW5nZUNv
bnRlbnRzKCk7CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCk7Ci0gICAgdm9pZCByZWdpc3Rlcklu
dGVudFNlcnZpY2UoV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViSW50ZW50U2Vy
dmljZUluZm8mKTsKLSAgICB2b2lkIGRpc3BhdGNoSW50ZW50KFdlYktpdDo6V2ViRnJhbWUqIHNv
dXJjZSwgY29uc3QgV2ViS2l0OjpXZWJJbnRlbnRSZXF1ZXN0Jik7CiAgICAgYm9vbCBjcmVhdGVW
aWV3KFdlYktpdDo6V2ViRnJhbWUqIGNyZWF0b3IsIGNvbnN0IFdlYktpdDo6V2ViVVJMUmVxdWVz
dCYsIGNvbnN0IFdlYktpdDo6V2ViV2luZG93RmVhdHVyZXMmLCBjb25zdCBXZWJLaXQ6OldlYlN0
cmluZyYgZnJhbWVOYW1lLCBXZWJLaXQ6OldlYk5hdmlnYXRpb25Qb2xpY3kpOwogICAgIFdlYktp
dDo6V2ViUGx1Z2luKiBjcmVhdGVQbHVnaW4oV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktp
dDo6V2ViUGx1Z2luUGFyYW1zJik7CiAgICAgdm9pZCBzZXRTdGF0dXNUZXh0KGNvbnN0IFdlYktp
dDo6V2ViU3RyaW5nJik7CkBAIC0yOTAsMTYgKzI4Niw2IEBAIHB1YmxpYzoKICAgICAgICAgV2Vi
VGVzdFByb3h5QmFzZTo6ZGlkRW5kRWRpdGluZygpOwogICAgICAgICBCYXNlOjpkaWRFbmRFZGl0
aW5nKCk7CiAgICAgfQotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckludGVudFNlcnZpY2UoV2Vi
S2l0OjpXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFdlYktpdDo6V2ViSW50ZW50U2VydmljZUluZm8m
IHNlcnZpY2UpCi0gICAgewotICAgICAgICBXZWJUZXN0UHJveHlCYXNlOjpyZWdpc3RlckludGVu
dFNlcnZpY2UoZnJhbWUsIHNlcnZpY2UpOwotICAgICAgICBCYXNlOjpyZWdpc3RlckludGVudFNl
cnZpY2UoZnJhbWUsIHNlcnZpY2UpOwotICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJ
bnRlbnQoV2ViS2l0OjpXZWJGcmFtZSogc291cmNlLCBjb25zdCBXZWJLaXQ6OldlYkludGVudFJl
cXVlc3QmIHJlcXVlc3QpCi0gICAgewotICAgICAgICBXZWJUZXN0UHJveHlCYXNlOjpkaXNwYXRj
aEludGVudChzb3VyY2UsIHJlcXVlc3QpOwotICAgICAgICBCYXNlOjpkaXNwYXRjaEludGVudChz
b3VyY2UsIHJlcXVlc3QpOwotICAgIH0KICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViVmlldyogY3Jl
YXRlVmlldyhXZWJLaXQ6OldlYkZyYW1lKiBjcmVhdG9yLCBjb25zdCBXZWJLaXQ6OldlYlVSTFJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYktpdDo6V2ViV2luZG93RmVhdHVyZXMmIGZlYXR1cmVz
LCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgZnJhbWVOYW1lLCBXZWJLaXQ6OldlYk5hdmlnYXRp
b25Qb2xpY3kgcG9saWN5KQogICAgIHsKICAgICAgICAgaWYgKCFXZWJUZXN0UHJveHlCYXNlOjpj
cmVhdGVWaWV3KGNyZWF0b3IsIHJlcXVlc3QsIGZlYXR1cmVzLCBmcmFtZU5hbWUsIHBvbGljeSkp
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDFlNTQ4OGExM2JkNTFiZDk5MmU1OTE5OThmOWMw
YzQzNmQ0Y2YwNzQuLjc0ZjQ0MmIzZGYzOTBmYTI5Njk3ZTM5MmIzM2I3NWNkNWQ5YzZkMjMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rl
c3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCkBAIC00MSw4ICs0MSw2IEBACiAjaW5jbHVkZSAiV2ViRmlu
ZE9wdGlvbnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYklucHV0RWxl
bWVudC5oIgotI2luY2x1ZGUgIldlYkludGVudC5oIgotI2luY2x1ZGUgIldlYkludGVudFJlcXVl
c3QuaCIKICNpbmNsdWRlICJXZWJQZXJtaXNzaW9ucy5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVu
Y2VzLmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0U291cmNlLmgiCkBAIC03MCwxNiArNjgsNiBAQCBu
YW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKIG5hbWVzcGFjZSB7CiAKLWNsYXNzIEVtcHR5V2Vi
RGVsaXZlcmVkSW50ZW50Q2xpZW50IDogcHVibGljIFdlYkRlbGl2ZXJlZEludGVudENsaWVudCB7
Ci1wdWJsaWM6Ci0gICAgRW1wdHlXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQoKSB7IH0KLSAgICB+
RW1wdHlXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQoKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBw
b3N0UmVzdWx0KGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgZGF0YSkgY29uc3QgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RGYWlsdXJlKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSYgZGF0YSkgY29uc3QgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSB7IH0KLX07
Ci0KIGNsYXNzIEludm9rZUNhbGxiYWNrVGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPFRlc3RS
dW5uZXI+IHsKIHB1YmxpYzoKICAgICBJbnZva2VDYWxsYmFja1Rhc2soVGVzdFJ1bm5lciogb2Jq
ZWN0LCBhdXRvX3B0cjxDcHBWYXJpYW50PiBjYWxsYmFja0FyZ3VtZW50cykKQEAgLTE1Niw3ICsx
NDQsNiBAQCBUZXN0UnVubmVyOjpUZXN0UnVubmVyKCkKICAgICAsIG1fd29ya1F1ZXVlKHRoaXMp
CiAgICAgLCBtX2RlbGVnYXRlKDApCiAgICAgLCBtX3dlYlZpZXcoMCkKLSAgICAsIG1faW50ZW50
Q2xpZW50KG5ldyBFbXB0eVdlYkRlbGl2ZXJlZEludGVudENsaWVudCkKICAgICAsIG1fd2ViUGVy
bWlzc2lvbnMobmV3IFdlYlBlcm1pc3Npb25zKQogewogICAgIC8vIEluaXRpYWxpemUgdGhlIG1h
cCB0aGF0IGFzc29jaWF0ZXMgbWV0aG9kcyBvZiB0aGlzIGNsYXNzIHdpdGggdGhlIG5hbWVzCkBA
IC0yNzAsMTEgKzI1Nyw2IEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQogICAgIGJpbmRNZXRo
b2QoInNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVjdCIsICZUZXN0UnVubmVy
OjpzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3QpOwogCiAgICAgLy8gVGhl
IGZvbGxvd2luZyBtZXRob2RzIGludGVyYWN0IHdpdGggdGhlIFdlYlRlc3RQcm94eS4KLSNpZiBF
TkFCTEVfV0VCX0lOVEVOVFMKLSAgICBiaW5kTWV0aG9kKCJzZW5kV2ViSW50ZW50UmVzcG9uc2Ui
LCAmVGVzdFJ1bm5lcjo6c2VuZFdlYkludGVudFJlc3BvbnNlKTsKLSAgICBiaW5kTWV0aG9kKCJk
ZWxpdmVyV2ViSW50ZW50IiwgJlRlc3RSdW5uZXI6OmRlbGl2ZXJXZWJJbnRlbnQpOwotI2VuZGlm
Ci0KICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgaW50ZXJhY3Qgd2l0aCB0aGUgV2ViVGVz
dERlbGVnYXRlLgogICAgIGJpbmRNZXRob2QoInNob3dXZWJJbnNwZWN0b3IiLCAmVGVzdFJ1bm5l
cjo6c2hvd1dlYkluc3BlY3Rvcik7CiAgICAgYmluZE1ldGhvZCgiY2xvc2VXZWJJbnNwZWN0b3Ii
LCAmVGVzdFJ1bm5lcjo6Y2xvc2VXZWJJbnNwZWN0b3IpOwpAQCAtMTY2Myw1MCArMTY0NSw2IEBA
IHZvaWQgVGVzdFJ1bm5lcjo6c2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiBhcmd1bWVudHMsIENwcFZhCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKLSNp
ZiBFTkFCTEVfV0VCX0lOVEVOVFMKLXZvaWQgVGVzdFJ1bm5lcjo6c2VuZFdlYkludGVudFJlc3Bv
bnNlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQp
Ci17Ci0gICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwotICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4
dD4gY3R4ID0gbV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+bWFpbldvcmxkU2NyaXB0Q29udGV4dCgp
OwotICAgIHJlc3VsdC0+c2V0KG1fd2ViVmlldy0+bWFpbkZyYW1lKCktPnNlbGVjdGlvbkFzTWFy
a3VwKCkudXRmOCgpKTsKLSAgICB2ODo6Q29udGV4dDo6U2NvcGUgY3Njb3BlKGN0eCk7Ci0KLSAg
ICBXZWJJbnRlbnRSZXF1ZXN0KiByZXF1ZXN0ID0gbV9kZWxlZ2F0ZS0+Y3VycmVudFdlYkludGVu
dFJlcXVlc3QoKTsKLSAgICBpZiAocmVxdWVzdC0+aXNOdWxsKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID09IDEpIHsKLSAgICAgICAgV2ViQ1N0cmluZyBy
ZXBseSA9IGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMF0pLnV0ZjgoKTsKLSAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4dmFsdWUgPSB2ODo6U3RyaW5nOjpOZXcocmVwbHku
ZGF0YSgpLCByZXBseS5sZW5ndGgoKSk7Ci0gICAgICAgIHJlcXVlc3QtPnBvc3RSZXN1bHQoV2Vi
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpzZXJpYWxpemUodjh2YWx1ZSkpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OHZhbHVlID0gdjg6OlN0cmluZzo6TmV3
KCJFUlJPUiIpOwotICAgICAgICByZXF1ZXN0LT5wb3N0RmFpbHVyZShXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OnNlcmlhbGl6ZSh2OHZhbHVlKSk7Ci0gICAgfQotICAgIHJlc3VsdC0+c2V0TnVs
bCgpOwotfQotCi12b2lkIFRlc3RSdW5uZXI6OmRlbGl2ZXJXZWJJbnRlbnQoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKLXsKLSAgICBpZiAoYXJn
dW1lbnRzLnNpemUoKSA8ICAzKQotICAgICAgICByZXR1cm47Ci0KLSAgICB2ODo6SGFuZGxlU2Nv
cGUgc2NvcGU7Ci0gICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjdHggPSBtX3dlYlZpZXctPm1h
aW5GcmFtZSgpLT5tYWluV29ybGRTY3JpcHRDb250ZXh0KCk7Ci0gICAgcmVzdWx0LT5zZXQobV93
ZWJWaWV3LT5tYWluRnJhbWUoKS0+c2VsZWN0aW9uQXNNYXJrdXAoKS51dGY4KCkpOwotICAgIHY4
OjpDb250ZXh0OjpTY29wZSBjc2NvcGUoY3R4KTsKLQotICAgIFdlYlN0cmluZyBhY3Rpb24gPSBj
cHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzBdKTsKLSAgICBXZWJTdHJpbmcgdHlwZSA9
IGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMV0pOwotICAgIFdlYkNTdHJpbmcgZGF0
YSA9IGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMl0pLnV0ZjgoKTsKLSAgICBXZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUgc2VyaWFsaXplZERhdGEgPSBXZWJTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OnNlcmlhbGl6ZSh2ODo6U3RyaW5nOjpOZXcoZGF0YS5kYXRhKCksIGRhdGEubGVuZ3Ro
KCkpKTsKLQotICAgIFdlYkludGVudCBpbnRlbnQgPSBXZWJJbnRlbnQ6OmNyZWF0ZShhY3Rpb24s
IHR5cGUsIHNlcmlhbGl6ZWREYXRhLnRvU3RyaW5nKCksIFdlYlZlY3RvcjxXZWJTdHJpbmc+KCks
IFdlYlZlY3RvcjxXZWJTdHJpbmc+KCkpOwotCi0gICAgbV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+
ZGVsaXZlckludGVudChpbnRlbnQsIDAsIG1faW50ZW50Q2xpZW50LmdldCgpKTsKLX0KLSNlbmRp
ZgotCiB2b2lkIFRlc3RSdW5uZXI6OnNob3dXZWJJbnNwZWN0b3IoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHNob3dEZXZUb29scygpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1
bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dFJ1bm5lci5oCmluZGV4IDhlMzUzYWI3MjdkZjE5MjgyYmI2Mjg0MDBjNTgwZWU4MmZhN2RlNWUu
LmRhMDAyMDNiNGE4MDFlZmVmODgzNDNhMmZjOGE2MTFmMWNkZWM0MDEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmgKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJDcHBCb3VuZENsYXNzLmgiCiAjaW5j
bHVkZSAiVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIldlYkFycmF5QnVmZmVyVmlldy5oIgotI2lu
Y2x1ZGUgIldlYkRlbGl2ZXJlZEludGVudENsaWVudC5oIgogI2luY2x1ZGUgIldlYlRhc2suaCIK
ICNpbmNsdWRlICJXZWJUZXN0UnVubmVyLmgiCiAjaW5jbHVkZSAiV2ViVGV4dERpcmVjdGlvbi5o
IgpAQCAtNDE5LDE1ICs0MTgsNiBAQCBwcml2YXRlOgogICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwog
ICAgIC8vIE1ldGhvZHMgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgV2ViVGVzdFByb3h5CiAKLSNpZiBF
TkFCTEVfV0VCX0lOVEVOVFMKLSAgICAvLyBFeHBlY3RzIG9uZSBzdHJpbmcgYXJndW1lbnQgZm9y
IHNlbmRpbmcgc3VjY2Vzc2Z1bCByZXN1bHQsIHplcm8KLSAgICAvLyBhcmd1bWVudHMgZm9yIHNl
bmRpbmcgYSBmYWlsdXJlIHJlc3VsdC4KLSAgICB2b2lkIHNlbmRXZWJJbnRlbnRSZXNwb25zZShj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0KLSAgICAvLyBDYXVzZSB0aGUg
d2ViIGludGVudCB0byBiZSBkZWxpdmVyZWQgdG8gdGhpcyBjb250ZXh0LgotICAgIHZvaWQgZGVs
aXZlcldlYkludGVudChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0jZW5k
aWYKLQogICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgIC8vIE1ldGhvZHMgZm9yd2FyZGluZyB0
byB0aGUgV2ViVGVzdERlbGVnYXRlCiAKQEAgLTY2OCw5ICs2NTgsNiBAQCBwcml2YXRlOgogICAg
IC8vIFRoaXMgaXMgbm9uLTAgSUZGIGEgbG9hZCBpcyBpbiBwcm9ncmVzcy4KICAgICBXZWJLaXQ6
OldlYkZyYW1lKiBtX3RvcExvYWRpbmdGcmFtZTsKIAotICAgIC8vIE1vY2sgb2JqZWN0IGZvciB0
ZXN0aW5nIGRlbGl2ZXJpbmcgd2ViIGludGVudHMuCi0gICAgc3RkOjphdXRvX3B0cjxXZWJLaXQ6
OldlYkRlbGl2ZXJlZEludGVudENsaWVudD4gbV9pbnRlbnRDbGllbnQ7Ci0KICAgICAvLyBXZWJQ
ZXJtaXNzaW9uQ2xpZW50IG1vY2sgb2JqZWN0LgogICAgIHN0ZDo6YXV0b19wdHI8V2ViUGVybWlz
c2lvbnM+IG1fd2ViUGVybWlzc2lvbnM7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHAKaW5k
ZXggMGUwNGU5NWQwY2E1ODIxMTJmMWU4ZDlhYTZmYWI5YWUwMDc5MzFiMy4uMzI5MTM1NjZmZWNh
NWQxYTkwYzk5NzNhN2U3NDFmYzIyNWVkNjMwNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3Bw
CkBAIC00NSw5ICs0NSw2IEBACiAjaW5jbHVkZSAiV2ViRGF0YVNvdXJjZS5oIgogI2luY2x1ZGUg
IldlYkVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgotI2luY2x1ZGUgIldlYkludGVu
dC5oIgotI2luY2x1ZGUgIldlYkludGVudFJlcXVlc3QuaCIKLSNpbmNsdWRlICJXZWJJbnRlbnRT
ZXJ2aWNlSW5mby5oIgogI2luY2x1ZGUgIldlYk5vZGUuaCIKICNpbmNsdWRlICJXZWJQbHVnaW5Q
YXJhbXMuaCIKICNpbmNsdWRlICJXZWJSYW5nZS5oIgpAQCAtNTUzLDQxICs1NTAsNiBAQCB2b2lk
IFdlYlRlc3RQcm94eUJhc2U6OmRpZEVuZEVkaXRpbmcoKQogICAgICAgICBtX2RlbGVnYXRlLT5w
cmludE1lc3NhZ2UoIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRFbmRFZGl0aW5nOldlYlZp
ZXdEaWRFbmRFZGl0aW5nTm90aWZpY2F0aW9uXG4iKTsKIH0KIAotdm9pZCBXZWJUZXN0UHJveHlC
YXNlOjpyZWdpc3RlckludGVudFNlcnZpY2UoV2ViRnJhbWUqLCBjb25zdCBXZWJJbnRlbnRTZXJ2
aWNlSW5mbyYgc2VydmljZSkKLXsKLSNpZiBFTkFCTEVfV0VCX0lOVEVOVFMKLSAgICBtX2RlbGVn
YXRlLT5wcmludE1lc3NhZ2Uoc3RyaW5nKCJSZWdpc3RlcmVkIFdlYiBJbnRlbnQgU2VydmljZTog
YWN0aW9uPSIpICsgc2VydmljZS5hY3Rpb24oKS51dGY4KCkuZGF0YSgpICsgIiB0eXBlPSIgKyBz
ZXJ2aWNlLnR5cGUoKS51dGY4KCkuZGF0YSgpICsgIiB0aXRsZT0iICsgc2VydmljZS50aXRsZSgp
LnV0ZjgoKS5kYXRhKCkgKyAiIHVybD0iICsgc2VydmljZS51cmwoKS5zcGVjKCkuZGF0YSgpICsg
IiBkaXNwb3NpdGlvbj0iICsgc2VydmljZS5kaXNwb3NpdGlvbigpLnV0ZjgoKS5kYXRhKCkgKyAi
XG4iKTsKLSNlbmRpZgotfQotCi12b2lkIFdlYlRlc3RQcm94eUJhc2U6OmRpc3BhdGNoSW50ZW50
KFdlYkZyYW1lKiBzb3VyY2UsIGNvbnN0IFdlYkludGVudFJlcXVlc3QmIHJlcXVlc3QpCi17Ci0j
aWYgRU5BQkxFX1dFQl9JTlRFTlRTCi0gICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKHN0cmlu
ZygiUmVjZWl2ZWQgV2ViIEludGVudDogYWN0aW9uPSIpICsgcmVxdWVzdC5pbnRlbnQoKS5hY3Rp
b24oKS51dGY4KCkuZGF0YSgpICsgIiB0eXBlPSIgKyByZXF1ZXN0LmludGVudCgpLnR5cGUoKS51
dGY4KCkuZGF0YSgpICsgIlxuIik7Ci0gICAgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIHBv
cnRzID0gcmVxdWVzdC5pbnRlbnQoKS5tZXNzYWdlUG9ydENoYW5uZWxzUmVsZWFzZSgpOwotICAg
IG1fZGVsZWdhdGUtPnNldEN1cnJlbnRXZWJJbnRlbnRSZXF1ZXN0KHJlcXVlc3QpOwotICAgIGlm
IChwb3J0cykgewotICAgICAgICBjaGFyIGRhdGFbMTAwXTsKLSAgICAgICAgc25wcmludGYoZGF0
YSwgc2l6ZW9mKGRhdGEpLCAiSGF2ZSAlZCBwb3J0c1xuIiwgc3RhdGljX2Nhc3Q8aW50Pihwb3J0
cy0+c2l6ZSgpKSk7Ci0gICAgICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZShkYXRhKTsKLSAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwb3J0cy0+c2l6ZSgpOyArK2kpCi0gICAgICAg
ICAgICAoKnBvcnRzKVtpXS0+ZGVzdHJveSgpOwotICAgICAgICBkZWxldGUgcG9ydHM7Ci0gICAg
fQotCi0gICAgaWYgKCFyZXF1ZXN0LmludGVudCgpLnNlcnZpY2UoKS5pc0VtcHR5KCkpCi0gICAg
ICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZShzdHJpbmcoIkV4cGxpY2l0IGludGVudCBzZXJ2
aWNlOiAiKSArIHJlcXVlc3QuaW50ZW50KCkuc2VydmljZSgpLnNwZWMoKS5kYXRhKCkgKyAiXG4i
KTsKLQotICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IGV4dHJhcyA9IHJlcXVlc3QuaW50ZW50KCku
ZXh0cmFzTmFtZXMoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4dHJhcy5zaXplKCk7
ICsraSkKLSAgICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKHN0cmluZygiRXh0cmFzWyIp
ICsgZXh0cmFzW2ldLnV0ZjgoKS5kYXRhKCkgKyAiXSA9ICIgKyByZXF1ZXN0LmludGVudCgpLmV4
dHJhc1ZhbHVlKGV4dHJhc1tpXSkudXRmOCgpLmRhdGEoKSArICJcbiIpOwotCi0gICAgV2ViVmVj
dG9yPFdlYlVSTD4gc3VnZ2VzdGlvbnMgPSByZXF1ZXN0LmludGVudCgpLnN1Z2dlc3Rpb25zKCk7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdWdnZXN0aW9ucy5zaXplKCk7ICsraSkKLSAg
ICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKHN0cmluZygiSGF2ZSBzdWdnZXN0aW9uICIp
ICsgc3VnZ2VzdGlvbnNbaV0uc3BlYygpLmRhdGEoKSArICJcbiIpOwotI2VuZGlmCi19Ci0KIGJv
b2wgV2ViVGVzdFByb3h5QmFzZTo6Y3JlYXRlVmlldyhXZWJGcmFtZSosIGNvbnN0IFdlYlVSTFJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYldpbmRvd0ZlYXR1cmVzJiwgY29uc3QgV2ViU3RyaW5n
JiwgV2ViTmF2aWdhdGlvblBvbGljeSkKIHsKICAgICBpZiAoIW1fdGVzdEludGVyZmFjZXMtPnRl
c3RSdW5uZXIoKS0+Y2FuT3BlbldpbmRvd3MoKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCA5N2UxNjhjYTYxYjU5YjNhYzM3MTE1NjUwMmNk
MjVmOTA4Y2JhZmVkLi42ZDU5NjlkZTAxZTBmNTE5YTg3OGUwN2Y4NDY5N2U4ZDJjODU5Yzg4IDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC03
MDQsMTggKzcwNCw2IEBAIHZvaWQgV2ViVmlld0hvc3Q6OmFwcGx5UHJlZmVyZW5jZXMoKQogICAg
IG1fc2hlbGwtPmFwcGx5UHJlZmVyZW5jZXMoKTsKIH0KIAotI2lmIEVOQUJMRShXRUJfSU5URU5U
UykKLXZvaWQgV2ViVmlld0hvc3Q6OnNldEN1cnJlbnRXZWJJbnRlbnRSZXF1ZXN0KGNvbnN0IFdl
YkludGVudFJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgbV9jdXJyZW50UmVxdWVzdCA9IHJlcXVl
c3Q7Ci19Ci0KLVdlYkludGVudFJlcXVlc3QqIFdlYlZpZXdIb3N0OjpjdXJyZW50V2ViSW50ZW50
UmVxdWVzdCgpCi17Ci0gICAgcmV0dXJuICZtX2N1cnJlbnRSZXF1ZXN0OwotfQotI2VuZGlmCi0K
IHN0ZDo6c3RyaW5nIFdlYlZpZXdIb3N0OjptYWtlVVJMRXJyb3JEZXNjcmlwdGlvbihjb25zdCBX
ZWJLaXQ6OldlYlVSTEVycm9yJiBlcnJvcikKIHsKICAgICByZXR1cm4gd2Via2l0X3N1cHBvcnQ6
Ok1ha2VVUkxFcnJvckRlc2NyaXB0aW9uKGVycm9yKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5oCmluZGV4IDVhNzg3MTY0ZjYxZDZkNWY1OTJjMjFlOWNlNjQ2
Y2VhY2NhMjUzNjMuLjVhZmY1NjM2ODg4N2ZlYzk0M2ZjYTc1OWYwM2IwZTI0YzE0OGU1ZDcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAtMzQsNyAr
MzQsNiBAQAogI2luY2x1ZGUgIlRlc3ROYXZpZ2F0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
IldlYkN1cnNvckluZm8uaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgotI2luY2x1ZGUg
IldlYkludGVudFJlcXVlc3QuaCIKICNpbmNsdWRlICJXZWJQcmVyZW5kZXJlckNsaWVudC5oIgog
I2luY2x1ZGUgIldlYlRhc2suaCIKICNpbmNsdWRlICJXZWJUZXN0RGVsZWdhdGUuaCIKQEAgLTEy
MiwxMCArMTIxLDYgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3
Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2aXJ0dWFsIFdlYktp
dDo6V2ViVVJMIHJld3JpdGVMYXlvdXRUZXN0c1VSTChjb25zdCBzdGQ6OnN0cmluZyYpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgV2ViVGVzdFJ1bm5lcjo6V2ViUHJlZmVyZW5jZXMqIHByZWZlcmVu
Y2VzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5UHJlZmVyZW5jZXMoKSBPVkVS
UklERTsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgdmlydHVhbCB2b2lkIHNldEN1cnJl
bnRXZWJJbnRlbnRSZXF1ZXN0KGNvbnN0IFdlYktpdDo6V2ViSW50ZW50UmVxdWVzdCYpIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJJbnRlbnRSZXF1ZXN0KiBjdXJyZW50V2ViSW50
ZW50UmVxdWVzdCgpIE9WRVJSSURFOwotI2VuZGlmCiAgICAgdmlydHVhbCBzdGQ6OnN0cmluZyBt
YWtlVVJMRXJyb3JEZXNjcmlwdGlvbihjb25zdCBXZWJLaXQ6OldlYlVSTEVycm9yJikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHNldENsaWVudFdpbmRvd1JlY3QoY29uc3QgV2ViS2l0OjpX
ZWJSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNob3dEZXZUb29scygpIE9WRVJS
SURFOwpAQCAtMzg4LDExICszODMsNiBAQCBwcml2YXRlOgogICAgIH0gbV9wb2ludGVyTG9ja1Bs
YW5uZWRSZXN1bHQ7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICAvLyBG
b3Igd2ViIGludGVudHM6IGhvbGRzIHRoZSBjdXJyZW50IHJlcXVlc3QsIGlmIGFueS4KLSAgICBX
ZWJLaXQ6OldlYkludGVudFJlcXVlc3QgbV9jdXJyZW50UmVxdWVzdDsKLSNlbmRpZgotCiAgICAg
T3duUHRyPFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldz4gbV9sYXllclRyZWVWaWV3OwogfTsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCmluZGV4IDU4MGM1MDBk
ZTk2ZDJjMzdjYjE3ODY2ZWQ2ZjY4NTJlYWRiZjcxYWIuLmY5YjEzNzA5YzliMjJjOGQwYWEzMjAx
Y2Y3NTc1MGJlM2Q5NGY0M2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9U
ZXN0UnVubmVyRWZsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5l
ckVmbC5jcHAKQEAgLTg4MSwyMCArODgxLDYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRBdXRvbWF0
aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZChib29sKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
LXZvaWQgVGVzdFJ1bm5lcjo6c2VuZFdlYkludGVudFJlc3BvbnNlKEpTU3RyaW5nUmVmKQotewot
ICAgIC8vIE5vIHBsYW4gdG8gc3VwcG9ydCBXZWIgSW50ZW50cy4gVGhlIGZlYXR1cmUgd2lsbCBs
aWtlbHkKLSAgICAvLyBiZSByZW1vdmVkIGZyb20gV2ViS2l0LgotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgVGVzdFJ1bm5lcjo6ZGVsaXZlcldlYkludGVudChKU1N0cmluZ1JlZiwg
SlNTdHJpbmdSZWYsIEpTU3RyaW5nUmVmKQotewotICAgIC8vIE5vIHBsYW4gdG8gc3VwcG9ydCBX
ZWIgSW50ZW50cy4gVGhlIGZlYXR1cmUgd2lsbCBsaWtlbHkKLSAgICAvLyBiZSByZW1vdmVkIGZy
b20gV2ViS2l0LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6
c2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKGRvdWJsZSkKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJH
dGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCmluZGV4
IGEyMzczYjY0ZmZhNWJhNDFiODFjYjlkY2I0NGQyYmQwMDYwNjEwMzAuLmY5OTQ2ODkzODMxYTI3
ZjRlZDJlMTdjYmRiODE5NWIwOTBhMmNhZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
VGVzdFJ1bm5lckd0ay5jcHAKQEAgLTk3NSwxNiArOTc1LDYgQEAgdm9pZCBUZXN0UnVubmVyOjpz
ZXRBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZChib29sKQogICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgdGhpcy4KIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZW5kV2ViSW50ZW50UmVzcG9uc2Uo
SlNTdHJpbmdSZWYpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgotfQotCi12b2lk
IFRlc3RSdW5uZXI6OmRlbGl2ZXJXZWJJbnRlbnQoSlNTdHJpbmdSZWYsIEpTU3RyaW5nUmVmLCBK
U1N0cmluZ1JlZikKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi19Ci0KIHZvaWQg
VGVzdFJ1bm5lcjo6c2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKGRvdWJsZSkKIHsKICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0
UnVubmVyTWFjLm1tCmluZGV4IDdkNjJiOGZhNTFmZGY0ODkwZGYyZmRlYmNhN2YxMThkMTM2MjI3
ODIuLjIyYjNiMmRiY2NkYjJkM2E0MTg2OWFmNTRmM2E3MjU0ZTcyM2NmZmIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCkBAIC0xMTQ0LDE2ICsxMTQ0LDYgQEAg
dm9pZCBUZXN0UnVubmVyOjpzZXRQYWdlVmlzaWJpbGl0eShjb25zdCBjaGFyKiBuZXdWaXNpYmls
aXR5KQogICAgICAgICBbd2ViVmlldyBfc2V0VmlzaWJpbGl0eVN0YXRlOldlYlBhZ2VWaXNpYmls
aXR5U3RhdGVQcmV2aWV3IGlzSW5pdGlhbFN0YXRlOk5PXTsKIH0KIAotdm9pZCBUZXN0UnVubmVy
OjpzZW5kV2ViSW50ZW50UmVzcG9uc2UoSlNTdHJpbmdSZWYpCi17Ci0gICAgLy8gRklYTUU6IElt
cGxlbWVudC4KLX0KLQotdm9pZCBUZXN0UnVubmVyOjpkZWxpdmVyV2ViSW50ZW50KEpTU3RyaW5n
UmVmLCBKU1N0cmluZ1JlZiwgSlNTdHJpbmdSZWYpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVu
dC4KLX0KLQogdm9pZCBUZXN0UnVubmVyOjpncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24o
SlNTdHJpbmdSZWYganNPcmlnaW4pCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZk9y
aWdpbihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBq
c09yaWdpbikpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5u
ZXJXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCmlu
ZGV4IGZmYzFhN2NlNzJiNjZkZDY5OTkxMTlhN2M4Y2I3ODc2Yzc3NWRiNjguLmE4ZjY2Y2RkMTg2
ZDM2Y2ZiZmQ0MmZjZGEzY2FmNzIyZGU3ODIwNWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vVGVzdFJ1bm5lcldpbi5jcHAKQEAgLTEzNDQsMTYgKzEzNDQsNiBAQCB2b2lkIFRlc3RSdW5u
ZXI6OnNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKGJvb2wpCiAgICAgLy8gRklYTUU6
IEltcGxlbWVudCB0aGlzLgogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNlbmRXZWJJbnRlbnRSZXNw
b25zZShKU1N0cmluZ1JlZikKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi19Ci0K
LXZvaWQgVGVzdFJ1bm5lcjo6ZGVsaXZlcldlYkludGVudChKU1N0cmluZ1JlZiwgSlNTdHJpbmdS
ZWYsIEpTU3RyaW5nUmVmKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KLX0KLQog
dm9pZCBUZXN0UnVubmVyOjpzZXRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwoZG91YmxlKQog
ewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9U
ZXN0UnVubmVyV3guY3BwCmluZGV4IDI2M2YwMzMxMmEyNWM3YjI4NWFkYjM5ZjljYzM1Mjg0NGU5
NmU3NzkuLjNhY2IxNjFjMWJlODRkZTgxNmFiNzA2YTU2NDU0ODNiNmI5Y2M5OWYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5lcld4LmNwcApAQCAtNTc0LDE2ICs1NzQsNiBAQCB2
b2lkIFRlc3RSdW5uZXI6OnNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKGJvb2wpCiAg
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNlbmRX
ZWJJbnRlbnRSZXNwb25zZShKU1N0cmluZ1JlZikKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHRoaXMuCi19Ci0KLXZvaWQgVGVzdFJ1bm5lcjo6ZGVsaXZlcldlYkludGVudChKU1N0cmluZ1Jl
ZiwgSlNTdHJpbmdSZWYsIEpTU3RyaW5nUmVmKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
dGhpcy4KLX0KLQogdm9pZCBUZXN0UnVubmVyOjpzZXRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2
YWwoZG91YmxlKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCA1ODFiYzA3Yzg3Y2FlNmZkZGJhNTE3ZWM4
ZTI5YzI1ZmE4ZjU2ZmE0Li5kZDUwZTE4OWRhYzU5MDRmYTUwNWExY2M4NWNkYmFjY2FhNDY4MTNj
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC0xNDcsOCArMTQ3
LDYgQEAgbXkgKAogICAgICR2aWRlb1RyYWNrU3VwcG9ydCwKICAgICAkd2ViZ2xTdXBwb3J0LAog
ICAgICR3ZWJBdWRpb1N1cHBvcnQsCi0gICAgJHdlYkludGVudHNTdXBwb3J0LAotICAgICR3ZWJJ
bnRlbnRzVGFnU3VwcG9ydCwKICAgICAkd2ViU29ja2V0c1N1cHBvcnQsCiAgICAgJHdlYlRpbWlu
Z1N1cHBvcnQsCiAgICAgJHdvcmtlcnNTdXBwb3J0LApAQCAtNDYxLDEyICs0NTksNiBAQCBteSBA
ZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gIndlYi1hdWRpbyIsIGRlc2MgPT4gIlRvZ2ds
ZSBXZWIgQXVkaW8gc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9XRUJfQVVESU8i
LCBkZWZhdWx0ID0+IChpc0VmbCgpKSwgdmFsdWUgPT4gXCR3ZWJBdWRpb1N1cHBvcnQgfSwKIAot
ICAgIHsgb3B0aW9uID0+ICJ3ZWItaW50ZW50cyIsIGRlc2MgPT4gIlRvZ2dsZSBXZWIgSW50ZW50
cyBzdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1dFQl9JTlRFTlRTIiwgZGVmYXVs
dCA9PiAwLCB2YWx1ZSA9PiBcJHdlYkludGVudHNTdXBwb3J0IH0sCi0KLSAgICB7IG9wdGlvbiA9
PiAid2ViLWludGVudHMtdGFnIiwgZGVzYyA9PiAiVG9nZ2xlIFdlYiBJbnRlbnRzIFRhZyBzdXBw
b3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1dFQl9JTlRFTlRTX1RBRyIsIGRlZmF1bHQg
PT4gMCwgdmFsdWUgPT4gXCR3ZWJJbnRlbnRzVGFnU3VwcG9ydCB9LAotCiAgICAgeyBvcHRpb24g
PT4gIndlYi1zb2NrZXRzIiwgZGVzYyA9PiAiVG9nZ2xlIFdlYiBTb2NrZXRzIHN1cHBvcnQiLAog
ICAgICAgZGVmaW5lID0+ICJFTkFCTEVfV0VCX1NPQ0tFVFMiLCBkZWZhdWx0ID0+IDEsIHZhbHVl
ID0+IFwkd2ViU29ja2V0c1N1cHBvcnQgfSwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGU2NDlhYmI4ZGEwMTRlNzU0MTdl
YjI1N2Y2YTk2OTNiMzgwNTU1ZDIuLjUwNDVlNjZkYWZjYTNiMGFmZmFkZTBiMDM2MThjMDcxMTI5
MWUyYzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMy0wMi0xMSAgTmljbyBXZWJlciAgPHRo
YWtpc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHdlYiBpbnRlbnRzIGNvZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTUwMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlZSB0aHJlYWQg
IlJlbW92aW5nIEVOQUJMRShXRUJfSU5URU5UUykgY29kZSIgb24gd2Via2l0LWRldi4KKworICAg
ICAgICAqIHdlYmludGVudHMvaW50ZW50LXRhZy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViaW50ZW50cy9pbnRlbnQtdGFnLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
aW50ZW50cy9yZXNvdXJjZXMvcGFzcy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmludGVu
dHMvcmVzb3VyY2VzL3dlYi1pbnRlbnRzLXJlbG9hZC1vcmlnLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViaW50ZW50cy9yZXNvdXJjZXMvd2ViLWludGVudHMtdGVzdGluZy5qczogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWFwaS1leHBlY3RlZC50eHQ6IFJl
bW92ZWQuCisgICAgICAgICogd2ViaW50ZW50cy93ZWItaW50ZW50cy1hcGkuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWRlbGl2ZXJ5LWV4cGVjdGVkLnR4
dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWRlbGl2ZXJ5LXJl
dXNlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJpbnRlbnRzL3dlYi1pbnRl
bnRzLWRlbGl2ZXJ5LXJldXNlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViaW50ZW50cy93
ZWItaW50ZW50cy1kZWxpdmVyeS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmludGVudHMv
d2ViLWludGVudHMtZmFpbHVyZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
aW50ZW50cy93ZWItaW50ZW50cy1mYWlsdXJlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
aW50ZW50cy93ZWItaW50ZW50cy1pbnZva2UtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYmludGVudHMvd2ViLWludGVudHMtaW52b2tlLXBvcnQtZXhwZWN0ZWQudHh0OiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmludGVudHMvd2ViLWludGVudHMtaW52b2tlLXBvcnQuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWludm9rZS5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHdlYmludGVudHMvd2ViLWludGVudHMtb2JqLWNvbnN0cnVjdG9y
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJpbnRlbnRzL3dlYi1pbnRlbnRz
LW9iai1jb25zdHJ1Y3Rvci5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmludGVudHMvd2Vi
LWludGVudHMtcmVsb2FkLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJpbnRl
bnRzL3dlYi1pbnRlbnRzLXJlbG9hZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmludGVu
dHMvd2ViLWludGVudHMtcmVwbHktZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmludGVudHMvd2ViLWludGVudHMtcmVwbHkuaHRtbDogUmVtb3ZlZC4KKwogMjAxMy0wMi0xMCAg
S2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBnYXJkZW5pbmcuIFJlYmFzZWxpbmVkIGFuIGltYWdlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViaW50ZW50cy9pbnRlbnQtdGFnLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmlu
dGVudHMvaW50ZW50LXRhZy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGQxMmVlM2UwMjEwOTUyZDAwY2IxZjJjNWI4NjlhYWNjOWRmMjJmMDQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50
cy9pbnRlbnQtdGFnLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAot
UmVnaXN0ZXJlZCBXZWIgSW50ZW50IFNlcnZpY2U6IGFjdGlvbj1hY3Rpb24gdHlwZT10eXBlIHRp
dGxlPVRpdGxlIHVybD1odHRwOi8vZXhhbXBsZS5jb20vc2VydmljZSBkaXNwb3NpdGlvbj1pbmxp
bmUKLVJlZ2lzdGVyZWQgV2ViIEludGVudCBTZXJ2aWNlOiBhY3Rpb249YSB0eXBlPXQgdGl0bGU9
RHluYW1pYyBUaXRsZSB1cmw9aHR0cDovL2V4YW1wbGUuY29tL2R5bmFtaWMgZGlzcG9zaXRpb249
d2luZG93Ci1SZWdpc3RlcmVkIFdlYiBJbnRlbnQgU2VydmljZTogYWN0aW9uPWFhIHR5cGU9YmIg
dGl0bGU9Y2MgdXJsPWh0dHA6Ly9leGFtcGxlLmNvbS9pbm5lcmh0bWwgZGlzcG9zaXRpb249aW5s
aW5lCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLVJl
Z2lzdGVyZWQgSW50ZW50IFNlcnZpY2UuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmlu
dGVudHMvaW50ZW50LXRhZy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy9pbnRlbnQtdGFn
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjYzJhNGY2MWU1NmFmYzE0Y2M0
YjllZDE1ZGNjM2MxNTJlZjdlZjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy9pbnRlbnQtdGFnLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1m
dW5jdGlvbiBsb2FkZWQoKSB7Ci0gICAgdmFyIGludGVudFRhZyA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImludGVudCIpOwotICAgIGludGVudFRhZy5zZXRBdHRyaWJ1dGUoImFjdGlvbiIsICJh
Iik7Ci0gICAgaW50ZW50VGFnLnNldEF0dHJpYnV0ZSgidHlwZSIsICJ0Iik7Ci0gICAgaW50ZW50
VGFnLnNldEF0dHJpYnV0ZSgiaHJlZiIsICJodHRwOi8vZXhhbXBsZS5jb20vZHluYW1pYyIpOwot
ICAgIGludGVudFRhZy5zZXRBdHRyaWJ1dGUoInRpdGxlIiwgIkR5bmFtaWMgVGl0bGUiKTsKLSAg
ICBpbnRlbnRUYWcuc2V0QXR0cmlidXRlKCJkaXNwb3NpdGlvbiIsICJ3aW5kb3ciKTsKLSAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGludGVudFRhZyk7Ci0KLSAgICB2YXIgZGl2VGFnID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChkaXZUYWcpOwotICAgIGRpdlRhZy5pbm5lckhUTUwgPSAiPGludGVudCBhY3Rpb249XCJh
YVwiIHR5cGU9XCJiYlwiIHRpdGxlPVwiY2NcIiBocmVmPVwiaHR0cDovL2V4YW1wbGUuY29tL2lu
bmVyaHRtbFwiIGRpc3Bvc2l0aW9uPVwiaW5saW5lXCI+PC9pbnRlbnQ+IjsKLX0KLTwvc2NyaXB0
PgotPC9oZWFkPgotICA8Ym9keSBvbmxvYWQ9ImxvYWRlZCgpIj4KLSAgICA8aW50ZW50IGFjdGlv
bj0iYWN0aW9uIiB0eXBlPSJ0eXBlIiB0aXRsZT0iVGl0bGUiIGhyZWY9Imh0dHA6Ly9leGFtcGxl
LmNvbS9zZXJ2aWNlIiBkaXNwb3NpdGlvbj0iaW5saW5lIj48L2ludGVudD4KLSAgICBSZWdpc3Rl
cmVkIEludGVudCBTZXJ2aWNlLgotICA8L2JvZHk+Ci08c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmludGVudHMvcmVzb3VyY2VzL3Bhc3MuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmludGVudHMvcmVzb3VyY2VzL3Bhc3MuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNGRlMjFlMDkyOGI4YjM4YWVmMThkYzc3MDI2NmM2MWM4ZmNhZjc2Ny4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJpbnRl
bnRzL3Jlc291cmNlcy9wYXNzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLTxo
dG1sPgotICA8aGVhZD4KLSAgPC9oZWFkPgotICA8Ym9keT4KLSAgICA8cD5QQVNTPC9wPgotICA8
L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3Jlc291
cmNlcy93ZWItaW50ZW50cy1yZWxvYWQtb3JpZy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViaW50ZW50
cy9yZXNvdXJjZXMvd2ViLWludGVudHMtcmVsb2FkLW9yaWcuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZGYyYmUwYjQ4MGRjMTA5YzY5ODNkYjc3ZGM1NTNhZmZlOGVmNDMzOC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJpbnRlbnRzL3Jlc291cmNlcy93ZWItaW50ZW50cy1yZWxvYWQtb3JpZy5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotPGh0bWw+Ci0gIDxoZWFkPgotICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdD4KLSAgICAgIGZ1bmN0aW9uIG9uU3VjY2VzcygpIHsKLSAgICAgIH0KLQotICAg
ICAgZnVuY3Rpb24gb25GYWlsdXJlKCkgewotICAgICAgfQotCi0gICAgICBmdW5jdGlvbiBzdGFy
dEludGVudCgpIHsKLSAgICAgICAgZGVidWcoIiogbGF1bmNoaW5nIGludGVudCBhY3Rpb24vdHlw
ZSIpOwotICAgICAgICB2YXIgaW50ZW50ID0gbmV3IFdlYktpdEludGVudCgiYWN0aW9uIiwgInR5
cGUiKTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0U3RhcnRBY3Rp
dml0eShpbnRlbnQsIG9uU3VjY2Vzcywgb25GYWlsdXJlKTsKLSAgICAgICAgfSBjYXRjaCAoZSkg
ewotICAgICAgICAgIHRlc3RGYWlsZWQoInN0YXJ0QWN0aXZpdHkgc2hvdWxkIG5vdCB0aHJvdyBl
eGNlcHRpb24iKTsKLSAgICAgICAgfQotCi0gICAgICAgIGRlYnVnKCIqIG5hdmlnYXRpbmcgYWZ0
ZXIgc3RhcnRBY3Rpdml0eSIpOwotCi0gICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBjcmFzaC4K
LSAgICAgICAgd2luZG93LmxvY2F0aW9uID0gInJlc291cmNlcy9wYXNzLmh0bWwiOwotICAgICAg
fQotICAgIDwvc2NyaXB0PgotICA8L2hlYWQ+Ci0gIDxib2R5PgotICAgIDxwPk9yaWdpbmFsIGNv
bnRlbnQ8L3A+Ci0gIDwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmludGVudHMvcmVzb3VyY2VzL3dlYi1pbnRlbnRzLXRlc3RpbmcuanMgYi9MYXlvdXRUZXN0cy93
ZWJpbnRlbnRzL3Jlc291cmNlcy93ZWItaW50ZW50cy10ZXN0aW5nLmpzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA4YjRlYTYwYjdiN2MxNWVjMzc4YzJlNWZlOTQ0YmMwOWVkNmEwY2I0
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmludGVudHMvcmVzb3VyY2VzL3dlYi1pbnRlbnRzLXRlc3RpbmcuanMKKysrIC9kZXYv
bnVsbApAQCAtMSw0MCArMCwwIEBACi0vLyBDYWxsYmFjayBmdW5jdGlvbiB0byBiZSB1c2VkIGZv
ciBhIHN1Y2Nlc3NmdWwgd2ViIGludGVudCBjYWxsLgotZnVuY3Rpb24gb25TdWNjZXNzKGRhdGEp
IHsKLSAgZGVidWcoIiogZ290IHJlcGx5OiAiICsgZGF0YSk7Ci0KLSAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7Ci0gICAgd2luZG93LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICB9Ci19Ci0K
LS8vIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIHVzZWQgZm9yIGEgZmFpbGVkIHdlYiBpbnRlbnQg
Y2FsbC4KLWZ1bmN0aW9uIG9uRmFpbHVyZShkYXRhKSB7Ci0gIGRlYnVnKCIqIGdvdCBmYWlsdXJl
OiAiICsgZGF0YSk7Ci0KLSAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgd2luZG93LnRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICB9Ci19Ci0KLS8vIExhdW5jaCBhIHdlYiBpbnRlbnQg
Y2FsbCB3aXRoIGNhbGxiYWNrcy4KLWZ1bmN0aW9uIHN0YXJ0SW50ZW50V2l0aENhbGxiYWNrcygp
IHsKLSAgbmF2aWdhdG9yLndlYmtpdFN0YXJ0QWN0aXZpdHkobmV3IFdlYktpdEludGVudCgiYWN0
aW9uMSIsICJtaW1lL3R5cGUxIiwgInRlc3QiKSwgb25TdWNjZXNzLCBvbkZhaWx1cmUpOwotICBk
ZWJ1ZygiKiBzZW50IGludGVudCIpOwotCi0gIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAg
IHdpbmRvdy50ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgfSBlbHNlIHsKLSAgICBhbGVy
dCgnVGhpcyB0ZXN0IG5lZWRzIHRvIHJ1biBpbiBEUlQnKTsKLSAgfQotfQotCi0vLyBUaGlzIGJ1
dHRvbiBwcmVzcyBzaW11bGF0b3Igc2V0cyB0aGUgdXNlciBnZXN0dXJlIGluZGljYXRvciB0aGF0
IGFuIGludGVudAotLy8gcmVxdWlyZXMgdG8gc3RhcnQuCi1mdW5jdGlvbiBzaW11bGF0ZUJ1dHRv
blByZXNzKCkgewotICB2YXIgYnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRv
biIpOwotICBpZiAoZXZlbnRTZW5kZXIpIHsKLSAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhi
dXR0b24uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCArIDIsIGJ1dHRvbi5nZXRCb3VuZGlu
Z0NsaWVudFJlY3QoKS50b3AgKyAxMik7Ci0gICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7Ci0g
ICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwotICB9Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWFwaS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93
ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWFwaS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGNiMTk4YjVhYzNkZmMzMTA3MzQ1YTIyNDY2ZmU3MjgzZmY5NzgyMjAuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViaW50ZW50cy93ZWItaW50ZW50cy1hcGktZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAg
LTEsMzMgKzAsMCBAQAotUEFTUyBuYXZpZ2F0b3Iud2Via2l0U3RhcnRBY3Rpdml0eSBpcyBkZWZp
bmVkLgotUEFTUyB2YXIgaW50ZW50ID0gbmV3IFdlYktpdEludGVudCgpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyBuZXcgV2ViS2l0SW50ZW50
KCdhJykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAx
Mi4KLVBBU1MgbmV3IFdlYktpdEludGVudCgnJywnJywnJykgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMi4KLVBBU1MgbmV3IFdlYktpdEludGVudCgn
JywnYicsJ2MnKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFN5bnRheEVycm9yOiBET00gRXhjZXB0
aW9uIDEyLgotUEFTUyBuZXcgV2ViS2l0SW50ZW50KCcnLCcnLCdjJykgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMi4KLVBBU1MgbmV3IFdlYktpdElu
dGVudCgnYScsJycsJ2MnKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFN5bnRheEVycm9yOiBET00g
RXhjZXB0aW9uIDEyLgotUEFTUyBpbnRlbnQxLmFjdGlvbiBpcyAiYSIKLVBBU1MgaW50ZW50MS50
eXBlIGlzICJiIgotUEFTUyBpbnRlbnQxLmRhdGEgaXMgdW5kZWZpbmVkLgotUEFTUyBpbnRlbnQx
LmFjdGlvbiBpcyAiYSIKLVBBU1MgaW50ZW50Mi5hY3Rpb24gaXMgImEiCi1QQVNTIGludGVudDIu
dHlwZSBpcyAiYiIKLVBBU1MgaW50ZW50Mi5kYXRhIGlzICJjIgotUEFTUyBpbnRlbnQzLmFjdGlv
biBpcyAiYSIKLVBBU1MgaW50ZW50My50eXBlIGlzICJiIgotUEFTUyBpbnRlbnQzLmRhdGEuYyBp
cyAiZCIKLVBBU1MgaW50ZW50NC5hY3Rpb24gaXMgImEiCi1QQVNTIGludGVudDQudHlwZSBpcyAi
YiIKLVBBU1MgaW50ZW50NC5kYXRhIGluc3RhbmNlb2YgQXJyYXkgaXMgdHJ1ZQotUEFTUyBpbnRl
bnQ0LmRhdGEubGVuZ3RoIGlzIDIKLVBBU1MgaW50ZW50NC5kYXRhWzBdIGlzICJjIgotUEFTUyBp
bnRlbnQ0LmRhdGFbMV0gaXMgImQiCi1QQVNTIGludGVudDUuZGF0YSBpcyA0Ci1QQVNTIGludGVu
dDYuZGF0YSBpcyA0LjUKLVBBU1MgaW50ZW50Ny5kYXRhIGlzIHRydWUKLVBBU1MgaW50ZW50OC5k
YXRhIGlzIG51bGwKLVBBU1MgaW50ZW50OS5kYXRhID09ICdbb2JqZWN0IE9iamVjdF0nIGlzIHRy
dWUKLVBBU1MgbmF2aWdhdG9yLndlYmtpdFN0YXJ0QWN0aXZpdHkoaW50ZW50MSkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBJbnZhbGlkQWNjZXNzRXJyb3I6IERPTSBFeGNlcHRpb24gMTUuCi1QQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1hcGkuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmludGVudHMvd2ViLWludGVudHMtYXBpLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDFjMmM1NmMwNGUyODRmMTUzNzQ4MjY4YTNjOTU1NjU0OTRkMDdhZDguLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
aW50ZW50cy93ZWItaW50ZW50cy1hcGkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAg
QEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KLTxodG1s
PgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+Ci0gICAgICBzaG91bGRCZURlZmluZWQoIm5hdmlnYXRvci53ZWJraXRTdGFydEFjdGl2
aXR5Iik7Ci0gICAgICAKLSAgICAgIHNob3VsZFRocm93KCJ2YXIgaW50ZW50ID0gbmV3IFdlYktp
dEludGVudCgpIiwgIidUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzJyIpOzsKLSAgICAg
IHNob3VsZFRocm93KCJuZXcgV2ViS2l0SW50ZW50KCdhJykiLCAiJ0Vycm9yOiBTeW50YXhFcnJv
cjogRE9NIEV4Y2VwdGlvbiAxMiciKTsKLSAgICAgIHNob3VsZFRocm93KCJuZXcgV2ViS2l0SW50
ZW50KCcnLCcnLCcnKSIsICInRXJyb3I6IFN5bnRheEVycm9yOiBET00gRXhjZXB0aW9uIDEyJyIp
OwotICAgICAgc2hvdWxkVGhyb3coIm5ldyBXZWJLaXRJbnRlbnQoJycsJ2InLCdjJykiLCAiJ0Vy
cm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMiciKTsKLSAgICAgIHNob3VsZFRocm93
KCJuZXcgV2ViS2l0SW50ZW50KCcnLCcnLCdjJykiLCAiJ0Vycm9yOiBTeW50YXhFcnJvcjogRE9N
IEV4Y2VwdGlvbiAxMiciKTsKLSAgICAgIHNob3VsZFRocm93KCJuZXcgV2ViS2l0SW50ZW50KCdh
JywnJywnYycpIiwgIidFcnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTInIik7Ci0K
LSAgICAgIHZhciBpbnRlbnQxID0gbmV3IFdlYktpdEludGVudCgnYScsICdiJyk7Ci0gICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImludGVudDEuYWN0aW9uIiwgImEiKTsKLSAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiaW50ZW50MS50eXBlIiwgImIiKTsKLSAgICAgIHNob3VsZEJlVW5k
ZWZpbmVkKCJpbnRlbnQxLmRhdGEiKTsKLSAgICAgIGludGVudDEuYWN0aW9uID0gImFiYyI7Ci0g
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImludGVudDEuYWN0aW9uIiwgImEiKTsKLQotICAg
ICAgdmFyIGludGVudDIgPSBuZXcgV2ViS2l0SW50ZW50KCJhIiwgImIiLCAiYyIpOwotICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdpbnRlbnQyLmFjdGlvbicsICJhIik7Ci0gICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ2ludGVudDIudHlwZScsICJiIik7Ci0gICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ2ludGVudDIuZGF0YScsICJjIik7Ci0KLSAgICAgIHZhciBpbnRlbnQzID0g
bmV3IFdlYktpdEludGVudCgiYSIsICJiIiwgeyJjIjogImQifSk7Ci0gICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ2ludGVudDMuYWN0aW9uJywgImEiKTsKLSAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygnaW50ZW50My50eXBlJywgImIiKTsKLSAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygnaW50ZW50My5kYXRhLmMnLCAiZCIpOwotCi0gICAgICB2YXIgaW50ZW50NCA9IG5ldyBXZWJL
aXRJbnRlbnQoImEiLCAiYiIsIFsiYyIsICJkIl0pOwotICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdpbnRlbnQ0LmFjdGlvbicsICJhIik7Ci0gICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
J2ludGVudDQudHlwZScsICJiIik7Ci0gICAgICBzaG91bGRCZVRydWUoJ2ludGVudDQuZGF0YSBp
bnN0YW5jZW9mIEFycmF5Jyk7Ci0gICAgICBzaG91bGRFdmFsdWF0ZVRvKCdpbnRlbnQ0LmRhdGEu
bGVuZ3RoJywgMik7Ci0gICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2ludGVudDQuZGF0YVsw
XScsICJjIik7Ci0gICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2ludGVudDQuZGF0YVsxXScs
ICJkIik7Ci0KLSAgICAgIHZhciBpbnRlbnQ1ID0gbmV3IFdlYktpdEludGVudCgiYSIsICJiIiwg
NCk7Ci0gICAgICBzaG91bGRFdmFsdWF0ZVRvKCdpbnRlbnQ1LmRhdGEnLCA0KTsKLSAgICAgIHZh
ciBpbnRlbnQ2ID0gbmV3IFdlYktpdEludGVudCgnYScsICdiJywgNC41KTsKLSAgICAgIHNob3Vs
ZEV2YWx1YXRlVG8oJ2ludGVudDYuZGF0YScsIDQuNSk7Ci0gICAgICB2YXIgaW50ZW50NyA9IG5l
dyBXZWJLaXRJbnRlbnQoJ2EnLCAnYicsIHRydWUpOwotICAgICAgc2hvdWxkQmVUcnVlKCdpbnRl
bnQ3LmRhdGEnKTsKLSAgICAgIHZhciBpbnRlbnQ4ID0gbmV3IFdlYktpdEludGVudCgnYScsICdi
JywgbnVsbCk7Ci0gICAgICBzaG91bGRCZU51bGwoJ2ludGVudDguZGF0YScpOwotICAgICAgdmFy
IGludGVudDkgPSBuZXcgV2ViS2l0SW50ZW50KCdhJywgJ2InLCB7fSk7Ci0gICAgICBzaG91bGRF
dmFsdWF0ZVRvKCdpbnRlbnQ5LmRhdGEnLCB7fSk7Ci0KLSAgICAgIHNob3VsZFRocm93KCduYXZp
Z2F0b3Iud2Via2l0U3RhcnRBY3Rpdml0eShpbnRlbnQxKScsICInRXJyb3I6IEludmFsaWRBY2Nl
c3NFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNSciKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWRl
bGl2ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMt
ZGVsaXZlcnktZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjhk
YThiOGMwZDU1OTI1NGI5YmNhNjQ1YTVjYTFhYTg4NjYyMzEwLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWlu
dGVudHMtZGVsaXZlcnktZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBA
Ci1QQVNTIHdpbmRvdy53ZWJraXRJbnRlbnQgaXMgbnVsbAotUEFTUyB3aW5kb3cud2Via2l0SW50
ZW50IGlzIGRlZmluZWQuCi1QQVNTIHdpbmRvdy53ZWJraXRJbnRlbnQuYWN0aW9uIGlzICJhYWEi
Ci1QQVNTIHdpbmRvdy53ZWJraXRJbnRlbnQudHlwZSBpcyAidHR0IgotUEFTUyB3aW5kb3cud2Vi
a2l0SW50ZW50LmRhdGEgaXMgImRhdGEiCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
Ci0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93
ZWItaW50ZW50cy1kZWxpdmVyeS1yZXVzZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJp
bnRlbnRzL3dlYi1pbnRlbnRzLWRlbGl2ZXJ5LXJldXNlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZmViZmJjNDYyNDQ0MzY5OGVjMTk0MjZiNjcxYWM5NjM2NWM1
NzM1Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWRlbGl2ZXJ5LXJldXNlLWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotUEFTUyB3ZWJraXRJbnRlbnQgaXMgbnVs
bAotUEFTUyB3ZWJraXRJbnRlbnQgaXMgImZvbyIKLVBBU1Mgd2luZG93LndlYmtpdEludGVudCBp
cyAiZm9vIgotUEFTUyB3ZWJraXRJbnRlbnQgaXMgbnVsbAotUEFTUyB3ZWJraXRJbnRlbnQgaXMg
ImJhciIKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWRlbGl2ZXJ5
LXJldXNlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWRlbGl2ZXJ5
LXJldXNlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0ZGM0Y2QzOTYwYTVl
MDJhNGZjZTRjZDQyOGE1N2UzZTNiOTA3MWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1kZWxp
dmVyeS1yZXVzZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxz
Y3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICBz
aG91bGRCZU51bGwoJ3dlYmtpdEludGVudCcpOwotCi0gICAgd2Via2l0SW50ZW50ID0gImZvbyI7
Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3ZWJraXRJbnRlbnQiLCAiZm9vIik7Ci0gICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cud2Via2l0SW50ZW50IiwgImZvbyIpOwotCi0g
ICAgd2Via2l0SW50ZW50ID0gbnVsbDsKLSAgICBzaG91bGRCZU51bGwoJ3dlYmtpdEludGVudCcp
OwotCi0gICAgd2Via2l0SW50ZW50ID0gImJhciI7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ3ZWJraXRJbnRlbnQiLCAiYmFyIik7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1kZWxpdmVy
eS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1kZWxpdmVyeS5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMWVmM2M3NDEyNGUzY2IzN2FkNTRjZmUw
YmVjZmVlYmZhNWM0MWRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMtZGVsaXZlcnkuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+
Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIHNob3VsZEJlTnVsbCgid2luZG93
LndlYmtpdEludGVudCIpOwotCi0gIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHdpbmRv
dy50ZXN0UnVubmVyLmRlbGl2ZXJXZWJJbnRlbnQoImFhYSIsICJ0dHQiLCAiZGF0YSIpOwotICB9
Ci0KLSAgc2hvdWxkQmVEZWZpbmVkKCJ3aW5kb3cud2Via2l0SW50ZW50Iik7Ci0gIHNob3VsZEJl
RXF1YWxUb1N0cmluZygid2luZG93LndlYmtpdEludGVudC5hY3Rpb24iLCAiYWFhIik7Ci0gIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LndlYmtpdEludGVudC50eXBlIiwgInR0dCIpOwot
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy53ZWJraXRJbnRlbnQuZGF0YSIsICJkYXRh
Iik7Ci0KLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWZhaWx1cmUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1mYWlsdXJlLWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ3MTFjNzdmMGQyMjI0NTliYmY1MmQyMjRjMWI3
MzEzMDdkZjllOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWZhaWx1cmUtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1SZWNlaXZlZCBXZWIgSW50ZW50OiBhY3Rp
b249YWN0aW9uMSB0eXBlPW1pbWUvdHlwZTEKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKLQotVEVTVCBDT01QTEVURQotKiBzZW50IGludGVudAotKiBnb3QgZmFpbHVyZTogRVJST1IK
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1mYWlsdXJl
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWZhaWx1cmUuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDgzZTM3YWE0N2Q1NjQ3MGVjZGIwZGM3Nzk5
MTI4ZGU1NDcyMDI2NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWZhaWx1cmUuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLTxodG1sPgotICA8aGVhZD4KLSAgICA8c2NyaXB0
IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotICAg
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViLWludGVudHMtdGVzdGluZy5qcyI+PC9zY3JpcHQ+
Ci0gICAgPHNjcmlwdD4KLSAgICAgIGZ1bmN0aW9uIGJ1dHRvbkNsaWNrZWQoKSB7Ci0gICAgICAg
IHN0YXJ0SW50ZW50V2l0aENhbGxiYWNrcygpOwotCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgewotICAgICAgICAgIC8vIEVtcHR5IGFyZ3Mgd2lsbCBzZW5kIGZhaWx1cmUgbWVzc2Fn
ZS4KLSAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5zZW5kV2ViSW50ZW50UmVzcG9uc2UoKTsK
LSAgICAgICAgfQotICAgICAgfQotICAgIDwvc2NyaXB0PgotICA8L2hlYWQ+Ci08Ym9keSBvbmxv
YWQ9InNpbXVsYXRlQnV0dG9uUHJlc3MoKSI+Ci08aW5wdXQgdHlwZT0iYnV0dG9uIiBpZD0iYnV0
dG9uIiB2YWx1ZT0iU3RhcnQgV2ViIEludGVudCIgb25tb3VzZXVwPSJidXR0b25DbGlja2VkKCki
PgotPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJpbnRl
bnRzL3dlYi1pbnRlbnRzLWludm9rZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJpbnRl
bnRzL3dlYi1pbnRlbnRzLWludm9rZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDkyNmQyOTljM2RhNzhlMDZiYzI0YWQ4NWM3OGRiNmQ2NzBjNWQwOTAuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
aW50ZW50cy93ZWItaW50ZW50cy1pbnZva2UtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAg
LTEsNiArMCwwIEBACi1SZWNlaXZlZCBXZWIgSW50ZW50OiBhY3Rpb249YWN0aW9uMSB0eXBlPW1p
bWUvdHlwZTEKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVU
RQotKiBzZW50IGludGVudAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dl
Yi1pbnRlbnRzLWludm9rZS1wb3J0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmludGVu
dHMvd2ViLWludGVudHMtaW52b2tlLXBvcnQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkMWIzYTkyM2YzOGZjMGNmYmE1ZWRjOTNiNWU1ODE1NjkyZmYxZTllLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3dlYmludGVudHMvd2ViLWludGVudHMtaW52b2tlLXBvcnQtZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsNyArMCwwIEBACi1SZWNlaXZlZCBXZWIgSW50ZW50OiBhY3Rpb249YWN0aW9u
MSB0eXBlPW1pbWUvdHlwZTEKLUhhdmUgMSBwb3J0cwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0qIHNlbnQgaW50ZW50Ci0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMtaW52b2tlLXBvcnQuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMtaW52b2tlLXBvcnQuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOGI3MmIxYWYzNDBhYjRmMDQ3MTNkMTk4ZDI1YmUwYTk1YWI5
ZTdkMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWludm9rZS1wb3J0Lmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwzNCArMCwwIEBACi08aHRtbD4KLSAgPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9
Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLSAgICA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3dlYi1pbnRlbnRzLXRlc3RpbmcuanMiPjwvc2NyaXB0PgotICAg
IDxzY3JpcHQ+Ci0gICAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOwotICAg
ICAgY2hhbm5lbC5wb3J0Mi5vbk1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgIGRlYnVn
KCIqIGdvdCBtZXNzYWdlIik7Ci0gICAgICB9OwotCi0gICAgICBmdW5jdGlvbiBidXR0b25DbGlj
a2VkKCkgewotICAgICAgICB0cnkgewotICAgICAgICAgIHZhciBpbnRlbnQxID0gbmV3IFdlYktp
dEludGVudCgiYWN0aW9uMSIsICJtaW1lL3R5cGUxIiwgY2hhbm5lbC5wb3J0MSwgIm5vdCBhIHBv
cnQiKTsKLSAgICAgICAgICB0ZXN0RmFpbGVkKCJTaG91bGQgaGF2ZSB0aHJvd24gVHlwZUVycm9y
Iik7Ci0gICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2Yg
VHlwZUVycm9yKSkgdGVzdEZhaWxlZCgiU2hvdWxkIHRocm93IHR5cGUgZXJyb3Igb24gbm9uLXBv
cnQgYXJnIik7Ci0gICAgICAgIH0KLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICB2YXIgaW50ZW50
MSA9IG5ldyBXZWJLaXRJbnRlbnQoImFjdGlvbjEiLCAibWltZS90eXBlMSIsIGNoYW5uZWwucG9y
dDEsIFsibm90IGEgcG9ydCJdKTsKLSAgICAgICAgICB0ZXN0RmFpbGVkKCJTaG91bGQgaGF2ZSB0
aHJvd24gVHlwZUVycm9yIik7Ci0gICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICBpZiAo
IShlIGluc3RhbmNlb2YgVHlwZUVycm9yKSkgdGVzdEZhaWxlZCgiU2hvdWxkIHRocm93IHR5cGUg
ZXJyb3Igb24gbm9uLXBvcnQgYXJnIik7Ci0gICAgICAgIH0KLQotICAgICAgICBuYXZpZ2F0b3Iu
d2Via2l0U3RhcnRBY3Rpdml0eShuZXcgV2ViS2l0SW50ZW50KCJhY3Rpb24xIiwgIm1pbWUvdHlw
ZTEiLCBjaGFubmVsLnBvcnQxLCBbY2hhbm5lbC5wb3J0MV0pKTsKLSAgICAgICAgZGVidWcoIiog
c2VudCBpbnRlbnQiKTsKLSAgICAgIH0KLSAgICA8L3NjcmlwdD4KLSAgPC9oZWFkPgotPGJvZHkg
b25sb2FkPSJzaW11bGF0ZUJ1dHRvblByZXNzKCkiPgotPGlucHV0IHR5cGU9ImJ1dHRvbiIgaWQ9
ImJ1dHRvbiIgdmFsdWU9IlN0YXJ0IFdlYiBJbnRlbnQiIG9ubW91c2V1cD0iYnV0dG9uQ2xpY2tl
ZCgpIj4KLTxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
aW50ZW50cy93ZWItaW50ZW50cy1pbnZva2UuaHRtbCBiL0xheW91dFRlc3RzL3dlYmludGVudHMv
d2ViLWludGVudHMtaW52b2tlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4
NTE3NzA4YmU4NTM4MjA1MTQ2MTJiYzgzZTRjMGI5NjA2NmQxZWIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWIt
aW50ZW50cy1pbnZva2UuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLTxodG1s
PgotICA8aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViLWludGVu
dHMtdGVzdGluZy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdD4KLSAgICAgIGZ1bmN0aW9uIGJ1
dHRvbkNsaWNrZWQoKSB7Ci0gICAgICAgIG5hdmlnYXRvci53ZWJraXRTdGFydEFjdGl2aXR5KG5l
dyBXZWJLaXRJbnRlbnQoImFjdGlvbjEiLCAibWltZS90eXBlMSIsICJ0ZXN0IikpOwotICAgICAg
ICAgIGRlYnVnKCIqIHNlbnQgaW50ZW50Iik7Ci0gICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci0gIDwv
aGVhZD4KLTxib2R5IG9ubG9hZD0ic2ltdWxhdGVCdXR0b25QcmVzcygpIj4KLTxpbnB1dCB0eXBl
PSJidXR0b24iIGlkPSJidXR0b24iIHZhbHVlPSJTdGFydCBXZWIgSW50ZW50IiBvbm1vdXNldXA9
ImJ1dHRvbkNsaWNrZWQoKSI+Ci08c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMtb2JqLWNvbnN0cnVjdG9yLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMtb2JqLWNvbnN0cnVjdG9y
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNhMjBkOTE1NjM3
Njg1MDA4OGFmNzFjOWUxZjlkOWVhOTZiMTlkMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLW9i
ai1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBA
Ci1SZWNlaXZlZCBXZWIgSW50ZW50OiBhY3Rpb249YWN0aW9uMSB0eXBlPXRleHQvcGxhaW4KLVJl
Y2VpdmVkIFdlYiBJbnRlbnQ6IGFjdGlvbj1hY3Rpb24xIHR5cGU9dGV4dC9wbGFpbitleHBsaWNp
dAotRXhwbGljaXQgaW50ZW50IHNlcnZpY2U6IGh0dHA6Ly9leHBsaWNpdC5jb20vCi1SZWNlaXZl
ZCBXZWIgSW50ZW50OiBhY3Rpb249YWN0aW9uMSB0eXBlPXRleHQvcGxhaW4rZXh0cmFzCi1FeHRy
YXNbYV0gPSBiCi1SZWNlaXZlZCBXZWIgSW50ZW50OiBhY3Rpb249YWN0aW9uMSB0eXBlPXRleHQv
cGxhaW4rcG9ydAotSGF2ZSAxIHBvcnRzCi1SZWNlaXZlZCBXZWIgSW50ZW50OiBhY3Rpb249YWN0
aW9uMSB0eXBlPXRleHQvcGxhaW4rc3VnZ2VzdGlvbnMKLUhhdmUgc3VnZ2VzdGlvbiBodHRwOi8v
d3d3LmV4YW1wbGUuY29tLwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNU
IENPTVBMRVRFCi1QQVNTIG5ldyBXZWJLaXRJbnRlbnQoe30pIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTIuCi1QQVNTIG5ldyBXZWJLaXRJbnRlbnQo
ZHVtbXkpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24g
MTIuCi1QQVNTIG5ldyBXZWJLaXRJbnRlbnQobnVsbCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBT
eW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMi4KLVBBU1MgbmV3IFdlYktpdEludGVudCh1bmRl
ZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24g
MTIuCi1QQVNTIG5ldyBXZWJLaXRJbnRlbnQoNSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTeW50
YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMi4KLVBBU1MgbmV3IFdlYktpdEludGVudCgnc2l4Jykg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMi4KLVBB
U1MgbmV3IFdlYktpdEludGVudChbJ3NpeCddKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFN5bnRh
eEVycm9yOiBET00gRXhjZXB0aW9uIDEyLgotUEFTUyBuZXcgV2ViS2l0SW50ZW50KHsnYSc6J2In
fSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMi4K
LVBBU1MgbmV3IFdlYktpdEludGVudCh7J2FjdGlvbic6J2InfSkgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMi4KLVBBU1MgbmV3IFdlYktpdEludGVu
dCh7J3R5cGUnOidiJ30pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU3ludGF4RXJyb3I6IERPTSBF
eGNlcHRpb24gMTIuCi1QQVNTIG5ldyBXZWJLaXRJbnRlbnQoeydhY3Rpb24nOicnLCAndHlwZSc6
J2InfSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAx
Mi4KLVBBU1MgbmV3IFdlYktpdEludGVudCh7J2FjdGlvbic6J2EnLCAndHlwZSc6Jyd9KSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IFN5bnRheEVycm9yOiBET00gRXhjZXB0aW9uIDEyLgotUEFTUyAo
bmV3IFdlYktpdEludGVudCh7J2FjdGlvbic6J2EnLCd0eXBlJzonYid9KSkuYWN0aW9uIGlzICJh
IgotUEFTUyAobmV3IFdlYktpdEludGVudCh7J2FjdGlvbic6J2EnLCd0eXBlJzonYid9KSkudHlw
ZSBpcyAiYiIKLVBBU1MgKG5ldyBXZWJLaXRJbnRlbnQoeydhY3Rpb24nOm51bGwsJ3R5cGUnOidi
J30pKS5hY3Rpb24gaXMgIm51bGwiCi1QQVNTIChuZXcgV2ViS2l0SW50ZW50KHsnYWN0aW9uJzp1
bmRlZmluZWQsJ3R5cGUnOidiJ30pKS5hY3Rpb24gaXMgInVuZGVmaW5lZCIKLVBBU1MgKG5ldyBX
ZWJLaXRJbnRlbnQoeydhY3Rpb24nOidhJywndHlwZSc6bnVsbH0pKS50eXBlIGlzICJudWxsIgot
UEFTUyAobmV3IFdlYktpdEludGVudCh7J2FjdGlvbic6J2EnLCd0eXBlJzp1bmRlZmluZWR9KSku
dHlwZSBpcyAidW5kZWZpbmVkIgotUEFTUyBuZXcgV2ViS2l0SW50ZW50KHsnYWN0aW9uJzonYScs
J3R5cGUnOidiJywnc2VydmljZSc6Jyd9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLVBBU1Mg
bmV3IFdlYktpdEludGVudCh7J2FjdGlvbic6J2EnLCd0eXBlJzonYicsJ3NlcnZpY2UnOm51bGx9
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFN5bnRheEVycm9yOiBET00gRXhjZXB0aW9uIDEyLgot
UEFTUyBuZXcgV2ViS2l0SW50ZW50KHsnYWN0aW9uJzonYScsJ3R5cGUnOidiJywnc2VydmljZSc6
dW5kZWZpbmVkfSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2Vw
dGlvbiAxMi4KLVBBU1MgbmV3IFdlYktpdEludGVudCh7J2FjdGlvbic6J2EnLCd0eXBlJzonYics
J3NlcnZpY2UnOidub3QgYSB1cmwnfSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTeW50YXhFcnJv
cjogRE9NIEV4Y2VwdGlvbiAxMi4KLVBBU1MgbmV3IFdlYktpdEludGVudCh7J2FjdGlvbic6J2En
LCd0eXBlJzonYicsJ2RhdGEnOndpbmRvd30pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogRGF0YUNs
b25lRXJyb3I6IERPTSBFeGNlcHRpb24gMjUuCi1QQVNTIG5ldyBXZWJLaXRJbnRlbnQoeydhY3Rp
b24nOidhJywndHlwZSc6J2InLCdleHRyYXMnOm51bGx9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KLVBBU1MgbmV3IFdlYktpdEludGVudCh7J2FjdGlvbic6J2EnLCd0eXBlJzonYicsJ2V4dHJh
cyc6dW5kZWZpbmVkfSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIG5ldyBXZWJLaXRJ
bnRlbnQoeydhY3Rpb24nOidhJywndHlwZSc6J2InLCdleHRyYXMnOicnfSkgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCi1QQVNTIG5ldyBXZWJLaXRJbnRlbnQoeydhY3Rpb24nOidhJywndHlwZSc6
J2InLCdleHRyYXMnOidub3QgYSBkaWN0J30pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgotUEFT
UyBuZXcgV2ViS2l0SW50ZW50KHsnYWN0aW9uJzonYScsJ3R5cGUnOidiJywnZXh0cmFzJzo0Mn0p
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgotUEFTUyBuZXcgV2ViS2l0SW50ZW50KHsnYWN0aW9u
JzonYScsJ3R5cGUnOidiJywnZXh0cmFzJzpbJ2EnLCdiJ119KSBkaWQgbm90IHRocm93IGV4Y2Vw
dGlvbi4KLSogc2VudCBvYmplY3QgaW50ZW50Ci0qIHNlbnQgZXhwbGljaXQgaW50ZW50Ci0qIHNl
bnQgaW50ZW50IHdpdGggZXh0cmFzCi0qIHNlbnQgaW50ZW50IHdpdGggcG9ydAotUEFTUyBuZXcg
V2ViS2l0SW50ZW50KGJhZFBvcnRJbnRlbnRPYmopIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogRGF0
YUNsb25lRXJyb3I6IERPTSBFeGNlcHRpb24gMjUuCi1QQVNTIG5ldyBXZWJLaXRJbnRlbnQoc3Vn
Z2VzdGlvbnNJbnRlbnQpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU3ludGF4RXJyb3I6IERPTSBF
eGNlcHRpb24gMTIuCi1QQVNTIG5ldyBXZWJLaXRJbnRlbnQoc3VnZ2VzdGlvbnNJbnRlbnQpIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTIuCi0qIHNl
bnQgaW50ZW50IHdpdGggc3VnZ2VzdGlvbnMKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
aW50ZW50cy93ZWItaW50ZW50cy1vYmotY29uc3RydWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmludGVudHMvd2ViLWludGVudHMtb2JqLWNvbnN0cnVjdG9yLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGYxZmQ5MGIzOTFhNjEyMmU5YTViOGZiNGFjNzg0Zjk0Y2I5MDdmZGEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1vYmotY29uc3RydWN0b3IuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDEyNiArMCwwIEBACi08aHRtbD4KLSAgPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9
Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLSAgICA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3dlYi1pbnRlbnRzLXRlc3RpbmcuanMiPjwvc2NyaXB0PgotICAg
IDxzY3JpcHQ+Ci0gICAgZnVuY3Rpb24gc2hvdWxkTm90VGhyb3coZXhwcmVzc2lvbikKLSAgICB7
Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBldmFsKGV4cHJlc3Npb24pOwotICAgICAgICAg
ICAgdGVzdFBhc3NlZChleHByZXNzaW9uICsgIiBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4iKTsK
LSAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICAgICB0ZXN0RmFpbGVkKGV4cHJlc3Npb24g
KyAiIHNob3VsZCBub3QgdGhyb3cgZXhjZXB0aW9uLiBUaHJldyBleGNlcHRpb24gIiArIGUpOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZHVtbXkoKSB7fQotCi0gICAgZnVuY3Rp
b24gYnV0dG9uQ2xpY2tlZCgpIHsKLSAgICAgICAgLy8gfGFjdGlvbnwgYW5kIHx0eXBlfCBhcmUg
cmVxdWlyZWQgdG8gYmUgcHJlc2VudCBhbmQgbm9uLWVtcHR5LgotICAgICAgICBzaG91bGRUaHJv
dygibmV3IFdlYktpdEludGVudCh7fSkiLCAiJ0Vycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2Vw
dGlvbiAxMiciKTsKLSAgICAgICAgc2hvdWxkVGhyb3coIm5ldyBXZWJLaXRJbnRlbnQoZHVtbXkp
IiwgIidFcnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTInIik7Ci0gICAgICAgIHNo
b3VsZFRocm93KCJuZXcgV2ViS2l0SW50ZW50KG51bGwpIiwgIidFcnJvcjogU3ludGF4RXJyb3I6
IERPTSBFeGNlcHRpb24gMTInIik7Ci0gICAgICAgIHNob3VsZFRocm93KCJuZXcgV2ViS2l0SW50
ZW50KHVuZGVmaW5lZCkiLCAiJ0Vycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMici
KTsKLSAgICAgICAgc2hvdWxkVGhyb3coIm5ldyBXZWJLaXRJbnRlbnQoNSkiLCAiJ0Vycm9yOiBT
eW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMiciKTsKLSAgICAgICAgc2hvdWxkVGhyb3coIm5l
dyBXZWJLaXRJbnRlbnQoJ3NpeCcpIiwgIidFcnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRp
b24gMTInIik7Ci0gICAgICAgIHNob3VsZFRocm93KCJuZXcgV2ViS2l0SW50ZW50KFsnc2l4J10p
IiwgIidFcnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTInIik7Ci0gICAgICAgIHNo
b3VsZFRocm93KCJuZXcgV2ViS2l0SW50ZW50KHsnYSc6J2InfSkiLCAiJ0Vycm9yOiBTeW50YXhF
cnJvcjogRE9NIEV4Y2VwdGlvbiAxMiciKTsKLSAgICAgICAgc2hvdWxkVGhyb3coIm5ldyBXZWJL
aXRJbnRlbnQoeydhY3Rpb24nOidiJ30pIiwgIidFcnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNl
cHRpb24gMTInIik7Ci0gICAgICAgIHNob3VsZFRocm93KCJuZXcgV2ViS2l0SW50ZW50KHsndHlw
ZSc6J2InfSkiLCAiJ0Vycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMiciKTsKLSAg
ICAgICAgc2hvdWxkVGhyb3coIm5ldyBXZWJLaXRJbnRlbnQoeydhY3Rpb24nOicnLCAndHlwZSc6
J2InfSkiLCAiJ0Vycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMiciKTsKLSAgICAg
ICAgc2hvdWxkVGhyb3coIm5ldyBXZWJLaXRJbnRlbnQoeydhY3Rpb24nOidhJywgJ3R5cGUnOicn
fSkiLCAiJ0Vycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMiciKTsKLSAgICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCIobmV3IFdlYktpdEludGVudCh7J2FjdGlvbic6J2EnLCd0
eXBlJzonYid9KSkuYWN0aW9uIiwgImEiKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCIobmV3IFdlYktpdEludGVudCh7J2FjdGlvbic6J2EnLCd0eXBlJzonYid9KSkudHlwZSIsICJi
Iik7Ci0KLSAgICAgICAgLy8gVGhlc2Ugd2lsbCBnZXQgY29udmVydGVkIHRvIGxpdGVyYWxzICJu
dWxsIiBhbmQgInVuZGVmaW5lZCIuIEF3a3dhcmQKLSAgICAgICAgLy8gbmFtZXMsIGJ1dCBpZGlv
bWF0aWMgdXNhZ2UuCi0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiKG5ldyBXZWJLaXRJ
bnRlbnQoeydhY3Rpb24nOm51bGwsJ3R5cGUnOidiJ30pKS5hY3Rpb24iLCAibnVsbCIpOwotICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIihuZXcgV2ViS2l0SW50ZW50KHsnYWN0aW9uJzp1
bmRlZmluZWQsJ3R5cGUnOidiJ30pKS5hY3Rpb24iLCAidW5kZWZpbmVkIik7Ci0gICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiKG5ldyBXZWJLaXRJbnRlbnQoeydhY3Rpb24nOidhJywndHlw
ZSc6bnVsbH0pKS50eXBlIiwgIm51bGwiKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCIobmV3IFdlYktpdEludGVudCh7J2FjdGlvbic6J2EnLCd0eXBlJzp1bmRlZmluZWR9KSkudHlw
ZSIsICJ1bmRlZmluZWQiKTsKLQotICAgICAgICAvLyB8c2VydmljZXwsIGlmIHByZXNlbnQsIG11
c3QgYmUgYSB2YWxpZCB1cmwuCi0gICAgICAgIHNob3VsZE5vdFRocm93KCJuZXcgV2ViS2l0SW50
ZW50KHsnYWN0aW9uJzonYScsJ3R5cGUnOidiJywnc2VydmljZSc6Jyd9KSIpOwotICAgICAgICBz
aG91bGRUaHJvdygibmV3IFdlYktpdEludGVudCh7J2FjdGlvbic6J2EnLCd0eXBlJzonYicsJ3Nl
cnZpY2UnOm51bGx9KSIsICInRXJyb3I6IFN5bnRheEVycm9yOiBET00gRXhjZXB0aW9uIDEyJyIp
OwotICAgICAgICBzaG91bGRUaHJvdygibmV3IFdlYktpdEludGVudCh7J2FjdGlvbic6J2EnLCd0
eXBlJzonYicsJ3NlcnZpY2UnOnVuZGVmaW5lZH0pIiwgIidFcnJvcjogU3ludGF4RXJyb3I6IERP
TSBFeGNlcHRpb24gMTInIik7Ci0gICAgICAgIHNob3VsZFRocm93KCJuZXcgV2ViS2l0SW50ZW50
KHsnYWN0aW9uJzonYScsJ3R5cGUnOidiJywnc2VydmljZSc6J25vdCBhIHVybCd9KSIsICInRXJy
b3I6IFN5bnRheEVycm9yOiBET00gRXhjZXB0aW9uIDEyJyIpOwotCi0gICAgICAgIC8vIHxkYXRh
fCBtdXN0IGJlIGNsb25lYWJsZS4KLSAgICAgICAgc2hvdWxkVGhyb3coIm5ldyBXZWJLaXRJbnRl
bnQoeydhY3Rpb24nOidhJywndHlwZSc6J2InLCdkYXRhJzp3aW5kb3d9KSIsICInRXJyb3I6IERh
dGFDbG9uZUVycm9yOiBET00gRXhjZXB0aW9uIDI1JyIpOwotCi0gICAgICAgIC8vIHxleHRyYXN8
LCBpZiBwcmVzZW50LCBtdXN0IGJlIGEgZGljdGlvbmFyeS4KLSAgICAgICAgc2hvdWxkTm90VGhy
b3coIm5ldyBXZWJLaXRJbnRlbnQoeydhY3Rpb24nOidhJywndHlwZSc6J2InLCdleHRyYXMnOm51
bGx9KSIpOwotICAgICAgICBzaG91bGROb3RUaHJvdygibmV3IFdlYktpdEludGVudCh7J2FjdGlv
bic6J2EnLCd0eXBlJzonYicsJ2V4dHJhcyc6dW5kZWZpbmVkfSkiKTsKLSAgICAgICAgc2hvdWxk
Tm90VGhyb3coIm5ldyBXZWJLaXRJbnRlbnQoeydhY3Rpb24nOidhJywndHlwZSc6J2InLCdleHRy
YXMnOicnfSkiKTsKLSAgICAgICAgc2hvdWxkTm90VGhyb3coIm5ldyBXZWJLaXRJbnRlbnQoeydh
Y3Rpb24nOidhJywndHlwZSc6J2InLCdleHRyYXMnOidub3QgYSBkaWN0J30pIik7Ci0gICAgICAg
IHNob3VsZE5vdFRocm93KCJuZXcgV2ViS2l0SW50ZW50KHsnYWN0aW9uJzonYScsJ3R5cGUnOidi
JywnZXh0cmFzJzo0Mn0pIik7Ci0gICAgICAgIHNob3VsZE5vdFRocm93KCJuZXcgV2ViS2l0SW50
ZW50KHsnYWN0aW9uJzonYScsJ3R5cGUnOidiJywnZXh0cmFzJzpbJ2EnLCdiJ119KSIpOwotCi0g
ICAgICAgIHZhciBzaW1wbGVJbnRlbnQgPSBuZXcgV2ViS2l0SW50ZW50KAotICAgICAgICAgICAg
eyJhY3Rpb24iOiJhY3Rpb24xIiwKLSAgICAgICAgICAgICAidHlwZSI6InRleHQvcGxhaW4iLAot
ICAgICAgICAgICAgICJkYXRhIjoibWVzc2FnZSJ9KTsKLSAgICAgICAgbmF2aWdhdG9yLndlYmtp
dFN0YXJ0QWN0aXZpdHkoc2ltcGxlSW50ZW50KTsKLSAgICAgICAgZGVidWcoIiogc2VudCBvYmpl
Y3QgaW50ZW50Iik7Ci0KLSAgICAgICAgdmFyIGV4cGxpY2l0SW50ZW50ID0gbmV3IFdlYktpdElu
dGVudCgKLSAgICAgICAgICAgIHsiYWN0aW9uIjoiYWN0aW9uMSIsCi0gICAgICAgICAgICAgInR5
cGUiOiJ0ZXh0L3BsYWluK2V4cGxpY2l0IiwKLSAgICAgICAgICAgICAiZGF0YSI6Im1lc3NhZ2Ui
LAotICAgICAgICAgICAgICJzZXJ2aWNlIiA6ICJodHRwOi8vZXhwbGljaXQuY29tLyJ9KTsKLSAg
ICAgICAgbmF2aWdhdG9yLndlYmtpdFN0YXJ0QWN0aXZpdHkoZXhwbGljaXRJbnRlbnQpOwotICAg
ICAgICBkZWJ1ZygiKiBzZW50IGV4cGxpY2l0IGludGVudCIpOwotCi0gICAgICAgIHZhciBleHRy
YXNJbnRlbnQgPSBuZXcgV2ViS2l0SW50ZW50KAotICAgICAgICAgICAgeyJhY3Rpb24iOiJhY3Rp
b24xIiwKLSAgICAgICAgICAgICAidHlwZSI6InRleHQvcGxhaW4rZXh0cmFzIiwKLSAgICAgICAg
ICAgICAiZGF0YSI6Im1lc3NhZ2UiLAotICAgICAgICAgICAgICJleHRyYXMiOnsiYSI6ImIifX0p
OwotICAgICAgICBuYXZpZ2F0b3Iud2Via2l0U3RhcnRBY3Rpdml0eShleHRyYXNJbnRlbnQpOwot
ICAgICAgICBkZWJ1ZygiKiBzZW50IGludGVudCB3aXRoIGV4dHJhcyIpOwotCi0gICAgICAgIHZh
ciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7Ci0gICAgICAgIGNoYW5uZWwucG9ydDIu
b25NZXNzYWdlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBkZWJ1ZygiKiBnb3QgbWVzc2Fn
ZSIpOwotICAgICAgICB9OwotICAgICAgICB2YXIgcG9ydEludGVudCA9IG5ldyBXZWJLaXRJbnRl
bnQoCi0gICAgICAgICAgICB7ImFjdGlvbiI6ImFjdGlvbjEiLAotICAgICAgICAgICAgICJ0eXBl
IjoidGV4dC9wbGFpbitwb3J0IiwKLSAgICAgICAgICAgICAiZGF0YSI6Y2hhbm5lbC5wb3J0MSwK
LSAgICAgICAgICAgICAidHJhbnNmZXIiOltjaGFubmVsLnBvcnQxXX0pOwotICAgICAgICBuYXZp
Z2F0b3Iud2Via2l0U3RhcnRBY3Rpdml0eShwb3J0SW50ZW50KTsKLSAgICAgICAgZGVidWcoIiog
c2VudCBpbnRlbnQgd2l0aCBwb3J0Iik7Ci0KLSAgICAgICAgLy8gUG9ydHMsIGlmIHByZXNlbnQs
IG11c3QgYmUgcHV0IGluIHx0cmFuc2ZlcnwuCi0gICAgICAgIHZhciBiYWRjaGFubmVsID0gbmV3
IE1lc3NhZ2VDaGFubmVsKCk7Ci0gICAgICAgIGJhZGNoYW5uZWwucG9ydDIub25NZXNzYWdlID0g
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBkZWJ1ZygiKiBnb3QgbWVzc2FnZSIpOwotICAgICAg
ICB9Ci0gICAgICAgIGJhZFBvcnRJbnRlbnRPYmogPSAKLSAgICAgICAgICAgIHsiYWN0aW9uIjoi
YWN0aW9uMSIsCi0gICAgICAgICAgICAgInR5cGUiOiJ0ZXh0L3BsYWluK2JhZHBvcnQiLAotICAg
ICAgICAgICAgICJkYXRhIjpiYWRjaGFubmVsLnBvcnQxfTsKLSAgICAgICAgc2hvdWxkVGhyb3co
Im5ldyBXZWJLaXRJbnRlbnQoYmFkUG9ydEludGVudE9iaikiLCAiJ0Vycm9yOiBEYXRhQ2xvbmVF
cnJvcjogRE9NIEV4Y2VwdGlvbiAyNSciKTsKLQotICAgICAgICBzdWdnZXN0aW9uc0ludGVudCA9
Ci0gICAgICAgICAgICB7ImFjdGlvbiI6ImFjdGlvbjEiLAotICAgICAgICAgICAgICJ0eXBlIjoi
dGV4dC9wbGFpbitzdWdnZXN0aW9ucyIsCi0gICAgICAgICAgICAgImRhdGEiOiJtZXNzYWdlIiwK
LSAgICAgICAgICAgICAic3VnZ2VzdGlvbnMiOlsid3d3LmV4YW1wbGUuY29tLyIsICJodHRwOi8v
d3cyLmV4YW1wbGUuY29tIl19OwotICAgICAgICBzaG91bGRUaHJvdygibmV3IFdlYktpdEludGVu
dChzdWdnZXN0aW9uc0ludGVudCkiLCAiJ0Vycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlv
biAxMiciKTsKLQotICAgICAgICBzdWdnZXN0aW9uc0ludGVudC5zdWdnZXN0aW9ucyA9IFsxNV07
Ci0gICAgICAgIHNob3VsZFRocm93KCJuZXcgV2ViS2l0SW50ZW50KHN1Z2dlc3Rpb25zSW50ZW50
KSIsICInRXJyb3I6IFN5bnRheEVycm9yOiBET00gRXhjZXB0aW9uIDEyJyIpOwotCi0gICAgICAg
IHN1Z2dlc3Rpb25zSW50ZW50LnN1Z2dlc3Rpb25zID0gWyJodHRwOi8vd3d3LmV4YW1wbGUuY29t
LyJdOwotICAgICAgICBuYXZpZ2F0b3Iud2Via2l0U3RhcnRBY3Rpdml0eShuZXcgV2ViS2l0SW50
ZW50KHN1Z2dlc3Rpb25zSW50ZW50KSk7Ci0gICAgICAgIGRlYnVnKCIqIHNlbnQgaW50ZW50IHdp
dGggc3VnZ2VzdGlvbnMiKTsKLQotICAgIH0KLSAgICA8L3NjcmlwdD4KLSAgPC9oZWFkPgotPGJv
ZHkgb25sb2FkPSJzaW11bGF0ZUJ1dHRvblByZXNzKCkiPgotPGlucHV0IHR5cGU9ImJ1dHRvbiIg
aWQ9ImJ1dHRvbiIgdmFsdWU9IlN0YXJ0IFdlYiBJbnRlbnQiIG9ubW91c2V1cD0iYnV0dG9uQ2xp
Y2tlZCgpIj4KLTxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViaW50ZW50cy93ZWItaW50ZW50cy1yZWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
d2ViaW50ZW50cy93ZWItaW50ZW50cy1yZWxvYWQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA3ODJlYzVhNWY1MzY4YTk3ZjQzZWE3ZmYzYzA2MzAxYWRlNzYwMGMx
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmludGVudHMvd2ViLWludGVudHMtcmVsb2FkLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDEwICswLDAgQEAKLVJlY2VpdmVkIFdlYiBJbnRlbnQ6IGFjdGlvbj1hY3Rpb24g
dHlwZT10eXBlCi0qIGxvYWRlZAotKiBzZW50IG1vdXNldXAKLSogbG9hZGVkIHJlcGxhY2VtZW50
IHBhZ2UKLSAKLQotLS0tLS0tLS0KLUZyYW1lOiAnZnJhbWUnCi0tLS0tLS0tLQotUEFTUwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1yZWxvYWQuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMtcmVsb2FkLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzYWYzOWNmNjc0YzZhMzc3ODA1OWNjM2Q1MmQ4MDdlOTJi
MzNjZTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1yZWxvYWQuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDQ1ICswLDAgQEAKLTxodG1sPgotICA8aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvd2ViLWludGVudHMtdGVzdGluZy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNj
cmlwdD4KLSAgICAgIHZhciBsYXRjaCA9IHRydWU7Ci0KLSAgICAgIGZ1bmN0aW9uIGJ1dHRvbkNs
aWNrZWQoKSB7Ci0gICAgICAgIGZyYW1lc1swXS5zdGFydEludGVudCgpOwotICAgICAgfQotCi0g
ICAgICBmdW5jdGlvbiBmcmFtZWxvYWRlZCgpIHsKLSAgICAgICAgaWYgKGxhdGNoKSB7Ci0gICAg
ICAgICAgbGF0Y2ggPSBmYWxzZTsKLSAgICAgICAgICBzdGFydFRlc3QoKTsKLSAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBkZWJ1ZygiKiBsb2FkZWQgcmVwbGFjZW1lbnQg
cGFnZSIpOwotCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICAgIHdp
bmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAg
ICBmdW5jdGlvbiBzdGFydFRlc3QoKSB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
ewotICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAg
ICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICBhbGVydCgnVGhpcyB0ZXN0IG5lZWRzIHRvIHJ1biBpbiBEUlQnKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGRlYnVnKCIqIGxvYWRlZCIpOwotCi0gICAgICAgIHNpbXVs
YXRlQnV0dG9uUHJlc3MoKTsKLSAgICAgICAgZGVidWcoIiogc2VudCBtb3VzZXVwIik7Ci0gICAg
ICB9Ci0gICAgPC9zY3JpcHQ+Ci0gIDwvaGVhZD4KLTxib2R5PgotPGlucHV0IHR5cGU9ImJ1dHRv
biIgaWQ9ImJ1dHRvbiIgdmFsdWU9IlN0YXJ0IFdlYiBJbnRlbnQiIG9ubW91c2V1cD0iYnV0dG9u
Q2xpY2tlZCgpIj4KLTxpZnJhbWUgaWQ9ImZyYW1lIiBvbmxvYWQ9ImZyYW1lbG9hZGVkKCkiIHNy
Yz0icmVzb3VyY2VzL3dlYi1pbnRlbnRzLXJlbG9hZC1vcmlnLmh0bWwiPjwvaWZyYW1lPgotPC9i
b2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50
ZW50cy1yZXBseS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRl
bnRzLXJlcGx5LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmQ2
ZTJjNDk1NjE3NjgwYjJiYzkwN2ZmZGM2MjY5OWQ2MTU3OWFlMC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1p
bnRlbnRzLXJlcGx5LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAot
UmVjZWl2ZWQgV2ViIEludGVudDogYWN0aW9uPWFjdGlvbjEgdHlwZT1taW1lL3R5cGUxCi1QQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLSogc2VudCBpbnRl
bnQKLSogZ290IHJlcGx5OiByZXBseQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJpbnRl
bnRzL3dlYi1pbnRlbnRzLXJlcGx5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1p
bnRlbnRzLXJlcGx5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkNjg1NDJh
NjYwZjI3ZGRhYjU1YWQ5ZDU0NjUyNjI2MmZkNDljMDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50
cy1yZXBseS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotPGh0bWw+Ci0gIDxo
ZWFkPgotICAgIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWItaW50ZW50cy10ZXN0
aW5nLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0PgotICAgICAgZnVuY3Rpb24gYnV0dG9uQ2xp
Y2tlZCgpIHsKLSAgICAgICAgc3RhcnRJbnRlbnRXaXRoQ2FsbGJhY2tzKCk7Ci0KLSAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIuc2Vu
ZFdlYkludGVudFJlc3BvbnNlKCJyZXBseSIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgPC9z
Y3JpcHQ+Ci0gIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0ic2ltdWxhdGVCdXR0b25QcmVzcygpIj4K
LTxpbnB1dCB0eXBlPSJidXR0b24iIGlkPSJidXR0b24iIHZhbHVlPSJTdGFydCBXZWIgSW50ZW50
IiBvbm1vdXNldXA9ImJ1dHRvbkNsaWNrZWQoKSI+Ci08c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187700</attachid>
            <date>2013-02-11 15:32:30 -0800</date>
            <delta_ts>2013-02-11 16:41:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109501-20130211152917.patch</filename>
            <type>text/plain</type>
            <size>179343</size>
            <attacher name="Nico Weber">thakis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2QwOGRkNmM3OWUyOTYw
ZDBjMWQyYzdkMjM2OGZlNzRiMmViMGM4Mi4uMTMwMGFmN2Q2ZDg1ZmYyODlkNjMzMTZlMTU2MDQz
YjU4YTg2OWIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEzLTAyLTExICBOaWNv
IFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW1vdmUgd2ViIGludGVu
dHMgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA5NTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2VlIHRocmVhZCAiUmVtb3ZpbmcgRU5BQkxFKFdFQl9JTlRFTlRTKSBjb2RlIiBvbiB3ZWJraXQt
ZGV2LgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1bGVz
L2ludGVudHMvRE9NV2luZG93SW50ZW50cy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy9pbnRlbnRzL0RPTVdpbmRvd0ludGVudHMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVz
L2ludGVudHMvRE9NV2luZG93SW50ZW50cy5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy9pbnRlbnRzL0RlbGl2ZXJlZEludGVudC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy9pbnRlbnRzL0RlbGl2ZXJlZEludGVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
aW50ZW50cy9EZWxpdmVyZWRJbnRlbnQuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMv
aW50ZW50cy9JbnRlbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvaW50ZW50cy9J
bnRlbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ludGVudHMvSW50ZW50LmlkbDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy9pbnRlbnRzL0ludGVudFJlcXVlc3QuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL2ludGVudHMvSW50ZW50UmVzdWx0Q2FsbGJhY2suaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ludGVudHMvSW50ZW50UmVzdWx0Q2FsbGJhY2suaWRs
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvaW50ZW50cy9OYXZpZ2F0b3JJbnRlbnRzLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ludGVudHMvTmF2aWdhdG9ySW50ZW50cy5o
OiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvaW50ZW50cy9OYXZpZ2F0b3JJbnRlbnRzLmlk
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL2dl
bmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlcyk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50ZW50Q3VzdG9tLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50c0FsbEluT25lLmNwcDoKKyAg
ICAgICAgKiBodG1sL0hUTUxJbnRlbnRFbGVtZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBo
dG1sL0hUTUxJbnRlbnRFbGVtZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9IVE1MSW50
ZW50RWxlbWVudC5pZGw6IFJlbW92ZWQuCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5j
cHA6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoRW1wdHlGcmFt
ZUxvYWRlckNsaWVudCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisKIDIwMTMt
MDItMDYgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtW
OF0gUmVuYW1lIGlzb2xhdGVkKCkgdG8gZ2V0V29ybGQoKSwgcmVuYW1lIHdvcmxkRm9yRW50ZXJl
ZENvbnRleHRJZklzb2xhdGVkKCkgdG8gd29ybGRGb3JFbnRlcmVkQ29udGV4dCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDM1YTBhN2RmNDBiMzQyM2E0NDdmZTgwN2QzODJmZTE1NTg0
YWY5NDkuLjAwNTg3ZWNkNGVkYjA0NWRhODA4MTc1ZGMxZTBjYjFlMjIyNDY1NzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTMtMDItMTEgIE5pY28gV2Vi
ZXIgIDx0aGFraXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbW92ZSB3ZWIgaW50ZW50cyBj
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk1
MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZWUg
dGhyZWFkICJSZW1vdmluZyBFTkFCTEUoV0VCX0lOVEVOVFMpIGNvZGUiIG9uIHdlYmtpdC1kZXYu
CisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIGZlYXR1cmVzLmd5cGk6CisgICAg
ICAgICogcHVibGljL1dlYkRlbGl2ZXJlZEludGVudENsaWVudC5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHB1YmxpYy9XZWJGcmFtZS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkZy
YW1lKToKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogcHVibGljL1dlYkludGVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIHB1
YmxpYy9XZWJJbnRlbnRSZXF1ZXN0Lmg6IFJlbW92ZWQuCisgICAgICAgICogcHVibGljL1dlYklu
dGVudFNlcnZpY2VJbmZvLmg6IFJlbW92ZWQuCisgICAgICAgICogcHVibGljL1dlYlJ1bnRpbWVG
ZWF0dXJlcy5oOgorICAgICAgICAoV2ViUnVudGltZUZlYXR1cmVzKToKKyAgICAgICAgKiBzcmMv
RGVsaXZlcmVkSW50ZW50Q2xpZW50SW1wbC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3JjL0Rl
bGl2ZXJlZEludGVudENsaWVudEltcGwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBs
Lmg6CisgICAgICAgIChGcmFtZUxvYWRlckNsaWVudEltcGwpOgorICAgICAgICAqIHNyYy9XZWJG
cmFtZUltcGwuY3BwOgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuaDoKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJGcmFtZUltcGwpOgorICAgICAgICAqIHNyYy9XZWJJbnRlbnQu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9XZWJJbnRlbnRSZXF1ZXN0LmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBzcmMvV2ViSW50ZW50U2VydmljZUluZm8uY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIHNyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwOgorCiAyMDEzLTAyLTEwICBKYW1lcyBS
b2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBFbmFi
bGUgbW9yZSBvZiB3ZWJraXRfdW5pdF90ZXN0cyBpbiBjb21wb25lbnQgYnVpbGRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA5OWNiNGY4ZjJlMTk5MmU1NzVkYmRmNzQ3MGY0NjA1
NmQ0OGViMTQ3Li4wYTU5ZDU5ZWE0OTBiNGIwZmVmY2YwMzMzMzA2OGZlOWIxOGYyYzVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTk3Nyw3ICs5NzcsNiBAQCBJRExfSU5DTFVE
RVMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2dhbWVwYWQgXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy9nZW9sb2NhdGlvbiBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2luZGV4ZWRkYiBc
Ci0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ludGVudHMgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXNvdXJjZSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvbmV0d29ya2luZm8gXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbnRlbnRzL0RPTVdpbmRvd0ludGVudHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbnRlbnRzL0RPTVdpbmRvd0ludGVudHMuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlZmJhNTkxOTBmZDcyZDA3NjM5MzQ1NjA5NGJiNDhjNWNlMWNjZWM2Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW50ZW50cy9ET01XaW5kb3dJbnRlbnRzLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkRPTVdpbmRvd0ludGVudHMuaCIKLQotI2lmIEVOQUJMRShXRUJfSU5U
RU5UUykKLQotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgotI2luY2x1ZGUgIkRlbGl2ZXJlZEludGVu
dC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLURPTVdpbmRvd0ludGVudHM6OkRPTVdpbmRv
d0ludGVudHMoRE9NV2luZG93KiB3aW5kb3cpCi0gICAgOiBET01XaW5kb3dQcm9wZXJ0eSh3aW5k
b3ctPmZyYW1lKCkpCi17Ci19Ci0KLURPTVdpbmRvd0ludGVudHM6On5ET01XaW5kb3dJbnRlbnRz
KCkKLXsKLX0KLQotY29uc3QgY2hhciogRE9NV2luZG93SW50ZW50czo6c3VwcGxlbWVudE5hbWUo
KQotewotICAgIHJldHVybiAiRE9NV2luZG93SW50ZW50cyI7Ci19Ci0KLURPTVdpbmRvd0ludGVu
dHMqIERPTVdpbmRvd0ludGVudHM6OmZyb20oRE9NV2luZG93KiB3aW5kb3cpCi17Ci0gICAgQVNT
RVJUKHdpbmRvdyk7Ci0gICAgRE9NV2luZG93SW50ZW50cyogc3VwcGxlbWVudCA9IHN0YXRpY19j
YXN0PERPTVdpbmRvd0ludGVudHMqPihTdXBwbGVtZW50PERPTVdpbmRvdz46OmZyb20od2luZG93
LCBzdXBwbGVtZW50TmFtZSgpKSk7Ci0gICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIHN1
cHBsZW1lbnQgPSBuZXcgRE9NV2luZG93SW50ZW50cyh3aW5kb3cpOwotICAgICAgICBwcm92aWRl
VG8od2luZG93LCBzdXBwbGVtZW50TmFtZSgpLCBhZG9wdFB0cihzdXBwbGVtZW50KSk7Ci0gICAg
fQotICAgIHJldHVybiBzdXBwbGVtZW50OwotfQotCi1EZWxpdmVyZWRJbnRlbnQqIERPTVdpbmRv
d0ludGVudHM6OndlYmtpdEludGVudChET01XaW5kb3cqIHdpbmRvdykKLXsKLSAgICByZXR1cm4g
ZnJvbSh3aW5kb3cpLT53ZWJraXRJbnRlbnQoKTsKLX0KLQotRGVsaXZlcmVkSW50ZW50KiBET01X
aW5kb3dJbnRlbnRzOjp3ZWJraXRJbnRlbnQoKQotewotICAgIHJldHVybiBtX2ludGVudC5nZXQo
KTsKLX0KLQotdm9pZCBET01XaW5kb3dJbnRlbnRzOjpkZWxpdmVyKFBhc3NSZWZQdHI8RGVsaXZl
cmVkSW50ZW50PiBpbnRlbnQpCi17Ci0gICAgaWYgKCFmcmFtZSgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX2ludGVudCA9IGludGVudDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbnRlbnRzL0RPTVdpbmRvd0ludGVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW50ZW50cy9ET01XaW5kb3dJbnRlbnRzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGEwOTVmZTVmNjNlNTEzYzYyZWUyMzVjYThjNzNkYzQ2NjQ4OWVlMzUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbnRlbnRzL0RPTVdpbmRvd0ludGVudHMuaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBET01XaW5kb3dJbnRlbnRz
X2gKLSNkZWZpbmUgRE9NV2luZG93SW50ZW50c19oCi0KLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMp
Ci0KLSNpbmNsdWRlICJET01XaW5kb3dQcm9wZXJ0eS5oIgotI2luY2x1ZGUgIlN1cHBsZW1lbnRh
YmxlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRE9NV2luZG93OwotY2xhc3Mg
RGVsaXZlcmVkSW50ZW50OwotCi1jbGFzcyBET01XaW5kb3dJbnRlbnRzIDogcHVibGljIERPTVdp
bmRvd1Byb3BlcnR5LCBwdWJsaWMgU3VwcGxlbWVudDxET01XaW5kb3c+IHsKLXB1YmxpYzoKLSAg
ICB2aXJ0dWFsIH5ET01XaW5kb3dJbnRlbnRzKCk7Ci0gICAgc3RhdGljIERPTVdpbmRvd0ludGVu
dHMqIGZyb20oRE9NV2luZG93Kik7Ci0KLSAgICBzdGF0aWMgRGVsaXZlcmVkSW50ZW50KiB3ZWJr
aXRJbnRlbnQoRE9NV2luZG93Kik7Ci0KLSAgICB2b2lkIGRlbGl2ZXIoUGFzc1JlZlB0cjxEZWxp
dmVyZWRJbnRlbnQ+KTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBET01XaW5kb3dJbnRlbnRz
KERPTVdpbmRvdyopOwotCi0gICAgRGVsaXZlcmVkSW50ZW50KiB3ZWJraXRJbnRlbnQoKTsKLSAg
ICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKLQotICAgIFJlZlB0cjxEZWxp
dmVyZWRJbnRlbnQ+IG1faW50ZW50OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTKQotCi0jZW5kaWYgLy8gRE9NV2luZG93SW50ZW50
c19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvRE9NV2luZG93
SW50ZW50cy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvRE9NV2luZG93SW50
ZW50cy5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzN2MxNGQ0M2IwMzAyODU2
NTEzYjZmZjI4YTUyYjJiMDQyYzZiNDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0RPTVdpbmRvd0lu
dGVudHMuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCX0lOVEVOVFMsCi0gICAgU3VwcGxlbWVu
dGFsPURPTVdpbmRvdwotXSBpbnRlcmZhY2UgRE9NV2luZG93SW50ZW50cyB7Ci0gICAgW1Y4RW5h
YmxlZEF0UnVudGltZV0gYXR0cmlidXRlIEludGVudENvbnN0cnVjdG9yIFdlYktpdEludGVudDsK
LQotICAgIFtSZXBsYWNlYWJsZSwgVjhFbmFibGVkQXRSdW50aW1lXSByZWFkb25seSBhdHRyaWJ1
dGUgRGVsaXZlcmVkSW50ZW50IHdlYmtpdEludGVudDsKLX07Ci0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9EZWxpdmVyZWRJbnRlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbnRlbnRzL0RlbGl2ZXJlZEludGVudC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGYwZDhjYTNlYjY4Yjc0N2E1OGFjZDIxM2YxYzQ5YzU4NmI3MjRkOGYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbnRlbnRzL0RlbGl2ZXJlZEludGVudC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw5MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUsIEluYy4gKCJHb29nbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEdPT0dMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRlbGl2ZXJlZEludGVu
dC5oIgotCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIK
LSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRl
ICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotUGFzc1JlZlB0cjxEZWxpdmVyZWRJbnRlbnQ+IERlbGl2ZXJl
ZEludGVudDo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgUGFzc093blB0cjxEZWxpdmVyZWRJbnRlbnRD
bGllbnQ+IGNsaWVudCwgY29uc3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgUGFzc093blB0cjxNZXNzYWdlUG9y
dEFycmF5PiBwb3J0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgZXh0cmFzKQotewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgRGVsaXZlcmVkSW50ZW50KGZyYW1lLCBjbGllbnQsIGFjdGlv
biwgdHlwZSwgZGF0YSwgcG9ydHMsIGV4dHJhcykpOwotfQotCi1EZWxpdmVyZWRJbnRlbnQ6OkRl
bGl2ZXJlZEludGVudChGcmFtZSogZnJhbWUsIFBhc3NPd25QdHI8RGVsaXZlcmVkSW50ZW50Q2xp
ZW50PiBjbGllbnQsIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gZGF0YSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
JiBleHRyYXMpCi0gICAgOiBJbnRlbnQoYWN0aW9uLCB0eXBlLCBkYXRhLCBQYXNzT3duUHRyPE1l
c3NhZ2VQb3J0Q2hhbm5lbEFycmF5PigpLCBleHRyYXMsIEtVUkwoKSwgVmVjdG9yPEtVUkw+KCkp
Ci0gICAgLCBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIoZnJhbWUpCi0gICAgLCBtX2NsaWVudChj
bGllbnQpCi0gICAgLCBtX3BvcnRzKHBvcnRzKQotewotfQotCi12b2lkIERlbGl2ZXJlZEludGVu
dDo6ZnJhbWVEZXN0cm95ZWQoKQotewotICAgIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcjo6ZnJh
bWVEZXN0cm95ZWQoKTsKLSAgICBtX2NsaWVudC5jbGVhcigpOwotfQotCi1NZXNzYWdlUG9ydEFy
cmF5KiBEZWxpdmVyZWRJbnRlbnQ6OnBvcnRzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wb3J0
cy5nZXQoKTsKLX0KLQotU3RyaW5nIERlbGl2ZXJlZEludGVudDo6Z2V0RXh0cmEoY29uc3QgU3Ry
aW5nJiBrZXkpCi17Ci0gICAgcmV0dXJuIGV4dHJhcygpLmdldChrZXkpOwotfQotCi12b2lkIERl
bGl2ZXJlZEludGVudDo6cG9zdFJlc3VsdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gZGF0YSkKLXsKLSAgICBpZiAoIW1fY2xpZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X2NsaWVudC0+cG9zdFJlc3VsdChkYXRhKTsKLX0KLQotdm9pZCBEZWxpdmVyZWRJbnRlbnQ6OnBv
c3RGYWlsdXJlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKQotewotICAg
IGlmICghbV9jbGllbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50LT5wb3N0RmFp
bHVyZShkYXRhKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQl9JTlRFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRl
bnRzL0RlbGl2ZXJlZEludGVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0Rl
bGl2ZXJlZEludGVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2E5NjJhNmFm
ODhhN2VkMGM5NzE2NThlNDE1NTNiMmQ5MjBmODcxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9EZWxp
dmVyZWRJbnRlbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSwgSW5jLiAoIkdvb2ds
ZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERlbGl2ZXJl
ZEludGVudF9oCi0jZGVmaW5lIERlbGl2ZXJlZEludGVudF9oCi0KLSNpZiBFTkFCTEUoV0VCX0lO
VEVOVFMpCi0KLSNpbmNsdWRlICJGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKLSNpbmNsdWRl
ICJJbnRlbnQuaCIKLSNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzIEZyYW1lOwotY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwotCi0vLyBKUyBj
YWxscyB0byBwb3N0UmVzdWx0L3Bvc3RGYWlsdXJlIG9uIERlbGl2ZXJlZEludGVudCB3aWxsIGJl
IGZvcndhcmRlZCAKLS8vIHRvIHRoaXMgY2xpZW50IGludGVyZmFjZS4gVGhlIG9iamVjdCBpcyBv
d25lZCBieSB0aGUgRGVsaXZlcmVkSW50ZW50IHRvCi0vLyB3aGljaCBpdCBpcyBhdHRhY2hlZCwg
YW5kIHdpbGwgYmUgZGVsZXRlZCB3aGVuIHRoZSBkZWxpdmVyZWQgaW50ZW50IHdpbGwgaXNzdWUK
LS8vIG5vIGZ1cnRoZXIgY2FsbHMgdG8gaXQuIEJlZm9yZSB0aGF0IHBvaW50LCB0aGUgZGVzdHJv
eSgpIG1ldGhvZCBpcyBpbnZva2VkLgotY2xhc3MgRGVsaXZlcmVkSW50ZW50Q2xpZW50IHsKLXB1
YmxpYzoKLSAgICB2aXJ0dWFsIH5EZWxpdmVyZWRJbnRlbnRDbGllbnQoKSB7IH0KLQotICAgIHZp
cnR1YWwgdm9pZCBwb3N0UmVzdWx0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBk
YXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RGYWlsdXJlKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBkYXRhKSA9IDA7Ci19OwotCi1jbGFzcyBEZWxpdmVyZWRJbnRlbnQg
OiBwdWJsaWMgSW50ZW50LCBwdWJsaWMgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyIHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWxpdmVyZWRJbnRlbnQ+IGNyZWF0ZShGcmFtZSos
IFBhc3NPd25QdHI8RGVsaXZlcmVkSW50ZW50Q2xpZW50PiwgY29uc3QgU3RyaW5nJiBhY3Rpb24s
IGNvbnN0IFN0cmluZyYgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8
TWVzc2FnZVBvcnRBcnJheT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKTsKLQotICAgIHZpcnR1YWwg
fkRlbGl2ZXJlZEludGVudCgpIHsgfQotCi0gICAgTWVzc2FnZVBvcnRBcnJheSogcG9ydHMoKSBj
b25zdDsKLSAgICBTdHJpbmcgZ2V0RXh0cmEoY29uc3QgU3RyaW5nJiBrZXkpOwotICAgIHZvaWQg
cG9zdFJlc3VsdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSk7Ci0gICAg
dm9pZCBwb3N0RmFpbHVyZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSk7
Ci0KLSAgICB2b2lkIHNldENsaWVudChQYXNzUmVmUHRyPERlbGl2ZXJlZEludGVudENsaWVudD4p
OwotCi0gICAgdmlydHVhbCB2b2lkIGZyYW1lRGVzdHJveWVkKCkgT1ZFUlJJREU7Ci0KLXByaXZh
dGU6Ci0gICAgRGVsaXZlcmVkSW50ZW50KEZyYW1lKiwgUGFzc093blB0cjxEZWxpdmVyZWRJbnRl
bnRDbGllbnQ+LCBjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLAotICAg
ICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NP
d25QdHI8TWVzc2FnZVBvcnRBcnJheT4sCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+Jik7Ci0KLSAgICBPd25QdHI8RGVsaXZlcmVkSW50ZW50Q2xpZW50
PiBtX2NsaWVudDsKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gbV9wb3J0czsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBJbnRlbnRfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0RlbGl2ZXJlZEludGVu
dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvRGVsaXZlcmVkSW50ZW50Lmlk
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzlhMGYxN2FkYTE3ODdmMzBkMGRkMTAx
ZjRjNmJjN2M4NWZmYzAwNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvRGVsaXZlcmVkSW50ZW50Lmlk
bAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9u
YWw9V0VCX0lOVEVOVFMsCi1dIGludGVyZmFjZSBEZWxpdmVyZWRJbnRlbnQgOiBJbnRlbnQgewot
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydEFycmF5IHBvcnRzOwotCi0gICAgW1Ry
ZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbF0gRE9NU3RyaW5nIGdldEV4dHJhKGluIERPTVN0
cmluZyBrZXkpOwotICAgIHZvaWQgcG9zdFJlc3VsdChpbiBTZXJpYWxpemVkU2NyaXB0VmFsdWUg
cmVzdWx0KTsKLSAgICB2b2lkIHBvc3RGYWlsdXJlKGluIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBy
ZXN1bHQpOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9J
bnRlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4OGU1ZDg5OTBhYzhlMWFiMWJlNThiZDM3YzFh
YjQwNWIxYWQ5ZDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSwxNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlLCBJbmMuICgiR29vZ2xlIikgbm9yIHRoZSBuYW1lcyBvZgotICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBHT09HTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0g
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbnRlbnQuaCIK
LQotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLQotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
LSNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgotI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
UGFzc1JlZlB0cjxJbnRlbnQ+IEludGVudDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgYWN0aW9uLCBj
b25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRh
LCBjb25zdCBNZXNzYWdlUG9ydEFycmF5JiBwb3J0cywgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0g
ICAgaWYgKGFjdGlvbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgaWYgKHR5cGUuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IGVjID0gU1lOVEFYX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgT3duUHRy
PE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscyA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRh
bmdsZVBvcnRzKCZwb3J0cywgZWMpOwotCi0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gZXh0
cmFzOwotICAgIEtVUkwgc2VydmljZVVSTDsKLSAgICBWZWN0b3I8S1VSTD4gc3VnZ2VzdGlvbnM7
Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEludGVudChhY3Rpb24sIHR5cGUsIGRhdGEsIGNo
YW5uZWxzLnJlbGVhc2UoKSwgZXh0cmFzLCBzZXJ2aWNlVVJMLCBzdWdnZXN0aW9ucykpOwotfQot
Ci1QYXNzUmVmUHRyPEludGVudD4gSW50ZW50OjpjcmVhdGUoU2NyaXB0U3RhdGUqIHNjcmlwdFN0
YXRlLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAg
ICBTdHJpbmcgYWN0aW9uOwotICAgIGlmICghb3B0aW9ucy5nZXQoImFjdGlvbiIsIGFjdGlvbikg
fHwgYWN0aW9uLmlzRW1wdHkoKSkgewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAg
IHJldHVybiAwOwotICAgIH0KLQotICAgIFN0cmluZyB0eXBlOwotICAgIGlmICghb3B0aW9ucy5n
ZXQoInR5cGUiLCB0eXBlKSB8fCB0eXBlLmlzRW1wdHkoKSkgewotICAgICAgICBlYyA9IFNZTlRB
WF9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIFN0cmluZyBzZXJ2aWNlOwot
ICAgIEtVUkwgc2VydmljZVVybDsKLSAgICBpZiAob3B0aW9ucy5nZXQoInNlcnZpY2UiLCBzZXJ2
aWNlKSAmJiAhc2VydmljZS5pc0VtcHR5KCkpIHsKLSAgICAgIHNlcnZpY2VVcmwgPSBLVVJMKEtV
UkwoKSwgc2VydmljZSk7Ci0gICAgICBpZiAoIXNlcnZpY2VVcmwuaXNWYWxpZCgpKSB7Ci0gICAg
ICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICAgIHJldHVybiAwOwotICAgICAgfQotICAg
IH0KLQotICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydHM7Ci0gICAgT3duUHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5PiBjaGFubmVsczsKLSAgICBpZiAob3B0aW9ucy5nZXQoInRyYW5zZmVyIiwg
cG9ydHMpKQotICAgICAgICBjaGFubmVscyA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRz
KCZwb3J0cywgZWMpOwotCi0gICAgU2NyaXB0VmFsdWUgZGF0YVZhbHVlOwotICAgIFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWREYXRhOwotICAgIGlmIChvcHRpb25zLmdl
dCgiZGF0YSIsIGRhdGFWYWx1ZSkpIHsKLSAgICAgICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOwot
ICAgICAgICBzZXJpYWxpemVkRGF0YSA9IGRhdGFWYWx1ZS5zZXJpYWxpemUoc2NyaXB0U3RhdGUs
ICZwb3J0cywgMCwgZGlkVGhyb3cpOwotICAgICAgICBpZiAoZGlkVGhyb3cpIHsKLSAgICAgICAg
ICAgIGVjID0gREFUQV9DTE9ORV9FUlI7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGV4dHJhczsKLSAgICBEaWN0
aW9uYXJ5IGV4dHJhc0RpY3Rpb25hcnk7Ci0gICAgaWYgKG9wdGlvbnMuZ2V0KCJleHRyYXMiLCBl
eHRyYXNEaWN0aW9uYXJ5KSkKLSAgICAgICAgZXh0cmFzRGljdGlvbmFyeS5nZXRPd25Qcm9wZXJ0
aWVzQXNTdHJpbmdIYXNoTWFwKGV4dHJhcyk7Ci0KLSAgICBIYXNoU2V0PEF0b21pY1N0cmluZz4g
c3VnZ2VzdGlvbnNTdHJpbmdzOwotICAgIFZlY3RvcjxLVVJMPiBzdWdnZXN0aW9uczsKLSAgICBp
ZiAob3B0aW9ucy5nZXQoInN1Z2dlc3Rpb25zIiwgc3VnZ2VzdGlvbnNTdHJpbmdzKSkgewotICAg
ICAgICBmb3IgKEhhc2hTZXQ8QXRvbWljU3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9IHN1Z2dlc3Rp
b25zU3RyaW5ncy5iZWdpbigpOyBpdGVyICE9IHN1Z2dlc3Rpb25zU3RyaW5ncy5lbmQoKTsgKytp
dGVyKSB7Ci0gICAgICAgICAgICBLVVJMIHN1Z2dlc3RlZFVSTCA9IEtVUkwoS1VSTCgpLCAqaXRl
cik7Ci0gICAgICAgICAgICBpZiAoIXN1Z2dlc3RlZFVSTC5pc1ZhbGlkKCkpIHsKLSAgICAgICAg
ICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBzdWdnZXN0aW9ucy5hcHBlbmQoc3VnZ2VzdGVkVVJMKTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW50ZW50KGFjdGlv
biwgdHlwZSwgc2VyaWFsaXplZERhdGEucmVsZWFzZSgpLCBjaGFubmVscy5yZWxlYXNlKCksIGV4
dHJhcywgc2VydmljZVVybCwgc3VnZ2VzdGlvbnMpKTsKLX0KLQotSW50ZW50OjpJbnRlbnQoY29u
c3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlwZSwKLSAgICAgICAgICAgICAgIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBQYXNzT3duUHRyPE1lc3NhZ2VQ
b3J0Q2hhbm5lbEFycmF5PiBwb3J0cywKLSAgICAgICAgICAgICAgIGNvbnN0IEhhc2hNYXA8U3Ry
aW5nLCBTdHJpbmc+JiBleHRyYXMsIGNvbnN0IEtVUkwmIHNlcnZpY2UsIGNvbnN0IFZlY3RvcjxL
VVJMPiYgc3VnZ2VzdGlvbnMpCi0gICAgOiBtX2FjdGlvbihhY3Rpb24pCi0gICAgLCBtX3R5cGUo
dHlwZSkKLSAgICAsIG1fcG9ydHMocG9ydHMpCi0gICAgLCBtX3NlcnZpY2Uoc2VydmljZSkKLSAg
ICAsIG1fZXh0cmFzKGV4dHJhcykKLSAgICAsIG1fc3VnZ2VzdGlvbnMoc3VnZ2VzdGlvbnMpCi17
Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgZWxzZQotICAgICAg
ICBtX2RhdGEgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpOwotfQotCi12b2lk
IEludGVudDo6c2V0RXh0cmFzKGNvbnN0IFdURjo6SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGV4
dHJhcykKLXsKLSAgICBtX2V4dHJhcyA9IGV4dHJhczsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbnRlbnRzL0ludGVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMGY1YmNj
YmE0ZDgyZjc0MTFjMjk2OTlmM2Q4OGQ2MWU2Zjc5NTJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9J
bnRlbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSwgSW5jLiAoIkdvb2dsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEludGVudF9oCi0jZGVm
aW5lIEludGVudF9oCi0KLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0KLSNpbmNsdWRlICJEaWN0
aW9uYXJ5LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgotI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCi0j
aW5jbHVkZSAiTWVzc2FnZVBvcnRDaGFubmVsLmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIK
LSNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KLWNsYXNzIEludGVudCA6IHB1YmxpYyBSZWZD
b3VudGVkPEludGVudD4gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEludGVudD4g
Y3JlYXRlKGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5JiBw
b3J0cywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEludGVudD4gY3Jl
YXRlKFNjcmlwdFN0YXRlKiwgY29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKLQot
ICAgIHZpcnR1YWwgfkludGVudCgpIHsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBhY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2FjdGlvbjsgfQotICAgIGNvbnN0IFN0cmluZyYgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9Ci0KLSAgICBNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheSogbWVzc2FnZVBvcnRzKCkgY29uc3QgeyByZXR1cm4gbV9wb3J0cy5nZXQoKTsgfQot
ICAgIGNvbnN0IEtVUkwmIHNlcnZpY2UoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2U7IH0KLSAg
ICBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgZXh0cmFzKCkgY29uc3QgeyByZXR1cm4g
bV9leHRyYXM7IH0KLSAgICBjb25zdCBWZWN0b3I8S1VSTD4mIHN1Z2dlc3Rpb25zKCkgY29uc3Qg
eyByZXR1cm4gbV9zdWdnZXN0aW9uczsgfQotCi0gICAgdm9pZCBzZXRFeHRyYXMoY29uc3QgV1RG
OjpIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgSW50ZW50KGNv
bnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsCi0gICAgICAgICAgIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5PiBwb3J0cywKLSAgICAgICAgICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4mIGV4dHJhcywgY29uc3QgS1VSTCYgc2VydmljZSwgY29uc3QgVmVjdG9yPEtVUkw+JiBz
dWdnZXN0aW9ucyk7Ci0KLXByaXZhdGU6Ci0gICAgU3RyaW5nIG1fYWN0aW9uOwotICAgIFN0cmlu
ZyBtX3R5cGU7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9kYXRhOwotICAg
IE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gbV9wb3J0czsKLSAgICBLVVJMIG1fc2Vy
dmljZTsKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX2V4dHJhczsKLSAgICBWZWN0b3I8
S1VSTD4gbV9zdWdnZXN0aW9uczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmCi0KLSNlbmRpZiAvLyBJbnRlbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbnRlbnRzL0ludGVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMv
SW50ZW50LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTJjZjVkYTU0NzMxZWUw
NzU4ODcxODc5MGRlYzE4MGRmYjA1OTM3Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50Lmlk
bAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0gIGludGVyZmFjZSBbCi0g
IENvbmRpdGlvbmFsPVdFQl9JTlRFTlRTLAotICBDdXN0b21Db25zdHJ1Y3RvciwKLSAgQ29uc3Ry
dWN0b3IoaW4gRE9NU3RyaW5nIGFjdGlvbiwgaW4gRE9NU3RyaW5nIHR5cGUsIGluIFtPcHRpb25h
bD1EZWZhdWx0SXNOdWxsU3RyaW5nLCBUcmFuc2Zlckxpc3Q9dHJhbnNmZXJMaXN0XSBTZXJpYWxp
emVkU2NyaXB0VmFsdWUgZGF0YSwgaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gQXJy
YXkgdHJhbnNmZXJMaXN0KSwKLSAgQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24KLSAgXSBJbnRl
bnQgewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgYWN0aW9uOwotICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdHlwZTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlIGRhdGE7Ci0gIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDUwYmFkYTNjZDllZTcwNTUwNWQwYjEzNGI3ZDY4MDZlNjc3YjE3YWYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbnRlbnRzL0ludGVudFJlcXVlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0g
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSwgSW5jLiAoIkdvb2dsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0g
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW50ZW50UmVxdWVzdC5oIgotCi0jaWYgRU5B
QkxFKFdFQl9JTlRFTlRTKQotCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgot
I2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLVBhc3NSZWZQdHI8SW50ZW50UmVxdWVzdD4gSW50ZW50UmVxdWVzdDo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPEludGVudD4gaW50ZW50LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxJbnRlbnRS
ZXN1bHRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxJbnRlbnRSZXN1bHRDYWxsYmFjaz4g
ZXJyb3JDYWxsYmFjaykKLXsKLSAgICBSZWZQdHI8SW50ZW50UmVxdWVzdD4gaW50ZW50UmVxdWVz
dChhZG9wdFJlZihuZXcgSW50ZW50UmVxdWVzdChjb250ZXh0LCBpbnRlbnQsIHN1Y2Nlc3NDYWxs
YmFjaywgZXJyb3JDYWxsYmFjaykpKTsKLSAgICBpbnRlbnRSZXF1ZXN0LT5zdXNwZW5kSWZOZWVk
ZWQoKTsKLSAgICByZXR1cm4gaW50ZW50UmVxdWVzdC5yZWxlYXNlKCk7Ci19Ci0KLUludGVudFJl
cXVlc3Q6OkludGVudFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxJbnRlbnQ+IGludGVudCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxJbnRlbnRSZXN1bHRDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVm
UHRyPEludGVudFJlc3VsdENhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotICAgIDogQWN0aXZlRE9N
T2JqZWN0KGNvbnRleHQsIHRoaXMpCi0gICAgLCBtX2ludGVudChpbnRlbnQpCi0gICAgLCBtX3N1
Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCi0gICAgLCBtX2Vycm9yQ2FsbGJhY2soZXJy
b3JDYWxsYmFjaykKLSAgICAsIG1fc3RvcHBlZChmYWxzZSkKLXsKLX0KLQotdm9pZCBJbnRlbnRS
ZXF1ZXN0Ojpjb250ZXh0RGVzdHJveWVkKCkKLXsKLSAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlcjo6Y29udGV4dERlc3Ryb3llZCgpOwotICAgIG1fc3RvcHBlZCA9IHRydWU7Ci19Ci0KLXZv
aWQgSW50ZW50UmVxdWVzdDo6c3RvcCgpCi17Ci0gICAgbV9zdG9wcGVkID0gdHJ1ZTsKLX0KLQot
dm9pZCBJbnRlbnRSZXF1ZXN0Ojpwb3N0UmVzdWx0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBkYXRhKQotewotICAgIGlmIChtX3N0b3BwZWQpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIC8vIENhbGxiYWNrIGNvdWxkIGxlYWQgdG8gZGVsZXRpb24gb2YgdGhpcy4KLSAgICBSZWZQ
dHI8SW50ZW50UmVxdWVzdD4gcHJvdGVjdG9yKHRoaXMpOwotCi0gICAgaWYgKCFtX3N1Y2Nlc3ND
YWxsYmFjaykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdWNjZXNzQ2FsbGJhY2stPmhhbmRs
ZUV2ZW50KGRhdGEpOwotCi0gICAgbV9zdWNjZXNzQ2FsbGJhY2suY2xlYXIoKTsKLSAgICBtX2Vy
cm9yQ2FsbGJhY2suY2xlYXIoKTsKLX0KLQotdm9pZCBJbnRlbnRSZXF1ZXN0Ojpwb3N0RmFpbHVy
ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSkKLXsKLSAgICBpZiAobV9z
dG9wcGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBDYWxsYmFjayBjb3VsZCBsZWFkIHRv
IGRlbGV0aW9uIG9mIHRoaXMuCi0gICAgUmVmUHRyPEludGVudFJlcXVlc3Q+IHByb3RlY3Rvcih0
aGlzKTsKLQotICAgIGlmICghbV9lcnJvckNhbGxiYWNrKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBtX2Vycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGRhdGEpOwotCi0gICAgbV9zdWNjZXNzQ2Fs
bGJhY2suY2xlYXIoKTsKLSAgICBtX2Vycm9yQ2FsbGJhY2suY2xlYXIoKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudFJlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGU3ZjMwYTllNjc5OWJhZjgxOTEwYzQyZTU3YTA2OGZhNzE5MzNl
ZDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudFJlcXVlc3QuaAorKysgL2Rldi9udWxsCkBA
IC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSwgSW5jLiAoIkdvb2dsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgR09PR0xFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIEludGVudFJlcXVlc3RfaAotI2RlZmluZSBJbnRlbnRSZXF1ZXN0
X2gKLQotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLQotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVj
dC5oIgotI2luY2x1ZGUgIkludGVudC5oIgotI2luY2x1ZGUgIkludGVudFJlc3VsdENhbGxiYWNr
LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
LQotY2xhc3MgSW50ZW50UmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPEludGVudFJlcXVlc3Q+
LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJbnRlbnRSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8SW50ZW50PiwgUGFzc1JlZlB0cjxJbnRlbnRSZXN1bHRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPEludGVudFJlc3VsdENhbGxiYWNrPiBlcnJvckNhbGxiYWNrKTsKLQot
ICAgIEludGVudCogaW50ZW50KCkgeyByZXR1cm4gbV9pbnRlbnQuZ2V0KCk7IH0KLQotICAgIHZv
aWQgcG9zdFJlc3VsdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwotICAgIHZv
aWQgcG9zdEZhaWx1cmUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKLQotICAg
IHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkgT1ZFUlJJREU7Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgc3RvcCgpIE9WRVJSSURFOwotCi1wcml2YXRlOgotICAgIEludGVudFJlcXVlc3QoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SW50ZW50PiwgUGFzc1JlZlB0cjxJbnRl
bnRSZXN1bHRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEludGVudFJlc3Vs
dENhbGxiYWNrPiBlcnJvckNhbGxiYWNrKTsKLQotICAgIFJlZlB0cjxJbnRlbnQ+IG1faW50ZW50
OwotICAgIFJlZlB0cjxJbnRlbnRSZXN1bHRDYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7Ci0g
ICAgUmVmUHRyPEludGVudFJlc3VsdENhbGxiYWNrPiBtX2Vycm9yQ2FsbGJhY2s7Ci0gICAgYm9v
bCBtX3N0b3BwZWQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgotCi0j
ZW5kaWYgLy8gSW50ZW50UmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ludGVudHMvSW50ZW50UmVzdWx0Q2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW50ZW50cy9JbnRlbnRSZXN1bHRDYWxsYmFjay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3N2YwYjMzZDQ1ZDc5Y2U1ZWE0YjBiY2JlMGE1ZGU0YTZmZTczYTRjLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW50ZW50cy9JbnRlbnRSZXN1bHRDYWxsYmFjay5oCisrKyAvZGV2L251bGwKQEAgLTEs
NTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlLCBJbmMuICgiR29vZ2xlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBH
T09HTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
Ci0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgSW50ZW50UmVzdWx0Q2FsbGJhY2tfaAotI2RlZmluZSBJbnRlbnRSZXN1
bHRDYWxsYmFja19oCi0KLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0KLSNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7Ci0KLWNsYXNzIEludGVudFJlc3Vs
dENhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8SW50ZW50UmVzdWx0Q2FsbGJhY2s+IHsKLXB1
YmxpYzoKLSAgICB2aXJ0dWFsIH5JbnRlbnRSZXN1bHRDYWxsYmFjaygpIHsgfQotICAgIHZpcnR1
YWwgYm9vbCBoYW5kbGVFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcmVz
dWx0KSA9IDA7Ci19OwotCi19Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gSW50ZW50UmVzdWx0Q2Fs
bGJhY2tfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVu
dFJlc3VsdENhbGxiYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRl
bnRSZXN1bHRDYWxsYmFjay5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzMGZk
ZDNjMWJjNTE4M2Q1YWEzMjZiMjY3MWM5YmU0ODc0MjQ0OTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRz
L0ludGVudFJlc3VsdENhbGxiYWNrLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0gIGludGVyZmFjZSBbCi0gIENvbmRpdGlvbmFsPVdFQl9JTlRFTlRTLAotICBDYWxs
YmFjawotICBdIEludGVudFJlc3VsdENhbGxiYWNrIHsKLSAgYm9vbGVhbiBoYW5kbGVFdmVudChp
biBTZXJpYWxpemVkU2NyaXB0VmFsdWUgcmVzdWx0KTsKLSAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9OYXZpZ2F0b3JJbnRlbnRzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW50ZW50cy9OYXZpZ2F0b3JJbnRlbnRzLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNzFmNWY0ZmQ3ZDI3ZDJhNjM3MDk4OTM3NDA3NGY4NDk0ZTU2NWM0
My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvTmF2aWdhdG9ySW50ZW50cy5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
Ci0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0gKiBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRQotICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0gKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0gKiBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0gKLSAqIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiTmF2aWdhdG9ySW50ZW50cy5oIgotCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQot
Ci0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5j
bHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgotI2luY2x1ZGUgIkZyYW1l
TG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiSW50ZW50LmgiCi0jaW5jbHVkZSAiSW50ZW50UmVx
dWVzdC5oIgotI2luY2x1ZGUgIkludGVudFJlc3VsdENhbGxiYWNrLmgiCi0jaW5jbHVkZSAiTmF2
aWdhdG9yLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLU5hdmlnYXRvckludGVudHM6Ok5hdmlnYXRvckludGVudHMoKQotewotfQotCi1O
YXZpZ2F0b3JJbnRlbnRzOjp+TmF2aWdhdG9ySW50ZW50cygpCi17Ci19Ci0KLXZvaWQgTmF2aWdh
dG9ySW50ZW50czo6d2Via2l0U3RhcnRBY3Rpdml0eShOYXZpZ2F0b3IqIG5hdmlnYXRvciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPEludGVu
dD4gaW50ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBh
c3NSZWZQdHI8SW50ZW50UmVzdWx0Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPEludGVudFJlc3Vs
dENhbGxiYWNrPiBlcnJvckNhbGxiYWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghbmF2aWdhdG9yLT5m
cmFtZSgpIHx8ICFpbnRlbnQpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChpbnRlbnQtPmFjdGlvbigpLmlzRW1wdHko
KSB8fCBpbnRlbnQtPnR5cGUoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01B
VENIX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghU2NyaXB0Q29udHJv
bGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX0FD
Q0VTU19FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZWZQdHI8SW50ZW50UmVx
dWVzdD4gcmVxdWVzdCA9IEludGVudFJlcXVlc3Q6OmNyZWF0ZShuYXZpZ2F0b3ItPmZyYW1lKCkt
PmRvY3VtZW50KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50ZW50LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwot
ICAgIG5hdmlnYXRvci0+ZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaEludGVu
dChyZXF1ZXN0KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQl9JTlRFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRl
bnRzL05hdmlnYXRvckludGVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9O
YXZpZ2F0b3JJbnRlbnRzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3MWUyMTg4
NDNhZjdlZDY0YmUxMmRlNTQ3NjY4MDJhN2Y5OGY1MGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL05h
dmlnYXRvckludGVudHMuaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UKLSAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0gKiBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAot
ICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QK
LSAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkKLSAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAotICogREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgTmF2aWdhdG9ySW50ZW50c19oCi0jZGVmaW5lIE5hdmlnYXRvckludGVu
dHNfaAotCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJbnRlbnQ7Ci1jbGFzcyBJbnRl
bnRSZXN1bHRDYWxsYmFjazsKLWNsYXNzIE5hdmlnYXRvcjsKLQotdHlwZWRlZiBpbnQgRXhjZXB0
aW9uQ29kZTsKLQotY2xhc3MgTmF2aWdhdG9ySW50ZW50cyB7Ci1wdWJsaWM6Ci0gICAgc3RhdGlj
IHZvaWQgd2Via2l0U3RhcnRBY3Rpdml0eShOYXZpZ2F0b3IqLCBQYXNzUmVmUHRyPEludGVudD4s
IFBhc3NSZWZQdHI8SW50ZW50UmVzdWx0Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1Jl
ZlB0cjxJbnRlbnRSZXN1bHRDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYp
OwotCi1wcml2YXRlOgotICAgIE5hdmlnYXRvckludGVudHMoKTsKLSAgICB+TmF2aWdhdG9ySW50
ZW50cygpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQl9JTlRFTlRTKQotCi0jZW5kaWYgLy8gTmF2aWdhdG9ySW50ZW50c19oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvTmF2aWdhdG9ySW50ZW50cy5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvTmF2aWdhdG9ySW50ZW50cy5pZGwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1ZTY2ZjY4NzRiNjM0MmI0ZDA4M2Y0MGQ2YmUyZjAy
NTZhYTExZWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL05hdmlnYXRvckludGVudHMuaWRsCisrKyAv
ZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCX0lOVEVO
VFMsCi0gICAgU3VwcGxlbWVudGFsPU5hdmlnYXRvcgotXSBpbnRlcmZhY2UgTmF2aWdhdG9ySW50
ZW50cyB7Ci0gICAgW1Y4RW5hYmxlZEF0UnVudGltZV0gdm9pZCB3ZWJraXRTdGFydEFjdGl2aXR5
KGluIEludGVudCBpbnRlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEludGVudFJlc3VsdENhbGxiYWNr
IHN1Y2Nlc3NDYWxsYmFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gSW50ZW50UmVzdWx0Q2FsbGJhY2sg
ZmFpbHVyZUNhbGxiYWNrKQotICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLX07Ci0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKaW5kZXggZDAxZDA4NjE1NTA5YmZmMmE2
Y2Q5YzY1MjFmZjQ5YTRjMmZmNGZmZS4uZWU0YzYyNzRmNzUxZWM2YjQzMmI3NDFkYjcyZTIzM2U0
MmQ0Y2MxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5n
eXAKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTU2LDcg
KzU2LDYgQEAKICAgICAgICcuLi9Nb2R1bGVzL2ZpbGVzeXN0ZW0vY2hyb21pdW0nLAogICAgICAg
Jy4uL01vZHVsZXMvZ2FtZXBhZCcsCiAgICAgICAnLi4vTW9kdWxlcy9nZW9sb2NhdGlvbicsCi0g
ICAgICAnLi4vTW9kdWxlcy9pbnRlbnRzJywKICAgICAgICcuLi9Nb2R1bGVzL2luZGV4ZWRkYics
CiAgICAgICAnLi4vTW9kdWxlcy9pbmRleGVkZGIvY2hyb21pdW0nLAogICAgICAgJy4uL01vZHVs
ZXMvbWVkaWFzb3VyY2UnLApAQCAtMTE4MCw3ICsxMTc5LDYgQEAKICAgICAgICAgICAgICdnZW5l
cmF0b3JfaW5jbHVkZV9kaXJzJzogWwogICAgICAgICAgICAgICAnLS1pbmNsdWRlJywgJy4uL01v
ZHVsZXMvZmlsZXN5c3RlbScsCiAgICAgICAgICAgICAgICctLWluY2x1ZGUnLCAnLi4vTW9kdWxl
cy9pbmRleGVkZGInLAotICAgICAgICAgICAgICAnLS1pbmNsdWRlJywgJy4uL01vZHVsZXMvaW50
ZW50cycsCiAgICAgICAgICAgICAgICctLWluY2x1ZGUnLCAnLi4vTW9kdWxlcy9tZWRpYXNvdXJj
ZScsCiAgICAgICAgICAgICAgICctLWluY2x1ZGUnLCAnLi4vTW9kdWxlcy9tZWRpYXN0cmVhbScs
CiAgICAgICAgICAgICAgICctLWluY2x1ZGUnLCAnLi4vTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50
dXRpbHMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDZmMzNhODA2MjUzYTZmZDZhZGQ3ZmY4MjY3MGQ4
YTI1ODAzNTBjZTEuLmNiYjBiN2I2MjA2MWZlYmM4OGI2ZDA3NDY4M2I1YzdhMTY2NjE0MGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKQEAgLTUzLDExICs1Myw2IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4
ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL2lu
ZGV4ZWRkYi9Xb3JrZXJDb250ZXh0SW5kZXhlZERhdGFiYXNlLmlkbCcsCi0gICAgICAgICAgICAn
TW9kdWxlcy9pbnRlbnRzL0RlbGl2ZXJlZEludGVudC5pZGwnLAotICAgICAgICAgICAgJ01vZHVs
ZXMvaW50ZW50cy9ET01XaW5kb3dJbnRlbnRzLmlkbCcsCi0gICAgICAgICAgICAnTW9kdWxlcy9p
bnRlbnRzL0ludGVudC5pZGwnLAotICAgICAgICAgICAgJ01vZHVsZXMvaW50ZW50cy9JbnRlbnRS
ZXN1bHRDYWxsYmFjay5pZGwnLAotICAgICAgICAgICAgJ01vZHVsZXMvaW50ZW50cy9OYXZpZ2F0
b3JJbnRlbnRzLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNv
dXJjZS5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
LmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0
LmlkbCcsCkBAIC0zMTAsNyArMzA1LDYgQEAKICAgICAgICAgICAgICdodG1sL0hUTUxJRnJhbWVF
bGVtZW50LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbCcsCiAg
ICAgICAgICAgICAnaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbCcsCi0gICAgICAgICAgICAnaHRt
bC9IVE1MSW50ZW50RWxlbWVudC5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTEtleWdlbkVs
ZW1lbnQuaWRsJywKICAgICAgICAgICAgICdodG1sL0hUTUxMSUVsZW1lbnQuaWRsJywKICAgICAg
ICAgICAgICdodG1sL0hUTUxMYWJlbEVsZW1lbnQuaWRsJywKQEAgLTc4MiwxNyArNzc2LDYgQEAK
ICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJDb250ZXh0SW5kZXhlZERhdGFi
YXNlLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL2Nocm9taXVtL0lEQkZhY3Rv
cnlCYWNrZW5kSW50ZXJmYWNlQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL2lu
ZGV4ZWRkYi9jaHJvbWl1bS9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZUNocm9taXVtLmgnLAot
ICAgICAgICAgICAgJ01vZHVsZXMvaW50ZW50cy9EZWxpdmVyZWRJbnRlbnQuY3BwJywKLSAgICAg
ICAgICAgICdNb2R1bGVzL2ludGVudHMvRGVsaXZlcmVkSW50ZW50LmgnLAotICAgICAgICAgICAg
J01vZHVsZXMvaW50ZW50cy9ET01XaW5kb3dJbnRlbnRzLmNwcCcsCi0gICAgICAgICAgICAnTW9k
dWxlcy9pbnRlbnRzL0RPTVdpbmRvd0ludGVudHMuaCcsCi0gICAgICAgICAgICAnTW9kdWxlcy9p
bnRlbnRzL0ludGVudC5jcHAnLAotICAgICAgICAgICAgJ01vZHVsZXMvaW50ZW50cy9JbnRlbnQu
aCcsCi0gICAgICAgICAgICAnTW9kdWxlcy9pbnRlbnRzL0ludGVudFJlcXVlc3QuY3BwJywKLSAg
ICAgICAgICAgICdNb2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5oJywKLSAgICAgICAgICAg
ICdNb2R1bGVzL2ludGVudHMvSW50ZW50UmVzdWx0Q2FsbGJhY2suaCcsCi0gICAgICAgICAgICAn
TW9kdWxlcy9pbnRlbnRzL05hdmlnYXRvckludGVudHMuY3BwJywKLSAgICAgICAgICAgICdNb2R1
bGVzL2ludGVudHMvTmF2aWdhdG9ySW50ZW50cy5oJywKICAgICAgICAgICAgICdNb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXNv
dXJjZS9NZWRpYVNvdXJjZS5oJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlUmVnaXN0cnkuY3BwJywKQEAgLTEzOTEsNyArMTM3NCw2IEBACiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJvbnRlbmRI
b3N0Q3VzdG9tLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50ZW50
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlw
dENhbGxGcmFtZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OExvY2F0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4
TWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwJywKQEAgLTMxMjcsOCArMzEwOSw2IEBACiAgICAgICAg
ICAgICAnaHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3BwJywKICAgICAgICAgICAgICdodG1sL0hUTUxJ
bWFnZUxvYWRlci5oJywKICAgICAgICAgICAgICdodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwJywK
LSAgICAgICAgICAgICdodG1sL0hUTUxJbnRlbnRFbGVtZW50LmNwcCcsCi0gICAgICAgICAgICAn
aHRtbC9IVE1MSW50ZW50RWxlbWVudC5oJywKICAgICAgICAgICAgICdodG1sL0hUTUxLZXlnZW5F
bGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5oJywKICAg
ICAgICAgICAgICdodG1sL0hUTUxMSUVsZW1lbnQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCmlu
ZGV4IDgyMGY1YTZhZjllYjc0MjM3ODE5Nzk2ZGIyODA1ZDVhMmU2YTc5M2EuLjJjNjg4NzQwNDU3
YzA0YjdjYjBkMmE3NmYyNGFmMzY0NjVhNGRjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcApAQCAt
MjM3LDggKzIzNyw0IEBAIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6YXJlRXhwZXJpbWVu
dGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkCiBib29sIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmFyZVNlYW1sZXNzSUZyYW1lc0VuYWJsZWQgPSBmYWxzZTsKICNlbmRpZgog
Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpp
c1dlYkludGVudHNFbmFibGVkID0gdHJ1ZTsKLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oCmluZGV4IDIxNTMyZTljZWVhYjczZWY3MDhlNTY1YmVjYWZhODQw
NTA4NWI1ZTAuLjUyNjZmMzBhODhhN2FlMjFlZWQ5NWM0MzI1MjZjZTIyNzE4NTcxNGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oCkBAIC0yNjksMTMgKzI2OSw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9p
ZCBzZXRSZXF1ZXN0QXV0b2NvbXBsZXRlRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc1JlcXVl
c3RBdXRvY29tcGxldGVFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAotI2lmIEVOQUJM
RShXRUJfSU5URU5UUykKLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRTdGFydEFjdGl2aXR5RW5hYmxl
ZCgpIHsgcmV0dXJuIGlzV2ViSW50ZW50c0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJr
aXRJbnRlbnRFbmFibGVkKCkgeyByZXR1cm4gaXNXZWJJbnRlbnRzRW5hYmxlZDsgfQotICAgIHN0
YXRpYyBib29sIHdlYktpdEludGVudEVuYWJsZWQoKSB7IHJldHVybiBpc1dlYkludGVudHNFbmFi
bGVkOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0V2ViSW50ZW50c0VuYWJsZWQoYm9vbCBpc0VuYWJs
ZWQpIHsgaXNXZWJJbnRlbnRzRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotI2VuZGlmCi0KIHByaXZh
dGU6CiAgICAgLy8gTmV2ZXIgaW5zdGFudGlhdGUuCiAgICAgUnVudGltZUVuYWJsZWRGZWF0dXJl
cygpIHsgfQpAQCAtMzg1LDEwICszNzgsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGFy
ZVNlYW1sZXNzSUZyYW1lc0VuYWJsZWQ7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJfSU5URU5U
UykKLSAgICBzdGF0aWMgYm9vbCBpc1dlYkludGVudHNFbmFibGVkOwotI2VuZGlmCi0KIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhJbnRlbnRDdXN0b20uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhODY3MDYyN2Q0YTk4MDA0ZWU4ZTE0OWQ1NWU5ZGM1MzgxZWFkNzQwLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUsIEluYy4gKCJHb29nbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkludGVudC5oIgotCi0jaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCi0jaW5jbHVkZSAiU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgiCi0KLSNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRl
ICJWOERPTVdyYXBwZXIuaCIKLSNpbmNsdWRlICJWOEludGVudC5oIgotI2luY2x1ZGUgIlY4TWVz
c2FnZVBvcnQuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KLQotI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhJbnRlbnQ6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKLXsKLSAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCi0gICAgICAgIHJldHVybiB0
aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICBpZiAo
YXJncy5MZW5ndGgoKSA9PSAxKSB7Ci0gICAgICAgIC8vIFVzZSB0aGUgZGljdGlvbmFyeSBjb25z
dHJ1Y3Rvci4gVGhpcyBibG9jayB3aWxsIHJldHVybiBpZiB0aGUKLSAgICAgICAgLy8gYXJndW1l
bnQgaXNuJ3QgYSB2YWxpZCBEaWN0aW9uYXJ5LgotICAgICAgICBWOFRSWUNBVENIKERpY3Rpb25h
cnksIG9wdGlvbnMsIERpY3Rpb25hcnkoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpKTsKLSAg
ICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIFJlZlB0cjxJbnRlbnQ+IGltcGwg
PSBJbnRlbnQ6OmNyZWF0ZShTY3JpcHRTdGF0ZTo6Y3VycmVudCgpLCBvcHRpb25zLCBlYyk7Ci0g
ICAgICAgIGlmIChlYykKLSAgICAgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKLQotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBw
ZXIgPSBhcmdzLkhvbGRlcigpOwotICAgICAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVj
dFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29s
YXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwotICAgICAgICByZXR1cm4g
d3JhcHBlcjsKLSAgICB9Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBWOFRSWUNB
VENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8PiwgYWN0aW9uLCBNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKLSAgICBW
OFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8PiwgdHlwZSwg
TUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKSk7Ci0g
ICAgTWVzc2FnZVBvcnRBcnJheSBtZXNzYWdlUG9ydEFycmF5VHJhbnNmZXJMaXN0OwotICAgIEFy
cmF5QnVmZmVyQXJyYXkgYXJyYXlCdWZmZXJBcnJheVRyYW5zZmVyTGlzdDsKLSAgICBpZiAoYXJn
cy5MZW5ndGgoKSA+IDMpIHsKLSAgICAgICAgaWYgKCFleHRyYWN0VHJhbnNmZXJhYmxlcyhhcmdz
WzNdLCBtZXNzYWdlUG9ydEFycmF5VHJhbnNmZXJMaXN0LCBhcnJheUJ1ZmZlckFycmF5VHJhbnNm
ZXJMaXN0LCBhcmdzLkdldElzb2xhdGUoKSkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoIkNvdWxkIG5vdCBleHRyYWN0IHRyYW5zZmVyYWJsZXMiLCBhcmdzLkdldElzb2xhdGUo
KSk7Ci0gICAgfQotICAgIGJvb2wgZGF0YURpZFRocm93ID0gZmFsc2U7Ci0gICAgUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KGFyZ3NbMl0sICZtZXNzYWdlUG9ydEFycmF5VHJhbnNmZXJMaXN0LCAmYXJyYXlCdWZmZXJBcnJh
eVRyYW5zZmVyTGlzdCwgZGF0YURpZFRocm93KTsKLSAgICBpZiAoZGF0YURpZFRocm93KQotICAg
ICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKERBVEFfQ0xPTkVfRVJSLCBhcmdzLkdldElzb2xh
dGUoKSk7Ci0KLSAgICBSZWZQdHI8SW50ZW50PiBpbXBsID0gSW50ZW50OjpjcmVhdGUoYWN0aW9u
LCB0eXBlLCBkYXRhLCBtZXNzYWdlUG9ydEFycmF5VHJhbnNmZXJMaXN0LCBlYyk7Ci0gICAgaWYg
KGVjKQotICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUo
KSk7Ci0KLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigp
OwotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxl
YXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3Vy
YXRpb246OkRlcGVuZGVudCk7Ci0gICAgcmV0dXJuIHdyYXBwZXI7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50c0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnRz
QWxsSW5PbmUuY3BwCmluZGV4IGQ4OThmOTdkMmI2NzBlYzQ1OTE1ZDcyY2ExOTBlZDQ1OTg2MjIw
MjEuLjQ3NDBjNjA4ODU3OTZlNzRmMTAyMzE3MzY2ZDU2ZjI5NDIxMDA3MjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnRzQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnRzQWxsSW5PbmUuY3BwCkBAIC02OSw3ICs2OSw2IEBA
CiAjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVs
ZW1lbnQuY3BwIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuY3BwIgotI2luY2x1ZGUgIkhU
TUxJbnRlbnRFbGVtZW50LmNwcCIKICNpbmNsdWRlICJIVE1MS2V5Z2VuRWxlbWVudC5jcHAiCiAj
aW5jbHVkZSAiSFRNTExJRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiSFRNTExhYmVsRWxlbWVudC5j
cHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnRlbnRFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEludGVudEVsZW1lbnQuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjOWNmYjMyYjY3NWMxNzAzNWI3ODY0YmM1MGMyYjc1MTNkMjg1
MWI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEludGVudEVsZW1lbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
Ci0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0g
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJIVE1MSW50
ZW50RWxlbWVudC5oIgotCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKLQotI2luY2x1ZGUg
IkNocm9tZS5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNp
bmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2lu
Y2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLQotSFRNTEludGVudEVsZW1l
bnQ6OkhUTUxJbnRlbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKLSAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQotewot
ICAgIEFTU0VSVChoYXNUYWdOYW1lKGludGVudFRhZykpOwotfQotCi1QYXNzUmVmUHRyPEhUTUxJ
bnRlbnRFbGVtZW50PiBIVE1MSW50ZW50RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEhUTUxJbnRlbnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7Ci19Ci0KLU5vZGU6Oklu
c2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTEludGVudEVsZW1lbnQ6Omluc2VydGVkSW50
byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKLXsKLSAgICBIVE1MRWxlbWVudDo6aW5z
ZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKLQotICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aW5E
b2N1bWVudCgpICYmIGRvY3VtZW50KCktPmZyYW1lKCkpIHsKLSAgICAgICAgS1VSTCB1cmwgPSBk
b2N1bWVudCgpLT5jb21wbGV0ZVVSTChmYXN0R2V0QXR0cmlidXRlKGhyZWZBdHRyKSk7Ci0gICAg
ICAgIGRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKS0+cmVnaXN0ZXJJbnRl
bnRTZXJ2aWNlKAotICAgICAgICAgICAgZmFzdEdldEF0dHJpYnV0ZShhY3Rpb25BdHRyKSwgZmFz
dEdldEF0dHJpYnV0ZSh0eXBlQXR0ciksIHVybCwgZmFzdEdldEF0dHJpYnV0ZSh0aXRsZUF0dHIp
LCBmYXN0R2V0QXR0cmlidXRlKGRpc3Bvc2l0aW9uQXR0cikpOwotICAgIH0KLQotICAgIHJldHVy
biBJbnNlcnRpb25Eb25lOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFNf
VEFHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW50ZW50RWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW50ZW50RWxlbWVudC5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5MWFjMjYzOWZlZmYxZGVkMDYxZTI0ZmU0NGY0YjAxZmU4ZmJiOTM5
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEludGVudEVsZW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIEhUTUxJbnRlbnRFbGVtZW50X2gKLSNkZWZpbmUgSFRNTElu
dGVudEVsZW1lbnRfaAotCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKLQotI2luY2x1ZGUg
IkhUTUxFbGVtZW50LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRG9jdW1lbnQ7
Ci1jbGFzcyBRdWFsaWZpZWROYW1lOwotCi1jbGFzcyBIVE1MSW50ZW50RWxlbWVudCA6IHB1Ymxp
YyBIVE1MRWxlbWVudCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEludGVu
dEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotcHJp
dmF0ZToKLSAgICBIVE1MSW50ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKLQotICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRl
ZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnRlbnRFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEludGVudEVs
ZW1lbnQuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWRmOWJlOTA2MzhlODE2
ZjQ1ZWRmYTM1ZWQ4N2Q0YzA2MzdiYzhlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEludGVudEVsZW1lbnQuaWRs
CisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBDb25kaXRpb25h
bD1XRUJfSU5URU5UU19UQUcKLV0gaW50ZXJmYWNlIEhUTUxJbnRlbnRFbGVtZW50IDogSFRNTEVs
ZW1lbnQgewotICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFjdGlvbjsKLSAgICBb
UmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyB0eXBlOwotICAgIFtSZWZsZWN0LCBVUkxdIGF0
dHJpYnV0ZSBET01TdHJpbmcgaHJlZjsKLSAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmlu
ZyB0aXRsZTsKLSAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBkaXNwb3NpdGlvbjsK
LX07Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggMzg5ODQ2MWFk
MWRjNDM5MzhjN2ZjYzVjNjQ5YWJhNzJiNDNmZjliOC4uZTYwMDBkYTEwMThlZjk0YjQ4YzRiYzQx
ZGM2YTBiMjRiMTJiZmIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAK
QEAgLTQwLDEwICs0MCw2IEBACiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgiCiAjZW5kaWYKIAot
I2lmIEVOQUJMRShXRUJfSU5URU5UUykgCi0jaW5jbHVkZSAiSW50ZW50UmVxdWVzdC5oIiAKLSNl
bmRpZiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIGZpbGxXaXRoRW1wdHlDbGllbnRz
KFBhZ2U6OlBhZ2VDbGllbnRzJiBwYWdlQ2xpZW50cykKQEAgLTE2NywxMiArMTYzLDYgQEAgUGFz
c1JlZlB0cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpj
cmVhdGVOZXR3b3JraW5nQ29udGUKICAgICByZXR1cm4gUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtp
bmdDb250ZXh0PigpOwogfQogCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotdm9pZCBFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaEludGVudChQYXNzUmVmUHRyPEludGVudFJlcXVlc3Q+
KQotewotfQotI2VuZGlmCi0KIHZvaWQgRW1wdHlUZXh0Q2hlY2tlckNsaWVudDo6cmVxdWVzdENo
ZWNraW5nT2ZTdHJpbmcoUGFzc1JlZlB0cjxUZXh0Q2hlY2tpbmdSZXF1ZXN0PikKIHsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCA2OGNkMDM0MGQwYzY2MjY1N2MxZDdm
YmE5YWE3MjBkYTA1ODgzNGQ1Li4zNjYxZWMzZmJmOTBlNDFmYzM5MDQzY2RmNTYwZjExNTgwZjE0
YmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0zODEsMTAgKzM4MSw2
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtpbmdDb250
ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpIE9WRVJSSURFOwogCi0jaWYgRU5BQkxFKFdF
Ql9JTlRFTlRTKQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEludGVudChQYXNzUmVmUHRyPElu
dGVudFJlcXVlc3Q+KSBPVkVSUklERTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFJFUVVFU1RfQVVU
T0NPTVBMRVRFKQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1ZXN0QXV0b2NvbXBsZXRlKFBhc3NS
ZWZQdHI8Rm9ybVN0YXRlPikgT1ZFUlJJREU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggY2IyN2U1ODEwZGNkODc4ZmYyZDdhMTM4YjMxYWFk
YWFhNjAyZDliZS4uY2FjMGQyYTM0OTJmOGU3ODE5MDlhZTgzNmQwNGRmYTFiODk3MWFjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTgyLDkgKzgyLDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAgICAgY2xhc3MgSFRNTFBsdWdJbkVsZW1l
bnQ7CiAgICAgY2xhc3MgSW50U2l6ZTsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgY2xh
c3MgSW50ZW50UmVxdWVzdDsKLSNlbmRpZgogICAgIGNsYXNzIEtVUkw7CiAgICAgY2xhc3MgTWFp
blJlc291cmNlTG9hZGVyOwogICAgIGNsYXNzIE1lc3NhZ2VFdmVudDsKQEAgLTM0MywxMyArMzQw
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFu
Z2VOYW1lKGNvbnN0IFN0cmluZyYpIHsgfQogCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnRlbnQoUGFzc1JlZlB0cjxJbnRlbnRSZXF1ZXN0
PikgPSAwOwotI2VuZGlmCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKLSAgICAgICAgdmly
dHVhbCB2b2lkIHJlZ2lzdGVySW50ZW50U2VydmljZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgeyB9Ci0jZW5k
aWYKLQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsT3BlblNvY2tldFN0cmVhbShT
b2NrZXRTdHJlYW1IYW5kbGUqKSB7IH0KIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hH
bG9iYWxPYmplY3RBdmFpbGFibGUoRE9NV3JhcHBlcldvcmxkKikgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5pZGwKaW5kZXggNTBjZTQzYmNjY2JhYzVkMzExMWY4NDliZjhmNGU1NDZkZGZmMTc1
OC4uZDkzY2Y3MzhmM2JlMzVlOThkNTIxYzM3OTMwYmJiNmI0ZTc4ODdlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmlkbApAQCAtNTA4LDggKzUwOCw2IEBACiAgICAgW0NvbmRpdGlvbmFsPVZJ
REVPLCBWOEVuYWJsZWRBdFJ1bnRpbWVdIGF0dHJpYnV0ZSBIVE1MU291cmNlRWxlbWVudENvbnN0
cnVjdG9yIEhUTUxTb3VyY2VFbGVtZW50OwogICAgIFtDb25kaXRpb25hbD1WSURFTywgVjhFbmFi
bGVkQXRSdW50aW1lXSBhdHRyaWJ1dGUgTWVkaWFDb250cm9sbGVyQ29uc3RydWN0b3IgTWVkaWFD
b250cm9sbGVyOwogCi0gICAgW0NvbmRpdGlvbmFsPVdFQl9JTlRFTlRTX1RBR10gYXR0cmlidXRl
IEhUTUxJbnRlbnRFbGVtZW50Q29uc3RydWN0b3IgSFRNTEludGVudEVsZW1lbnQ7Ci0KICAgICBh
dHRyaWJ1dGUgQ2FudmFzUGF0dGVybkNvbnN0cnVjdG9yIENhbnZhc1BhdHRlcm47CiAgICAgYXR0
cmlidXRlIENhbnZhc0dyYWRpZW50Q29uc3RydWN0b3IgQ2FudmFzR3JhZGllbnQ7CiAgICAgYXR0
cmlidXRlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRENvbnN0cnVjdG9yIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBiNDU0NTliZDQyMDk5
ZTIyYTUwNTY1M2JkZGRiM2VlMmIxOTFjNzUzLi4wYTU1ZjEwZWVlZjc4YWZlYzczYjE2NmY4ZWJi
YjVjYTVmMzM2ZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0xMzUsNyArMTM1
LDYgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRhdGVUaW1lSW5wdXRUeXBlLmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRGF0ZVRpbWVDaG9vc2VyQ29tcGxldGlvbi5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRhdGVUaW1lQ2hvb3NlclBhcmFtcy5oJywKLSAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkRlbGl2ZXJlZEludGVudENsaWVudC5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYkRldlRvb2xzQWdlbnQuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJEZXZUb29sc0FnZW50Q2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViRGV2VG9vbHNGcm9udGVuZC5oJywKQEAgLTE5Myw5ICsxOTIsNiBAQAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViSW1hZ2VEZWNvZGVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViSW5wdXRFbGVtZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSW5wdXRF
dmVudC5oJywKLSAgICAgICAgICAgICAgICAncHVibGljL1dlYkludGVudC5oJywKLSAgICAgICAg
ICAgICAgICAncHVibGljL1dlYkludGVudFJlcXVlc3QuaCcsCi0gICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJJbnRlbnRTZXJ2aWNlSW5mby5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
YktpdC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkxhYmVsRWxlbWVudC5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYk1lZGlhUGxheWVyLmgnLApAQCAtMzMzLDggKzMyOSw2
IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5oJywKICAgICAgICAgICAg
ICAgICAnc3JjL0RhdGFiYXNlT2JzZXJ2ZXIuY3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL0Rl
bGl2ZXJlZEludGVudENsaWVudEltcGwuY3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL0RlbGl2
ZXJlZEludGVudENsaWVudEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9EZXZpY2VPcmll
bnRhdGlvbkNsaWVudFByb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9EZXZpY2VPcmll
bnRhdGlvbkNsaWVudFByb3h5LmgnLAogICAgICAgICAgICAgICAgICdzcmMvRE9NVXRpbGl0aWVz
UHJpdmF0ZS5jcHAnLApAQCAtNTEzLDkgKzUwNyw2IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJJbnB1dEV2ZW50LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbnB1dEV2ZW50Q29u
dmVyc2lvbi5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSW5wdXRFdmVudENvbnZlcnNp
b24uaCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9XZWJJbnRlbnQuY3BwJywKLSAgICAgICAgICAg
ICAgICAnc3JjL1dlYkludGVudFJlcXVlc3QuY3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL1dl
YkludGVudFNlcnZpY2VJbmZvLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJLaXQuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkxhYmVsRWxlbWVudC5jcHAnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCcsCkBAIC03NTksMTkgKzc1
MCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICAgICAg
XSwKICAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICBbJ2VuYWJsZV93ZWJfaW50
ZW50cz09MCcsIHsKLSAgICAgICAgICAgICAgICAgICdzb3VyY2VzISc6IFsKLSAgICAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQuaCcsCi0gICAgICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViSW50ZW50LmgnLAotICAgICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYkludGVudFJlcXVlc3QuaCcsCi0gICAgICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
SW50ZW50U2VydmljZUluZm8uaCcsCi0gICAgICAgICAgICAgICAgICAgICdzcmMvRGVsaXZlcmVk
SW50ZW50Q2xpZW50SW1wbC5jcHAnLAotICAgICAgICAgICAgICAgICAgICAnc3JjL0RlbGl2ZXJl
ZEludGVudENsaWVudEltcGwuaCcsCi0gICAgICAgICAgICAgICAgICAgICdzcmMvV2ViSW50ZW50
LmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICdzcmMvV2ViSW50ZW50UmVxdWVzdC5jcHAnLAot
ICAgICAgICAgICAgICAgICAgICAnc3JjL1dlYkludGVudFNlcnZpY2VJbmZvLmNwcCcsCi0gICAg
ICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgIFsn
dXNlX2RlZmF1bHRfcmVuZGVyX3RoZW1lPT0xJywgewogICAgICAgICAgICAgICAgICAgICAnaW5j
bHVkZV9kaXJzJzogWwogICAgICAgICAgICAgICAgICAgICAgICAgJ3B1YmxpYy9kZWZhdWx0JywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaSBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQppbmRleCA3ZDY3NTQ1MmVjMjcyNWI4OGIx
NDIwZWIzMzMxMzgzYjA0YWM5MjIzLi5iNGIxZjY1MzViOGNhYjVhOTY3Y2Y5ZDU5YWU3NDU2MWZj
ZTAzYzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCkBAIC0yMjgsMTYgKzIy
OCw2IEBACiAgICAgICAgICAgJ0VOQUJMRV9PUEVOVFlQRV9WRVJUSUNBTD0xJywKICAgICAgICAg
XSwKICAgICAgIH1dLAotICAgICAgWydlbmFibGVfd2ViX2ludGVudHM9PTEnLCB7Ci0gICAgICAg
ICdmZWF0dXJlX2RlZmluZXMnOiBbCi0gICAgICAgICAgJ0VOQUJMRV9XRUJfSU5URU5UUz0xJywK
LSAgICAgICAgXSwKLSAgICAgIH1dLAotICAgICAgWydlbmFibGVfd2ViX2ludGVudHNfdGFnPT0x
JywgewotICAgICAgICAnZmVhdHVyZV9kZWZpbmVzJzogWwotICAgICAgICAgICdFTkFCTEVfV0VC
X0lOVEVOVFNfVEFHPTEnLAotICAgICAgICBdLAotICAgICAgfV0sCiAgICAgICBbJ09TPT0ibWFj
IicsIHsKICAgICAgICAgJ2ZlYXR1cmVfZGVmaW5lcyc6IFsKICAgICAgICAgICAnRU5BQkxFX1JV
QkJFUl9CQU5ESU5HPTEnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRGVsaXZlcmVkSW50ZW50Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZThkZDFlYTBhNzcxYTBmMjdmOTFmNTdkZjVmYTA5Mzk2MDFiOTk2Ny4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQuaAorKysgL2Rldi9udWxsCkBAIC0x
LDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIFdlYkRlbGl2ZXJlZEludGVudENsaWVudF9oCi0jZGVmaW5lIFdl
YkRlbGl2ZXJlZEludGVudENsaWVudF9oCi0KLSNpbmNsdWRlICIuLi8uLi8uLi9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFz
cyBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU7Ci0KLS8vIFRoZSBlbWJlZGRlciBpbXBsZW1lbnRz
IHRoaXMgaW50ZXJmYWNlIHRvIHJlY2VpdmUgcmVwbHkgY2FsbHMgZnJvbSB0aGUgc2VydmljZQot
Ly8gaW4gcmVzcG9uc2UgdG8gdGhlIGRlbGl2ZXJ5IG9mIGEgd2ViIGludGVudC4gVGhpcyBjbGll
bnQgbXVzdCByZW1haW4gdmFsaWQKLS8vIHVudGlsIHRoZSBkZXN0cm95KCkgbWV0aG9kIGlzIGNh
bGxlZC4KLS8vIFNlZSBzcGVjIGF0IGh0dHA6Ly93d3cuY2hyb21pdW0ub3JnL2RldmVsb3BlcnMv
ZGVzaWduLWRvY3VtZW50cy93ZWJpbnRlbnRzYXBpCi1jbGFzcyBXZWJEZWxpdmVyZWRJbnRlbnRD
bGllbnQgewotcHVibGljOgotICAgIHZpcnR1YWwgfldlYkRlbGl2ZXJlZEludGVudENsaWVudCgp
IHsgfQotCi0gICAgdmlydHVhbCB2b2lkIHBvc3RSZXN1bHQoY29uc3QgV2ViU2VyaWFsaXplZFNj
cmlwdFZhbHVlJiBkYXRhKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RGYWlsdXJl
KGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgZGF0YSkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBkZXN0cm95KCkgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
LSNlbmRpZiAvLyBXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkZyYW1lLmgKaW5kZXggN2Q5MjMwNzFlNjk5ZTBhMzMyZTNlOWVkNTUyOTgy
MDA3N2NkYTZiYS4uMGZhZTlhYzYyMWFmMTMzY2JlYjk0ZmZjOGEwZWUzMmQ5YjA1MjUwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCkBAIC01OCwxMyArNTgsMTEg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJBbmltYXRpb25Db250cm9sbGVyOwogY2xh
c3MgV2ViRGF0YTsKIGNsYXNzIFdlYkRhdGFTb3VyY2U7Ci1jbGFzcyBXZWJEZWxpdmVyZWRJbnRl
bnRDbGllbnQ7CiBjbGFzcyBXZWJEb2N1bWVudDsKIGNsYXNzIFdlYkVsZW1lbnQ7CiBjbGFzcyBX
ZWJGb3JtRWxlbWVudDsKIGNsYXNzIFdlYkhpc3RvcnlJdGVtOwogY2xhc3MgV2ViSW5wdXRFbGVt
ZW50OwotY2xhc3MgV2ViSW50ZW50OwogY2xhc3MgV2ViUGVyZm9ybWFuY2U7CiBjbGFzcyBXZWJS
YW5nZTsKIGNsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOwpAQCAtNjM0LDE0ICs2MzIsNiBAQCBwdWJs
aWM6CiAgICAgICAgIGNvbnN0IFdlYkRPTUV2ZW50JikgPSAwOwogCiAKLSAgICAvLyBXZWIgSW50
ZW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLQotICAgIC8vIENhbGxlZCBvbiBhIHRhcmdldCBzZXJ2aWNlIHBhZ2UgdG8gZGVsaXZl
ciBhbiBpbnRlbnQgdG8gdGhlIHdpbmRvdy4KLSAgICAvLyBUaGUgcG9ydHMgYXJlIGFueSB0cmFu
c2ZlcnJlZCBwb3J0cyB0aGF0IGFjY29tcGFueSB0aGUgaW50ZW50IGFzIGEgcmVzdWx0Ci0gICAg
Ly8gb2YgTWVzc2FnZVBvcnQgdHJhbnNmZXIuCi0gICAgdmlydHVhbCB2b2lkIGRlbGl2ZXJJbnRl
bnQoY29uc3QgV2ViSW50ZW50JiwgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIHBvcnRzLCBX
ZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQqKSA9IDA7Ci0KLQogICAgIC8vIFV0aWxpdHkgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CiAgICAgLy8gUmV0dXJucyB0aGUgY29udGVudHMgb2YgdGhpcyBmcmFtZSBhcyBhIHN0cmluZy4g
IElmIHRoZSB0ZXh0IGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJGcmFtZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJh
bWVDbGllbnQuaAppbmRleCBlMTJhODRiZmY5ZWVmNDEyNjdjYTkzNDM0OGY2NmMzNjA2MTM5NGVi
Li4zMGI4MDhiYzVjMDA1MzNlYWYzZmU2Y2VjYzdkYzQ0ZWUwMzYzZTQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKQEAgLTU2LDkgKzU2LDYg
QEAgY2xhc3MgV2ViRGF0YVNvdXJjZTsKIGNsYXNzIFdlYkRPTUV2ZW50OwogY2xhc3MgV2ViRm9y
bUVsZW1lbnQ7CiBjbGFzcyBXZWJGcmFtZTsKLWNsYXNzIFdlYkludGVudDsKLWNsYXNzIFdlYklu
dGVudFJlcXVlc3Q7Ci1jbGFzcyBXZWJJbnRlbnRTZXJ2aWNlSW5mbzsKIGNsYXNzIFdlYk1lZGlh
UGxheWVyOwogY2xhc3MgV2ViTWVkaWFQbGF5ZXJDbGllbnQ7CiBjbGFzcyBXZWJOb2RlOwpAQCAt
Mzk5LDE1ICszOTYsNiBAQCBwdWJsaWM6CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdR
dW90YUluQnl0ZXMsCiAgICAgICAgIFdlYlN0b3JhZ2VRdW90YUNhbGxiYWNrcyopIHsgfQogCi0g
ICAgLy8gV2ViIEludGVudHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0KLSAgICAvLyBSZWdpc3RlciBhIHNlcnZpY2UgdG8gaGFuZGxlIFdlYiBJ
bnRlbnRzLgotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckludGVudFNlcnZpY2UoV2ViRnJhbWUq
LCBjb25zdCBXZWJJbnRlbnRTZXJ2aWNlSW5mbyYpIHsgfQotCi0gICAgLy8gU3RhcnQgYSBXZWIg
SW50ZW50cyBhY3Rpdml0eS4gVGhlIGNhbGxlZSB1c2VzIHRoZSB8V2ViSW50ZW50UmVxdWVzdHwK
LSAgICAvLyBvYmplY3QgdG8gY29vcmRpbmF0ZSByZXBsaWVzIHRvIHRoZSBpbnRlbnQgaW52b2Nh
dGlvbi4KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnRlbnQoV2ViRnJhbWUqLCBjb25zdCBX
ZWJJbnRlbnRSZXF1ZXN0JikgeyB9Ci0KICAgICAvLyBXZWJTb2NrZXQgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIC8vIEEgV2ViU29j
a2V0IG9iamVjdCBpcyBnb2luZyB0byBvcGVuIG5ldyBzdHJlYW0gY29ubmVjdGlvbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkludGVudC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDkxNWJjMDRmMDAyNDY0OWQ1MjA1YzU3NzgxMWZhMTViMDIwODgzNzcuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBXZWJJbnRlbnRfaAotI2RlZmluZSBXZWJJbnRlbnRfaAotCi0jaW5jbHVkZSAiLi4v
Li4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgIi4u
Ly4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQcml2YXRlUHRyLmgiCi0jaW5jbHVk
ZSAiLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlN0cmluZy5oIgotI2luY2x1
ZGUgIi4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJVUkwuaCIKLSNpbmNsdWRl
ICIuLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVmVjdG9yLmgiCi0jaW5jbHVk
ZSAiV2ViTWVzc2FnZVBvcnRDaGFubmVsLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3Mg
SW50ZW50OyB9Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0vLyBIb2xkcyBkYXRhIHBhc3NlZCB0
aHJvdWdoIGEgV2ViIEludGVudHMgaW52b2NhdGlvbiBjYWxsIGZyb20gdGhlIEphdmFzY3JpcHQK
LS8vIEludGVudCBvYmplY3QuCi0vLyBTZWUgc3BlYyBhdCBodHRwOi8vd3d3LmNocm9taXVtLm9y
Zy9kZXZlbG9wZXJzL2Rlc2lnbi1kb2N1bWVudHMvd2ViaW50ZW50c2FwaQotY2xhc3MgV2ViSW50
ZW50IHsKLXB1YmxpYzoKLSAgICBXZWJJbnRlbnQoKSB7IH0KLSAgICBXZWJJbnRlbnQoY29uc3Qg
V2ViSW50ZW50JiBvdGhlcikgeyBhc3NpZ24ob3RoZXIpOyB9Ci0gICAgfldlYkludGVudCgpIHsg
cmVzZXQoKTsgfQotCi0gICAgV2ViSW50ZW50JiBvcGVyYXRvcj0oY29uc3QgV2ViSW50ZW50JiBv
dGhlcikKLSAgICB7Ci0gICAgICAgYXNzaWduKG90aGVyKTsKLSAgICAgICByZXR1cm4gKnRoaXM7
Ci0gICAgfQotCi0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViSW50ZW50IGNyZWF0ZShjb25z
dCBXZWJTdHJpbmcmIGFjdGlvbiwgY29uc3QgV2ViU3RyaW5nJiB0eXBlLCBjb25zdCBXZWJTdHJp
bmcmIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgZXh0cmFzTmFtZXMsIGNvbnN0IFdlYlZlY3RvcjxXZWJT
dHJpbmc+JiBleHRyYXNWYWx1ZXMpOwotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7
Ci0gICAgV0VCS0lUX0VYUE9SVCBib29sIGlzTnVsbCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBP
UlQgYm9vbCBlcXVhbHMoY29uc3QgV2ViSW50ZW50JikgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9S
VCB2b2lkIGFzc2lnbihjb25zdCBXZWJJbnRlbnQmKTsKLQotICAgIFdFQktJVF9FWFBPUlQgV2Vi
U3RyaW5nIGFjdGlvbigpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIHR5cGUo
KSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBkYXRhKCkgY29uc3Q7Ci0gICAg
V0VCS0lUX0VYUE9SVCBXZWJVUkwgc2VydmljZSgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQg
V2ViVmVjdG9yPFdlYlVSTD4gc3VnZ2VzdGlvbnMoKSBjb25zdDsKLQotICAgIC8vIFJldHJpZXZl
IGEgbGlzdCBvZiB0aGUgbmFtZXMgb2YgZXh0cmEgbWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIHRo
ZQotICAgIC8vIGludGVudC4KLSAgICBXRUJLSVRfRVhQT1JUIFdlYlZlY3RvcjxXZWJTdHJpbmc+
IGV4dHJhc05hbWVzKCkgY29uc3Q7Ci0KLSAgICAvLyBSZXRyaWV2ZSB0aGUgdmFsdWUgb2YgYW4g
ZXh0cmEgbWV0YWRhdGEgZWxlbWVudC4gVGhlIGFyZ3VtZW50IHNob3VsZAotICAgIC8vIGJlIG9u
ZSBvZiB0aGUgbmFtZXMgcmV0cmlldmVkIHdpdGggfGV4dHJhc05hbWVzfC4gUmV0dXJucyBhbiBl
bXB0eQotICAgIC8vIHN0cmluZyBpZiB0aGUgbmFtZSBpcyBpbnZhbGlkLgotICAgIFdFQktJVF9F
WFBPUlQgV2ViU3RyaW5nIGV4dHJhc1ZhbHVlKGNvbnN0IFdlYlN0cmluZyYpIGNvbnN0OwotCi0g
ICAgLy8gQ2FsbGVyIHRha2VzIG93bmVyc2hpcCBvZiB0aGUgcG9ydHMuCi0gICAgV0VCS0lUX0VY
UE9SVCBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSogbWVzc2FnZVBvcnRDaGFubmVsc1JlbGVh
c2UoKSBjb25zdDsKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYkludGVudChj
b25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SW50ZW50PiYpOwotICAgIG9wZXJhdG9yIFdl
YkNvcmU6OkludGVudCooKSBjb25zdDsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIFdlYlByaXZh
dGVQdHI8V2ViQ29yZTo6SW50ZW50PiBtX3ByaXZhdGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotI2VuZGlmIC8vIFdlYkludGVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJbnRlbnRSZXF1ZXN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDExMWNiMDMzNTJmMGIzM2NmOWZmNmNhMmM2MjY0NzRiNGZjZDQ2MzYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSW50ZW50UmVxdWVzdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgV2ViSW50ZW50UmVxdWVzdF9oCi0jZGVmaW5lIFdlYkludGVudFJlcXVlc3RfaAot
Ci0jaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbW1vbi5o
IgotI2luY2x1ZGUgIi4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQcml2YXRl
UHRyLmgiCi0jaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlN0
cmluZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEludGVudFJlcXVlc3Q7IH0KLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkludGVudDsKLWNsYXNzIFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTsKLQotLy8gSG9sZHMgZGF0YSBwYXNzZWQgdGhyb3VnaCBhIFdlYiBJbnRl
bnRzIGludm9jYXRpb24gY2FsbCBmcm9tIHRoZSBKYXZhc2NyaXB0Ci0vLyBJbnRlbnQgb2JqZWN0
LgotLy8gU2VlIHNwZWMgYXQgaHR0cDovL3d3dy5jaHJvbWl1bS5vcmcvZGV2ZWxvcGVycy9kZXNp
Z24tZG9jdW1lbnRzL3dlYmludGVudHNhcGkKLWNsYXNzIFdlYkludGVudFJlcXVlc3QgewotcHVi
bGljOgotICAgIFdlYkludGVudFJlcXVlc3QoKSB7IH0KLSAgICBXZWJJbnRlbnRSZXF1ZXN0KGNv
bnN0IFdlYkludGVudFJlcXVlc3QmIG90aGVyKSB7IGFzc2lnbihvdGhlcik7IH0KLSAgICB+V2Vi
SW50ZW50UmVxdWVzdCgpIHsgcmVzZXQoKTsgfQotCi0gICAgV2ViSW50ZW50UmVxdWVzdCYgb3Bl
cmF0b3I9KGNvbnN0IFdlYkludGVudFJlcXVlc3QmIG90aGVyKQotICAgIHsKLSAgICAgICBhc3Np
Z24ob3RoZXIpOwotICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0gICAgV0VCS0lUX0VYUE9S
VCB2b2lkIHJlc2V0KCk7Ci0gICAgV0VCS0lUX0VYUE9SVCBib29sIGlzTnVsbCgpIGNvbnN0Owot
ICAgIFdFQktJVF9FWFBPUlQgYm9vbCBlcXVhbHMoY29uc3QgV2ViSW50ZW50UmVxdWVzdCYpIGNv
bnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViSW50ZW50UmVxdWVz
dCYpOwotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHBvc3RSZXN1bHQoY29uc3QgV2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlJik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHBvc3RGYWlsdXJlKGNv
bnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJJ
bnRlbnQgaW50ZW50KCkgY29uc3Q7Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBX
ZWJJbnRlbnRSZXF1ZXN0KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJbnRlbnRSZXF1
ZXN0PiYpOwotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpJ
bnRlbnRSZXF1ZXN0PiBtX3ByaXZhdGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIFdlYkludGVudFJlcXVlc3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50U2VydmljZUluZm8uaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkludGVudFNlcnZpY2VJbmZvLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDU2ZWI2ZWZjODRmYmJhMDNhNjYxZjlkZDZlODg3ZGVhOTdmZDM5NDMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50U2VydmljZUluZm8uaAorKysgL2Rldi9udWxsCkBAIC0x
LDg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIFdlYkludGVudFNlcnZpY2VJbmZvX2gKLSNkZWZpbmUgV2ViSW50
ZW50U2VydmljZUluZm9faAotCi0jaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgIi4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJTdHJpbmcuaCIKLSNpbmNsdWRlICIuLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViVVJMLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0vLyBIb2xkcyBkYXRh
IHVzZWQgdG8gaW5pdGlhbGl6ZSBhIFdlYiBJbnRlbnRzIHNlcnZpY2UgKGhhbmRsZXIpLgotLy8g
U2VlIHNwZWMgYXQgaHR0cDovL3d3dy5jaHJvbWl1bS5vcmcvZGV2ZWxvcGVycy9kZXNpZ24tZG9j
dW1lbnRzL3dlYmludGVudHNhcGkKLWNsYXNzIFdlYkludGVudFNlcnZpY2VJbmZvIHsKLXB1Ymxp
YzoKLSAgICBXZWJJbnRlbnRTZXJ2aWNlSW5mbygpIHsgfQotICAgIH5XZWJJbnRlbnRTZXJ2aWNl
SW5mbygpIHsgfQotCi0gICAgLy8gVGhlIGxvY2F0aW9uIG9mIHRoZSBoYW5kbGVyIHBhZ2UgcmVn
aXN0ZXJlZCBieSB0aGUgc2VydmljZS4KLSAgICBXRUJLSVRfRVhQT1JUIFdlYlVSTCB1cmwoKSBj
b25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0VVJMKGNvbnN0IFdlYlVSTCYpOwotCi0g
ICAgLy8gVGhlIHNob3J0IG5hbWUgdGhlIHNlcnZpY2Ugd2lsbCBiZSBrbm93biBieSB3aGVuIHRo
ZSB1c2VyCi0gICAgLy8gaW5pdGlhdGVzIGFuIGludGVudC4KLSAgICBXRUJLSVRfRVhQT1JUIFdl
YlN0cmluZyB0aXRsZSgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRUaXRsZShj
b25zdCBXZWJTdHJpbmcmKTsKLQotICAgIC8vIFRoZSBraW5kIG9mIGludGVudCB0aGUgc2Vydmlj
ZSB3aWxsIGhhbmRsZS4KLSAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBhY3Rpb24oKSBjb25z
dDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QWN0aW9uKGNvbnN0IFdlYlN0cmluZyYpOwot
Ci0gICAgLy8gVGhlIHR5cGUgb2YgcGF5bG9hZCBkYXRhIHdoaWNoIHRoZSBzZXJ2aWNlIHdpbGwg
aGFuZGxlLgotICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIHR5cGUoKSBjb25zdDsKLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0VHlwZShjb25zdCBXZWJTdHJpbmcmKTsKLQotICAgIC8vIEEg
aGludCB0byB0aGUgY2xpZW50IGFib3V0IHdoZXRoZXIgdGhlIHNlcnZpY2UgY2FuIGJlIHJ1biB3
aXRoaW4KLSAgICAvLyBhbiAiaW5saW5lIiBjb250ZXh0IHdpdGhpbiB0aGUgY2FsbGluZyBwYWdl
LCBvciBpbiBhIG5ldyB0YWIKLSAgICAvLyBjb250ZXh0ICh0aGUgZGVmYXVsdCkuCi0gICAgV0VC
S0lUX0VYUE9SVCBXZWJTdHJpbmcgZGlzcG9zaXRpb24oKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgc2V0RGlzcG9zaXRpb24oY29uc3QgV2ViU3RyaW5nJik7Ci0KLSNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KLSAgICBXZWJJbnRlbnRTZXJ2aWNlSW5mbyhjb25zdCBXZWJTdHJpbmcm
IGFjdGlvbiwgY29uc3QgV2ViU3RyaW5nJiB0eXBlLCBjb25zdCBXZWJVUkwmIGhyZWYsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViU3Ry
aW5nJiBkaXNwb3NpdGlvbik7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBXZWJTdHJpbmcgbV9h
Y3Rpb247Ci0gICAgV2ViU3RyaW5nIG1fdHlwZTsKLSAgICBXZWJVUkwgbV9ocmVmOwotICAgIFdl
YlN0cmluZyBtX3RpdGxlOwotICAgIFdlYlN0cmluZyBtX2Rpc3Bvc2l0aW9uOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJJbnRlbnRTZXJ2aWNlSW5mb19oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJSdW50aW1lRmVhdHVy
ZXMuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJ1bnRpbWVGZWF0dXJlcy5o
CmluZGV4IGVjNjQxMWU0MDJjNTIxZTdhODQ2NjNiNmVmNGRlNDUxOWE4MDI1MmYuLjRhM2FjNDM1
OTA1NzE1NTRkZDlmZmU4NGFmYmY2MzBjNzQ1YjczNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlJ1bnRpbWVGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlJ1bnRpbWVGZWF0dXJlcy5oCkBAIC0xNjQsOSArMTY0LDYg
QEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgZW5hYmxlU2VhbWxlc3NJ
RnJhbWVzKGJvb2wpOwogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIGJvb2wgYXJlU2VhbWxlc3NJ
RnJhbWVzRW5hYmxlZCgpOwogCi0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBlbmFibGVX
ZWJJbnRlbnRzKGJvb2wpOwotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIGJvb2wgaXNXZWJJbnRl
bnRzRW5hYmxlZCgpOwotCiAgICAgLy8gSWYgdGhlIGZsYWcgaXMgc2V0LCB3ZSB1c2UgV2ViVmll
d0NsaWVudDo6c2hvd1ZhbGlkYXRpb25NZXNzYWdlIGFuZAogICAgIC8vIGhpZGVWbGlkYXRpb25N
ZXNzYWdlIGZvciBpbnRlcmFjdGl2ZSBmb3JtIHZhbGlkYXRpb24uCiAgICAgV0VCS0lUX0VYUE9S
VCBzdGF0aWMgdm9pZCBlbmFibGVOYXRpdmVWYWxpZGF0aW9uTWVzc2FnZShib29sKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RlbGl2ZXJlZEludGVudENsaWVudElt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVsaXZlcmVkSW50ZW50Q2xpZW50
SW1wbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwYzAxZDJiM2MxM2UwZGM5
ZWEyMTQ1YzBmZWY5ZjE2YWRiMTQyNTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVsaXZlcmVkSW50ZW50
Q2xpZW50SW1wbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1
dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkRlbGl2ZXJlZEludGVudENsaWVudEltcGwuaCIKLQotI2luY2x1
ZGUgIldlYkRlbGl2ZXJlZEludGVudENsaWVudC5oIgotI2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotRGVsaXZlcmVkSW50ZW50Q2xp
ZW50SW1wbDo6RGVsaXZlcmVkSW50ZW50Q2xpZW50SW1wbChXZWJEZWxpdmVyZWRJbnRlbnRDbGll
bnQqIGNsaWVudCkKLSAgICA6IG1fY2xpZW50KGNsaWVudCkKLXsKLX0KLQotRGVsaXZlcmVkSW50
ZW50Q2xpZW50SW1wbDo6fkRlbGl2ZXJlZEludGVudENsaWVudEltcGwoKQotewotICAgIG1fY2xp
ZW50LT5kZXN0cm95KCk7Ci0gICAgbV9jbGllbnQgPSAwOwotfQotCi12b2lkIERlbGl2ZXJlZElu
dGVudENsaWVudEltcGw6OnBvc3RSZXN1bHQoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IGRhdGEpCi17Ci0gICAgbV9jbGllbnQtPnBvc3RSZXN1bHQoZGF0YSk7Ci19
Ci0KLXZvaWQgRGVsaXZlcmVkSW50ZW50Q2xpZW50SW1wbDo6cG9zdEZhaWx1cmUoUGFzc1JlZlB0
cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEpCi17Ci0gICAgbV9jbGllbnQt
PnBvc3RGYWlsdXJlKGRhdGEpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RlbGl2ZXJlZEludGVudENsaWVudEltcGwu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RlbGl2ZXJlZEludGVudENsaWVudEltcGwu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWVjZTRlZWQxODJhYWE0M2U3YjYzZmM3
NTU0NTQ4MTQ3YmY1ZjBjMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EZWxpdmVyZWRJbnRlbnRDbGllbnRJ
bXBsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBEZWxpdmVyZWRJbnRl
bnRDbGllbnRJbXBsX2gKLSNkZWZpbmUgRGVsaXZlcmVkSW50ZW50Q2xpZW50SW1wbF9oCi0KLSNp
bmNsdWRlICJEZWxpdmVyZWRJbnRlbnQuaCIKLSNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tbW9uLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkRlbGl2ZXJlZEludGVu
dENsaWVudDsKLWNsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLQotLy8gVGhlIGVtYmVk
ZGVyIGltcGxlbWVudHMgdGhpcyBpbnRlcmZhY2UgdG8gcmVjZWl2ZSByZXBseSBjYWxscyBmcm9t
IHRoZSBzZXJ2aWNlCi0vLyBpbiByZXNwb25zZSB0byB0aGUgZGVsaXZlcnkgb2YgYSB3ZWIgaW50
ZW50LiBUaGlzIGNsaWVudCBtdXN0IHJlbWFpbiB2YWxpZAotLy8gdW50aWwgdGhlIGRlc3Ryb3ko
KSBtZXRob2QgaXMgY2FsbGVkLCBvciB1bnRpbCB0aGUgV2ViRnJhbWUgdG8gd2hpY2ggaXQgaXMK
LS8vIGRlbGl2ZXJlZCBpcyBkZXN0cm95ZWQuCi0vLyBTZWUgc3BlYyBhdCBodHRwOi8vd3d3LmNo
cm9taXVtLm9yZy9kZXZlbG9wZXJzL2Rlc2lnbi1kb2N1bWVudHMvd2ViaW50ZW50c2FwaQotY2xh
c3MgRGVsaXZlcmVkSW50ZW50Q2xpZW50SW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpEZWxpdmVyZWRJ
bnRlbnRDbGllbnQgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERlbGl2ZXJlZEludGVudENs
aWVudEltcGwpOwotcHVibGljOgotICAgIGV4cGxpY2l0IERlbGl2ZXJlZEludGVudENsaWVudElt
cGwoV2ViRGVsaXZlcmVkSW50ZW50Q2xpZW50Kik7Ci0gICAgdmlydHVhbCB+RGVsaXZlcmVkSW50
ZW50Q2xpZW50SW1wbCgpOwotCi0gICAgdmlydHVhbCB2b2lkIHBvc3RSZXN1bHQoUGFzc1JlZlB0
cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEpOwotICAgIHZpcnR1YWwgdm9p
ZCBwb3N0RmFpbHVyZShQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
ZGF0YSk7Ci0KLXByaXZhdGU6Ci0gICAgV2ViRGVsaXZlcmVkSW50ZW50Q2xpZW50KiBtX2NsaWVu
dDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRGVsaXZlcmVkSW50
ZW50Q2xpZW50SW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmNwcAppbmRleCA4MDY0ZjAzMmZiMTNmNDQ5NWE2MDRkNGYwNjQ3
MjgwY2EwNDkxYTEyLi5lOGEwYjI1ODZmZWQ1ZWM4MGMxZjc5NmU4OTQ2ZmY2YjY3ZmJmZTllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2lu
Y2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgotI2luY2x1
ZGUgIkludGVudFJlcXVlc3QuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5j
bHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgpAQCAtNzMsOCAr
NzIsNiBAQAogI2luY2x1ZGUgIldlYkZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVD
bGllbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKLSNpbmNsdWRlICJXZWJJbnRlbnRS
ZXF1ZXN0LmgiCi0jaW5jbHVkZSAiV2ViSW50ZW50U2VydmljZUluZm8uaCIKICNpbmNsdWRlICJX
ZWJOb2RlLmgiCiAjaW5jbHVkZSAiV2ViUGVybWlzc2lvbkNsaWVudC5oIgogI2luY2x1ZGUgIldl
YlBsdWdpbi5oIgpAQCAtMTY0MiwyOCArMTYzOSw2IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjpkaWRDaGFuZ2VOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBtX3dlYkZyYW1lLT5j
bGllbnQoKS0+ZGlkQ2hhbmdlTmFtZShtX3dlYkZyYW1lLCBuYW1lKTsKIH0KIAotI2lmIEVOQUJM
RShXRUJfSU5URU5UU19UQUcpCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6cmVnaXN0ZXJJ
bnRlbnRTZXJ2aWNlKAotICAgICAgICBjb25zdCBTdHJpbmcmIGFjdGlvbiwKLSAgICAgICAgY29u
c3QgU3RyaW5nJiB0eXBlLAotICAgICAgICBjb25zdCBLVVJMJiBocmVmLAotICAgICAgICBjb25z
dCBTdHJpbmcmIHRpdGxlLAotICAgICAgICBjb25zdCBTdHJpbmcmIGRpc3Bvc2l0aW9uKSB7Ci0g
ICAgaWYgKCFtX3dlYkZyYW1lLT5jbGllbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV2Vi
SW50ZW50U2VydmljZUluZm8gc2VydmljZShhY3Rpb24sIHR5cGUsIGhyZWYsIHRpdGxlLCBkaXNw
b3NpdGlvbik7Ci0gICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPnJlZ2lzdGVySW50ZW50U2Vydmlj
ZShtX3dlYkZyYW1lLCBzZXJ2aWNlKTsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdFQl9JTlRF
TlRTKQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoSW50ZW50KFBhc3NSZWZQ
dHI8V2ViQ29yZTo6SW50ZW50UmVxdWVzdD4gaW50ZW50UmVxdWVzdCkKLXsKLSAgICBtX3dlYkZy
YW1lLT5jbGllbnQoKS0+ZGlzcGF0Y2hJbnRlbnQod2ViRnJhbWUoKSwgaW50ZW50UmVxdWVzdCk7
Ci19Ci0jZW5kaWYKLQogdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoV2lsbE9w
ZW5Tb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCiB7CiAgICAgbV93ZWJG
cmFtZS0+Y2xpZW50KCktPndpbGxPcGVuU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZUlu
dGVybmFsOjp0b1dlYlNvY2tldFN0cmVhbUhhbmRsZShoYW5kbGUpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKaW5kZXggODIwOTdh
YzZhZTUwMzRjNDliMGRhMDhlOTMwZTVhN2E2MThlZjA1My4uZTlhNWU4MDRmNDdkYzc0NmFhMDcy
ODM4ZGEyOWI4M2U5NGE5NmI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKQEAgLTIxMSwxNyArMjExLDYgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCB3aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVudChXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiogdGFyZ2V0LCBXZWJDb3JlOjpNZXNzYWdlRXZlbnQqKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlTmFtZShjb25zdCBTdHJpbmcmKTsKIAotI2lmIEVO
QUJMRShXRUJfSU5URU5UU19UQUcpCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVySW50ZW50U2Vy
dmljZShjb25zdCBTdHJpbmcmIGFjdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFN0cmluZyYgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OktVUkwmIGhyZWYsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHRpdGxlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBkaXNwb3NpdGlvbik7Ci0j
ZW5kaWYKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
SW50ZW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6SW50ZW50UmVxdWVzdD4pIE9WRVJSSURFOwotI2Vu
ZGlmCi0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsT3BlblNvY2tldFN0cmVhbShXZWJD
b3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUqKSBPVkVSUklERTsKIAogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUlt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRl
eCA5ZWY1MDAyMTc0Njc2NDAyYWQ3MDkzMTQ1MWQyM2I3N2NhYThlYTI2Li41ZGMxMzRhZGJjYjlk
YmU0NWUzYzJlN2M0NDRmMDZhODdiN2ZlMDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkZyYW1lSW1wbC5jcHAKQEAgLTgxLDcgKzgxLDYgQEAKICNpbmNsdWRlICJET01GaWxl
U3lzdGVtLmgiCiAjaW5jbHVkZSAiRE9NVXRpbGl0aWVzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgotI2luY2x1ZGUgIkRPTVdpbmRvd0ludGVudHMuaCIKICNpbmNsdWRlICJET01X
cmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCkBAIC0xNTgsNyArMTU3LDYgQEAKICNpbmNsdWRlICJXZWJET01FdmVudC5oIgog
I2luY2x1ZGUgIldlYkRPTUV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJEYXRhU291cmNl
SW1wbC5oIgotI2luY2x1ZGUgIldlYkRlbGl2ZXJlZEludGVudENsaWVudC5oIgogI2luY2x1ZGUg
IldlYkRldlRvb2xzQWdlbnRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJXZWJGaW5kT3B0aW9ucy5oIgpAQCAtMTY3LDcgKzE2NSw2IEBACiAjaW5jbHVkZSAi
V2ViSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJXZWJJY29uVVJMLmgiCiAjaW5jbHVkZSAiV2Vi
SW5wdXRFbGVtZW50LmgiCi0jaW5jbHVkZSAiV2ViSW50ZW50LmgiCiAjaW5jbHVkZSAiV2ViTm9k
ZS5oIgogI2luY2x1ZGUgIldlYlBlcmZvcm1hbmNlLmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2luLmgi
CkBAIC0xOTUsMTEgKzE5Miw2IEBACiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KIAotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSNpbmNsdWRl
ICJEZWxpdmVyZWRJbnRlbnQuaCIKLSNpbmNsdWRlICJEZWxpdmVyZWRJbnRlbnRDbGllbnRJbXBs
LmgiCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtMjA4NiwzMiArMjA3OCw2IEBAIGludCBXZWJGcmFtZUltcGw6OnNlbGVjdEZpbmRN
YXRjaCh1bnNpZ25lZCBpbmRleCwgV2ViUmVjdCogc2VsZWN0aW9uUmVjdCkKICAgICByZXR1cm4g
b3JkaW5hbE9mRmlyc3RNYXRjaEZvckZyYW1lKHRoaXMpICsgbV9hY3RpdmVNYXRjaEluZGV4SW5D
dXJyZW50RnJhbWUgKyAxOwogfQogCi12b2lkIFdlYkZyYW1lSW1wbDo6ZGVsaXZlckludGVudChj
b25zdCBXZWJJbnRlbnQmIGludGVudCwgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIHBvcnRz
LCBXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQqIGludGVudENsaWVudCkKLXsKLSNpZiBFTkFCTEUo
V0VCX0lOVEVOVFMpCi0gICAgT3duUHRyPFdlYkNvcmU6OkRlbGl2ZXJlZEludGVudENsaWVudD4g
Y2xpZW50KGFkb3B0UHRyKG5ldyBEZWxpdmVyZWRJbnRlbnRDbGllbnRJbXBsKGludGVudENsaWVu
dCkpKTsKLQotICAgIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBpbnRlbnREYXRhID0gV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpmcm9tU3RyaW5nKGludGVudC5kYXRhKCkpOwotICAgIGNvbnN0
IFdlYkNvcmU6OkludGVudCogd2ViY29yZUludGVudCA9IGludGVudDsKLQotICAgIC8vIFNlZSBQ
bGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXk+IGNoYW5uZWxzOwotICAgIGlmIChwb3J0cyAmJiBwb3J0cy0+c2l6ZSgpKSB7Ci0g
ICAgICAgIGNoYW5uZWxzID0gYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KHBv
cnRzLT5zaXplKCkpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwb3J0cy0+c2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIFJlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5l
bD4gcGxhdGZvcm1DaGFubmVsID0gUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZSgo
KnBvcnRzKVtpXSk7Ci0gICAgICAgICAgICAoKnBvcnRzKVtpXS0+c2V0Q2xpZW50KHBsYXRmb3Jt
Q2hhbm5lbC5nZXQoKSk7Ci0gICAgICAgICAgICAoKmNoYW5uZWxzKVtpXSA9IE1lc3NhZ2VQb3J0
Q2hhbm5lbDo6Y3JlYXRlKHBsYXRmb3JtQ2hhbm5lbCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
T3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRBcnJheSA9IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
OjplbnRhbmdsZVBvcnRzKCooZnJhbWUoKS0+ZG9jdW1lbnQoKSksIGNoYW5uZWxzLnJlbGVhc2Uo
KSk7Ci0KLSAgICBSZWZQdHI8RGVsaXZlcmVkSW50ZW50PiBkZWxpdmVyZWRJbnRlbnQgPSBEZWxp
dmVyZWRJbnRlbnQ6OmNyZWF0ZShmcmFtZSgpLCBjbGllbnQucmVsZWFzZSgpLCBpbnRlbnQuYWN0
aW9uKCksIGludGVudC50eXBlKCksIGludGVudERhdGEsIHBvcnRBcnJheS5yZWxlYXNlKCksIHdl
YmNvcmVJbnRlbnQtPmV4dHJhcygpKTsKLQotICAgIERPTVdpbmRvd0ludGVudHM6OmZyb20oZnJh
bWUoKS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpLT5kZWxpdmVyKGRlbGl2ZXJlZEludGVudC5y
ZWxlYXNlKCkpOwotI2VuZGlmCi19Ci0KIFdlYlN0cmluZyBXZWJGcmFtZUltcGw6OmNvbnRlbnRB
c1RleHQoc2l6ZV90IG1heENoYXJzKSBjb25zdAogewogICAgIGlmICghZnJhbWUoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKaW5kZXggYWQxZjA1MzRkZGJjMGM0
NzNkOThjZTI1NDEyNmNiNzIzZjIyNjdhNy4uNzVmODRiNTgzZjM2OTIyMTdkMGVmYTNiMTlmNjcx
ZmY2NjZkNjBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJh
bWVJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgK
QEAgLTU3LDkgKzU3LDcgQEAgc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwogbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBDaHJvbWVQcmludENvbnRleHQ7CiBjbGFzcyBXZWJEYXRhU291cmNlSW1wbDsK
LWNsYXNzIFdlYkRlbGl2ZXJlZEludGVudENsaWVudDsKIGNsYXNzIFdlYklucHV0RWxlbWVudDsK
LWNsYXNzIFdlYkludGVudDsKIGNsYXNzIFdlYkZyYW1lQ2xpZW50OwogY2xhc3MgV2ViUGVyZm9y
bWFuY2U7CiBjbGFzcyBXZWJQbHVnaW5Db250YWluZXJJbXBsOwpAQCAtMjM1LDggKzIzMyw2IEBA
IHB1YmxpYzoKICAgICAgICAgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIGludGVuZGVkVGFyZ2V0
T3JpZ2luLAogICAgICAgICBjb25zdCBXZWJET01FdmVudCYpOwogCi0gICAgdmlydHVhbCB2b2lk
IGRlbGl2ZXJJbnRlbnQoY29uc3QgV2ViSW50ZW50JiwgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJy
YXkqLCBXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQqKTsKLQogICAgIHZpcnR1YWwgV2ViU3RyaW5n
IGNvbnRlbnRBc1RleHQoc2l6ZV90IG1heENoYXJzKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlN0
cmluZyBjb250ZW50QXNNYXJrdXAoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlN0cmluZyByZW5k
ZXJUcmVlQXNUZXh0KFJlbmRlckFzVGV4dENvbnRyb2xzIHRvU2hvdyA9IFJlbmRlckFzVGV4dE5v
cm1hbCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
bnRlbnQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50LmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY3MmNhM2E0M2NmN2RmZWY1NzhmNjc4M2U5ZDJh
ZDg0YjkyODQwNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnRlbnQuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMTk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViSW50ZW50
LmgiCi0KLSNpbmNsdWRlICJJbnRlbnQuaCIKLSNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgotI2lu
Y2x1ZGUgIlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgiCi0jaW5jbHVkZSAiU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgiCi0jaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCi0j
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYkludGVu
dCBXZWJJbnRlbnQ6OmNyZWF0ZShjb25zdCBXZWJTdHJpbmcmIGFjdGlvbiwgY29uc3QgV2ViU3Ry
aW5nJiB0eXBlLCBjb25zdCBXZWJTdHJpbmcmIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGV4dHJhc05hbWVzLCBjb25zdCBXZWJW
ZWN0b3I8V2ViU3RyaW5nPiYgZXh0cmFzVmFsdWVzKQotewotI2lmIEVOQUJMRShXRUJfSU5URU5U
UykKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBXZWJDb3JlOjpNZXNz
YWdlUG9ydEFycmF5IGR1bW15UG9ydHM7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkludGVudD4gaW50
ZW50ID0gV2ViQ29yZTo6SW50ZW50OjpjcmVhdGUoYWN0aW9uLCB0eXBlLCBXZWJDb3JlOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlKGRhdGEpLCBkdW1teVBvcnRzLCBlYyk7
Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gV2ViSW50ZW50KCk7Ci0KLSAgICBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPiBleHRyYXM7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleHRy
YXNOYW1lcy5zaXplKCkgJiYgaSA8IGV4dHJhc1ZhbHVlcy5zaXplKCk7ICsraSkKLSAgICAgICAg
ZXh0cmFzLmFkZChleHRyYXNOYW1lc1tpXSwgZXh0cmFzVmFsdWVzW2ldKTsKLSAgICBpbnRlbnQt
PnNldEV4dHJhcyhleHRyYXMpOwotCi0gICAgcmV0dXJuIFdlYkludGVudChpbnRlbnQucmVsZWFz
ZSgpKTsKLSNlbmRpZgotfQotCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotV2ViSW50ZW50OjpX
ZWJJbnRlbnQoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpJbnRlbnQ+JiBpbnRlbnQpCi0gICAg
OiBtX3ByaXZhdGUoaW50ZW50KQotewotfQotI2VuZGlmCi0KLXZvaWQgV2ViSW50ZW50OjpyZXNl
dCgpCi17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIG1fcHJpdmF0ZS5yZXNldCgpOwot
I2VuZGlmCi19Ci0KLWJvb2wgV2ViSW50ZW50Ojppc051bGwoKSBjb25zdAotewotI2lmIEVOQUJM
RShXRUJfSU5URU5UUykKLSAgICByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOwotI2Vsc2UKLSAg
ICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgotfQotCi1ib29sIFdlYkludGVudDo6ZXF1YWxzKGNvbnN0
IFdlYkludGVudCYgb3RoZXIpIGNvbnN0Ci17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAg
IHJldHVybiAobV9wcml2YXRlLmdldCgpID09IG90aGVyLm1fcHJpdmF0ZS5nZXQoKSk7Ci0jZWxz
ZQotICAgIHJldHVybiB0cnVlOwotI2VuZGlmCi19Ci0KLXZvaWQgV2ViSW50ZW50Ojphc3NpZ24o
Y29uc3QgV2ViSW50ZW50JiBvdGhlcikKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAg
bV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOwotI2VuZGlmCi19Ci0KLVdlYlN0cmluZyBXZWJJ
bnRlbnQ6OmFjdGlvbigpIGNvbnN0Ci17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIHJl
dHVybiBtX3ByaXZhdGUtPmFjdGlvbigpOwotI2Vsc2UKLSAgICByZXR1cm4gV2ViU3RyaW5nKCk7
Ci0jZW5kaWYKLX0KLQotV2ViU3RyaW5nIFdlYkludGVudDo6dHlwZSgpIGNvbnN0Ci17Ci0jaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIHJldHVybiBtX3ByaXZhdGUtPnR5cGUoKTsKLSNlbHNl
Ci0gICAgcmV0dXJuIFdlYlN0cmluZygpOwotI2VuZGlmCi19Ci0KLVdlYlN0cmluZyBXZWJJbnRl
bnQ6OmRhdGEoKSBjb25zdAotewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICByZXR1cm4g
bV9wcml2YXRlLT5kYXRhKCktPnRvV2lyZVN0cmluZygpOwotI2Vsc2UKLSAgICByZXR1cm4gV2Vi
U3RyaW5nKCk7Ci0jZW5kaWYKLX0KLQotV2ViVVJMIFdlYkludGVudDo6c2VydmljZSgpIGNvbnN0
Ci17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIHJldHVybiBXZWJVUkwobV9wcml2YXRl
LT5zZXJ2aWNlKCkpOwotI2Vsc2UKLSAgICByZXR1cm4gV2ViVVJMKCk7Ci0jZW5kaWYKLX0KLQot
V2ViVmVjdG9yPFdlYlVSTD4gV2ViSW50ZW50OjpzdWdnZXN0aW9ucygpIGNvbnN0Ci17Ci0jaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIFdlYlZlY3RvcjxXZWJVUkw+IHN1Z2dlc3Rpb25zKG1f
cHJpdmF0ZS0+c3VnZ2VzdGlvbnMoKS5zaXplKCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9wcml2YXRlLT5zdWdnZXN0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICBzdWdnZXN0
aW9uc1tpXSA9IG1fcHJpdmF0ZS0+c3VnZ2VzdGlvbnMoKS5hdChpKTsKLSAgICByZXR1cm4gc3Vn
Z2VzdGlvbnM7Ci0jZWxzZQotICAgIHJldHVybiBXZWJWZWN0b3I8V2ViVVJMPigpOwotI2VuZGlm
Ci19Ci0KLVdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBXZWJJbnRlbnQ6Om1lc3NhZ2VQb3J0
Q2hhbm5lbHNSZWxlYXNlKCkgY29uc3QKLXsKLSAgICAvLyBOb3RlOiBzZWUgUGxhdGZvcm1NZXNz
YWdlUG9ydENoYW5uZWw6OnBvc3RNZXNzYWdlVG9SZW1vdGUuCi0gICAgV2ViTWVzc2FnZVBvcnRD
aGFubmVsQXJyYXkqIHdlYkNoYW5uZWxzID0gMDsKLSAgICBXZWJDb3JlOjpNZXNzYWdlUG9ydENo
YW5uZWxBcnJheSogbWVzc2FnZVBvcnRzID0gbV9wcml2YXRlLT5tZXNzYWdlUG9ydHMoKTsKLSAg
ICBpZiAobWVzc2FnZVBvcnRzKSB7Ci0gICAgICAgIHdlYkNoYW5uZWxzID0gbmV3IFdlYk1lc3Nh
Z2VQb3J0Q2hhbm5lbEFycmF5KG1lc3NhZ2VQb3J0cy0+c2l6ZSgpKTsKLSAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtZXNzYWdlUG9ydHMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAg
ICBXZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCogcGxhdGZvcm1DaGFubmVsID0g
bWVzc2FnZVBvcnRzLT5hdChpKS0+Y2hhbm5lbCgpOwotICAgICAgICAgICAgKCp3ZWJDaGFubmVs
cylbaV0gPSBwbGF0Zm9ybUNoYW5uZWwtPndlYkNoYW5uZWxSZWxlYXNlKCk7Ci0gICAgICAgICAg
ICAoKndlYkNoYW5uZWxzKVtpXS0+c2V0Q2xpZW50KDApOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgcmV0dXJuIHdlYkNoYW5uZWxzOwotfQotCi1XZWJJbnRlbnQ6Om9wZXJhdG9yIFdlYkNvcmU6
OkludGVudCooKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7Ci19Ci0KLVdl
YlZlY3RvcjxXZWJTdHJpbmc+IFdlYkludGVudDo6ZXh0cmFzTmFtZXMoKSBjb25zdAotewotI2lm
IEVOQUJMRShXRUJfSU5URU5UUykKLSAgICBzaXplX3QgbnVtRXh0cmFzID0gbV9wcml2YXRlLT5l
eHRyYXMoKS5zaXplKCk7Ci0gICAgV2ViVmVjdG9yPFdlYlN0cmluZz4ga2V5U3RyaW5ncyhudW1F
eHRyYXMpOwotICAgIFdURjo6SGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9y
OjpLZXlzIGtleUl0ZXIgPSBtX3ByaXZhdGUtPmV4dHJhcygpLmJlZ2luKCkua2V5cygpOwotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBrZXlJdGVyICE9IG1fcHJpdmF0ZS0+ZXh0cmFzKCkuZW5kKCku
a2V5cygpOyArK2tleUl0ZXIsICsraSkKLSAgICAgICAga2V5U3RyaW5nc1tpXSA9ICprZXlJdGVy
OwotICAgIHJldHVybiBrZXlTdHJpbmdzOwotI2Vsc2UKLSAgICByZXR1cm4gV2ViVmVjdG9yPFdl
YlN0cmluZz4oKTsKLSNlbmRpZgotfQotCi1XZWJTdHJpbmcgV2ViSW50ZW50OjpleHRyYXNWYWx1
ZShjb25zdCBXZWJTdHJpbmcmIG5hbWUpIGNvbnN0Ci17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRT
KQotICAgIFdURjo6SGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIHZhbCA9
IG1fcHJpdmF0ZS0+ZXh0cmFzKCkuZmluZChuYW1lKTsKLSAgICBpZiAodmFsID09IG1fcHJpdmF0
ZS0+ZXh0cmFzKCkuZW5kKCkpCi0gICAgICAgIHJldHVybiBXZWJTdHJpbmcoKTsKLSAgICByZXR1
cm4gdmFsLT52YWx1ZTsKLSNlbHNlCi0gICAgcmV0dXJuIFdlYlN0cmluZygpOwotI2VuZGlmCi19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSW50ZW50UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJbnRlbnRSZXF1ZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjI4
ODY4MTNjOGYyNTVjYjQwYzA1NzBjYzdlOWVhOTY4NDFlNjhhZi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJbnRlbnRSZXF1ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkludGVudFJlcXVlc3QuaCIKLQotI2luY2x1ZGUg
IkludGVudC5oIgotI2luY2x1ZGUgIkludGVudFJlcXVlc3QuaCIKLSNpbmNsdWRlICJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJXZWJJbnRlbnQuaCIKLSNpbmNsdWRlICJXZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLSNpZiBFTkFC
TEUoV0VCX0lOVEVOVFMpCi1XZWJJbnRlbnRSZXF1ZXN0OjpXZWJJbnRlbnRSZXF1ZXN0KGNvbnN0
IFBhc3NSZWZQdHI8V2ViQ29yZTo6SW50ZW50UmVxdWVzdD4mIGludGVudFJlcXVlc3QpCi0gICAg
OiBtX3ByaXZhdGUoaW50ZW50UmVxdWVzdCkKLXsKLX0KLSNlbmRpZgotCi12b2lkIFdlYkludGVu
dFJlcXVlc3Q6OnJlc2V0KCkKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgbV9wcml2
YXRlLnJlc2V0KCk7Ci0jZW5kaWYKLX0KLQotYm9vbCBXZWJJbnRlbnRSZXF1ZXN0Ojppc051bGwo
KSBjb25zdAotewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICByZXR1cm4gbV9wcml2YXRl
LmlzTnVsbCgpOwotI2Vsc2UKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgotfQotCi1ib29sIFdl
YkludGVudFJlcXVlc3Q6OmVxdWFscyhjb25zdCBXZWJJbnRlbnRSZXF1ZXN0JiBvdGhlcikgY29u
c3QKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgcmV0dXJuIChtX3ByaXZhdGUuZ2V0
KCkgPT0gb3RoZXIubV9wcml2YXRlLmdldCgpKTsKLSNlbHNlCi0gICAgcmV0dXJuIHRydWU7Ci0j
ZW5kaWYKLX0KLQotdm9pZCBXZWJJbnRlbnRSZXF1ZXN0Ojphc3NpZ24oY29uc3QgV2ViSW50ZW50
UmVxdWVzdCYgb3RoZXIpCi17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIG1fcHJpdmF0
ZSA9IG90aGVyLm1fcHJpdmF0ZTsKLSNlbmRpZgotfQotCi1XZWJJbnRlbnQgV2ViSW50ZW50UmVx
dWVzdDo6aW50ZW50KCkgY29uc3QKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgcmV0
dXJuIFdlYkludGVudChtX3ByaXZhdGUtPmludGVudCgpKTsKLSNlbHNlCi0gICAgcmV0dXJuIFdl
YkludGVudCgpOwotI2VuZGlmCi19Ci0KLXZvaWQgV2ViSW50ZW50UmVxdWVzdDo6cG9zdFJlc3Vs
dChjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIGRhdGEpCi17Ci0jaWYgRU5BQkxFKFdF
Ql9JTlRFTlRTKQotICAgIG1fcHJpdmF0ZS0+cG9zdFJlc3VsdChQYXNzUmVmUHRyPFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4oZGF0YSkuZ2V0KCkpOwotI2VuZGlmCi19Ci0KLXZvaWQg
V2ViSW50ZW50UmVxdWVzdDo6cG9zdEZhaWx1cmUoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZh
bHVlJiBkYXRhKQotewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICBtX3ByaXZhdGUtPnBv
c3RGYWlsdXJlKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPihkYXRh
KS5nZXQoKSk7Ci0jZW5kaWYKLX0KLQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkludGVudFNlcnZpY2VJbmZvLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkludGVudFNlcnZpY2VJbmZvLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjA4YWI0ODg1NmQ5M2UwNTNiMTI1OTI4ODg2ODhi
ZDExNjgyNTIyNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnRlbnRTZXJ2aWNlSW5mby5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IldlYkludGVudFNlcnZpY2VJbmZvLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJVUkwg
V2ViSW50ZW50U2VydmljZUluZm86OnVybCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faHJlZjsK
LX0KLQotdm9pZCBXZWJJbnRlbnRTZXJ2aWNlSW5mbzo6c2V0VVJMKGNvbnN0IFdlYlVSTCYgdXJs
KQotewotICAgIG1faHJlZiA9IHVybDsKLX0KLQotV2ViU3RyaW5nIFdlYkludGVudFNlcnZpY2VJ
bmZvOjp0aXRsZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdGl0bGU7Ci19Ci0KLXZvaWQgV2Vi
SW50ZW50U2VydmljZUluZm86OnNldFRpdGxlKGNvbnN0IFdlYlN0cmluZyYgdGl0bGUpCi17Ci0g
ICAgbV90aXRsZSA9IHRpdGxlOwotfQotCi1XZWJTdHJpbmcgV2ViSW50ZW50U2VydmljZUluZm86
OmFjdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYWN0aW9uOwotfQotCi12b2lkIFdlYklu
dGVudFNlcnZpY2VJbmZvOjpzZXRBY3Rpb24oY29uc3QgV2ViU3RyaW5nJiBhY3Rpb24pCi17Ci0g
ICAgbV9hY3Rpb24gPSBhY3Rpb247Ci19Ci0KLVdlYlN0cmluZyBXZWJJbnRlbnRTZXJ2aWNlSW5m
bzo6dHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdHlwZTsKLX0KLQotdm9pZCBXZWJJbnRl
bnRTZXJ2aWNlSW5mbzo6c2V0VHlwZShjb25zdCBXZWJTdHJpbmcmIHR5cGUpCi17Ci0gICAgbV90
eXBlID0gdHlwZTsKLX0KLQotV2ViU3RyaW5nIFdlYkludGVudFNlcnZpY2VJbmZvOjpkaXNwb3Np
dGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZGlzcG9zaXRpb247Ci19Ci0KLXZvaWQgV2Vi
SW50ZW50U2VydmljZUluZm86OnNldERpc3Bvc2l0aW9uKGNvbnN0IFdlYlN0cmluZyYgZGlzcG9z
aXRpb24pCi17Ci0gICAgbV9kaXNwb3NpdGlvbiA9IGRpc3Bvc2l0aW9uOwotfQotCi1XZWJJbnRl
bnRTZXJ2aWNlSW5mbzo6V2ViSW50ZW50U2VydmljZUluZm8oY29uc3QgV2ViU3RyaW5nJiBhY3Rp
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2Vi
U3RyaW5nJiB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFdlYlVSTCYgaHJlZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHRpdGxlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgZGlzcG9zaXRpb24pCi0gICAgOiBt
X2FjdGlvbihhY3Rpb24pCi0gICAgLCBtX3R5cGUodHlwZSkKLSAgICAsIG1faHJlZihocmVmKQot
ICAgICwgbV90aXRsZSh0aXRsZSkKLSAgICAsIG1fZGlzcG9zaXRpb24oZGlzcG9zaXRpb24pCi17
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViUnVudGltZUZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlJ1bnRpbWVGZWF0dXJlcy5jcHAKaW5kZXggMTk2M2U5MTRkMzg3M2JjMzAzZmRh
M2Q1M2RlNGQyMDkxODMzNTA2Ny4uZDViMGNkYzU0YmJkYjMxZGQxMDk2YzEwZWNiYjE3YTlhMWYz
ZDk0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUnVudGltZUZl
YXR1cmVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJSdW50aW1lRmVh
dHVyZXMuY3BwCkBAIC02OTksMjIgKzY5OSw0IEBAIGJvb2wgV2ViUnVudGltZUZlYXR1cmVzOjpp
c1JlcXVlc3RBdXRvY29tcGxldGVFbmFibGVkKCkKICNlbmRpZgogfQogCi12b2lkIFdlYlJ1bnRp
bWVGZWF0dXJlczo6ZW5hYmxlV2ViSW50ZW50cyhib29sIGVuYWJsZSkKLXsKLSNpZiBFTkFCTEUo
V0VCX0lOVEVOVFMpCi0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0V2ViSW50ZW50c0Vu
YWJsZWQoZW5hYmxlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGVuYWJsZSk7Ci0jZW5kaWYK
LX0KLQotYm9vbCBXZWJSdW50aW1lRmVhdHVyZXM6OmlzV2ViSW50ZW50c0VuYWJsZWQoKQotewot
I2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6d2Via2l0U3RhcnRBY3Rpdml0eUVuYWJsZWQoKTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNl
OwotI2VuZGlmCi19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc3MGUyOWZjYTk0M2EyOWQwNTY4NWE0
ZjY2YTdmMTA4Mjg0YjMyYzIuLjY4MWEyZDRhMDIzYTI1MmFjMzBjODYzOWU3YzU1ODU1NDkxMDUy
Y2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzNyBAQAorMjAxMy0wMi0xMSAgTmljbyBXZWJlciAgPHRoYWtpc0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmVtb3ZlIHdlYiBpbnRlbnRzIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTUwMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlZSB0aHJlYWQgIlJlbW92aW5nIEVOQUJM
RShXRUJfSU5URU5UUykgY29kZSIgb24gd2Via2l0LWRldi4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rp
b25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmg6CisgICAgICAgIChU
ZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5u
ZXJCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFBy
b3h5Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVz
dFByb3h5OjpkaWRFbmRFZGl0aW5nKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OlRlc3RSdW5uZXI6OlRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKFRlc3RSdW5uZXIpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQ
cm94eS5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3Qu
Y3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0Lmg6Cisg
ICAgICAgIChXZWJWaWV3SG9zdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RS
dW5uZXJFZmwuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3Rr
LmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHA6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5lcld4LmNwcDoKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHBlcmwvRmVhdHVyZUxpc3QucG06CisKIDIwMTMtMDItMTAgIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBhdHRlbXB0ZWQgYnVp
bGQgZml4IGZvciBHdGsgYWZ0ZXIgcjE0MjQxMgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNw
cAppbmRleCBjODE3ZDUyMzBjNDQ4YTdhMWRkN2Q3NDM5YWIxMmFhM2EwODlkMzRiLi5hYmQwMzBi
NDYxM2Y4NDMzZmQ5OWMyMWQ5NWYxODcwY2E4YTRmYmJjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0
UnVubmVyLmNwcApAQCAtMTc4MSwzOSArMTc4MSw2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFdl
YlZpZXdFZGl0YWJsZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCi1zdGF0aWMg
SlNWYWx1ZVJlZiBzZW5kV2ViSW50ZW50UmVzcG9uc2VDYWxsYmFjayhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCi17Ci0gICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHJlc3BvbnNlOwot
ICAgIGlmIChhcmd1bWVudENvdW50ID09IDEpIHsKLSAgICAgICAgcmVzcG9uc2UuYWRvcHQoSlNW
YWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOwotICAg
ICAgICBBU1NFUlQoISpleGNlcHRpb24pOwotICAgIH0gZWxzZQotICAgICAgICByZXNwb25zZS5h
ZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygwKSk7Ci0KLSAgICBUZXN0UnVubmVy
KiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0
ZSh0aGlzT2JqZWN0KSk7Ci0gICAgY29udHJvbGxlci0+c2VuZFdlYkludGVudFJlc3BvbnNlKHJl
c3BvbnNlLmdldCgpKTsKLQotICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKLX0KLQotc3RhdGljIEpTVmFsdWVSZWYgZGVsaXZlcldlYkludGVudENhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKLXsKLSAgICBpZiAoYXJndW1lbnRDb3VudCA8IDMpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLQotICAgIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBhY3Rpb24oQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29u
dGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKLSAgICBBU1NFUlQoISpleGNlcHRpb24p
OwotICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB0eXBlKEFkb3B0LCBKU1ZhbHVlVG9TdHJp
bmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKSk7Ci0gICAgQVNTRVJUKCEq
ZXhjZXB0aW9uKTsKLSAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gZGF0YShBZG9wdCwgSlNW
YWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMl0sIGV4Y2VwdGlvbikpOwotICAg
IEFTU0VSVCghKmV4Y2VwdGlvbik7Ci0KLSAgICBUZXN0UnVubmVyKiBjb250cm9sbGVyID0gc3Rh
dGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0g
ICAgY29udHJvbGxlci0+ZGVsaXZlcldlYkludGVudChhY3Rpb24uZ2V0KCksIHR5cGUuZ2V0KCks
IGRhdGEuZ2V0KCkpOwotCi0gICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQp
OwotfQotCiBzdGF0aWMgSlNWYWx1ZVJlZiBhYm9ydE1vZGFsQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBz
aXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQogewogICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNf
Y2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTIx
NTAsNyArMjExNyw2IEBAIEpTU3RhdGljRnVuY3Rpb24qIFRlc3RSdW5uZXI6OnN0YXRpY0Z1bmN0
aW9ucygpCiAgICAgICAgIHsgImNsb3NlV2ViSW5zcGVjdG9yIiwgY2xvc2VXZWJJbnNwZWN0b3JD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRl
ZEluZm8iLCBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm9DYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJkZWNvZGVIb3N0TmFtZSIsIGRlY29kZUhvc3ROYW1lQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKLSAgICAgICAgeyAiZGVsaXZlcldlYkludGVudCIsIGRlbGl2ZXJXZWJJbnRlbnRDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkaXNhbGxvd0luY3JlYXNlRm9yQXBwbGljYXRpb25D
YWNoZVF1b3RhIiwgZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90YUNhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgImRpc3BhdGNoUGVuZGluZ0xvYWRSZXF1ZXN0cyIsIGRp
c3BhdGNoUGVuZGluZ0xvYWRSZXF1ZXN0c0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImRp
c3BsYXkiLCBkaXNwbGF5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKQEAgLTIyMDMsNyArMjE2OSw2IEBAIEpT
U3RhdGljRnVuY3Rpb24qIFRlc3RSdW5uZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsg
InJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5IiwgcmVtb3ZlT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnlDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJyZXBhaW50U3dlZXBIb3Jp
em9udGFsbHkiLCByZXBhaW50U3dlZXBIb3Jpem9udGFsbHlDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJyZXNldFBhZ2VWaXNpYmlsaXR5IiwgcmVzZXRQYWdlVmlzaWJpbGl0eUNhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCi0gICAgICAgIHsgInNlbmRXZWJJbnRlbnRSZXNwb25zZSIsIHNlbmRXZWJJbnRl
bnRSZXNwb25zZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEFjY2VwdHNFZGl0aW5n
Iiwgc2V0QWNjZXB0c0VkaXRpbmdDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRBbGxv
d1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyIsIHNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJv
bUZpbGVVUkxzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0QWxsb3dGaWxlQWNjZXNz
RnJvbUZpbGVVUkxzIiwgc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAppbmRleCBhYTRhYWMyMWEwY2QxMTdkYWNj
NDU1OGVkM2JjZDhiMzU4M2E3NWI4Li4xMzI3ZGZmNmNlNDE4YzNlMDg0MGQ5OTZhYmYyOTk0OTRl
NjM5NjhmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCkBAIC01Niw3ICs1Niw2IEBAIHB1
YmxpYzoKICAgICBib29sIGNhbGxTaG91bGRDbG9zZU9uV2ViVmlldygpOwogICAgIEpTU3RyaW5n
UmVmIGNvcHlEZWNvZGVkSG9zdE5hbWUoSlNTdHJpbmdSZWYgbmFtZSk7CiAgICAgSlNTdHJpbmdS
ZWYgY29weUVuY29kZWRIb3N0TmFtZShKU1N0cmluZ1JlZiBuYW1lKTsKLSAgICB2b2lkIGRlbGl2
ZXJXZWJJbnRlbnQoSlNTdHJpbmdSZWYgYWN0aW9uLCBKU1N0cmluZ1JlZiB0eXBlLCBKU1N0cmlu
Z1JlZiBkYXRhKTsKICAgICB2b2lkIGRpc3BhdGNoUGVuZGluZ0xvYWRSZXF1ZXN0cygpOwogICAg
IHZvaWQgZGlzcGxheSgpOwogICAgIHZvaWQgZGlzcGxheUludmFsaWRhdGVkUmVnaW9uKCk7CkBA
IC04MSw3ICs4MCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHF1ZXVlTm9uTG9hZGluZ1NjcmlwdChK
U1N0cmluZ1JlZiBzY3JpcHQpOwogICAgIHZvaWQgcXVldWVSZWxvYWQoKTsKICAgICB2b2lkIHJl
bW92ZUFsbFZpc2l0ZWRMaW5rcygpOwotICAgIHZvaWQgc2VuZFdlYkludGVudFJlc3BvbnNlKEpT
U3RyaW5nUmVmIHJlc3BvbnNlKTsKICAgICB2b2lkIHNldEFjY2VwdHNFZGl0aW5nKGJvb2wpOwog
ICAgIHZvaWQgc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCk7CiAgICAg
dm9pZCBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCk7CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJCbGFja0JlcnJ5LmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3Bw
CmluZGV4IDZiY2VmZTVkYWI0NWI2NDA5YjFjNTJjNTU3MTQwNjhjMDM4MTVjZmYuLmJiMDU4NjVh
YzVkYTcxOTVkNWI2NGNlMGZjNDUxOTNlOGQzYjdjYjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwCkBAIC03
NjksMTYgKzc2OSw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QXV0b21hdGljTGlua0RldGVjdGlv
bkVuYWJsZWQoYm9vbCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFRlc3RSdW5u
ZXI6OnNlbmRXZWJJbnRlbnRSZXNwb25zZShKU1N0cmluZ1JlZikKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIFRlc3RSdW5uZXI6OmRlbGl2ZXJXZWJJbnRlbnQoSlNTdHJpbmdS
ZWYsIEpTU3RyaW5nUmVmLCBKU1N0cmluZ1JlZikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
fQotCiB2b2lkIFRlc3RSdW5uZXI6OnNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbChkb3Vi
bGUpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdERlbGVnYXRl
LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJU
ZXN0RGVsZWdhdGUuaAppbmRleCBmMzZkNTBkZjk2MGYyYmYwMzNkYzA4MzNiNDUxZDYzNTFiZWM3
MDk2Li43YTA2M2EzZTBhMGE3Y2Y5MmUyYzZjNzcwMTYxNDVlZjUxMGVjODc4IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0
RGVsZWdhdGUuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaApAQCAtMzksNyArMzksNiBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbjsKIGNsYXNzIFdlYkdhbWVwYWRzOwot
Y2xhc3MgV2ViSW50ZW50UmVxdWVzdDsKIHN0cnVjdCBXZWJSZWN0Owogc3RydWN0IFdlYlVSTEVy
cm9yOwogfQpAQCAtNzIsOCArNzEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJLaXQ6Oldl
YlVSTCByZXdyaXRlTGF5b3V0VGVzdHNVUkwoY29uc3Qgc3RkOjpzdHJpbmcmKSB7IHJldHVybiBX
ZWJLaXQ6OldlYlVSTCgpOyB9CiAgICAgdmlydHVhbCBXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5j
ZXMoKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5UHJlZmVyZW5jZXMoKSB7
IH07Ci0gICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRXZWJJbnRlbnRSZXF1ZXN0KGNvbnN0IFdl
YktpdDo6V2ViSW50ZW50UmVxdWVzdCYpIHsgfTsKLSAgICB2aXJ0dWFsIFdlYktpdDo6V2ViSW50
ZW50UmVxdWVzdCogY3VycmVudFdlYkludGVudFJlcXVlc3QoKSB7IHJldHVybiAwOyB9CiAgICAg
dmlydHVhbCBzdGQ6OnN0cmluZyBtYWtlVVJMRXJyb3JEZXNjcmlwdGlvbihjb25zdCBXZWJLaXQ6
OldlYlVSTEVycm9yJikgeyByZXR1cm4gc3RkOjpzdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBzZXRDbGllbnRXaW5kb3dSZWN0KGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBzaG93RGV2VG9vbHMoKSB7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5LmgK
aW5kZXggOTA2MjQ1YmRjNDhlZjY2MTkyOTA2ZDU0Y2JiOGFmZGE4OWQzYmYxZC4uYTg5MzQ0YTM1
Mjc5ZjA3MzRiOTQyNTc5ZjhkZWMwOTMxYWZiNWRjYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5LmgKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFBy
b3h5LmgKQEAgLTU0LDggKzU0LDYgQEAgY2xhc3MgV2ViRGF0YVNvdXJjZTsKIGNsYXNzIFdlYkRy
YWdEYXRhOwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJbWFnZTsKLWNsYXNzIFdlYkludGVu
dFJlcXVlc3Q7Ci1jbGFzcyBXZWJJbnRlbnRTZXJ2aWNlSW5mbzsKIGNsYXNzIFdlYk5vZGU7CiBj
bGFzcyBXZWJQbHVnaW47CiBjbGFzcyBXZWJSYW5nZTsKQEAgLTEyMCw4ICsxMTgsNiBAQCBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oYm9vbCBpc0VtcHR5U2VsZWN0aW9u
KTsKICAgICB2b2lkIGRpZENoYW5nZUNvbnRlbnRzKCk7CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5n
KCk7Ci0gICAgdm9pZCByZWdpc3RlckludGVudFNlcnZpY2UoV2ViS2l0OjpXZWJGcmFtZSosIGNv
bnN0IFdlYktpdDo6V2ViSW50ZW50U2VydmljZUluZm8mKTsKLSAgICB2b2lkIGRpc3BhdGNoSW50
ZW50KFdlYktpdDo6V2ViRnJhbWUqIHNvdXJjZSwgY29uc3QgV2ViS2l0OjpXZWJJbnRlbnRSZXF1
ZXN0Jik7CiAgICAgYm9vbCBjcmVhdGVWaWV3KFdlYktpdDo6V2ViRnJhbWUqIGNyZWF0b3IsIGNv
bnN0IFdlYktpdDo6V2ViVVJMUmVxdWVzdCYsIGNvbnN0IFdlYktpdDo6V2ViV2luZG93RmVhdHVy
ZXMmLCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgZnJhbWVOYW1lLCBXZWJLaXQ6OldlYk5hdmln
YXRpb25Qb2xpY3kpOwogICAgIFdlYktpdDo6V2ViUGx1Z2luKiBjcmVhdGVQbHVnaW4oV2ViS2l0
OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViUGx1Z2luUGFyYW1zJik7CiAgICAgdm9pZCBz
ZXRTdGF0dXNUZXh0KGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJik7CkBAIC0yOTAsMTYgKzI4Niw2
IEBAIHB1YmxpYzoKICAgICAgICAgV2ViVGVzdFByb3h5QmFzZTo6ZGlkRW5kRWRpdGluZygpOwog
ICAgICAgICBCYXNlOjpkaWRFbmRFZGl0aW5nKCk7CiAgICAgfQotICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3RlckludGVudFNlcnZpY2UoV2ViS2l0OjpXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFdlYktp
dDo6V2ViSW50ZW50U2VydmljZUluZm8mIHNlcnZpY2UpCi0gICAgewotICAgICAgICBXZWJUZXN0
UHJveHlCYXNlOjpyZWdpc3RlckludGVudFNlcnZpY2UoZnJhbWUsIHNlcnZpY2UpOwotICAgICAg
ICBCYXNlOjpyZWdpc3RlckludGVudFNlcnZpY2UoZnJhbWUsIHNlcnZpY2UpOwotICAgIH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnRlbnQoV2ViS2l0OjpXZWJGcmFtZSogc291cmNlLCBj
b25zdCBXZWJLaXQ6OldlYkludGVudFJlcXVlc3QmIHJlcXVlc3QpCi0gICAgewotICAgICAgICBX
ZWJUZXN0UHJveHlCYXNlOjpkaXNwYXRjaEludGVudChzb3VyY2UsIHJlcXVlc3QpOwotICAgICAg
ICBCYXNlOjpkaXNwYXRjaEludGVudChzb3VyY2UsIHJlcXVlc3QpOwotICAgIH0KICAgICB2aXJ0
dWFsIFdlYktpdDo6V2ViVmlldyogY3JlYXRlVmlldyhXZWJLaXQ6OldlYkZyYW1lKiBjcmVhdG9y
LCBjb25zdCBXZWJLaXQ6OldlYlVSTFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYktpdDo6V2Vi
V2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgZnJhbWVO
YW1lLCBXZWJLaXQ6OldlYk5hdmlnYXRpb25Qb2xpY3kgcG9saWN5KQogICAgIHsKICAgICAgICAg
aWYgKCFXZWJUZXN0UHJveHlCYXNlOjpjcmVhdGVWaWV3KGNyZWF0b3IsIHJlcXVlc3QsIGZlYXR1
cmVzLCBmcmFtZU5hbWUsIHBvbGljeSkpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDFlNTQ4
OGExM2JkNTFiZDk5MmU1OTE5OThmOWMwYzQzNmQ0Y2YwNzQuLjc0ZjQ0MmIzZGYzOTBmYTI5Njk3
ZTM5MmIzM2I3NWNkNWQ5YzZkMjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCkBAIC00MSw4ICs0
MSw2IEBACiAjaW5jbHVkZSAiV2ViRmluZE9wdGlvbnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5o
IgogI2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5oIgotI2luY2x1ZGUgIldlYkludGVudC5oIgot
I2luY2x1ZGUgIldlYkludGVudFJlcXVlc3QuaCIKICNpbmNsdWRlICJXZWJQZXJtaXNzaW9ucy5o
IgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0U291cmNl
LmgiCkBAIC03MCwxNiArNjgsNiBAQCBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKIG5hbWVz
cGFjZSB7CiAKLWNsYXNzIEVtcHR5V2ViRGVsaXZlcmVkSW50ZW50Q2xpZW50IDogcHVibGljIFdl
YkRlbGl2ZXJlZEludGVudENsaWVudCB7Ci1wdWJsaWM6Ci0gICAgRW1wdHlXZWJEZWxpdmVyZWRJ
bnRlbnRDbGllbnQoKSB7IH0KLSAgICB+RW1wdHlXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQoKSB7
IH0KLQotICAgIHZpcnR1YWwgdm9pZCBwb3N0UmVzdWx0KGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSYgZGF0YSkgY29uc3QgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RGYWlsdXJlKGNv
bnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgZGF0YSkgY29uc3QgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIGRlc3Ryb3koKSB7IH0KLX07Ci0KIGNsYXNzIEludm9rZUNhbGxiYWNrVGFzayA6IHB1
YmxpYyBXZWJNZXRob2RUYXNrPFRlc3RSdW5uZXI+IHsKIHB1YmxpYzoKICAgICBJbnZva2VDYWxs
YmFja1Rhc2soVGVzdFJ1bm5lciogb2JqZWN0LCBhdXRvX3B0cjxDcHBWYXJpYW50PiBjYWxsYmFj
a0FyZ3VtZW50cykKQEAgLTE1Niw3ICsxNDQsNiBAQCBUZXN0UnVubmVyOjpUZXN0UnVubmVyKCkK
ICAgICAsIG1fd29ya1F1ZXVlKHRoaXMpCiAgICAgLCBtX2RlbGVnYXRlKDApCiAgICAgLCBtX3dl
YlZpZXcoMCkKLSAgICAsIG1faW50ZW50Q2xpZW50KG5ldyBFbXB0eVdlYkRlbGl2ZXJlZEludGVu
dENsaWVudCkKICAgICAsIG1fd2ViUGVybWlzc2lvbnMobmV3IFdlYlBlcm1pc3Npb25zKQogewog
ICAgIC8vIEluaXRpYWxpemUgdGhlIG1hcCB0aGF0IGFzc29jaWF0ZXMgbWV0aG9kcyBvZiB0aGlz
IGNsYXNzIHdpdGggdGhlIG5hbWVzCkBAIC0yNzAsMTEgKzI1Nyw2IEBAIFRlc3RSdW5uZXI6OlRl
c3RSdW5uZXIoKQogICAgIGJpbmRNZXRob2QoInNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxs
T25SZWRpcmVjdCIsICZUZXN0UnVubmVyOjpzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9u
UmVkaXJlY3QpOwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBtZXRob2RzIGludGVyYWN0IHdpdGgg
dGhlIFdlYlRlc3RQcm94eS4KLSNpZiBFTkFCTEVfV0VCX0lOVEVOVFMKLSAgICBiaW5kTWV0aG9k
KCJzZW5kV2ViSW50ZW50UmVzcG9uc2UiLCAmVGVzdFJ1bm5lcjo6c2VuZFdlYkludGVudFJlc3Bv
bnNlKTsKLSAgICBiaW5kTWV0aG9kKCJkZWxpdmVyV2ViSW50ZW50IiwgJlRlc3RSdW5uZXI6OmRl
bGl2ZXJXZWJJbnRlbnQpOwotI2VuZGlmCi0KICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMg
aW50ZXJhY3Qgd2l0aCB0aGUgV2ViVGVzdERlbGVnYXRlLgogICAgIGJpbmRNZXRob2QoInNob3dX
ZWJJbnNwZWN0b3IiLCAmVGVzdFJ1bm5lcjo6c2hvd1dlYkluc3BlY3Rvcik7CiAgICAgYmluZE1l
dGhvZCgiY2xvc2VXZWJJbnNwZWN0b3IiLCAmVGVzdFJ1bm5lcjo6Y2xvc2VXZWJJbnNwZWN0b3Ip
OwpAQCAtMTY2Myw1MCArMTY0NSw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VG91Y2hEcmFnRHJv
cEVuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhCiAgICAgcmVz
dWx0LT5zZXROdWxsKCk7CiB9CiAKLSNpZiBFTkFCTEVfV0VCX0lOVEVOVFMKLXZvaWQgVGVzdFJ1
bm5lcjo6c2VuZFdlYkludGVudFJlc3BvbnNlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1l
bnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCi17Ci0gICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwot
ICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY3R4ID0gbV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+
bWFpbldvcmxkU2NyaXB0Q29udGV4dCgpOwotICAgIHJlc3VsdC0+c2V0KG1fd2ViVmlldy0+bWFp
bkZyYW1lKCktPnNlbGVjdGlvbkFzTWFya3VwKCkudXRmOCgpKTsKLSAgICB2ODo6Q29udGV4dDo6
U2NvcGUgY3Njb3BlKGN0eCk7Ci0KLSAgICBXZWJJbnRlbnRSZXF1ZXN0KiByZXF1ZXN0ID0gbV9k
ZWxlZ2F0ZS0+Y3VycmVudFdlYkludGVudFJlcXVlc3QoKTsKLSAgICBpZiAocmVxdWVzdC0+aXNO
dWxsKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID09IDEp
IHsKLSAgICAgICAgV2ViQ1N0cmluZyByZXBseSA9IGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1
bWVudHNbMF0pLnV0ZjgoKTsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4dmFsdWUg
PSB2ODo6U3RyaW5nOjpOZXcocmVwbHkuZGF0YSgpLCByZXBseS5sZW5ndGgoKSk7Ci0gICAgICAg
IHJlcXVlc3QtPnBvc3RSZXN1bHQoV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpzZXJpYWxpemUo
djh2YWx1ZSkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
OHZhbHVlID0gdjg6OlN0cmluZzo6TmV3KCJFUlJPUiIpOwotICAgICAgICByZXF1ZXN0LT5wb3N0
RmFpbHVyZShXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnNlcmlhbGl6ZSh2OHZhbHVlKSk7Ci0g
ICAgfQotICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotfQotCi12b2lkIFRlc3RSdW5uZXI6OmRlbGl2
ZXJXZWJJbnRlbnQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQq
IHJlc3VsdCkKLXsKLSAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8ICAzKQotICAgICAgICByZXR1
cm47Ci0KLSAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAgdjg6OkxvY2FsPHY4OjpDb250
ZXh0PiBjdHggPSBtX3dlYlZpZXctPm1haW5GcmFtZSgpLT5tYWluV29ybGRTY3JpcHRDb250ZXh0
KCk7Ci0gICAgcmVzdWx0LT5zZXQobV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+c2VsZWN0aW9uQXNN
YXJrdXAoKS51dGY4KCkpOwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBjc2NvcGUoY3R4KTsKLQot
ICAgIFdlYlN0cmluZyBhY3Rpb24gPSBjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzBd
KTsKLSAgICBXZWJTdHJpbmcgdHlwZSA9IGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNb
MV0pOwotICAgIFdlYkNTdHJpbmcgZGF0YSA9IGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVu
dHNbMl0pLnV0ZjgoKTsKLSAgICBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUgc2VyaWFsaXplZERh
dGEgPSBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnNlcmlhbGl6ZSh2ODo6U3RyaW5nOjpOZXco
ZGF0YS5kYXRhKCksIGRhdGEubGVuZ3RoKCkpKTsKLQotICAgIFdlYkludGVudCBpbnRlbnQgPSBX
ZWJJbnRlbnQ6OmNyZWF0ZShhY3Rpb24sIHR5cGUsIHNlcmlhbGl6ZWREYXRhLnRvU3RyaW5nKCks
IFdlYlZlY3RvcjxXZWJTdHJpbmc+KCksIFdlYlZlY3RvcjxXZWJTdHJpbmc+KCkpOwotCi0gICAg
bV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+ZGVsaXZlckludGVudChpbnRlbnQsIDAsIG1faW50ZW50
Q2xpZW50LmdldCgpKTsKLX0KLSNlbmRpZgotCiB2b2lkIFRlc3RSdW5uZXI6OnNob3dXZWJJbnNw
ZWN0b3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAg
IHNob3dEZXZUb29scygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCmluZGV4IDhlMzUzYWI3MjdkZjE5Mjgy
YmI2Mjg0MDBjNTgwZWU4MmZhN2RlNWUuLmRhMDAyMDNiNGE4MDFlZmVmODgzNDNhMmZjOGE2MTFm
MWNkZWM0MDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRl
ICJDcHBCb3VuZENsYXNzLmgiCiAjaW5jbHVkZSAiVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIldl
YkFycmF5QnVmZmVyVmlldy5oIgotI2luY2x1ZGUgIldlYkRlbGl2ZXJlZEludGVudENsaWVudC5o
IgogI2luY2x1ZGUgIldlYlRhc2suaCIKICNpbmNsdWRlICJXZWJUZXN0UnVubmVyLmgiCiAjaW5j
bHVkZSAiV2ViVGV4dERpcmVjdGlvbi5oIgpAQCAtNDE5LDE1ICs0MTgsNiBAQCBwcml2YXRlOgog
ICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgIC8vIE1ldGhvZHMgaW50ZXJhY3Rpbmcgd2l0aCB0
aGUgV2ViVGVzdFByb3h5CiAKLSNpZiBFTkFCTEVfV0VCX0lOVEVOVFMKLSAgICAvLyBFeHBlY3Rz
IG9uZSBzdHJpbmcgYXJndW1lbnQgZm9yIHNlbmRpbmcgc3VjY2Vzc2Z1bCByZXN1bHQsIHplcm8K
LSAgICAvLyBhcmd1bWVudHMgZm9yIHNlbmRpbmcgYSBmYWlsdXJlIHJlc3VsdC4KLSAgICB2b2lk
IHNlbmRXZWJJbnRlbnRSZXNwb25zZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
Kik7Ci0KLSAgICAvLyBDYXVzZSB0aGUgd2ViIGludGVudCB0byBiZSBkZWxpdmVyZWQgdG8gdGhp
cyBjb250ZXh0LgotICAgIHZvaWQgZGVsaXZlcldlYkludGVudChjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpYW50Kik7Ci0jZW5kaWYKLQogICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAg
IC8vIE1ldGhvZHMgZm9yd2FyZGluZyB0byB0aGUgV2ViVGVzdERlbGVnYXRlCiAKQEAgLTY2OCw5
ICs2NTgsNiBAQCBwcml2YXRlOgogICAgIC8vIFRoaXMgaXMgbm9uLTAgSUZGIGEgbG9hZCBpcyBp
biBwcm9ncmVzcy4KICAgICBXZWJLaXQ6OldlYkZyYW1lKiBtX3RvcExvYWRpbmdGcmFtZTsKIAot
ICAgIC8vIE1vY2sgb2JqZWN0IGZvciB0ZXN0aW5nIGRlbGl2ZXJpbmcgd2ViIGludGVudHMuCi0g
ICAgc3RkOjphdXRvX3B0cjxXZWJLaXQ6OldlYkRlbGl2ZXJlZEludGVudENsaWVudD4gbV9pbnRl
bnRDbGllbnQ7Ci0KICAgICAvLyBXZWJQZXJtaXNzaW9uQ2xpZW50IG1vY2sgb2JqZWN0LgogICAg
IHN0ZDo6YXV0b19wdHI8V2ViUGVybWlzc2lvbnM+IG1fd2ViUGVybWlzc2lvbnM7CiB9OwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2Vi
VGVzdFByb3h5LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1dlYlRlc3RQcm94eS5jcHAKaW5kZXggMGUwNGU5NWQwY2E1ODIxMTJmMWU4ZDlhYTZmYWI5
YWUwMDc5MzFiMy4uMzI5MTM1NjZmZWNhNWQxYTkwYzk5NzNhN2U3NDFmYzIyNWVkNjMwNiAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2Vi
VGVzdFByb3h5LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwCkBAIC00NSw5ICs0NSw2IEBACiAjaW5jbHVkZSAiV2Vi
RGF0YVNvdXJjZS5oIgogI2luY2x1ZGUgIldlYkVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJGcmFt
ZS5oIgotI2luY2x1ZGUgIldlYkludGVudC5oIgotI2luY2x1ZGUgIldlYkludGVudFJlcXVlc3Qu
aCIKLSNpbmNsdWRlICJXZWJJbnRlbnRTZXJ2aWNlSW5mby5oIgogI2luY2x1ZGUgIldlYk5vZGUu
aCIKICNpbmNsdWRlICJXZWJQbHVnaW5QYXJhbXMuaCIKICNpbmNsdWRlICJXZWJSYW5nZS5oIgpA
QCAtNTUzLDQxICs1NTAsNiBAQCB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OmRpZEVuZEVkaXRpbmco
KQogICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2UoIkVESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRFbmRFZGl0aW5nOldlYlZpZXdEaWRFbmRFZGl0aW5nTm90aWZpY2F0aW9uXG4iKTsK
IH0KIAotdm9pZCBXZWJUZXN0UHJveHlCYXNlOjpyZWdpc3RlckludGVudFNlcnZpY2UoV2ViRnJh
bWUqLCBjb25zdCBXZWJJbnRlbnRTZXJ2aWNlSW5mbyYgc2VydmljZSkKLXsKLSNpZiBFTkFCTEVf
V0VCX0lOVEVOVFMKLSAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2Uoc3RyaW5nKCJSZWdpc3Rl
cmVkIFdlYiBJbnRlbnQgU2VydmljZTogYWN0aW9uPSIpICsgc2VydmljZS5hY3Rpb24oKS51dGY4
KCkuZGF0YSgpICsgIiB0eXBlPSIgKyBzZXJ2aWNlLnR5cGUoKS51dGY4KCkuZGF0YSgpICsgIiB0
aXRsZT0iICsgc2VydmljZS50aXRsZSgpLnV0ZjgoKS5kYXRhKCkgKyAiIHVybD0iICsgc2Vydmlj
ZS51cmwoKS5zcGVjKCkuZGF0YSgpICsgIiBkaXNwb3NpdGlvbj0iICsgc2VydmljZS5kaXNwb3Np
dGlvbigpLnV0ZjgoKS5kYXRhKCkgKyAiXG4iKTsKLSNlbmRpZgotfQotCi12b2lkIFdlYlRlc3RQ
cm94eUJhc2U6OmRpc3BhdGNoSW50ZW50KFdlYkZyYW1lKiBzb3VyY2UsIGNvbnN0IFdlYkludGVu
dFJlcXVlc3QmIHJlcXVlc3QpCi17Ci0jaWYgRU5BQkxFX1dFQl9JTlRFTlRTCi0gICAgbV9kZWxl
Z2F0ZS0+cHJpbnRNZXNzYWdlKHN0cmluZygiUmVjZWl2ZWQgV2ViIEludGVudDogYWN0aW9uPSIp
ICsgcmVxdWVzdC5pbnRlbnQoKS5hY3Rpb24oKS51dGY4KCkuZGF0YSgpICsgIiB0eXBlPSIgKyBy
ZXF1ZXN0LmludGVudCgpLnR5cGUoKS51dGY4KCkuZGF0YSgpICsgIlxuIik7Ci0gICAgV2ViTWVz
c2FnZVBvcnRDaGFubmVsQXJyYXkqIHBvcnRzID0gcmVxdWVzdC5pbnRlbnQoKS5tZXNzYWdlUG9y
dENoYW5uZWxzUmVsZWFzZSgpOwotICAgIG1fZGVsZWdhdGUtPnNldEN1cnJlbnRXZWJJbnRlbnRS
ZXF1ZXN0KHJlcXVlc3QpOwotICAgIGlmIChwb3J0cykgewotICAgICAgICBjaGFyIGRhdGFbMTAw
XTsKLSAgICAgICAgc25wcmludGYoZGF0YSwgc2l6ZW9mKGRhdGEpLCAiSGF2ZSAlZCBwb3J0c1xu
Iiwgc3RhdGljX2Nhc3Q8aW50Pihwb3J0cy0+c2l6ZSgpKSk7Ci0gICAgICAgIG1fZGVsZWdhdGUt
PnByaW50TWVzc2FnZShkYXRhKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwb3J0
cy0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAoKnBvcnRzKVtpXS0+ZGVzdHJveSgpOwotICAg
ICAgICBkZWxldGUgcG9ydHM7Ci0gICAgfQotCi0gICAgaWYgKCFyZXF1ZXN0LmludGVudCgpLnNl
cnZpY2UoKS5pc0VtcHR5KCkpCi0gICAgICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZShzdHJp
bmcoIkV4cGxpY2l0IGludGVudCBzZXJ2aWNlOiAiKSArIHJlcXVlc3QuaW50ZW50KCkuc2Vydmlj
ZSgpLnNwZWMoKS5kYXRhKCkgKyAiXG4iKTsKLQotICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IGV4
dHJhcyA9IHJlcXVlc3QuaW50ZW50KCkuZXh0cmFzTmFtZXMoKTsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGV4dHJhcy5zaXplKCk7ICsraSkKLSAgICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRN
ZXNzYWdlKHN0cmluZygiRXh0cmFzWyIpICsgZXh0cmFzW2ldLnV0ZjgoKS5kYXRhKCkgKyAiXSA9
ICIgKyByZXF1ZXN0LmludGVudCgpLmV4dHJhc1ZhbHVlKGV4dHJhc1tpXSkudXRmOCgpLmRhdGEo
KSArICJcbiIpOwotCi0gICAgV2ViVmVjdG9yPFdlYlVSTD4gc3VnZ2VzdGlvbnMgPSByZXF1ZXN0
LmludGVudCgpLnN1Z2dlc3Rpb25zKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdWdn
ZXN0aW9ucy5zaXplKCk7ICsraSkKLSAgICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKHN0
cmluZygiSGF2ZSBzdWdnZXN0aW9uICIpICsgc3VnZ2VzdGlvbnNbaV0uc3BlYygpLmRhdGEoKSAr
ICJcbiIpOwotI2VuZGlmCi19Ci0KIGJvb2wgV2ViVGVzdFByb3h5QmFzZTo6Y3JlYXRlVmlldyhX
ZWJGcmFtZSosIGNvbnN0IFdlYlVSTFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYldpbmRvd0Zl
YXR1cmVzJiwgY29uc3QgV2ViU3RyaW5nJiwgV2ViTmF2aWdhdGlvblBvbGljeSkKIHsKICAgICBp
ZiAoIW1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKS0+Y2FuT3BlbldpbmRvd3MoKSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCA5N2Ux
NjhjYTYxYjU5YjNhYzM3MTE1NjUwMmNkMjVmOTA4Y2JhZmVkLi42ZDU5NjlkZTAxZTBmNTE5YTg3
OGUwN2Y4NDY5N2U4ZDJjODU5Yzg4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuY3BwCkBAIC03MDQsMTggKzcwNCw2IEBAIHZvaWQgV2ViVmlld0hvc3Q6
OmFwcGx5UHJlZmVyZW5jZXMoKQogICAgIG1fc2hlbGwtPmFwcGx5UHJlZmVyZW5jZXMoKTsKIH0K
IAotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLXZvaWQgV2ViVmlld0hvc3Q6OnNldEN1cnJlbnRX
ZWJJbnRlbnRSZXF1ZXN0KGNvbnN0IFdlYkludGVudFJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAg
bV9jdXJyZW50UmVxdWVzdCA9IHJlcXVlc3Q7Ci19Ci0KLVdlYkludGVudFJlcXVlc3QqIFdlYlZp
ZXdIb3N0OjpjdXJyZW50V2ViSW50ZW50UmVxdWVzdCgpCi17Ci0gICAgcmV0dXJuICZtX2N1cnJl
bnRSZXF1ZXN0OwotfQotI2VuZGlmCi0KIHN0ZDo6c3RyaW5nIFdlYlZpZXdIb3N0OjptYWtlVVJM
RXJyb3JEZXNjcmlwdGlvbihjb25zdCBXZWJLaXQ6OldlYlVSTEVycm9yJiBlcnJvcikKIHsKICAg
ICByZXR1cm4gd2Via2l0X3N1cHBvcnQ6Ok1ha2VVUkxFcnJvckRlc2NyaXB0aW9uKGVycm9yKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0Lmgg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCmluZGV4IDVhNzg3
MTY0ZjYxZDZkNWY1OTJjMjFlOWNlNjQ2Y2VhY2NhMjUzNjMuLjVhZmY1NjM2ODg4N2ZlYzk0M2Zj
YTc1OWYwM2IwZTI0YzE0OGU1ZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuaApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIlRlc3ROYXZpZ2F0aW9u
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldlYkN1cnNvckluZm8uaCIKICNpbmNsdWRlICJXZWJG
cmFtZUNsaWVudC5oIgotI2luY2x1ZGUgIldlYkludGVudFJlcXVlc3QuaCIKICNpbmNsdWRlICJX
ZWJQcmVyZW5kZXJlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYlRhc2suaCIKICNpbmNsdWRlICJX
ZWJUZXN0RGVsZWdhdGUuaCIKQEAgLTEyMiwxMCArMTIxLDYgQEAgY2xhc3MgV2ViVmlld0hvc3Qg
OiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNs
aWVudCwKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViVVJMIHJld3JpdGVMYXlvdXRUZXN0c1VSTChj
b25zdCBzdGQ6OnN0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViVGVzdFJ1bm5lcjo6
V2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGFwcGx5UHJlZmVyZW5jZXMoKSBPVkVSUklERTsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0g
ICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRXZWJJbnRlbnRSZXF1ZXN0KGNvbnN0IFdlYktpdDo6
V2ViSW50ZW50UmVxdWVzdCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJJbnRl
bnRSZXF1ZXN0KiBjdXJyZW50V2ViSW50ZW50UmVxdWVzdCgpIE9WRVJSSURFOwotI2VuZGlmCiAg
ICAgdmlydHVhbCBzdGQ6OnN0cmluZyBtYWtlVVJMRXJyb3JEZXNjcmlwdGlvbihjb25zdCBXZWJL
aXQ6OldlYlVSTEVycm9yJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldENsaWVudFdp
bmRvd1JlY3QoY29uc3QgV2ViS2l0OjpXZWJSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHNob3dEZXZUb29scygpIE9WRVJSSURFOwpAQCAtMzg4LDExICszODMsNiBAQCBwcml2YXRl
OgogICAgIH0gbV9wb2ludGVyTG9ja1BsYW5uZWRSZXN1bHQ7CiAjZW5kaWYKIAotI2lmIEVOQUJM
RShXRUJfSU5URU5UUykKLSAgICAvLyBGb3Igd2ViIGludGVudHM6IGhvbGRzIHRoZSBjdXJyZW50
IHJlcXVlc3QsIGlmIGFueS4KLSAgICBXZWJLaXQ6OldlYkludGVudFJlcXVlc3QgbV9jdXJyZW50
UmVxdWVzdDsKLSNlbmRpZgotCiAgICAgT3duUHRyPFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldz4g
bV9sYXllclRyZWVWaWV3OwogfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
ZWZsL1Rlc3RSdW5uZXJFZmwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5u
ZXJFZmwuY3BwCmluZGV4IDU4MGM1MDBkZTk2ZDJjMzdjYjE3ODY2ZWQ2ZjY4NTJlYWRiZjcxYWIu
LmY5YjEzNzA5YzliMjJjOGQwYWEzMjAxY2Y3NTc1MGJlM2Q5NGY0M2IgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAKQEAgLTg4MSwyMCArODgxLDYgQEAgdm9p
ZCBUZXN0UnVubmVyOjpzZXRBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZChib29sKQogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2VuZFdlYkludGVudFJl
c3BvbnNlKEpTU3RyaW5nUmVmKQotewotICAgIC8vIE5vIHBsYW4gdG8gc3VwcG9ydCBXZWIgSW50
ZW50cy4gVGhlIGZlYXR1cmUgd2lsbCBsaWtlbHkKLSAgICAvLyBiZSByZW1vdmVkIGZyb20gV2Vi
S2l0LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgVGVzdFJ1bm5lcjo6ZGVsaXZl
cldlYkludGVudChKU1N0cmluZ1JlZiwgSlNTdHJpbmdSZWYsIEpTU3RyaW5nUmVmKQotewotICAg
IC8vIE5vIHBsYW4gdG8gc3VwcG9ydCBXZWIgSW50ZW50cy4gVGhlIGZlYXR1cmUgd2lsbCBsaWtl
bHkKLSAgICAvLyBiZSByZW1vdmVkIGZyb20gV2ViS2l0LgotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKGRv
dWJsZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L1Rlc3RSdW5uZXJHdGsuY3BwCmluZGV4IGEyMzczYjY0ZmZhNWJhNDFiODFjYjlkY2I0NGQyYmQw
MDYwNjEwMzAuLmY5OTQ2ODkzODMxYTI3ZjRlZDJlMTdjYmRiODE5NWIwOTBhMmNhZWUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKQEAgLTk3NSwxNiArOTc1
LDYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZChi
b29sKQogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KIH0KIAotdm9pZCBUZXN0UnVubmVy
OjpzZW5kV2ViSW50ZW50UmVzcG9uc2UoSlNTdHJpbmdSZWYpCi17Ci0gICAgLy8gRklYTUU6IElt
cGxlbWVudCB0aGlzLgotfQotCi12b2lkIFRlc3RSdW5uZXI6OmRlbGl2ZXJXZWJJbnRlbnQoSlNT
dHJpbmdSZWYsIEpTU3RyaW5nUmVmLCBKU1N0cmluZ1JlZikKLXsKLSAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoaXMuCi19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RvcmFnZURhdGFiYXNlSWRs
ZUludGVydmFsKGRvdWJsZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCmluZGV4IDdkNjJiOGZhNTFmZGY0
ODkwZGYyZmRlYmNhN2YxMThkMTM2MjI3ODIuLjIyYjNiMmRiY2NkYjJkM2E0MTg2OWFmNTRmM2E3
MjU0ZTcyM2NmZmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1t
CkBAIC0xMTQ0LDE2ICsxMTQ0LDYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRQYWdlVmlzaWJpbGl0
eShjb25zdCBjaGFyKiBuZXdWaXNpYmlsaXR5KQogICAgICAgICBbd2ViVmlldyBfc2V0VmlzaWJp
bGl0eVN0YXRlOldlYlBhZ2VWaXNpYmlsaXR5U3RhdGVQcmV2aWV3IGlzSW5pdGlhbFN0YXRlOk5P
XTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZW5kV2ViSW50ZW50UmVzcG9uc2UoSlNTdHJpbmdS
ZWYpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudC4KLX0KLQotdm9pZCBUZXN0UnVubmVyOjpk
ZWxpdmVyV2ViSW50ZW50KEpTU3RyaW5nUmVmLCBKU1N0cmluZ1JlZiwgSlNTdHJpbmdSZWYpCi17
Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudC4KLX0KLQogdm9pZCBUZXN0UnVubmVyOjpncmFudFdl
Yk5vdGlmaWNhdGlvblBlcm1pc3Npb24oSlNTdHJpbmdSZWYganNPcmlnaW4pCiB7CiAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBjZk9yaWdpbihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmlu
ZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc09yaWdpbikpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL1Rlc3RSdW5uZXJXaW4uY3BwCmluZGV4IGZmYzFhN2NlNzJiNjZkZDY5OTkxMTlhN2M4Y2I3
ODc2Yzc3NWRiNjguLmE4ZjY2Y2RkMTg2ZDM2Y2ZiZmQ0MmZjZGEzY2FmNzIyZGU3ODIwNWIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKQEAgLTEzNDQsMTYg
KzEzNDQsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFi
bGVkKGJvb2wpCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgogfQogCi12b2lkIFRlc3RS
dW5uZXI6OnNlbmRXZWJJbnRlbnRSZXNwb25zZShKU1N0cmluZ1JlZikKLXsKLSAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMuCi19Ci0KLXZvaWQgVGVzdFJ1bm5lcjo6ZGVsaXZlcldlYkludGVu
dChKU1N0cmluZ1JlZiwgSlNTdHJpbmdSZWYsIEpTU3RyaW5nUmVmKQotewotICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgdGhpcy4KLX0KLQogdm9pZCBUZXN0UnVubmVyOjpzZXRTdG9yYWdlRGF0YWJh
c2VJZGxlSW50ZXJ2YWwoZG91YmxlKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3guY3BwCmluZGV4IDI2M2YwMzMxMmEy
NWM3YjI4NWFkYjM5ZjljYzM1Mjg0NGU5NmU3NzkuLjNhY2IxNjFjMWJlODRkZTgxNmFiNzA2YTU2
NDU0ODNiNmI5Y2M5OWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L1Rlc3RS
dW5uZXJXeC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5lcld4LmNw
cApAQCAtNTc0LDE2ICs1NzQsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEF1dG9tYXRpY0xpbmtE
ZXRlY3Rpb25FbmFibGVkKGJvb2wpCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgogfQog
Ci12b2lkIFRlc3RSdW5uZXI6OnNlbmRXZWJJbnRlbnRSZXNwb25zZShKU1N0cmluZ1JlZikKLXsK
LSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi19Ci0KLXZvaWQgVGVzdFJ1bm5lcjo6ZGVs
aXZlcldlYkludGVudChKU1N0cmluZ1JlZiwgSlNTdHJpbmdSZWYsIEpTU3RyaW5nUmVmKQotewot
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KLX0KLQogdm9pZCBUZXN0UnVubmVyOjpzZXRT
dG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwoZG91YmxlKQogewogICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgdGhpcy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJl
TGlzdC5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCA1
ODFiYzA3Yzg3Y2FlNmZkZGJhNTE3ZWM4ZTI5YzI1ZmE4ZjU2ZmE0Li5kZDUwZTE4OWRhYzU5MDRm
YTUwNWExY2M4NWNkYmFjY2FhNDY4MTNjIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHBlcmwvRmVhdHVyZUxpc3QucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1
cmVMaXN0LnBtCkBAIC0xNDcsOCArMTQ3LDYgQEAgbXkgKAogICAgICR2aWRlb1RyYWNrU3VwcG9y
dCwKICAgICAkd2ViZ2xTdXBwb3J0LAogICAgICR3ZWJBdWRpb1N1cHBvcnQsCi0gICAgJHdlYklu
dGVudHNTdXBwb3J0LAotICAgICR3ZWJJbnRlbnRzVGFnU3VwcG9ydCwKICAgICAkd2ViU29ja2V0
c1N1cHBvcnQsCiAgICAgJHdlYlRpbWluZ1N1cHBvcnQsCiAgICAgJHdvcmtlcnNTdXBwb3J0LApA
QCAtNDYxLDEyICs0NTksNiBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gIndl
Yi1hdWRpbyIsIGRlc2MgPT4gIlRvZ2dsZSBXZWIgQXVkaW8gc3VwcG9ydCIsCiAgICAgICBkZWZp
bmUgPT4gIkVOQUJMRV9XRUJfQVVESU8iLCBkZWZhdWx0ID0+IChpc0VmbCgpKSwgdmFsdWUgPT4g
XCR3ZWJBdWRpb1N1cHBvcnQgfSwKIAotICAgIHsgb3B0aW9uID0+ICJ3ZWItaW50ZW50cyIsIGRl
c2MgPT4gIlRvZ2dsZSBXZWIgSW50ZW50cyBzdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5B
QkxFX1dFQl9JTlRFTlRTIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJHdlYkludGVudHNTdXBw
b3J0IH0sCi0KLSAgICB7IG9wdGlvbiA9PiAid2ViLWludGVudHMtdGFnIiwgZGVzYyA9PiAiVG9n
Z2xlIFdlYiBJbnRlbnRzIFRhZyBzdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1dF
Ql9JTlRFTlRTX1RBRyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCR3ZWJJbnRlbnRzVGFnU3Vw
cG9ydCB9LAotCiAgICAgeyBvcHRpb24gPT4gIndlYi1zb2NrZXRzIiwgZGVzYyA9PiAiVG9nZ2xl
IFdlYiBTb2NrZXRzIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfV0VCX1NPQ0tF
VFMiLCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwkd2ViU29ja2V0c1N1cHBvcnQgfSwKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGU2NDlhYmI4ZGEwMTRlNzU0MTdlYjI1N2Y2YTk2OTNiMzgwNTU1ZDIuLjUwNDVlNjZkYWZj
YTNiMGFmZmFkZTBiMDM2MThjMDcxMTI5MWUyYzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAx
My0wMi0xMSAgTmljbyBXZWJlciAgPHRoYWtpc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVt
b3ZlIHdlYiBpbnRlbnRzIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwOTUwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFNlZSB0aHJlYWQgIlJlbW92aW5nIEVOQUJMRShXRUJfSU5URU5UUykgY29k
ZSIgb24gd2Via2l0LWRldi4KKworICAgICAgICAqIHdlYmludGVudHMvaW50ZW50LXRhZy1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViaW50ZW50cy9pbnRlbnQtdGFnLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViaW50ZW50cy9yZXNvdXJjZXMvcGFzcy5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmludGVudHMvcmVzb3VyY2VzL3dlYi1pbnRlbnRzLXJlbG9hZC1v
cmlnLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViaW50ZW50cy9yZXNvdXJjZXMvd2ViLWlu
dGVudHMtdGVzdGluZy5qczogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJpbnRlbnRzL3dlYi1pbnRl
bnRzLWFwaS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViaW50ZW50cy93ZWIt
aW50ZW50cy1hcGkuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJpbnRlbnRzL3dlYi1pbnRl
bnRzLWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJpbnRlbnRz
L3dlYi1pbnRlbnRzLWRlbGl2ZXJ5LXJldXNlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWRlbGl2ZXJ5LXJldXNlLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogd2ViaW50ZW50cy93ZWItaW50ZW50cy1kZWxpdmVyeS5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmludGVudHMvd2ViLWludGVudHMtZmFpbHVyZS1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisgICAgICAgICogd2ViaW50ZW50cy93ZWItaW50ZW50cy1mYWlsdXJlLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogd2ViaW50ZW50cy93ZWItaW50ZW50cy1pbnZva2UtZXhwZWN0
ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmludGVudHMvd2ViLWludGVudHMtaW52b2tl
LXBvcnQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmludGVudHMvd2ViLWlu
dGVudHMtaW52b2tlLXBvcnQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJpbnRlbnRzL3dl
Yi1pbnRlbnRzLWludm9rZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmludGVudHMvd2Vi
LWludGVudHMtb2JqLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLW9iai1jb25zdHJ1Y3Rvci5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYmludGVudHMvd2ViLWludGVudHMtcmVsb2FkLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLXJlbG9hZC5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIHdlYmludGVudHMvd2ViLWludGVudHMtcmVwbHktZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmludGVudHMvd2ViLWludGVudHMtcmVwbHkuaHRtbDog
UmVtb3ZlZC4KKwogMjAxMy0wMi0xMCAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcuIFJlYmFzZWxpbmVkIGFuIGltYWdl
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy9pbnRlbnQtdGFnLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3dlYmludGVudHMvaW50ZW50LXRhZy1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxMmVlM2UwMjEwOTUyZDAwY2IxZjJjNWI4Njlh
YWNjOWRmMjJmMDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy9pbnRlbnQtdGFnLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDggKzAsMCBAQAotUmVnaXN0ZXJlZCBXZWIgSW50ZW50IFNlcnZpY2U6IGFj
dGlvbj1hY3Rpb24gdHlwZT10eXBlIHRpdGxlPVRpdGxlIHVybD1odHRwOi8vZXhhbXBsZS5jb20v
c2VydmljZSBkaXNwb3NpdGlvbj1pbmxpbmUKLVJlZ2lzdGVyZWQgV2ViIEludGVudCBTZXJ2aWNl
OiBhY3Rpb249YSB0eXBlPXQgdGl0bGU9RHluYW1pYyBUaXRsZSB1cmw9aHR0cDovL2V4YW1wbGUu
Y29tL2R5bmFtaWMgZGlzcG9zaXRpb249d2luZG93Ci1SZWdpc3RlcmVkIFdlYiBJbnRlbnQgU2Vy
dmljZTogYWN0aW9uPWFhIHR5cGU9YmIgdGl0bGU9Y2MgdXJsPWh0dHA6Ly9leGFtcGxlLmNvbS9p
bm5lcmh0bWwgZGlzcG9zaXRpb249aW5saW5lCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCi0KLVRFU1QgQ09NUExFVEUKLVJlZ2lzdGVyZWQgSW50ZW50IFNlcnZpY2UuCi0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmludGVudHMvaW50ZW50LXRhZy5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViaW50ZW50cy9pbnRlbnQtdGFnLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDRjYzJhNGY2MWU1NmFmYzE0Y2M0YjllZDE1ZGNjM2MxNTJlZjdlZjguLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50
cy9pbnRlbnQtdGFnLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi08aHRtbD4K
LTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiBsb2FkZWQoKSB7Ci0gICAgdmFyIGludGVu
dFRhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImludGVudCIpOwotICAgIGludGVudFRhZy5z
ZXRBdHRyaWJ1dGUoImFjdGlvbiIsICJhIik7Ci0gICAgaW50ZW50VGFnLnNldEF0dHJpYnV0ZSgi
dHlwZSIsICJ0Iik7Ci0gICAgaW50ZW50VGFnLnNldEF0dHJpYnV0ZSgiaHJlZiIsICJodHRwOi8v
ZXhhbXBsZS5jb20vZHluYW1pYyIpOwotICAgIGludGVudFRhZy5zZXRBdHRyaWJ1dGUoInRpdGxl
IiwgIkR5bmFtaWMgVGl0bGUiKTsKLSAgICBpbnRlbnRUYWcuc2V0QXR0cmlidXRlKCJkaXNwb3Np
dGlvbiIsICJ3aW5kb3ciKTsKLSAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGludGVudFRh
Zyk7Ci0KLSAgICB2YXIgZGl2VGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0g
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXZUYWcpOwotICAgIGRpdlRhZy5pbm5lckhU
TUwgPSAiPGludGVudCBhY3Rpb249XCJhYVwiIHR5cGU9XCJiYlwiIHRpdGxlPVwiY2NcIiBocmVm
PVwiaHR0cDovL2V4YW1wbGUuY29tL2lubmVyaHRtbFwiIGRpc3Bvc2l0aW9uPVwiaW5saW5lXCI+
PC9pbnRlbnQ+IjsKLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotICA8Ym9keSBvbmxvYWQ9ImxvYWRl
ZCgpIj4KLSAgICA8aW50ZW50IGFjdGlvbj0iYWN0aW9uIiB0eXBlPSJ0eXBlIiB0aXRsZT0iVGl0
bGUiIGhyZWY9Imh0dHA6Ly9leGFtcGxlLmNvbS9zZXJ2aWNlIiBkaXNwb3NpdGlvbj0iaW5saW5l
Ij48L2ludGVudD4KLSAgICBSZWdpc3RlcmVkIEludGVudCBTZXJ2aWNlLgotICA8L2JvZHk+Ci08
c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmludGVudHMvcmVzb3VyY2Vz
L3Bhc3MuaHRtbCBiL0xheW91dFRlc3RzL3dlYmludGVudHMvcmVzb3VyY2VzL3Bhc3MuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRlMjFlMDkyOGI4YjM4YWVmMThkYzc3MDI2
NmM2MWM4ZmNhZjc2Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3Jlc291cmNlcy9wYXNzLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSw3ICswLDAgQEAKLTxodG1sPgotICA8aGVhZD4KLSAgPC9oZWFkPgotICA8Ym9k
eT4KLSAgICA8cD5QQVNTPC9wPgotICA8L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJpbnRlbnRzL3Jlc291cmNlcy93ZWItaW50ZW50cy1yZWxvYWQtb3JpZy5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy9yZXNvdXJjZXMvd2ViLWludGVudHMtcmVsb2FkLW9y
aWcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGYyYmUwYjQ4MGRjMTA5YzY5
ODNkYjc3ZGM1NTNhZmZlOGVmNDMzOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3Jlc291cmNlcy93ZWItaW50ZW50
cy1yZWxvYWQtb3JpZy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotPGh0bWw+
Ci0gIDxoZWFkPgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdD4KLSAgICAgIGZ1bmN0aW9uIG9uU3Vj
Y2VzcygpIHsKLSAgICAgIH0KLQotICAgICAgZnVuY3Rpb24gb25GYWlsdXJlKCkgewotICAgICAg
fQotCi0gICAgICBmdW5jdGlvbiBzdGFydEludGVudCgpIHsKLSAgICAgICAgZGVidWcoIiogbGF1
bmNoaW5nIGludGVudCBhY3Rpb24vdHlwZSIpOwotICAgICAgICB2YXIgaW50ZW50ID0gbmV3IFdl
YktpdEludGVudCgiYWN0aW9uIiwgInR5cGUiKTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICBu
YXZpZ2F0b3Iud2Via2l0U3RhcnRBY3Rpdml0eShpbnRlbnQsIG9uU3VjY2Vzcywgb25GYWlsdXJl
KTsKLSAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgIHRlc3RGYWlsZWQoInN0YXJ0QWN0
aXZpdHkgc2hvdWxkIG5vdCB0aHJvdyBleGNlcHRpb24iKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGRlYnVnKCIqIG5hdmlnYXRpbmcgYWZ0ZXIgc3RhcnRBY3Rpdml0eSIpOwotCi0gICAgICAgIC8v
IFRoaXMgc2hvdWxkIG5vdCBjcmFzaC4KLSAgICAgICAgd2luZG93LmxvY2F0aW9uID0gInJlc291
cmNlcy9wYXNzLmh0bWwiOwotICAgICAgfQotICAgIDwvc2NyaXB0PgotICA8L2hlYWQ+Ci0gIDxi
b2R5PgotICAgIDxwPk9yaWdpbmFsIGNvbnRlbnQ8L3A+Ci0gIDwvYm9keT4KLTwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmludGVudHMvcmVzb3VyY2VzL3dlYi1pbnRlbnRzLXRl
c3RpbmcuanMgYi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3Jlc291cmNlcy93ZWItaW50ZW50cy10
ZXN0aW5nLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjRlYTYwYjdiN2MxNWVj
Mzc4YzJlNWZlOTQ0YmMwOWVkNmEwY2I0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmludGVudHMvcmVzb3VyY2VzL3dlYi1pbnRl
bnRzLXRlc3RpbmcuanMKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vLyBDYWxsYmFj
ayBmdW5jdGlvbiB0byBiZSB1c2VkIGZvciBhIHN1Y2Nlc3NmdWwgd2ViIGludGVudCBjYWxsLgot
ZnVuY3Rpb24gb25TdWNjZXNzKGRhdGEpIHsKLSAgZGVidWcoIiogZ290IHJlcGx5OiAiICsgZGF0
YSk7Ci0KLSAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgd2luZG93LnRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwotICB9Ci19Ci0KLS8vIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIHVzZWQg
Zm9yIGEgZmFpbGVkIHdlYiBpbnRlbnQgY2FsbC4KLWZ1bmN0aW9uIG9uRmFpbHVyZShkYXRhKSB7
Ci0gIGRlYnVnKCIqIGdvdCBmYWlsdXJlOiAiICsgZGF0YSk7Ci0KLSAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7Ci0gICAgd2luZG93LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICB9Ci19Ci0K
LS8vIExhdW5jaCBhIHdlYiBpbnRlbnQgY2FsbCB3aXRoIGNhbGxiYWNrcy4KLWZ1bmN0aW9uIHN0
YXJ0SW50ZW50V2l0aENhbGxiYWNrcygpIHsKLSAgbmF2aWdhdG9yLndlYmtpdFN0YXJ0QWN0aXZp
dHkobmV3IFdlYktpdEludGVudCgiYWN0aW9uMSIsICJtaW1lL3R5cGUxIiwgInRlc3QiKSwgb25T
dWNjZXNzLCBvbkZhaWx1cmUpOwotICBkZWJ1ZygiKiBzZW50IGludGVudCIpOwotCi0gIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHdpbmRvdy50ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKLSAgfSBlbHNlIHsKLSAgICBhbGVydCgnVGhpcyB0ZXN0IG5lZWRzIHRvIHJ1biBpbiBEUlQn
KTsKLSAgfQotfQotCi0vLyBUaGlzIGJ1dHRvbiBwcmVzcyBzaW11bGF0b3Igc2V0cyB0aGUgdXNl
ciBnZXN0dXJlIGluZGljYXRvciB0aGF0IGFuIGludGVudAotLy8gcmVxdWlyZXMgdG8gc3RhcnQu
Ci1mdW5jdGlvbiBzaW11bGF0ZUJ1dHRvblByZXNzKCkgewotICB2YXIgYnV0dG9uID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRvbiIpOwotICBpZiAoZXZlbnRTZW5kZXIpIHsKLSAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhidXR0b24uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVm
dCArIDIsIGJ1dHRvbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyAxMik7Ci0gICAgZXZl
bnRTZW5kZXIubW91c2VEb3duKCk7Ci0gICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwotICB9Ci19
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWFwaS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWFwaS1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiMTk4YjVhYzNkZmMzMTA3MzQ1
YTIyNDY2ZmU3MjgzZmY5NzgyMjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1hcGktZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotUEFTUyBuYXZpZ2F0b3Iud2Vi
a2l0U3RhcnRBY3Rpdml0eSBpcyBkZWZpbmVkLgotUEFTUyB2YXIgaW50ZW50ID0gbmV3IFdlYktp
dEludGVudCgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRz
LgotUEFTUyBuZXcgV2ViS2l0SW50ZW50KCdhJykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTeW50
YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMi4KLVBBU1MgbmV3IFdlYktpdEludGVudCgnJywnJywn
JykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMi4K
LVBBU1MgbmV3IFdlYktpdEludGVudCgnJywnYicsJ2MnKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IFN5bnRheEVycm9yOiBET00gRXhjZXB0aW9uIDEyLgotUEFTUyBuZXcgV2ViS2l0SW50ZW50KCcn
LCcnLCdjJykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlv
biAxMi4KLVBBU1MgbmV3IFdlYktpdEludGVudCgnYScsJycsJ2MnKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IFN5bnRheEVycm9yOiBET00gRXhjZXB0aW9uIDEyLgotUEFTUyBpbnRlbnQxLmFjdGlv
biBpcyAiYSIKLVBBU1MgaW50ZW50MS50eXBlIGlzICJiIgotUEFTUyBpbnRlbnQxLmRhdGEgaXMg
dW5kZWZpbmVkLgotUEFTUyBpbnRlbnQxLmFjdGlvbiBpcyAiYSIKLVBBU1MgaW50ZW50Mi5hY3Rp
b24gaXMgImEiCi1QQVNTIGludGVudDIudHlwZSBpcyAiYiIKLVBBU1MgaW50ZW50Mi5kYXRhIGlz
ICJjIgotUEFTUyBpbnRlbnQzLmFjdGlvbiBpcyAiYSIKLVBBU1MgaW50ZW50My50eXBlIGlzICJi
IgotUEFTUyBpbnRlbnQzLmRhdGEuYyBpcyAiZCIKLVBBU1MgaW50ZW50NC5hY3Rpb24gaXMgImEi
Ci1QQVNTIGludGVudDQudHlwZSBpcyAiYiIKLVBBU1MgaW50ZW50NC5kYXRhIGluc3RhbmNlb2Yg
QXJyYXkgaXMgdHJ1ZQotUEFTUyBpbnRlbnQ0LmRhdGEubGVuZ3RoIGlzIDIKLVBBU1MgaW50ZW50
NC5kYXRhWzBdIGlzICJjIgotUEFTUyBpbnRlbnQ0LmRhdGFbMV0gaXMgImQiCi1QQVNTIGludGVu
dDUuZGF0YSBpcyA0Ci1QQVNTIGludGVudDYuZGF0YSBpcyA0LjUKLVBBU1MgaW50ZW50Ny5kYXRh
IGlzIHRydWUKLVBBU1MgaW50ZW50OC5kYXRhIGlzIG51bGwKLVBBU1MgaW50ZW50OS5kYXRhID09
ICdbb2JqZWN0IE9iamVjdF0nIGlzIHRydWUKLVBBU1MgbmF2aWdhdG9yLndlYmtpdFN0YXJ0QWN0
aXZpdHkoaW50ZW50MSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJbnZhbGlkQWNjZXNzRXJyb3I6
IERPTSBFeGNlcHRpb24gMTUuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRF
U1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50
ZW50cy1hcGkuaHRtbCBiL0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMtYXBpLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjMmM1NmMwNGUyODRmMTUzNzQ4MjY4
YTNjOTU1NjU0OTRkMDdhZDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1hcGkuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICBzaG91bGRCZURlZmluZWQoIm5h
dmlnYXRvci53ZWJraXRTdGFydEFjdGl2aXR5Iik7Ci0gICAgICAKLSAgICAgIHNob3VsZFRocm93
KCJ2YXIgaW50ZW50ID0gbmV3IFdlYktpdEludGVudCgpIiwgIidUeXBlRXJyb3I6IE5vdCBlbm91
Z2ggYXJndW1lbnRzJyIpOzsKLSAgICAgIHNob3VsZFRocm93KCJuZXcgV2ViS2l0SW50ZW50KCdh
JykiLCAiJ0Vycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMiciKTsKLSAgICAgIHNo
b3VsZFRocm93KCJuZXcgV2ViS2l0SW50ZW50KCcnLCcnLCcnKSIsICInRXJyb3I6IFN5bnRheEVy
cm9yOiBET00gRXhjZXB0aW9uIDEyJyIpOwotICAgICAgc2hvdWxkVGhyb3coIm5ldyBXZWJLaXRJ
bnRlbnQoJycsJ2InLCdjJykiLCAiJ0Vycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAx
MiciKTsKLSAgICAgIHNob3VsZFRocm93KCJuZXcgV2ViS2l0SW50ZW50KCcnLCcnLCdjJykiLCAi
J0Vycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMiciKTsKLSAgICAgIHNob3VsZFRo
cm93KCJuZXcgV2ViS2l0SW50ZW50KCdhJywnJywnYycpIiwgIidFcnJvcjogU3ludGF4RXJyb3I6
IERPTSBFeGNlcHRpb24gMTInIik7Ci0KLSAgICAgIHZhciBpbnRlbnQxID0gbmV3IFdlYktpdElu
dGVudCgnYScsICdiJyk7Ci0gICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImludGVudDEuYWN0
aW9uIiwgImEiKTsKLSAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiaW50ZW50MS50eXBlIiwg
ImIiKTsKLSAgICAgIHNob3VsZEJlVW5kZWZpbmVkKCJpbnRlbnQxLmRhdGEiKTsKLSAgICAgIGlu
dGVudDEuYWN0aW9uID0gImFiYyI7Ci0gICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImludGVu
dDEuYWN0aW9uIiwgImEiKTsKLQotICAgICAgdmFyIGludGVudDIgPSBuZXcgV2ViS2l0SW50ZW50
KCJhIiwgImIiLCAiYyIpOwotICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdpbnRlbnQyLmFj
dGlvbicsICJhIik7Ci0gICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2ludGVudDIudHlwZScs
ICJiIik7Ci0gICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2ludGVudDIuZGF0YScsICJjIik7
Ci0KLSAgICAgIHZhciBpbnRlbnQzID0gbmV3IFdlYktpdEludGVudCgiYSIsICJiIiwgeyJjIjog
ImQifSk7Ci0gICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2ludGVudDMuYWN0aW9uJywgImEi
KTsKLSAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnaW50ZW50My50eXBlJywgImIiKTsKLSAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnaW50ZW50My5kYXRhLmMnLCAiZCIpOwotCi0gICAg
ICB2YXIgaW50ZW50NCA9IG5ldyBXZWJLaXRJbnRlbnQoImEiLCAiYiIsIFsiYyIsICJkIl0pOwot
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdpbnRlbnQ0LmFjdGlvbicsICJhIik7Ci0gICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2ludGVudDQudHlwZScsICJiIik7Ci0gICAgICBzaG91
bGRCZVRydWUoJ2ludGVudDQuZGF0YSBpbnN0YW5jZW9mIEFycmF5Jyk7Ci0gICAgICBzaG91bGRF
dmFsdWF0ZVRvKCdpbnRlbnQ0LmRhdGEubGVuZ3RoJywgMik7Ci0gICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ2ludGVudDQuZGF0YVswXScsICJjIik7Ci0gICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ2ludGVudDQuZGF0YVsxXScsICJkIik7Ci0KLSAgICAgIHZhciBpbnRlbnQ1ID0gbmV3
IFdlYktpdEludGVudCgiYSIsICJiIiwgNCk7Ci0gICAgICBzaG91bGRFdmFsdWF0ZVRvKCdpbnRl
bnQ1LmRhdGEnLCA0KTsKLSAgICAgIHZhciBpbnRlbnQ2ID0gbmV3IFdlYktpdEludGVudCgnYScs
ICdiJywgNC41KTsKLSAgICAgIHNob3VsZEV2YWx1YXRlVG8oJ2ludGVudDYuZGF0YScsIDQuNSk7
Ci0gICAgICB2YXIgaW50ZW50NyA9IG5ldyBXZWJLaXRJbnRlbnQoJ2EnLCAnYicsIHRydWUpOwot
ICAgICAgc2hvdWxkQmVUcnVlKCdpbnRlbnQ3LmRhdGEnKTsKLSAgICAgIHZhciBpbnRlbnQ4ID0g
bmV3IFdlYktpdEludGVudCgnYScsICdiJywgbnVsbCk7Ci0gICAgICBzaG91bGRCZU51bGwoJ2lu
dGVudDguZGF0YScpOwotICAgICAgdmFyIGludGVudDkgPSBuZXcgV2ViS2l0SW50ZW50KCdhJywg
J2InLCB7fSk7Ci0gICAgICBzaG91bGRFdmFsdWF0ZVRvKCdpbnRlbnQ5LmRhdGEnLCB7fSk7Ci0K
LSAgICAgIHNob3VsZFRocm93KCduYXZpZ2F0b3Iud2Via2l0U3RhcnRBY3Rpdml0eShpbnRlbnQx
KScsICInRXJyb3I6IEludmFsaWRBY2Nlc3NFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNSciKTsKLTwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYmludGVudHMvd2ViLWludGVudHMtZGVsaXZlcnktZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAxZjhkYThiOGMwZDU1OTI1NGI5YmNhNjQ1YTVjYTFhYTg4NjYy
MzEwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMtZGVsaXZlcnktZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1QQVNTIHdpbmRvdy53ZWJraXRJbnRlbnQgaXMgbnVs
bAotUEFTUyB3aW5kb3cud2Via2l0SW50ZW50IGlzIGRlZmluZWQuCi1QQVNTIHdpbmRvdy53ZWJr
aXRJbnRlbnQuYWN0aW9uIGlzICJhYWEiCi1QQVNTIHdpbmRvdy53ZWJraXRJbnRlbnQudHlwZSBp
cyAidHR0IgotUEFTUyB3aW5kb3cud2Via2l0SW50ZW50LmRhdGEgaXMgImRhdGEiCi1QQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1kZWxpdmVyeS1yZXVzZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWRlbGl2ZXJ5LXJldXNl
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmViZmJjNDYyNDQ0
MzY5OGVjMTk0MjZiNjcxYWM5NjM2NWM1NzM1Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWRl
bGl2ZXJ5LXJldXNlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAot
UEFTUyB3ZWJraXRJbnRlbnQgaXMgbnVsbAotUEFTUyB3ZWJraXRJbnRlbnQgaXMgImZvbyIKLVBB
U1Mgd2luZG93LndlYmtpdEludGVudCBpcyAiZm9vIgotUEFTUyB3ZWJraXRJbnRlbnQgaXMgbnVs
bAotUEFTUyB3ZWJraXRJbnRlbnQgaXMgImJhciIKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJpbnRl
bnRzL3dlYi1pbnRlbnRzLWRlbGl2ZXJ5LXJldXNlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJpbnRl
bnRzL3dlYi1pbnRlbnRzLWRlbGl2ZXJ5LXJldXNlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDc0ZGM0Y2QzOTYwYTVlMDJhNGZjZTRjZDQyOGE1N2UzZTNiOTA3MWQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
aW50ZW50cy93ZWItaW50ZW50cy1kZWxpdmVyeS1yZXVzZS5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMjIgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KLSAgICBzaG91bGRCZU51bGwoJ3dlYmtpdEludGVudCcpOwotCi0g
ICAgd2Via2l0SW50ZW50ID0gImZvbyI7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3ZWJr
aXRJbnRlbnQiLCAiZm9vIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cud2Vi
a2l0SW50ZW50IiwgImZvbyIpOwotCi0gICAgd2Via2l0SW50ZW50ID0gbnVsbDsKLSAgICBzaG91
bGRCZU51bGwoJ3dlYmtpdEludGVudCcpOwotCi0gICAgd2Via2l0SW50ZW50ID0gImJhciI7Ci0g
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3ZWJraXRJbnRlbnQiLCAiYmFyIik7Ci08L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViaW50
ZW50cy93ZWItaW50ZW50cy1kZWxpdmVyeS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93
ZWItaW50ZW50cy1kZWxpdmVyeS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
MWVmM2M3NDEyNGUzY2IzN2FkNTRjZmUwYmVjZmVlYmZhNWM0MWRkLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmludGVudHMvd2Vi
LWludGVudHMtZGVsaXZlcnkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLTwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgotPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
Ci0gIHNob3VsZEJlTnVsbCgid2luZG93LndlYmtpdEludGVudCIpOwotCi0gIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgewotICAgIHdpbmRvdy50ZXN0UnVubmVyLmRlbGl2ZXJXZWJJbnRlbnQoImFh
YSIsICJ0dHQiLCAiZGF0YSIpOwotICB9Ci0KLSAgc2hvdWxkQmVEZWZpbmVkKCJ3aW5kb3cud2Vi
a2l0SW50ZW50Iik7Ci0gIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LndlYmtpdEludGVu
dC5hY3Rpb24iLCAiYWFhIik7Ci0gIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LndlYmtp
dEludGVudC50eXBlIiwgInR0dCIpOwotICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy53
ZWJraXRJbnRlbnQuZGF0YSIsICJkYXRhIik7Ci0KLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWZh
aWx1cmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1m
YWlsdXJlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ3MTFj
NzdmMGQyMjI0NTliYmY1MmQyMjRjMWI3MzEzMDdkZjllOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRl
bnRzLWZhaWx1cmUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1S
ZWNlaXZlZCBXZWIgSW50ZW50OiBhY3Rpb249YWN0aW9uMSB0eXBlPW1pbWUvdHlwZTEKLVBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotKiBzZW50IGludGVu
dAotKiBnb3QgZmFpbHVyZTogRVJST1IKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViaW50
ZW50cy93ZWItaW50ZW50cy1mYWlsdXJlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dl
Yi1pbnRlbnRzLWZhaWx1cmUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDgz
ZTM3YWE0N2Q1NjQ3MGVjZGIwZGM3Nzk5MTI4ZGU1NDcyMDI2NS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1p
bnRlbnRzLWZhaWx1cmUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLTxodG1s
PgotICA8aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViLWludGVu
dHMtdGVzdGluZy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdD4KLSAgICAgIGZ1bmN0aW9uIGJ1
dHRvbkNsaWNrZWQoKSB7Ci0gICAgICAgIHN0YXJ0SW50ZW50V2l0aENhbGxiYWNrcygpOwotCi0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICAgIC8vIEVtcHR5IGFyZ3Mg
d2lsbCBzZW5kIGZhaWx1cmUgbWVzc2FnZS4KLSAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5z
ZW5kV2ViSW50ZW50UmVzcG9uc2UoKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIDwvc2NyaXB0
PgotICA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InNpbXVsYXRlQnV0dG9uUHJlc3MoKSI+Ci08aW5w
dXQgdHlwZT0iYnV0dG9uIiBpZD0iYnV0dG9uIiB2YWx1ZT0iU3RhcnQgV2ViIEludGVudCIgb25t
b3VzZXVwPSJidXR0b25DbGlja2VkKCkiPgotPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWludm9rZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWludm9rZS1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNmQyOTljM2RhNzhlMDZiYzI0YWQ4
NWM3OGRiNmQ2NzBjNWQwOTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1pbnZva2UtZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1SZWNlaXZlZCBXZWIgSW50ZW50
OiBhY3Rpb249YWN0aW9uMSB0eXBlPW1pbWUvdHlwZTEKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotKiBzZW50IGludGVudAotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWludm9rZS1wb3J0LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMtaW52b2tlLXBvcnQtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWIzYTkyM2YzOGZjMGNmYmE1
ZWRjOTNiNWU1ODE1NjkyZmYxZTllLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMtaW52b2tlLXBv
cnQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1SZWNlaXZlZCBX
ZWIgSW50ZW50OiBhY3Rpb249YWN0aW9uMSB0eXBlPW1pbWUvdHlwZTEKLUhhdmUgMSBwb3J0cwot
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0qIHNlbnQg
aW50ZW50Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMt
aW52b2tlLXBvcnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMtaW52
b2tlLXBvcnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI3MmIxYWYzNDBh
YjRmMDQ3MTNkMTk4ZDI1YmUwYTk1YWI5ZTdkMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWlu
dm9rZS1wb3J0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08aHRtbD4KLSAg
PGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYi1pbnRlbnRzLXRl
c3RpbmcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQ+Ci0gICAgICB2YXIgY2hhbm5lbCA9IG5l
dyBNZXNzYWdlQ2hhbm5lbCgpOwotICAgICAgY2hhbm5lbC5wb3J0Mi5vbk1lc3NhZ2UgPSBmdW5j
dGlvbihlKSB7Ci0gICAgICAgIGRlYnVnKCIqIGdvdCBtZXNzYWdlIik7Ci0gICAgICB9OwotCi0g
ICAgICBmdW5jdGlvbiBidXR0b25DbGlja2VkKCkgewotICAgICAgICB0cnkgewotICAgICAgICAg
IHZhciBpbnRlbnQxID0gbmV3IFdlYktpdEludGVudCgiYWN0aW9uMSIsICJtaW1lL3R5cGUxIiwg
Y2hhbm5lbC5wb3J0MSwgIm5vdCBhIHBvcnQiKTsKLSAgICAgICAgICB0ZXN0RmFpbGVkKCJTaG91
bGQgaGF2ZSB0aHJvd24gVHlwZUVycm9yIik7Ci0gICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAg
ICAgICBpZiAoIShlIGluc3RhbmNlb2YgVHlwZUVycm9yKSkgdGVzdEZhaWxlZCgiU2hvdWxkIHRo
cm93IHR5cGUgZXJyb3Igb24gbm9uLXBvcnQgYXJnIik7Ci0gICAgICAgIH0KLSAgICAgICAgdHJ5
IHsKLSAgICAgICAgICB2YXIgaW50ZW50MSA9IG5ldyBXZWJLaXRJbnRlbnQoImFjdGlvbjEiLCAi
bWltZS90eXBlMSIsIGNoYW5uZWwucG9ydDEsIFsibm90IGEgcG9ydCJdKTsKLSAgICAgICAgICB0
ZXN0RmFpbGVkKCJTaG91bGQgaGF2ZSB0aHJvd24gVHlwZUVycm9yIik7Ci0gICAgICAgIH0gY2F0
Y2ggKGUpIHsKLSAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgVHlwZUVycm9yKSkgdGVzdEZh
aWxlZCgiU2hvdWxkIHRocm93IHR5cGUgZXJyb3Igb24gbm9uLXBvcnQgYXJnIik7Ci0gICAgICAg
IH0KLQotICAgICAgICBuYXZpZ2F0b3Iud2Via2l0U3RhcnRBY3Rpdml0eShuZXcgV2ViS2l0SW50
ZW50KCJhY3Rpb24xIiwgIm1pbWUvdHlwZTEiLCBjaGFubmVsLnBvcnQxLCBbY2hhbm5lbC5wb3J0
MV0pKTsKLSAgICAgICAgZGVidWcoIiogc2VudCBpbnRlbnQiKTsKLSAgICAgIH0KLSAgICA8L3Nj
cmlwdD4KLSAgPC9oZWFkPgotPGJvZHkgb25sb2FkPSJzaW11bGF0ZUJ1dHRvblByZXNzKCkiPgot
PGlucHV0IHR5cGU9ImJ1dHRvbiIgaWQ9ImJ1dHRvbiIgdmFsdWU9IlN0YXJ0IFdlYiBJbnRlbnQi
IG9ubW91c2V1cD0iYnV0dG9uQ2xpY2tlZCgpIj4KLTxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1pbnZva2UuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMtaW52b2tlLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4NTE3NzA4YmU4NTM4MjA1MTQ2MTJiYzgzZTRjMGI5NjA2
NmQxZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1pbnZva2UuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDE2ICswLDAgQEAKLTxodG1sPgotICA8aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvd2ViLWludGVudHMtdGVzdGluZy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNj
cmlwdD4KLSAgICAgIGZ1bmN0aW9uIGJ1dHRvbkNsaWNrZWQoKSB7Ci0gICAgICAgIG5hdmlnYXRv
ci53ZWJraXRTdGFydEFjdGl2aXR5KG5ldyBXZWJLaXRJbnRlbnQoImFjdGlvbjEiLCAibWltZS90
eXBlMSIsICJ0ZXN0IikpOwotICAgICAgICAgIGRlYnVnKCIqIHNlbnQgaW50ZW50Iik7Ci0gICAg
ICB9Ci0gICAgPC9zY3JpcHQ+Ci0gIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0ic2ltdWxhdGVCdXR0
b25QcmVzcygpIj4KLTxpbnB1dCB0eXBlPSJidXR0b24iIGlkPSJidXR0b24iIHZhbHVlPSJTdGFy
dCBXZWIgSW50ZW50IiBvbm1vdXNldXA9ImJ1dHRvbkNsaWNrZWQoKSI+Ci08c2NyaXB0IHNyYz0i
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMt
b2JqLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmludGVudHMvd2Vi
LWludGVudHMtb2JqLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggOTNhMjBkOTE1NjM3Njg1MDA4OGFmNzFjOWUxZjlkOWVhOTZiMTlkMi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLW9iai1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1SZWNlaXZlZCBXZWIgSW50ZW50OiBhY3Rpb249YWN0
aW9uMSB0eXBlPXRleHQvcGxhaW4KLVJlY2VpdmVkIFdlYiBJbnRlbnQ6IGFjdGlvbj1hY3Rpb24x
IHR5cGU9dGV4dC9wbGFpbitleHBsaWNpdAotRXhwbGljaXQgaW50ZW50IHNlcnZpY2U6IGh0dHA6
Ly9leHBsaWNpdC5jb20vCi1SZWNlaXZlZCBXZWIgSW50ZW50OiBhY3Rpb249YWN0aW9uMSB0eXBl
PXRleHQvcGxhaW4rZXh0cmFzCi1FeHRyYXNbYV0gPSBiCi1SZWNlaXZlZCBXZWIgSW50ZW50OiBh
Y3Rpb249YWN0aW9uMSB0eXBlPXRleHQvcGxhaW4rcG9ydAotSGF2ZSAxIHBvcnRzCi1SZWNlaXZl
ZCBXZWIgSW50ZW50OiBhY3Rpb249YWN0aW9uMSB0eXBlPXRleHQvcGxhaW4rc3VnZ2VzdGlvbnMK
LUhhdmUgc3VnZ2VzdGlvbiBodHRwOi8vd3d3LmV4YW1wbGUuY29tLwotUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi1QQVNTIG5ldyBXZWJLaXRJbnRlbnQo
e30pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTIu
Ci1QQVNTIG5ldyBXZWJLaXRJbnRlbnQoZHVtbXkpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU3lu
dGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTIuCi1QQVNTIG5ldyBXZWJLaXRJbnRlbnQobnVsbCkg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMi4KLVBB
U1MgbmV3IFdlYktpdEludGVudCh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU3lu
dGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTIuCi1QQVNTIG5ldyBXZWJLaXRJbnRlbnQoNSkgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMi4KLVBBU1Mg
bmV3IFdlYktpdEludGVudCgnc2l4JykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTeW50YXhFcnJv
cjogRE9NIEV4Y2VwdGlvbiAxMi4KLVBBU1MgbmV3IFdlYktpdEludGVudChbJ3NpeCddKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IFN5bnRheEVycm9yOiBET00gRXhjZXB0aW9uIDEyLgotUEFTUyBu
ZXcgV2ViS2l0SW50ZW50KHsnYSc6J2InfSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTeW50YXhF
cnJvcjogRE9NIEV4Y2VwdGlvbiAxMi4KLVBBU1MgbmV3IFdlYktpdEludGVudCh7J2FjdGlvbic6
J2InfSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAx
Mi4KLVBBU1MgbmV3IFdlYktpdEludGVudCh7J3R5cGUnOidiJ30pIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTIuCi1QQVNTIG5ldyBXZWJLaXRJbnRl
bnQoeydhY3Rpb24nOicnLCAndHlwZSc6J2InfSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTeW50
YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMi4KLVBBU1MgbmV3IFdlYktpdEludGVudCh7J2FjdGlv
bic6J2EnLCAndHlwZSc6Jyd9KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFN5bnRheEVycm9yOiBE
T00gRXhjZXB0aW9uIDEyLgotUEFTUyAobmV3IFdlYktpdEludGVudCh7J2FjdGlvbic6J2EnLCd0
eXBlJzonYid9KSkuYWN0aW9uIGlzICJhIgotUEFTUyAobmV3IFdlYktpdEludGVudCh7J2FjdGlv
bic6J2EnLCd0eXBlJzonYid9KSkudHlwZSBpcyAiYiIKLVBBU1MgKG5ldyBXZWJLaXRJbnRlbnQo
eydhY3Rpb24nOm51bGwsJ3R5cGUnOidiJ30pKS5hY3Rpb24gaXMgIm51bGwiCi1QQVNTIChuZXcg
V2ViS2l0SW50ZW50KHsnYWN0aW9uJzp1bmRlZmluZWQsJ3R5cGUnOidiJ30pKS5hY3Rpb24gaXMg
InVuZGVmaW5lZCIKLVBBU1MgKG5ldyBXZWJLaXRJbnRlbnQoeydhY3Rpb24nOidhJywndHlwZSc6
bnVsbH0pKS50eXBlIGlzICJudWxsIgotUEFTUyAobmV3IFdlYktpdEludGVudCh7J2FjdGlvbic6
J2EnLCd0eXBlJzp1bmRlZmluZWR9KSkudHlwZSBpcyAidW5kZWZpbmVkIgotUEFTUyBuZXcgV2Vi
S2l0SW50ZW50KHsnYWN0aW9uJzonYScsJ3R5cGUnOidiJywnc2VydmljZSc6Jyd9KSBkaWQgbm90
IHRocm93IGV4Y2VwdGlvbi4KLVBBU1MgbmV3IFdlYktpdEludGVudCh7J2FjdGlvbic6J2EnLCd0
eXBlJzonYicsJ3NlcnZpY2UnOm51bGx9KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFN5bnRheEVy
cm9yOiBET00gRXhjZXB0aW9uIDEyLgotUEFTUyBuZXcgV2ViS2l0SW50ZW50KHsnYWN0aW9uJzon
YScsJ3R5cGUnOidiJywnc2VydmljZSc6dW5kZWZpbmVkfSkgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMi4KLVBBU1MgbmV3IFdlYktpdEludGVudCh7
J2FjdGlvbic6J2EnLCd0eXBlJzonYicsJ3NlcnZpY2UnOidub3QgYSB1cmwnfSkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMi4KLVBBU1MgbmV3IFdl
YktpdEludGVudCh7J2FjdGlvbic6J2EnLCd0eXBlJzonYicsJ2RhdGEnOndpbmRvd30pIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogRGF0YUNsb25lRXJyb3I6IERPTSBFeGNlcHRpb24gMjUuCi1QQVNT
IG5ldyBXZWJLaXRJbnRlbnQoeydhY3Rpb24nOidhJywndHlwZSc6J2InLCdleHRyYXMnOm51bGx9
KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLVBBU1MgbmV3IFdlYktpdEludGVudCh7J2FjdGlv
bic6J2EnLCd0eXBlJzonYicsJ2V4dHJhcyc6dW5kZWZpbmVkfSkgZGlkIG5vdCB0aHJvdyBleGNl
cHRpb24uCi1QQVNTIG5ldyBXZWJLaXRJbnRlbnQoeydhY3Rpb24nOidhJywndHlwZSc6J2InLCdl
eHRyYXMnOicnfSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIG5ldyBXZWJLaXRJbnRl
bnQoeydhY3Rpb24nOidhJywndHlwZSc6J2InLCdleHRyYXMnOidub3QgYSBkaWN0J30pIGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgotUEFTUyBuZXcgV2ViS2l0SW50ZW50KHsnYWN0aW9uJzonYScs
J3R5cGUnOidiJywnZXh0cmFzJzo0Mn0pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgotUEFTUyBu
ZXcgV2ViS2l0SW50ZW50KHsnYWN0aW9uJzonYScsJ3R5cGUnOidiJywnZXh0cmFzJzpbJ2EnLCdi
J119KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLSogc2VudCBvYmplY3QgaW50ZW50Ci0qIHNl
bnQgZXhwbGljaXQgaW50ZW50Ci0qIHNlbnQgaW50ZW50IHdpdGggZXh0cmFzCi0qIHNlbnQgaW50
ZW50IHdpdGggcG9ydAotUEFTUyBuZXcgV2ViS2l0SW50ZW50KGJhZFBvcnRJbnRlbnRPYmopIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogRGF0YUNsb25lRXJyb3I6IERPTSBFeGNlcHRpb24gMjUuCi1Q
QVNTIG5ldyBXZWJLaXRJbnRlbnQoc3VnZ2VzdGlvbnNJbnRlbnQpIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTIuCi1QQVNTIG5ldyBXZWJLaXRJbnRl
bnQoc3VnZ2VzdGlvbnNJbnRlbnQpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU3ludGF4RXJyb3I6
IERPTSBFeGNlcHRpb24gMTIuCi0qIHNlbnQgaW50ZW50IHdpdGggc3VnZ2VzdGlvbnMKLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1vYmotY29uc3RydWN0
b3IuaHRtbCBiL0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMtb2JqLWNvbnN0cnVj
dG9yLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxZmQ5MGIzOTFhNjEyMmU5
YTViOGZiNGFjNzg0Zjk0Y2I5MDdmZGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1vYmotY29u
c3RydWN0b3IuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyNiArMCwwIEBACi08aHRtbD4KLSAg
PGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYi1pbnRlbnRzLXRl
c3RpbmcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQ+Ci0gICAgZnVuY3Rpb24gc2hvdWxkTm90
VGhyb3coZXhwcmVzc2lvbikKLSAgICB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBldmFs
KGV4cHJlc3Npb24pOwotICAgICAgICAgICAgdGVzdFBhc3NlZChleHByZXNzaW9uICsgIiBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4iKTsKLSAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICAg
ICB0ZXN0RmFpbGVkKGV4cHJlc3Npb24gKyAiIHNob3VsZCBub3QgdGhyb3cgZXhjZXB0aW9uLiBU
aHJldyBleGNlcHRpb24gIiArIGUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24g
ZHVtbXkoKSB7fQotCi0gICAgZnVuY3Rpb24gYnV0dG9uQ2xpY2tlZCgpIHsKLSAgICAgICAgLy8g
fGFjdGlvbnwgYW5kIHx0eXBlfCBhcmUgcmVxdWlyZWQgdG8gYmUgcHJlc2VudCBhbmQgbm9uLWVt
cHR5LgotICAgICAgICBzaG91bGRUaHJvdygibmV3IFdlYktpdEludGVudCh7fSkiLCAiJ0Vycm9y
OiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMiciKTsKLSAgICAgICAgc2hvdWxkVGhyb3co
Im5ldyBXZWJLaXRJbnRlbnQoZHVtbXkpIiwgIidFcnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNl
cHRpb24gMTInIik7Ci0gICAgICAgIHNob3VsZFRocm93KCJuZXcgV2ViS2l0SW50ZW50KG51bGwp
IiwgIidFcnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTInIik7Ci0gICAgICAgIHNo
b3VsZFRocm93KCJuZXcgV2ViS2l0SW50ZW50KHVuZGVmaW5lZCkiLCAiJ0Vycm9yOiBTeW50YXhF
cnJvcjogRE9NIEV4Y2VwdGlvbiAxMiciKTsKLSAgICAgICAgc2hvdWxkVGhyb3coIm5ldyBXZWJL
aXRJbnRlbnQoNSkiLCAiJ0Vycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMiciKTsK
LSAgICAgICAgc2hvdWxkVGhyb3coIm5ldyBXZWJLaXRJbnRlbnQoJ3NpeCcpIiwgIidFcnJvcjog
U3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTInIik7Ci0gICAgICAgIHNob3VsZFRocm93KCJu
ZXcgV2ViS2l0SW50ZW50KFsnc2l4J10pIiwgIidFcnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNl
cHRpb24gMTInIik7Ci0gICAgICAgIHNob3VsZFRocm93KCJuZXcgV2ViS2l0SW50ZW50KHsnYSc6
J2InfSkiLCAiJ0Vycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMiciKTsKLSAgICAg
ICAgc2hvdWxkVGhyb3coIm5ldyBXZWJLaXRJbnRlbnQoeydhY3Rpb24nOidiJ30pIiwgIidFcnJv
cjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTInIik7Ci0gICAgICAgIHNob3VsZFRocm93
KCJuZXcgV2ViS2l0SW50ZW50KHsndHlwZSc6J2InfSkiLCAiJ0Vycm9yOiBTeW50YXhFcnJvcjog
RE9NIEV4Y2VwdGlvbiAxMiciKTsKLSAgICAgICAgc2hvdWxkVGhyb3coIm5ldyBXZWJLaXRJbnRl
bnQoeydhY3Rpb24nOicnLCAndHlwZSc6J2InfSkiLCAiJ0Vycm9yOiBTeW50YXhFcnJvcjogRE9N
IEV4Y2VwdGlvbiAxMiciKTsKLSAgICAgICAgc2hvdWxkVGhyb3coIm5ldyBXZWJLaXRJbnRlbnQo
eydhY3Rpb24nOidhJywgJ3R5cGUnOicnfSkiLCAiJ0Vycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4
Y2VwdGlvbiAxMiciKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCIobmV3IFdlYktp
dEludGVudCh7J2FjdGlvbic6J2EnLCd0eXBlJzonYid9KSkuYWN0aW9uIiwgImEiKTsKLSAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCIobmV3IFdlYktpdEludGVudCh7J2FjdGlvbic6J2En
LCd0eXBlJzonYid9KSkudHlwZSIsICJiIik7Ci0KLSAgICAgICAgLy8gVGhlc2Ugd2lsbCBnZXQg
Y29udmVydGVkIHRvIGxpdGVyYWxzICJudWxsIiBhbmQgInVuZGVmaW5lZCIuIEF3a3dhcmQKLSAg
ICAgICAgLy8gbmFtZXMsIGJ1dCBpZGlvbWF0aWMgdXNhZ2UuCi0gICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiKG5ldyBXZWJLaXRJbnRlbnQoeydhY3Rpb24nOm51bGwsJ3R5cGUnOidiJ30p
KS5hY3Rpb24iLCAibnVsbCIpOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIihuZXcg
V2ViS2l0SW50ZW50KHsnYWN0aW9uJzp1bmRlZmluZWQsJ3R5cGUnOidiJ30pKS5hY3Rpb24iLCAi
dW5kZWZpbmVkIik7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiKG5ldyBXZWJLaXRJ
bnRlbnQoeydhY3Rpb24nOidhJywndHlwZSc6bnVsbH0pKS50eXBlIiwgIm51bGwiKTsKLSAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCIobmV3IFdlYktpdEludGVudCh7J2FjdGlvbic6J2En
LCd0eXBlJzp1bmRlZmluZWR9KSkudHlwZSIsICJ1bmRlZmluZWQiKTsKLQotICAgICAgICAvLyB8
c2VydmljZXwsIGlmIHByZXNlbnQsIG11c3QgYmUgYSB2YWxpZCB1cmwuCi0gICAgICAgIHNob3Vs
ZE5vdFRocm93KCJuZXcgV2ViS2l0SW50ZW50KHsnYWN0aW9uJzonYScsJ3R5cGUnOidiJywnc2Vy
dmljZSc6Jyd9KSIpOwotICAgICAgICBzaG91bGRUaHJvdygibmV3IFdlYktpdEludGVudCh7J2Fj
dGlvbic6J2EnLCd0eXBlJzonYicsJ3NlcnZpY2UnOm51bGx9KSIsICInRXJyb3I6IFN5bnRheEVy
cm9yOiBET00gRXhjZXB0aW9uIDEyJyIpOwotICAgICAgICBzaG91bGRUaHJvdygibmV3IFdlYktp
dEludGVudCh7J2FjdGlvbic6J2EnLCd0eXBlJzonYicsJ3NlcnZpY2UnOnVuZGVmaW5lZH0pIiwg
IidFcnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTInIik7Ci0gICAgICAgIHNob3Vs
ZFRocm93KCJuZXcgV2ViS2l0SW50ZW50KHsnYWN0aW9uJzonYScsJ3R5cGUnOidiJywnc2Vydmlj
ZSc6J25vdCBhIHVybCd9KSIsICInRXJyb3I6IFN5bnRheEVycm9yOiBET00gRXhjZXB0aW9uIDEy
JyIpOwotCi0gICAgICAgIC8vIHxkYXRhfCBtdXN0IGJlIGNsb25lYWJsZS4KLSAgICAgICAgc2hv
dWxkVGhyb3coIm5ldyBXZWJLaXRJbnRlbnQoeydhY3Rpb24nOidhJywndHlwZSc6J2InLCdkYXRh
Jzp3aW5kb3d9KSIsICInRXJyb3I6IERhdGFDbG9uZUVycm9yOiBET00gRXhjZXB0aW9uIDI1JyIp
OwotCi0gICAgICAgIC8vIHxleHRyYXN8LCBpZiBwcmVzZW50LCBtdXN0IGJlIGEgZGljdGlvbmFy
eS4KLSAgICAgICAgc2hvdWxkTm90VGhyb3coIm5ldyBXZWJLaXRJbnRlbnQoeydhY3Rpb24nOidh
JywndHlwZSc6J2InLCdleHRyYXMnOm51bGx9KSIpOwotICAgICAgICBzaG91bGROb3RUaHJvdygi
bmV3IFdlYktpdEludGVudCh7J2FjdGlvbic6J2EnLCd0eXBlJzonYicsJ2V4dHJhcyc6dW5kZWZp
bmVkfSkiKTsKLSAgICAgICAgc2hvdWxkTm90VGhyb3coIm5ldyBXZWJLaXRJbnRlbnQoeydhY3Rp
b24nOidhJywndHlwZSc6J2InLCdleHRyYXMnOicnfSkiKTsKLSAgICAgICAgc2hvdWxkTm90VGhy
b3coIm5ldyBXZWJLaXRJbnRlbnQoeydhY3Rpb24nOidhJywndHlwZSc6J2InLCdleHRyYXMnOidu
b3QgYSBkaWN0J30pIik7Ci0gICAgICAgIHNob3VsZE5vdFRocm93KCJuZXcgV2ViS2l0SW50ZW50
KHsnYWN0aW9uJzonYScsJ3R5cGUnOidiJywnZXh0cmFzJzo0Mn0pIik7Ci0gICAgICAgIHNob3Vs
ZE5vdFRocm93KCJuZXcgV2ViS2l0SW50ZW50KHsnYWN0aW9uJzonYScsJ3R5cGUnOidiJywnZXh0
cmFzJzpbJ2EnLCdiJ119KSIpOwotCi0gICAgICAgIHZhciBzaW1wbGVJbnRlbnQgPSBuZXcgV2Vi
S2l0SW50ZW50KAotICAgICAgICAgICAgeyJhY3Rpb24iOiJhY3Rpb24xIiwKLSAgICAgICAgICAg
ICAidHlwZSI6InRleHQvcGxhaW4iLAotICAgICAgICAgICAgICJkYXRhIjoibWVzc2FnZSJ9KTsK
LSAgICAgICAgbmF2aWdhdG9yLndlYmtpdFN0YXJ0QWN0aXZpdHkoc2ltcGxlSW50ZW50KTsKLSAg
ICAgICAgZGVidWcoIiogc2VudCBvYmplY3QgaW50ZW50Iik7Ci0KLSAgICAgICAgdmFyIGV4cGxp
Y2l0SW50ZW50ID0gbmV3IFdlYktpdEludGVudCgKLSAgICAgICAgICAgIHsiYWN0aW9uIjoiYWN0
aW9uMSIsCi0gICAgICAgICAgICAgInR5cGUiOiJ0ZXh0L3BsYWluK2V4cGxpY2l0IiwKLSAgICAg
ICAgICAgICAiZGF0YSI6Im1lc3NhZ2UiLAotICAgICAgICAgICAgICJzZXJ2aWNlIiA6ICJodHRw
Oi8vZXhwbGljaXQuY29tLyJ9KTsKLSAgICAgICAgbmF2aWdhdG9yLndlYmtpdFN0YXJ0QWN0aXZp
dHkoZXhwbGljaXRJbnRlbnQpOwotICAgICAgICBkZWJ1ZygiKiBzZW50IGV4cGxpY2l0IGludGVu
dCIpOwotCi0gICAgICAgIHZhciBleHRyYXNJbnRlbnQgPSBuZXcgV2ViS2l0SW50ZW50KAotICAg
ICAgICAgICAgeyJhY3Rpb24iOiJhY3Rpb24xIiwKLSAgICAgICAgICAgICAidHlwZSI6InRleHQv
cGxhaW4rZXh0cmFzIiwKLSAgICAgICAgICAgICAiZGF0YSI6Im1lc3NhZ2UiLAotICAgICAgICAg
ICAgICJleHRyYXMiOnsiYSI6ImIifX0pOwotICAgICAgICBuYXZpZ2F0b3Iud2Via2l0U3RhcnRB
Y3Rpdml0eShleHRyYXNJbnRlbnQpOwotICAgICAgICBkZWJ1ZygiKiBzZW50IGludGVudCB3aXRo
IGV4dHJhcyIpOwotCi0gICAgICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7
Ci0gICAgICAgIGNoYW5uZWwucG9ydDIub25NZXNzYWdlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICBkZWJ1ZygiKiBnb3QgbWVzc2FnZSIpOwotICAgICAgICB9OwotICAgICAgICB2YXIgcG9y
dEludGVudCA9IG5ldyBXZWJLaXRJbnRlbnQoCi0gICAgICAgICAgICB7ImFjdGlvbiI6ImFjdGlv
bjEiLAotICAgICAgICAgICAgICJ0eXBlIjoidGV4dC9wbGFpbitwb3J0IiwKLSAgICAgICAgICAg
ICAiZGF0YSI6Y2hhbm5lbC5wb3J0MSwKLSAgICAgICAgICAgICAidHJhbnNmZXIiOltjaGFubmVs
LnBvcnQxXX0pOwotICAgICAgICBuYXZpZ2F0b3Iud2Via2l0U3RhcnRBY3Rpdml0eShwb3J0SW50
ZW50KTsKLSAgICAgICAgZGVidWcoIiogc2VudCBpbnRlbnQgd2l0aCBwb3J0Iik7Ci0KLSAgICAg
ICAgLy8gUG9ydHMsIGlmIHByZXNlbnQsIG11c3QgYmUgcHV0IGluIHx0cmFuc2ZlcnwuCi0gICAg
ICAgIHZhciBiYWRjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7Ci0gICAgICAgIGJhZGNo
YW5uZWwucG9ydDIub25NZXNzYWdlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBkZWJ1Zygi
KiBnb3QgbWVzc2FnZSIpOwotICAgICAgICB9Ci0gICAgICAgIGJhZFBvcnRJbnRlbnRPYmogPSAK
LSAgICAgICAgICAgIHsiYWN0aW9uIjoiYWN0aW9uMSIsCi0gICAgICAgICAgICAgInR5cGUiOiJ0
ZXh0L3BsYWluK2JhZHBvcnQiLAotICAgICAgICAgICAgICJkYXRhIjpiYWRjaGFubmVsLnBvcnQx
fTsKLSAgICAgICAgc2hvdWxkVGhyb3coIm5ldyBXZWJLaXRJbnRlbnQoYmFkUG9ydEludGVudE9i
aikiLCAiJ0Vycm9yOiBEYXRhQ2xvbmVFcnJvcjogRE9NIEV4Y2VwdGlvbiAyNSciKTsKLQotICAg
ICAgICBzdWdnZXN0aW9uc0ludGVudCA9Ci0gICAgICAgICAgICB7ImFjdGlvbiI6ImFjdGlvbjEi
LAotICAgICAgICAgICAgICJ0eXBlIjoidGV4dC9wbGFpbitzdWdnZXN0aW9ucyIsCi0gICAgICAg
ICAgICAgImRhdGEiOiJtZXNzYWdlIiwKLSAgICAgICAgICAgICAic3VnZ2VzdGlvbnMiOlsid3d3
LmV4YW1wbGUuY29tLyIsICJodHRwOi8vd3cyLmV4YW1wbGUuY29tIl19OwotICAgICAgICBzaG91
bGRUaHJvdygibmV3IFdlYktpdEludGVudChzdWdnZXN0aW9uc0ludGVudCkiLCAiJ0Vycm9yOiBT
eW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMiciKTsKLQotICAgICAgICBzdWdnZXN0aW9uc0lu
dGVudC5zdWdnZXN0aW9ucyA9IFsxNV07Ci0gICAgICAgIHNob3VsZFRocm93KCJuZXcgV2ViS2l0
SW50ZW50KHN1Z2dlc3Rpb25zSW50ZW50KSIsICInRXJyb3I6IFN5bnRheEVycm9yOiBET00gRXhj
ZXB0aW9uIDEyJyIpOwotCi0gICAgICAgIHN1Z2dlc3Rpb25zSW50ZW50LnN1Z2dlc3Rpb25zID0g
WyJodHRwOi8vd3d3LmV4YW1wbGUuY29tLyJdOwotICAgICAgICBuYXZpZ2F0b3Iud2Via2l0U3Rh
cnRBY3Rpdml0eShuZXcgV2ViS2l0SW50ZW50KHN1Z2dlc3Rpb25zSW50ZW50KSk7Ci0gICAgICAg
IGRlYnVnKCIqIHNlbnQgaW50ZW50IHdpdGggc3VnZ2VzdGlvbnMiKTsKLQotICAgIH0KLSAgICA8
L3NjcmlwdD4KLSAgPC9oZWFkPgotPGJvZHkgb25sb2FkPSJzaW11bGF0ZUJ1dHRvblByZXNzKCki
PgotPGlucHV0IHR5cGU9ImJ1dHRvbiIgaWQ9ImJ1dHRvbiIgdmFsdWU9IlN0YXJ0IFdlYiBJbnRl
bnQiIG9ubW91c2V1cD0iYnV0dG9uQ2xpY2tlZCgpIj4KLTxzY3JpcHQgc3JjPSIuLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1yZWxvYWQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1yZWxvYWQtZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODJlYzVhNWY1MzY4YTk3
ZjQzZWE3ZmYzYzA2MzAxYWRlNzYwMGMxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMtcmVsb2Fk
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLVJlY2VpdmVkIFdl
YiBJbnRlbnQ6IGFjdGlvbj1hY3Rpb24gdHlwZT10eXBlCi0qIGxvYWRlZAotKiBzZW50IG1vdXNl
dXAKLSogbG9hZGVkIHJlcGxhY2VtZW50IHBhZ2UKLSAKLQotLS0tLS0tLS0KLUZyYW1lOiAnZnJh
bWUnCi0tLS0tLS0tLQotUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93
ZWItaW50ZW50cy1yZWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVu
dHMtcmVsb2FkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzYWYzOWNmNjc0
YzZhMzc3ODA1OWNjM2Q1MmQ4MDdlOTJiMzNjZTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1y
ZWxvYWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLTxodG1sPgotICA8aGVh
ZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViLWludGVudHMtdGVzdGlu
Zy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdD4KLSAgICAgIHZhciBsYXRjaCA9IHRydWU7Ci0K
LSAgICAgIGZ1bmN0aW9uIGJ1dHRvbkNsaWNrZWQoKSB7Ci0gICAgICAgIGZyYW1lc1swXS5zdGFy
dEludGVudCgpOwotICAgICAgfQotCi0gICAgICBmdW5jdGlvbiBmcmFtZWxvYWRlZCgpIHsKLSAg
ICAgICAgaWYgKGxhdGNoKSB7Ci0gICAgICAgICAgbGF0Y2ggPSBmYWxzZTsKLSAgICAgICAgICBz
dGFydFRlc3QoKTsKLSAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBkZWJ1
ZygiKiBsb2FkZWQgcmVwbGFjZW1lbnQgcGFnZSIpOwotCi0gICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgewotICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAg
ICAgICAgfQotICAgICAgfQotCi0gICAgICBmdW5jdGlvbiBzdGFydFRlc3QoKSB7Ci0gICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKLSAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFt
ZXNBc1RleHQoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBhbGVydCgnVGhpcyB0ZXN0
IG5lZWRzIHRvIHJ1biBpbiBEUlQnKTsKLSAgICAgICAgfQotCi0gICAgICAgIGRlYnVnKCIqIGxv
YWRlZCIpOwotCi0gICAgICAgIHNpbXVsYXRlQnV0dG9uUHJlc3MoKTsKLSAgICAgICAgZGVidWco
Iiogc2VudCBtb3VzZXVwIik7Ci0gICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci0gIDwvaGVhZD4KLTxi
b2R5PgotPGlucHV0IHR5cGU9ImJ1dHRvbiIgaWQ9ImJ1dHRvbiIgdmFsdWU9IlN0YXJ0IFdlYiBJ
bnRlbnQiIG9ubW91c2V1cD0iYnV0dG9uQ2xpY2tlZCgpIj4KLTxpZnJhbWUgaWQ9ImZyYW1lIiBv
bmxvYWQ9ImZyYW1lbG9hZGVkKCkiIHNyYz0icmVzb3VyY2VzL3dlYi1pbnRlbnRzLXJlbG9hZC1v
cmlnLmh0bWwiPjwvaWZyYW1lPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1yZXBseS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLXJlcGx5LWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNmQ2ZTJjNDk1NjE3NjgwYjJiYzkwN2ZmZGM2MjY5OWQ2MTU3
OWFlMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLXJlcGx5LWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDcgKzAsMCBAQAotUmVjZWl2ZWQgV2ViIEludGVudDogYWN0aW9uPWFjdGlv
bjEgdHlwZT1taW1lL3R5cGUxCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRF
U1QgQ09NUExFVEUKLSogc2VudCBpbnRlbnQKLSogZ290IHJlcGx5OiByZXBseQotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLXJlcGx5Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLXJlcGx5Lmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDBkNjg1NDJhNjYwZjI3ZGRhYjU1YWQ5ZDU0NjUyNjI2MmZkNDljMDIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1yZXBseS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTkgKzAsMCBAQAotPGh0bWw+Ci0gIDxoZWFkPgotICAgIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9InJl
c291cmNlcy93ZWItaW50ZW50cy10ZXN0aW5nLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0Pgot
ICAgICAgZnVuY3Rpb24gYnV0dG9uQ2xpY2tlZCgpIHsKLSAgICAgICAgc3RhcnRJbnRlbnRXaXRo
Q2FsbGJhY2tzKCk7Ci0KLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAg
ICAgd2luZG93LnRlc3RSdW5uZXIuc2VuZFdlYkludGVudFJlc3BvbnNlKCJyZXBseSIpOwotICAg
ICAgICB9Ci0gICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci0gIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0i
c2ltdWxhdGVCdXR0b25QcmVzcygpIj4KLTxpbnB1dCB0eXBlPSJidXR0b24iIGlkPSJidXR0b24i
IHZhbHVlPSJTdGFydCBXZWIgSW50ZW50IiBvbm1vdXNldXA9ImJ1dHRvbkNsaWNrZWQoKSI+Ci08
c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KLTwvYm9keT4KLTwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>