<?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>218835</bug_id>
          
          <creation_ts>2020-11-11 17:45:51 -0800</creation_ts>
          <short_desc>Remove unused advanced plug-in features: snapshotting and plug-in load policy</short_desc>
          <delta_ts>2020-11-13 09:52:34 -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>Plug-ins</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
    
    <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1706707</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-11-11 17:45:51 -0800</bug_when>
    <thetext>Remove unused advanced plug-in features: snapshotting and plug-in load policy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706860</commentid>
    <comment_count>1</comment_count>
      <attachid>413937</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-11-12 08:48:37 -0800</bug_when>
    <thetext>Created attachment 413937
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706882</commentid>
    <comment_count>2</comment_count>
      <attachid>413943</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-11-12 09:29:23 -0800</bug_when>
    <thetext>Created attachment 413943
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706884</commentid>
    <comment_count>3</comment_count>
      <attachid>413943</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-11-12 09:31:15 -0800</bug_when>
    <thetext>Comment on attachment 413943
Patch

For a thorough job, I might need to add some more deprecation macros to headers to make it clear which functions are no longer supported, including at least one case of a delegate method that won’t be called any more.

Also, I think there may be even more code that can be removed, although I tried to find most of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707066</commentid>
    <comment_count>4</comment_count>
      <attachid>413984</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-11-12 16:51:17 -0800</bug_when>
    <thetext>Created attachment 413984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707288</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-11-13 09:51:37 -0800</bug_when>
    <thetext>Committed r269785: &lt;https://trac.webkit.org/changeset/269785&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707289</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-13 09:52:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/71374936&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413937</attachid>
            <date>2020-11-12 08:48:37 -0800</date>
            <delta_ts>2020-11-12 09:36:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218835-20201112084836.patch</filename>
            <type>text/plain</type>
            <size>279433</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDdhM2ZiNjA2MDc4Yjg2ZDM3MGIzZTAw
YjcxZjMyMzUzZjk0MTE4MWIuLjhlNjY5YmQxNmI4NjZiMGMyZmNhZTkwYzgwNzRiZTMxNGMwM2E0
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMTEtMTEgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQgYWR2YW5jZWQgcGx1Zy1pbiBmZWF0
dXJlczogc25hcHNob3R0aW5nIGFuZCBwbHVnLWluIGxvYWQgcG9saWN5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4MzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMv
V2ViUHJlZmVyZW5jZXMueWFtbDogUmVtb3ZlZAorICAgICAgICBBdXRvc3RhcnRPcmlnaW5QbHVn
SW5TbmFwc2hvdHRpbmdFbmFibGVkLCBQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkLAorICAgICAg
ICBQcmltYXJ5UGx1Z0luU25hcHNob3REZXRlY3Rpb25FbmFibGVkLCBhbmQgU25hcHNob3RBbGxQ
bHVnSW5zLgorCiAyMDIwLTExLTExICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBzeXN0ZW0gdHJhY2UgcG9pbnRzIGZvciB0aGUgR1BVIHByb2Nl
c3MgZGlzcGxheSBsaXN0IHByb2Nlc3NpbmcgbG9vcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGRkOWU5MmI5OTU1
ZTQ5YWUzMDAxNTgwNDNlZjAyZjg0ODJkNzQzOGQuLjlhMjAxOWNlZTBiMjk1MjQwNjNhMzgyZDk5
MzZmNTA1ZmNjNjNkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzYgQEAKKzIwMjAtMTEtMTEg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQg
YWR2YW5jZWQgcGx1Zy1pbiBmZWF0dXJlczogc25hcHNob3R0aW5nIGFuZCBwbHVnLWluIGxvYWQg
cG9saWN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTg4MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IEhlYWRlcnMuY21ha2U6IFJlbW92ZWQgc29tZSBoZWFkZXJzLgorICAgICAgICAqIFNvdXJjZXMu
dHh0OiBSZW1vdmVkIHNvbWUgc291cmNlIGZpbGVzLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZl
VmFsdWVNYXBwaW5ncy5oOiBSZW1vdmVkIFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheVBhcnQuCisg
ICAgICAgICogY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW46IFJlbW92ZWQgc25hcHNob3R0ZWQtcGx1
Z2luLW92ZXJsYXkuCisKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50OjpIVE1MUGx1Z0luRWxlbWVudCk6IE1v
dmVkIG1lbWJlciBpbml0aWFsaXphdGlvbiB0bworICAgICAgICB0aGUgY2xhc3MgZGVmaW5pdGlv
bi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50OjpjYW5Qcm9jZXNzRHJhZyBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcik6IFJlbW92ZWQgc25hcHNob3Qtc3BlY2lmaWMgY29kZS4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50Ojpzd2FwUmVuZGVyZXJUaW1lckZpcmVkKTog
UmVtb3ZlZCBjb2RlIHRvIGhhbmRsZQorICAgICAgICBEaXNwbGF5aW5nU25hcHNob3Qgc3RhdGUu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6c2V0RGlzcGxheVN0YXRlKTog
RGl0dG8uCisKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5FbGVtZW50Lmg6IFJlbW92ZWQgV2Fp
dGluZ0ZvclNuYXBzaG90LCBEaXNwbGF5aW5nU25hcHNob3QsCisgICAgICAgIFJlc3RhcnRpbmcg
YW5kIFJlc3RhcnRpbmdXaXRoUGVuZGluZ01vdXNlQ2xpY2sgc3RhdGVzLCB1cGRhdGVTbmFwc2hv
dCwKKyAgICAgICAgZGlzcGF0Y2hQZW5kaW5nTW91c2VDbGljaywgaXNSZXN0YXJ0ZWRQbHVnaW4s
IGFuZCBjYW5Qcm9jZXNzRHJhZy4gTWFya2VkIHNvbWUKKyAgICAgICAgbW9yZSBmdW5jdGlvbnMg
ZmluYWwsIG1hZGUgYSBjb3VwbGUgbm9uLXZpcnR1YWwsIGFuZCBtb3ZlZCBzb21lIHRoaW5ncyBm
cm9tCisgICAgICAgIHB1YmxpYyB0byBwcm90ZWN0ZWQgYW5kIHByb3RlY3RlZCB0byBwcml2YXRl
LgorCisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnRpdGxlVGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzdWJ0aXRs
ZVRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6SFRNTFBsdWdJbkltYWdlRWxlbWVudCk6IFJlbW92ZWQgYSBmZXcgZGF0YQorICAgICAgICBt
ZW1iZXJzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c2V0RGlz
cGxheVN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6IFJlbW92ZWQgY29kZSB0byBoYW5kbGUKKyAg
ICAgICAgdGhlIERpc3BsYXlpbmdTbmFwc2hvdCBjYXNlLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlciBjb25zdCk6IFJl
bW92ZWQgY29kZQorICAgICAgICB0byBoYW5kbGUgYSBzbmFwc2hvdHRlZCBwbHVnLWluLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6d2lsbFJlY2FsY1N0eWxlKTog
UmVtb3ZlZCBjaGVjayBmb3IKKyAgICAgICAgdGhlIERpc3BsYXlpbmdTbmFwc2hvdCBjYXNlLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlU25hcHNob3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cGx1Z0luSW1hZ2VFbGVtZW50SXNvbGF0ZWRX
b3JsZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnBhcnRPZlNuYXBzaG90T3ZlcmxheSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZW1vdmVT
bmFwc2hvdFRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJ
bkltYWdlRWxlbWVudDo6cmVzdGFydFNpbWlsYXJQbHVnSW5zKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVzZXJEaWRDbGlja1NuYXBzaG90KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnNldElz
UHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnJlc3RhcnRTbmFwc2hvdHRlZFBsdWdJbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaXNwYXRjaFBlbmRp
bmdNb3VzZUNsaWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ6OnNpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lckZpcmVkKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OmRvY3VtZW50SGFkUmVjZW50VXNlckdlc3R1cmUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y2hlY2tTaXplQ2hhbmdlRm9y
U25hcHNob3R0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzMTAwUGVyY2VudCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1NtYWxsZXJUaGFuVGlueVNpemluZ1RocmVz
aG9sZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
Ojppc1RvcExldmVsRnVsbFBhZ2VQbHVnaW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y2hlY2tTbmFwc2hvdFN0YXR1cyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzdWJmcmFtZUxv
YWRlcldpbGxDcmVhdGVQbHVnSW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBs
dWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVMb2FkZXJEaWRDcmVhdGVQbHVnSW4pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcik6IERlbGV0ZWQuCisKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuaDogUmVtb3ZlZCB0aGUgZnVuY3Rpb25zIG1lbnRpb25lZCBhYm92ZS4KKyAgICAgICAgQWxz
byBsb2FkZWRVcmwsIHNuYXBzaG90SW1hZ2UsIG5lZWRzQ2hlY2tGb3JTaXplQ2hhbmdlLCBzZXRO
ZWVkc0NoZWNrRm9yU2l6ZUNoYW5nZSwKKyAgICAgICAgc25hcHNob3REZWNpc2lvbiwgaXNSZXN0
YXJ0ZWRQbHVnaW4sIG1fbG9hZGVkVXJsLCBtX3BlbmRpbmdDbGlja0V2ZW50RnJvbVNuYXBzaG90
LAorICAgICAgICBtX3NpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lciwgbV9yZW1vdmVTbmFwc2hvdFRp
bWVyLCBtX3NuYXBzaG90SW1hZ2UsCisgICAgICAgIG1fY3JlYXRlZER1cmluZ1VzZXJHZXN0dXJl
LCBtX2lzUmVzdGFydGVkUGx1Z2luLCBtX25lZWRzQ2hlY2tGb3JTaXplQ2hhbmdlLAorICAgICAg
ICBtX3BsdWdJbldhc0NyZWF0ZWQsIG1fZGVmZXJyZWRQcm9tb3Rpb25Ub1ByaW1hcnlQbHVnSW4s
IG1fc2l6ZVdoZW5TbmFwc2hvdHRlZCwKKyAgICAgICAgbV9zbmFwc2hvdERlY2lzaW9uLCBhbmQg
bV9wbHVnSW5EaW1lbnNpb25zU3BlY2lmaWVkLgorCisgICAgICAgICogbG9hZGVyL1N1YmZyYW1l
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpTdWJmcmFtZUxvYWRl
cjo6bG9hZFBsdWdpbik6IFJlbW92ZWQgY2FsbHMgdG8KKyAgICAgICAgc3ViZnJhbWVMb2FkZXJX
aWxsQ3JlYXRlUGx1Z0luL0RpZENyZWF0ZVBsdWdJbi4KKworICAgICAgICAqIHBhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmNhblByb2Nl
c3NEcmFnKTogUmVtb3ZlZCBzcGVjaWFsIGNhc2UgZm9yIHBsdWctaW5zLgorCisgICAgICAgICog
cGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRFbWJl
ZGRlZE9iamVjdFRvVXBkYXRlKTogUmVtb3ZlZCBjYWxsIHRvCisgICAgICAgIG5lZWRzQ2hlY2tG
b3JTaXplQ2hhbmdlLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVFbWJlZGRl
ZE9iamVjdCk6IFJlbW92ZWQgc3BlY2lhbCBjYXNlIGZvcgorICAgICAgICBzbmFwc2hvdHRlZCBw
bHVnLWluIGFuZCBjYWxsIHRvIG5lZWRzQ2hlY2tGb3JTaXplQ2hhbmdlLgorCisgICAgICAgICog
cGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOiBSZW1vdmVkIG1f
cGx1Z0luQ2xpZW50LgorICAgICAgICAqIHBhZ2UvUGFnZS5oOiBEaXR0by4KKyAgICAgICAgKiBw
YWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDogUmVtb3ZlZCBQbHVnSW5DbGllbnQuaC4KKyAgICAg
ICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmg6IFJlbW92ZWQgcGx1Z0luQ2xpZW50LgorICAg
ICAgICAqIHBhZ2UvUGx1Z0luQ2xpZW50Lmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiBwYWdlL1Nl
dHRpbmdzLnlhbWw6IFJlbW92ZWQgTWF4aW11bVBsdWdJblNuYXBzaG90QXR0ZW1wdHMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9UaGVtZVR5cGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJh
dG9yPDwpOiBSZW1vdmVkIFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheVBhcnQuCisgICAgICAgICog
cGxhdGZvcm0vVGhlbWVUeXBlcy5oOiBEaXR0by4KKworICAgICAgICAqIHBsdWdpbnMvUGx1Z2lu
Vmlld0Jhc2UuaDogUmVtb3ZlZCBjYW5Qcm9jZXNzRHJhZywgc2hvdWxkQWx3YXlzQXV0b1N0YXJ0
LAorICAgICAgICBhbmQgYmVnaW5TbmFwc2hvdHRpbmdSdW5uaW5nUGx1Z2luLgorCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6IEFkZGVkIGFuIGV4cG9ydCBiZWNh
dXNlIHRoZSBsaW5rZXIgZmFpbGVkLgorICAgICAgICBOb3Qgc3VyZSB3aGF0IHRyaWdnZXJlZCB0
aGlzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNuYXBzaG90SW1hZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50
Q29udGVudHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmpl
Y3Q6OmxheW91dCk6IFJlbW92ZWQgY29kZSB0aGF0IHdhcyBvbmx5IGZvcgorICAgICAgICBzbmFo
cHNob3R0ZWQgcGx1Zy1pbnMsIGd1YXJkZWQgYm90aCBieSBhbiBleHBsaWNpdCBjaGVjayBmb3Ig
c25hcHNob3Qgc3RhdGUKKyAgICAgICAgYW5kIGJ5IGEgY2hlY2sgb2YgY2FuSGF2ZUNoaWxkcmVu
IChub3cgYWx3YXlzIGZhbHNlKS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2Jq
ZWN0OjpjYW5IYXZlQ2hpbGRyZW4gY29uc3QpOiBEZWxldGVkLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0Lmg6IE1hcmtlZCB0aGUgY2xhc3MgZmluYWwsIG1hZGUg
ZXZlcnl0aGluZworICAgICAgICBwcml2YXRlIHRoYXQgd2FzIHByb3RlY3RlZCwgcmVtb3ZlZCBm
dW5jdGlvbnMgbWVudGlvbmVkIGFib3ZlLCBhbmQgdmlydHVhbAorICAgICAgICBjYW5IYXZlV2lk
Z2V0IGZ1bmN0aW9uLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjppc1Jlc3RhcnRlZFBsdWdpbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmlzU2ltcGxlQ29udGFpbmVyQ29tcG9z
aXRpbmdMYXllciBjb25zdCk6CisgICAgICAgIFJlbW92ZWQgY2FsbCB0byBpc1Jlc3RhcnRlZFBs
dWdpbi4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDogUmVtb3ZlZCBpc1Nu
YXBzaG90dGVkUGx1Z0luLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVk
UGx1Z0luLmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50KTogUmVtb3ZlZCBTbmFwc2hv
dHRlZFBsdWdpbk92ZXJsYXlQYXJ0LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5o
OiBSZW1vdmVkIHBhaW50U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5LgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5oOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbmFw
c2hvdHRlZFBsdWdpbk92ZXJsYXkpOiBEZWxldGVkLgorCisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppc1BsdWdpblNuYXBzaG90
dGVkKTogQWx3YXlzIHJldHVybiBmYWxzZS4KKwogMjAyMC0xMS0xMSAgU2FpZCBBYm91LUhhbGxh
d2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIENhY2hlIHRoZSBO
YXRpdmVJbWFnZSBpbiBHUFUgUHJvY2VzcyBhbmQgYWxsb3cgcmVmZXJlbmNpbmcgaXQgd2l0aCBp
dHMgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkyMDZkNzIwMGM1YmRhMjZm
ZmFkZDcyYTFiYjUxYTE2N2JhNmU2MjMuLmZjNWEwZmZmODY4ZWViNjVkMTIwZGJmZmI4MTUxNDc3
MzM4ZTJkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY1IEBACisyMDIwLTExLTExICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdW51c2VkIGFkdmFuY2Vk
IHBsdWctaW4gZmVhdHVyZXM6IHNuYXBzaG90dGluZyBhbmQgcGx1Zy1pbiBsb2FkIHBvbGljeQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODM1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5Q
cm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjptdXRlQXVk
aW8pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUlu
aXRpYWxpemVQbHVnaW5Qcm9jZXNzKToKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NBdHRyaWJ1dGVz
Lmg6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3Jl
UGFyYW1ldGVycy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1l
dGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0RhdGFTdG9y
ZVBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0NvbnRleHRDb3B5UGx1
Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdLQ29udGV4dFNl
dFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyk6IERlbGV0ZWQuCisgICAgICAgIChXS0NvbnRl
eHRTZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5zRmlsdGVyaW5nT3V0RW50cmllc0FkZGVkQWZ0ZXJU
aW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdLQ29udGV4dFNldFBsdWdJbkF1dG9TdGFydE9yaWdp
bnMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAg
ICAgICAoV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRQbHVn
SW5TbmFwc2hvdHRpbmdFbmFibGVkKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNHZXRQbHVnSW5T
bmFwc2hvdHRpbmdFbmFibGVkKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRTbmFwc2hvdEFs
bFBsdWdJbnMpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc0dldFNuYXBzaG90QWxsUGx1Z0lucyk6
CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0QXV0b3N0YXJ0T3JpZ2luUGx1Z0luU25hcHNob3R0
aW5nRW5hYmxlZCk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzR2V0QXV0b3N0YXJ0T3JpZ2luUGx1
Z0luU25hcHNob3R0aW5nRW5hYmxlZCk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0UHJpbWFy
eVBsdWdJblNuYXBzaG90RGV0ZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChXS1ByZWZlcmVuY2Vz
R2V0UHJpbWFyeVBsdWdJblNuYXBzaG90RGV0ZWN0aW9uRW5hYmxlZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tOgorICAgICAgICAoV0tDb250
ZXh0SXNQbHVnSW5VcGRhdGVBdmFpbGFibGUpOgorICAgICAgICAoV0tDb250ZXh0U2V0UGx1Z2lu
TG9hZENsaWVudFBvbGljeSk6CisgICAgICAgIChXS0NvbnRleHRDbGVhclBsdWdpbkNsaWVudFBv
bGljaWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW06
CisgICAgICAgICgtW1dLUHJlZmVyZW5jZXMgX3NldFBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQ6
XSk6CisgICAgICAgICgtW1dLUHJlZmVyZW5jZXMgX3BsdWdJblNuYXBzaG90dGluZ0VuYWJsZWRd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAg
ICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3Jlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzOl0pOgor
ICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXNdKToKKyAg
ICAgICAgKHRvUGx1Z2luTG9hZENsaWVudFBvbGljaWVzSGFzaE1hcCk6IERlbGV0ZWQuCisgICAg
ICAgIChwb2xpY2llc0hhc2hNYXBUb0RpY3Rpb25hcnkpOiBEZWxldGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6
OnNldE5hdmlnYXRpb25EZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0
ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdJbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlk
QmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0Ojpw
bHVnaW5Nb2R1bGVMb2FkUG9saWN5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6d2tQbHVn
aW5Nb2R1bGVMb2FkUG9saWN5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JQbHVnaW5Mb2FkKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRl
ci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0
YXJ0UHJvdmlkZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5h
Z2VyOjpwbHVnaW5Qcm9jZXNzVG9rZW4pOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNz
TWFuYWdlcjo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nl
c3NNYW5hZ2VyOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblBy
b2Nlc3NNYW5hZ2VyOjpkZWxldGVXZWJzaXRlRGF0YUZvckhvc3ROYW1lcyk6CisgICAgICAgICog
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5Qcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zmlu
ZFBsdWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6Ondl
YlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OmluaXRpYWxpemVOZXdXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5I
YXNoZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0UGx1
Z0luQXV0b1N0YXJ0T3JpZ2lucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5zRmlsdGVyaW5nT3V0RW50cmllc0FkZGVk
QWZ0ZXJUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNl
dFBsdWdpbkxvYWRDbGllbnRQb2xpY3kpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6cmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcyk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6YWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFj
dGlvbik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAg
ICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvUGx1Z2luUHJveHlNYWMubW06CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpwbHVnaW5MYXllcik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luLmg6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbjo6c2hvdWxkQWx3YXlzQXV0b1N0
YXJ0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OlBsdWdpblByb3h5KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdpblZpZXcp
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWNyZWF0ZUFuZEluaXRpYWxpemUpOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojppbml0aWFsaXplUGx1Z2luKToKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luVmlldzo6ZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbik6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblZpZXc6OmRpZEluaXRpYWxpemVQbHVnaW4pOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5WaWV3OjpwYWludCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Omhh
bmRsZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6c2hvdWxkTm90QWRkTGF5
ZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjppbnZhbGlkYXRlUmVjdCk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Vu
YWJsZWQpOgorICAgICAgICAoV2ViS2l0Ojppc0FsbW9zdFNvbGlkQ29sb3IpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpwbHVnaW5TbmFwc2hvdFRpbWVyRmlyZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpiZWdpblNuYXBzaG90dGluZ1J1
bm5pbmdQbHVnaW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpzaG91
bGRBbHdheXNBdXRvU3RhcnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5WaWV3OjpwbHVnaW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnBvcHVsYXRlUGx1Z2luQ2FjaGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OmNsZWFyUGx1
Z2luQ2xpZW50UG9saWNpZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5J
bmZvUHJvdmlkZXI6OnBsdWdpbkxvYWRDbGllbnRQb2xpY3lGb3JIb3N0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpsb25nZXN0TWF0Y2hl
ZFdpbGRjYXJkSG9zdEZvckhvc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnJlcGxhY2VIb3N0V2l0aE1hdGNoZWRXaWxkY2FyZEhvc3Qg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5J
bmZvUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
dWdJbkNsaWVudC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbHVnSW5DbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fbGltaXRzTmF2aWdhdGlvbnNU
b0FwcEJvdW5kRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZVBsdWdp
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6YWRkUGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlbW92
ZVBsdWdpblZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjYW5QbHVnaW5IYW5kbGVS
ZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZENvbW1pdExvYWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRGaW5pc2hMb2FkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZGV0ZXJtaW5lUHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luVGltZXJGaXJlZCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRldGVybWluZVByaW1hcnlTbmFwc2hv
dHRlZFBsdWdJbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc2V0UHJp
bWFyeVNuYXBzaG90dGVkUGx1Z0luKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6bWF0Y2hlc1ByaW1hcnlQbHVnSW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpwbHVnSW5JbnRlcnNlY3RzU2VhcmNoUmVjdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnBsdWdJbklzUHJpbWFyeVNpemUpOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdl
YlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OmFkZENhc2VGb2xkZWRDaGFyYWN0ZXJz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6aGFzaEZvclBsdWdJbk9yaWdpbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2lu
SGFzaCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNob3VsZFBsdWdJ
bkF1dG9TdGFydEZyb21PcmlnaW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjpwbHVnSW5EaWRTdGFydEZyb21PcmlnaW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpkaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5I
YXNoZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbHVnSW5EaWRS
ZWNlaXZlVXNlckludGVyYWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6c2V0UGx1Z2luTG9hZENsaWVudFBvbGljeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OnJlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcyk6
IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDIwLTExLTExICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzeXN0ZW0gdHJh
Y2UgcG9pbnRzIGZvciB0aGUgR1BVIHByb2Nlc3MgZGlzcGxheSBsaXN0IHByb2Nlc3NpbmcgbG9v
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDhlMWNmODkxYjU4ZTUzZGFkOTlkZWE5
MWExNGI1OTJiNDE1MTc2Y2QuLmM4ZWUxMjMwMDM0M2VkNGIwZTM1MzhiYTE0ZmFiNmUxZjBiN2Rm
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0x
MS0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVu
dXNlZCBhZHZhbmNlZCBwbHVnLWluIGZlYXR1cmVzOiBzbmFwc2hvdHRpbmcgYW5kIHBsdWctaW4g
bG9hZCBwb2xpY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxODgzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5j
ZXMgcGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZF0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNl
cyBzZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkOl0pOgorCiAyMDIwLTExLTExICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIEV4cGVyaW1l
bnRhbE5vdGlmaWNhdGlvbnNFbmFibGVkIHNldHRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
U2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dURi9TY3Jp
cHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWwKaW5kZXggODEzNTJlMjJjOGFhODdm
ODJiY2RiOWQyZWQzNDVkOTYzNjUxNDEyZS4uNGY3NjBmYTM0ZTVkYWJjOWJkNzgxOWI2YTZhYmNj
NzAzMzJmYjkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dl
YlByZWZlcmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dl
YlByZWZlcmVuY2VzLnlhbWwKQEAgLTI5MywxNiArMjkzLDYgQEAgQXV0aG9yQW5kVXNlclN0eWxl
c0VuYWJsZWQ6CiAgICAgV2ViQ29yZToKICAgICAgIGRlZmF1bHQ6IHRydWUKIAotQXV0b3N0YXJ0
T3JpZ2luUGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZDoKLSAgdHlwZTogYm9vbAotICBkZWZhdWx0
VmFsdWU6Ci0gICAgV2ViS2l0TGVnYWN5OgotICAgICAgZGVmYXVsdDogdHJ1ZQotICAgIFdlYktp
dDoKLSAgICAgIGRlZmF1bHQ6IHRydWUKLSAgICBXZWJDb3JlOgotICAgICAgZGVmYXVsdDogdHJ1
ZQotCiBCYWNrRm9yd2FyZENhY2hlU3VwcG9ydHNQbHVnaW5zOgogICB0eXBlOiBib29sCiAgIHdl
YktpdExlZ2FjeVByZWZlcmVuY2VLZXk6IFdlYktpdFBhZ2VDYWNoZVN1cHBvcnRzUGx1Z2luc1By
ZWZlcmVuY2VLZXkKQEAgLTE1ODMsMTYgKzE1NzMsNiBAQCBQaWN0dXJlSW5QaWN0dXJlQVBJRW5h
YmxlZDoKICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDogdHJ1ZQogCi1QbHVnSW5TbmFwc2hv
dHRpbmdFbmFibGVkOgotICB0eXBlOiBib29sCi0gIGRlZmF1bHRWYWx1ZToKLSAgICBXZWJLaXRM
ZWdhY3k6Ci0gICAgICBkZWZhdWx0OiBmYWxzZQotICAgIFdlYktpdDoKLSAgICAgIGRlZmF1bHQ6
IGZhbHNlCi0gICAgV2ViQ29yZToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0KIFBsdWdpbnNFbmFi
bGVkOgogICB0eXBlOiBib29sCiAgIHdlYmNvcmVHZXR0ZXI6IGFyZVBsdWdpbnNFbmFibGVkCkBA
IC0xNjA1LDE2ICsxNTg1LDYgQEAgUGx1Z2luc0VuYWJsZWQ6CiAgICAgV2ViQ29yZToKICAgICAg
IGRlZmF1bHQ6IGZhbHNlCiAKLVByaW1hcnlQbHVnSW5TbmFwc2hvdERldGVjdGlvbkVuYWJsZWQ6
Ci0gIHR5cGU6IGJvb2wKLSAgZGVmYXVsdFZhbHVlOgotICAgIFdlYktpdExlZ2FjeToKLSAgICAg
IGRlZmF1bHQ6IHRydWUKLSAgICBXZWJLaXQ6Ci0gICAgICBkZWZhdWx0OiB0cnVlCi0gICAgV2Vi
Q29yZToKLSAgICAgIGRlZmF1bHQ6IHRydWUKLQogUHVuY2hPdXRXaGl0ZUJhY2tncm91bmRzSW5E
YXJrTW9kZToKICAgdHlwZTogYm9vbAogICB3ZWJjb3JlT25DaGFuZ2U6IHNldE5lZWRzUmVjYWxj
U3R5bGVJbkFsbEZyYW1lcwpAQCAtMTk1NCwxNiArMTkyNCw2IEBAIFNtYXJ0SW5zZXJ0RGVsZXRl
RW5hYmxlZDoKICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDogdHJ1ZQogCi1TbmFwc2hvdEFs
bFBsdWdJbnM6Ci0gIHR5cGU6IGJvb2wKLSAgZGVmYXVsdFZhbHVlOgotICAgIFdlYktpdExlZ2Fj
eToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0gICAgV2ViS2l0OgotICAgICAgZGVmYXVsdDogZmFs
c2UKLSAgICBXZWJDb3JlOgotICAgICAgZGVmYXVsdDogZmFsc2UKLQogU291cmNlQnVmZmVyQ2hh
bmdlVHlwZUVuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgY29uZGl0aW9uOiBFTkFCTEUoTUVESUFf
U09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggYzQxM2I3MmZhY2U3NTBiZDAxODE0OWU5ZTlk
OTQwYTNjZGE3OWRlZS4uZmExNzM4NTg3MGY2YTgxOTNhMDAxMWUwMDVmNDEyM2MyMjlmNGY3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC04NjksNyArODY5LDYgQEAgc2V0KFdlYkNvcmVfUFJJVkFU
RV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmgKICAg
ICBwYWdlL1BlcmZvcm1hbmNlTG9nZ2luZy5oCiAgICAgcGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmdD
bGllbnQuaAotICAgIHBhZ2UvUGx1Z0luQ2xpZW50LmgKICAgICBwYWdlL1BvaW50ZXJDYXB0dXJl
Q29udHJvbGxlci5oCiAgICAgcGFnZS9Qb2ludGVyQ2hhcmFjdGVyaXN0aWNzLmgKICAgICBwYWdl
L1BvaW50ZXJMb2NrQ29udHJvbGxlci5oCkBAIC0xNDUwLDcgKzE0NDksNiBAQCBzZXQoV2ViQ29y
ZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcmVuZGVyaW5nL1JlbmRlclB0ci5oCiAg
ICAgcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKICAgICByZW5kZXJpbmcvUmVuZGVyU2VsZWN0
aW9uSW5mby5oCi0gICAgcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmgKICAgICBy
ZW5kZXJpbmcvUmVuZGVyVGV4dC5oCiAgICAgcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgK
ICAgICByZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDFl
YWJlYjc4NmNhZjc5NDZmZjUzZjI2MjNlNzMwNjY5MzIxYzZmNjQuLjdmNGE4MDhhZWRmNmM5MzEy
M2ZhZWIzYjM1NDdiMWIwZGNlZjE2OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMjI4LDcgKzIyMjgs
NiBAQCByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCiByZW5kZXJpbmcvUmVuZGVy
U2VhcmNoRmllbGQuY3BwCiByZW5kZXJpbmcvUmVuZGVyU2VsZWN0aW9uSW5mby5jcHAKIHJlbmRl
cmluZy9SZW5kZXJTbGlkZXIuY3BwCi1yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4u
Y3BwCiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCiByZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0
aW9uLmNwcAogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwODQ0Njg2ODQxY2Yy
ZjExYzk4N2E0YmYyNGNkODQ5Y2JhYzZmNDg0Li5hNjUzYzAwM2Q5YjUwMWMxZjZlMTE0Mzg2ZGY5
YzhmOTEwNzg5MDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC05MjcsNyArOTI3LDYgQEAKIAkJMzE4NDM2REUyMUI5REFBRjAw
RUQzODNFIC8qIFdlYkdQVUxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMTg0MzZEQjIxQjlEQUEwMDBFRDM4M0UgLyogV2ViR1BVTGF5ZXIuaCAq
LzsgfTsKIAkJMzE4ODkxNjExQUI3RUVBMTAwRUE2MjdCIC8qIG1pc3NpbmdJbWFnZUAzeC5wbmcg
aW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjQxOTk5
MUFCMERBMTQwMDRFNjRFMSAvKiBtaXNzaW5nSW1hZ2VAM3gucG5nICovOyB9OwogCQkzMThFQUQ0
RDFGQTkxMzgwMDA4Q0VGODYgLyogSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3Mu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxOEVBRDRB
MUZBOTExNTcwMDhDRUY4NiAvKiBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHRTZXR0aW5ncy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTMxOTU1
QTg4MTYwRDE5OTIwMDg1ODAyNSAvKiBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFFOEQ4QkIxNjBCQzk0QzAw
NENFOEY1IC8qIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzE5ODQ4MDExQTFEODE3QjAwQTEzMzE4IC8q
IEFuaW1hdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMTk4NDdGRjFBMUQ4MTY3MDBBMTMzMTggLyogQW5pbWF0aW9uRXZlbnQuaCAqLzsg
fTsKIAkJMzE5ODQ4MEMxQTFFNkNFODAwQTEzMzE4IC8qIEpTQW5pbWF0aW9uRXZlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxOTg0ODA0MUExRTZC
NUQwMEExMzMxOCAvKiBKU0FuaW1hdGlvbkV2ZW50LmggKi87IH07CiAJCTMxOUE3Mjg4MjNDMjY3
RkUwMDg1MzUzQyAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxOUE3Mjg3MjNDMjY3RTcwMDg1
MzUzQyAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTU3LDcgKzk1Niw2IEBACiAJCTMx
QzBGRjI1MEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQzBGRjFGMEU0Q0VCNkUw
MDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCAqLzsgfTsKIAkJMzFDMEZGM0UwRTRD
RUZBQzAwN0Q2RkU1IC8qIEpTV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQzBGRjNBMEU0Q0VGQUMwMDdENkZFNSAv
KiBKU1dlYktpdEFuaW1hdGlvbkV2ZW50LmggKi87IH07CiAJCTMxQzBGRjQwMEU0Q0VGQUMwMDdE
NkZFNSAvKiBKU1dlYktpdFRyYW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFDMEZGM0MwRTRDRUZBQzAwN0Q2RkU1IC8qIEpTV2Vi
S2l0VHJhbnNpdGlvbkV2ZW50LmggKi87IH07Ci0JCTMxRDU5MUIzMTY2OTdBNkMwMEU2QkYwMiAv
KiBQbHVnSW5DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxRDU5MUIxMTY2OTdBNkMwMEU2QkYwMiAvKiBQbHVnSW5DbGllbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMURDREY0NDFEQTFD
NDU0MDBFQTVCOTMgLyogRXh0ZW5kZWRDb2xvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzFEQ0RGNDIxREExQzQ1NDAwRUE1QjkzIC8qIEV4dGVuZGVk
Q29sb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkzMURFQTQ1NjFCMzlGNEQ5MDBGNzcxNzggLyogV2ViU3lzdGVtQmFja2Ryb3BMYXllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFERUE0NTQxQjM5
RjREOTAwRjc3MTc4IC8qIFdlYlN5c3RlbUJhY2tkcm9wTGF5ZXIuaCAqLzsgfTsKIAkJMzFFQUY5
N0UxMjE0MzVBNDAwRTdDMUJGIC8qIERldmljZU1vdGlvbkNsaWVudElPUy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFFQUY5N0MxMjE0MzVBNDAwRTdD
MUJGIC8qIERldmljZU1vdGlvbkNsaWVudElPUy5oICovOyB9OwpAQCAtNDY1OSw3ICs0NjU3LDYg
QEAKIAkJREU1Rjg2NTkxRkEyQUYyNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U2MC1tbS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFNUY4NjNBMUZB
MkFGMDcwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNjAtbW0ubW0gKi87IH07CiAJCURFNUY4NjU5
MUZBMkFGMjQwMDZEQjYzQiAvKiBVbmlmaWVkU291cmNlNjEtbW0ubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTVGODYzQTFGQTJBRjA3MDA2REI2M0Ig
LyogVW5pZmllZFNvdXJjZTYxLW1tLm1tICovOyB9OwogCQlERTc3MTA4NjFGQTJGMEQ2MDA0NjAw
MTYgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3NjNGM0MxRTIwNTIzNDAwMUQ1OERFIC8qIFdlYkFyY2hp
dmVEdW1wU3VwcG9ydC5tbSAqLzsgfTsKLQkJREVCQ0NERDIxNjY0NkU4MjAwQTQ1MkUxIC8qIFJl
bmRlck1lZGlhQ29udHJvbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IERFNDlCMzA4MTY1RjJGRTEwMDEwMzM4RCAvKiBSZW5kZXJNZWRpYUNvbnRyb2xz
LmggKi87IH07CiAJCURFQ0E3RDkzMUY5RTY3QjUwMEUzQjY2MSAvKiBVbmlmaWVkU291cmNlMTMx
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFQ0E3
RDZEMUY5RTYxQ0YwMEUzQjY2MSAvKiBVbmlmaWVkU291cmNlMTMxLmNwcCAqLzsgfTsKIAkJREVD
QTdEOTQxRjlFNjdCNTAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UxMzIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREVDQTdEN0UxRjlFNjFFMzAwRTNC
NjYxIC8qIFVuaWZpZWRTb3VyY2UxMzIuY3BwICovOyB9OwogCQlERUNBN0Q5NTFGOUU2N0I1MDBF
M0I2NjEgLyogVW5pZmllZFNvdXJjZTEzMy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBERUNBN0Q4MDFGOUU2MUU1MDBFM0I2NjEgLyogVW5pZmllZFNv
dXJjZTEzMy5jcHAgKi87IH07CkBAIC03Mzc1LDEyICs3MzcyLDkgQEAKIAkJMzFEMjZCQzQxRjg2
RDI2NjAwOEZGMjU1IC8qIEpTSW1hZ2VCaXRtYXBPcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW1hZ2VCaXRtYXBPcHRpb25zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFEMjZCQzUxRjg2RDI2ODAwOEZGMjU1IC8qIEpTSW1hZ2VC
aXRtYXBPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW1hZ2VC
aXRtYXBPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxRDI2QkM2MUY4
NkQyNjkwMDhGRjI1NSAvKiBKU0ltYWdlQml0bWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTSW1hZ2VCaXRtYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkzMUQ1OTFCMTE2Njk3QTZDMDBFNkJGMDIgLyogUGx1Z0luQ2xpZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdJbkNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzMURDREY0MjFEQTFDNDU0MDBFQTVCOTMgLyogRXh0ZW5kZWRDb2xv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRlbmRlZENvbG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxREVBNDUzMUIzOUY0RDkwMEY3NzE3OCAvKiBX
ZWJTeXN0ZW1CYWNrZHJvcExheWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViU3lzdGVtQmFja2Ryb3BMYXllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzFERUE0NTQxQjM5RjREOTAwRjc3MTc4IC8qIFdlYlN5c3RlbUJhY2tkcm9wTGF5
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3lzdGVtQmFja2Ryb3BM
YXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMUU4RDhCQTE2MEJDOTRCMDA0
Q0U4RjUgLyogUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkzMUU4RDhCQjE2MEJDOTRDMDA0Q0U4RjUgLyogUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFFQUY5
N0MxMjE0MzVBNDAwRTdDMUJGIC8qIERldmljZU1vdGlvbkNsaWVudElPUy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEZXZpY2VNb3Rpb25DbGllbnRJT1MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFFQUY5N0QxMjE0MzVBNDAwRTdDMUJGIC8qIERldmljZU1v
dGlvbkNsaWVudElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IERldmljZU1vdGlvbkNsaWVudElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzFFQjU0REQxRTdEQzc0NDAwQzE2MjNCIC8qIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTE2Nyw4ICsxNTE2MSw2IEBA
CiAJCURCRkNCMEVCRkY1Q0Q3N0VCRUIzNTk1RiAvKiBSZW5kZXJNYXRoTUxQYWRkZWQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWF0aE1MUGFkZGVkLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREQwNUZFMEIwQjhCQTNDNjAwOUFDREZF
IC8qIFdlYkNvcmVPYmpDRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJDb3JlT2JqQ0V4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERDc2
M0JCMTA5OTJDMkM5MDA3NDBCOEUgLyogbGlieG1sMi5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBu
YW1lID0gbGlieG1sMi5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYnhtbDIuZHlsaWI7IHNvdXJj
ZVRyZWUgPSAiPGFic29sdXRlPiI7IH07Ci0JCURFNDlCMzA3MTY1RjJGRTEwMDEwMzM4RCAvKiBS
ZW5kZXJNZWRpYUNvbnRyb2xzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbmRlck1lZGlhQ29udHJvbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlERTQ5QjMwODE2NUYyRkUxMDAxMDMzOEQgLyogUmVuZGVyTWVkaWFDb250cm9scy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNZWRpYUNvbnRyb2xzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURFNUY4M0IyMUZBMTg2NzYwMDZEQjYzQSAvKiBVbmlm
aWVkU291cmNlMzAxLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVu
aWZpZWRTb3VyY2UzMDEuY3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL1dlYkNvcmUvdW5pZmll
ZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UzMDEuY3BwIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKIAkJREU1RjgzQjMxRkExODY3NzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2Uz
NTUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5pZmllZFNvdXJj
ZTM1NS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS91bmlmaWVkLXNvdXJjZXMv
VW5pZmllZFNvdXJjZTM1NS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQlERTVGODNCNDFGQTE4Njc4MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTM3OC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMzc4LmNwcDsg
cGF0aCA9ICJEZXJpdmVkU291cmNlcy9XZWJDb3JlL3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291
cmNlMzc4LmNwcCI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0yMTg5
MCw3ICsyMTg4Miw2IEBACiAJCQkJOEFGNEU1NUExMURDNUE2MzAwMEVEM0RFIC8qIFBlcmZvcm1h
bmNlVGltaW5nLmlkbCAqLywKIAkJCQlBNTU0QjVGMDFFMzgzOTM2MDAxRDRFMDMgLyogUGVyZm9y
bWFuY2VVc2VyVGltaW5nLmNwcCAqLywKIAkJCQlBNTU0QjVGMTFFMzgzOTM2MDAxRDRFMDMgLyog
UGVyZm9ybWFuY2VVc2VyVGltaW5nLmggKi8sCi0JCQkJMzFENTkxQjExNjY5N0E2QzAwRTZCRjAy
IC8qIFBsdWdJbkNsaWVudC5oICovLAogCQkJCTcxQjVBQjI1MjFGMUQ5RTMwMDM3NkU1QyAvKiBQ
b2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuY3BwICovLAogCQkJCTcxQjVBQjI0MjFGMUQ5RTIwMDM3
NkU1QyAvKiBQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuaCAqLywKIAkJCQk5NURGOUQyMzI1MkJF
RDk5MDAwRDdGNDYgLyogUG9pbnRlckNoYXJhY3RlcmlzdGljcy5oICovLApAQCAtMjk0MjUsOCAr
Mjk0MTYsNiBAQAogCQkJCTBGNTYwMjhEMEU0Qjc2NTgwMDY1QjAzOCAvKiBSZW5kZXJNYXJxdWVl
LmggKi8sCiAJCQkJRTRDMjc5NTYwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmNwcCAq
LywKIAkJCQlFNEMyNzk1NzBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVkaWEuaCAqLywKLQkJ
CQlERTQ5QjMwNzE2NUYyRkUxMDAxMDMzOEQgLyogUmVuZGVyTWVkaWFDb250cm9scy5jcHAgKi8s
Ci0JCQkJREU0OUIzMDgxNjVGMkZFMTAwMTAzMzhEIC8qIFJlbmRlck1lZGlhQ29udHJvbHMuaCAq
LywKIAkJCQlBQkRERkU3MzBBNUM2RTZGMDBBM0UxMUQgLyogUmVuZGVyTWVudUxpc3QuY3BwICov
LAogCQkJCUFCRERGRTc0MEE1QzZFNzAwMEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5oICovLAog
CQkJCUE0NTQ0MjRDMTE5QjM2ODcwMDlCRTkxMiAvKiBSZW5kZXJNZXRlci5jcHAgKi8sCkBAIC0y
OTQ3MCw4ICsyOTQ1OSw2IEBACiAJCQkJMEYxMUE1NEUwRjM5MjMzMTAwQzM3ODg0IC8qIFJlbmRl
clNlbGVjdGlvbkluZm8uaCAqLywKIAkJCQlBQjI0N0E2QTBBRkQ2MzgzMDAzRkE1RkQgLyogUmVu
ZGVyU2xpZGVyLmNwcCAqLywKIAkJCQlBQjI0N0E2QjBBRkQ2MzgzMDAzRkE1RkQgLyogUmVuZGVy
U2xpZGVyLmggKi8sCi0JCQkJMzFFOEQ4QkExNjBCQzk0QjAwNENFOEY1IC8qIFJlbmRlclNuYXBz
aG90dGVkUGx1Z0luLmNwcCAqLywKLQkJCQkzMUU4RDhCQjE2MEJDOTRDMDA0Q0U4RjUgLyogUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4uaCAqLywKIAkJCQlBOERGNEFFMjA5ODBDNDJDMDA1Mjk4MUIg
LyogUmVuZGVyVGFibGUuY3BwICovLAogCQkJCUE4REY0QUUxMDk4MEM0MkMwMDUyOTgxQiAvKiBS
ZW5kZXJUYWJsZS5oICovLAogCQkJCTZFRDg3OEMyMTQ3NDkzRjQwMDRDMzU5NyAvKiBSZW5kZXJU
YWJsZUNhcHRpb24uY3BwICovLApAQCAtMzM2OTgsNyArMzM2ODUsNiBAQAogCQkJCUNEQTI5QTBG
MUNCRDlDRkUwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDQ2REM2NDgyNEEyOURBQjAwNjFGMzkwIC8qIFBsYXliYWNrVGFy
Z2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkZDNDU5
MUQ1RTg2NjEwMDI2N0E2NiAvKiBQbHVnaW5CbG9ja2xpc3QuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTMxRDU5MUIzMTY2OTdBNkMwMEU2QkYwMiAvKiBQbHVnSW5DbGllbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE5QzZFNEY0MEQ3NDVFNDgwMDY0NDJFOSAvKiBQbHVnaW5EYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5NzIwNUFCQzEyMzkyOTI3MDBCMTczODAgLyogUGx1Z2luRG9jdW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBMDhGRUREMUQ1OTJCOEIwMDhCQThDQiAvKiBQbHVnaW5JbmZv
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzM4ODUsNyArMzM4NzEsNiBAQAogCQkJCTQz
OTA0NkVDMTJEQTI1RTgwMEFGODBBOSAvKiBSZW5kZXJNYXRoTUxUb2tlbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDM5MDQ2RUExMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFVuZGVyT3Zl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRDMjc5NTkwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRl
ck1lZGlhLmggaW4gSGVhZGVycyAqLywKLQkJCQlERUJDQ0REMjE2NjQ2RTgyMDBBNDUyRTEgLyog
UmVuZGVyTWVkaWFDb250cm9scy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUJEREZFN0EwQTVDNkU3
MDAwQTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNDU0NDI0
RjExOUIzNjg3MDA5QkU5MTIgLyogUmVuZGVyTWV0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
MzU4NkUwMTUyNjRDNDUwMDIyQTY1OSAvKiBSZW5kZXJNdWx0aUNvbHVtbkZsb3cuaCBpbiBIZWFk
ZXJzICovLApAQCAtMzM5MDksNyArMzM4OTQsNiBAQAogCQkJCTQ1OEZFNDBBMTU4OURGMEIwMDU2
MDlFNiAvKiBSZW5kZXJTZWFyY2hGaWVsZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMUE1NEYw
RjM5MjMzMTAwQzM3ODg0IC8qIFJlbmRlclNlbGVjdGlvbkluZm8uaCBpbiBIZWFkZXJzICovLAog
CQkJCUFCMjQ3QTZEMEFGRDYzODMwMDNGQTVGRCAvKiBSZW5kZXJTbGlkZXIuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTMxOTU1QTg4MTYwRDE5OTIwMDg1ODAyNSAvKiBSZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4QzhGQUUwRERDRDMxQjAwQjU5MkY0IC8qIFJl
bmRlclN0eWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjY2ODBFODFDQjcxMDBCMjU5NjUg
LyogUmVuZGVyU3R5bGVDb25zdGFudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzNjcwOEMxMTJE
OUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdCbG9jay5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAppbmRleCBiYjAzOWY5
MGY5NGM1YjlmODU5MzY4ODYwMDAwMmVkMzVlNzc0NmM2Li4zNTE4ZjlhYmE3N2ZlMTU3OWQ4Mjhk
ODQ5YjA3MTg0N2MxNjRmNDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWVNYXBwaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRp
dmVWYWx1ZU1hcHBpbmdzLmgKQEAgLTU4Nyw5ICs1ODcsNiBAQCB0ZW1wbGF0ZTw+IGlubGluZSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQ29udHJvbFBhcnQgZSkKICAgICBj
YXNlIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uUGFydDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVTZWFyY2hmaWVsZENhbmNlbEJ1dHRvbjsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBTbmFwc2hvdHRlZFBsdWdpbk92ZXJsYXlQYXJ0OgotICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZVNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheTsKLSAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBUZXh0RmllbGRQYXJ0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZVRleHRmaWVsZDsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdv
cmRzLmluCmluZGV4IDRhMzIxODFhZDE4YjdlMWVmMmJiYTgwMTQ0MmI0NWZmNmMxMWRmZDkuLjY5
YzE4ZjEzNWY0ZTQ1YTNiMTFjOTk1MjczZjIzMDEzOGZkZDY1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NWYWx1ZUtleXdvcmRzLmluCkBAIC04NTIsNyArODUyLDYgQEAgc2VhcmNoZmllbGQtZGVj
b3JhdGlvbgogc2VhcmNoZmllbGQtcmVzdWx0cy1kZWNvcmF0aW9uCiBzZWFyY2hmaWVsZC1yZXN1
bHRzLWJ1dHRvbgogc2VhcmNoZmllbGQtY2FuY2VsLWJ1dHRvbgotc25hcHNob3R0ZWQtcGx1Z2lu
LW92ZXJsYXkKIHRleHRmaWVsZAogcmVsZXZhbmN5LWxldmVsLWluZGljYXRvcgogY29udGludW91
cy1jYXBhY2l0eS1sZXZlbC1pbmRpY2F0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
RWxlbWVudC5jcHAKaW5kZXggOTViZDQ1MzQxMWIwMzc4YmI4YzFmMTU1NDM3OTZiNTQ2MzU3ZTNh
NC4uOWU2YjNiMmExYWZmMzQxZjk3YWM2MWEzMDc3Nzk5YTdlNDgwNmU3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKQEAgLTQxLDcgKzQxLDYgQEAKICNpbmNs
dWRlICJQbHVnaW5WaWV3QmFzZS5oIgogI2luY2x1ZGUgIlJlbmRlckVtYmVkZGVkT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbi5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQu
aCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCkBAIC02OCwxMCArNjcsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBIVE1MUGx1Z0luRWxlbWVudDo6SFRNTFBsdWdJbkVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQog
ICAgIDogSFRNTEZyYW1lT3duZXJFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQotICAgICwgbV9p
bkJlZm9yZUxvYWRFdmVudEhhbmRsZXIoZmFsc2UpCiAgICAgLCBtX3N3YXBSZW5kZXJlclRpbWVy
KCp0aGlzLCAmSFRNTFBsdWdJbkVsZW1lbnQ6OnN3YXBSZW5kZXJlclRpbWVyRmlyZWQpCi0gICAg
LCBtX2lzQ2FwdHVyaW5nTW91c2VFdmVudHMoZmFsc2UpCi0gICAgLCBtX2Rpc3BsYXlTdGF0ZShQ
bGF5aW5nKQogewogICAgIHNldEhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpOwogfQpA
QCAtODEsMTIgKzc3LDYgQEAgSFRNTFBsdWdJbkVsZW1lbnQ6On5IVE1MUGx1Z0luRWxlbWVudCgp
CiAgICAgQVNTRVJUKCFtX2luc3RhbmNlKTsgLy8gY2xlYXJlZCBpbiBkZXRhY2goKQogfQogCi1i
b29sIEhUTUxQbHVnSW5FbGVtZW50OjpjYW5Qcm9jZXNzRHJhZygpIGNvbnN0Ci17Ci0gICAgY29u
c3QgUGx1Z2luVmlld0Jhc2UqIHBsdWdpbiA9IGlzPFBsdWdpblZpZXdCYXNlPihwbHVnaW5XaWRn
ZXQoKSkgPyBkb3duY2FzdDxQbHVnaW5WaWV3QmFzZT4ocGx1Z2luV2lkZ2V0KCkpIDogbnVsbHB0
cjsKLSAgICByZXR1cm4gcGx1Z2luID8gcGx1Z2luLT5jYW5Qcm9jZXNzRHJhZygpIDogZmFsc2U7
Ci19Ci0KIGJvb2wgSFRNTFBsdWdJbkVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZl
bnRzKCkKIHsKICAgICBpZiAoaXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCkBAIC0yMDYsMjEgKzE5
Niw4IEBAIHZvaWQgSFRNTFBsdWdJbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQm
IGV2ZW50KQogICAgIGlmICghaXM8UmVuZGVyV2lkZ2V0PihyZW5kZXJlcikpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChpczxSZW5kZXJFbWJlZGRlZE9iamVjdD4oKnJlbmRlcmVyKSkgewot
ICAgICAgICBpZiAoZG93bmNhc3Q8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KCpyZW5kZXJlcikuaXNQ
bHVnaW5VbmF2YWlsYWJsZSgpKSB7Ci0gICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJFbWJlZGRl
ZE9iamVjdD4oKnJlbmRlcmVyKS5oYW5kbGVVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvckV2ZW50
KCZldmVudCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
aXM8UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4+KCpyZW5kZXJlcikgJiYgZGlzcGxheVN0YXRlKCkg
PCBSZXN0YXJ0aW5nKSB7Ci0gICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbj4oKnJlbmRlcmVyKS5oYW5kbGVFdmVudChldmVudCk7Ci0gICAgICAgICAgICBIVE1MRnJh
bWVPd25lckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGRpc3BsYXlTdGF0ZSgpIDwgUGxheWlu
ZykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGlzPFJlbmRlckVtYmVkZGVk
T2JqZWN0PigqcmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlckVtYmVkZGVkT2JqZWN0PigqcmVu
ZGVyZXIpLmlzUGx1Z2luVW5hdmFpbGFibGUoKSkKKyAgICAgICAgZG93bmNhc3Q8UmVuZGVyRW1i
ZWRkZWRPYmplY3Q+KCpyZW5kZXJlcikuaGFuZGxlVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3JF
dmVudCgmZXZlbnQpOwogCiAgICAgLy8gRG9uJ3Qga2VlcCB0aGUgd2lkZ2V0IGFsaXZlIG92ZXIg
dGhlIGRlZmF1bHRFdmVudEhhbmRsZXIgY2FsbCwgc2luY2UgdGhhdCBjYW4gZG8gdGhpbmdzIGxp
a2UgbmF2aWdhdGUuCiAgICAgewpAQCAtMjg5LDcgKzI2Niw3IEBAIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBIVE1MUGx1Z0luRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYKIAogdm9pZCBIVE1MUGx1Z0luRWxlbWVudDo6c3dhcFJlbmRlcmVyVGltZXJGaXJlZCgp
CiB7Ci0gICAgQVNTRVJUKGRpc3BsYXlTdGF0ZSgpID09IFByZXBhcmluZ1BsdWdpblJlcGxhY2Vt
ZW50IHx8IGRpc3BsYXlTdGF0ZSgpID09IERpc3BsYXlpbmdTbmFwc2hvdCk7CisgICAgQVNTRVJU
KGRpc3BsYXlTdGF0ZSgpID09IFByZXBhcmluZ1BsdWdpblJlcGxhY2VtZW50KTsKICAgICBpZiAo
dXNlckFnZW50U2hhZG93Um9vdCgpKQogICAgICAgICByZXR1cm47CiAgICAgCkBAIC0zMDQsOSAr
MjgxLDkgQEAgdm9pZCBIVE1MUGx1Z0luRWxlbWVudDo6c2V0RGlzcGxheVN0YXRlKERpc3BsYXlT
dGF0ZSBzdGF0ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9kaXNwbGF5U3RhdGUgPSBzdGF0
ZTsKLSAgICAKKwogICAgIG1fc3dhcFJlbmRlcmVyVGltZXIuc3RvcCgpOwotICAgIGlmIChzdGF0
ZSA9PSBEaXNwbGF5aW5nU25hcHNob3QgfHwgZGlzcGxheVN0YXRlKCkgPT0gUHJlcGFyaW5nUGx1
Z2luUmVwbGFjZW1lbnQpCisgICAgaWYgKGRpc3BsYXlTdGF0ZSgpID09IFByZXBhcmluZ1BsdWdp
blJlcGxhY2VtZW50KQogICAgICAgICBtX3N3YXBSZW5kZXJlclRpbWVyLnN0YXJ0T25lU2hvdCgw
X3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKaW5kZXggNzIy
NWJiNDVkZjY2MjUwYTM2N2E3MzY2ZjM0OGE2OGY2ODM2MGQ4NS4uNmY4MDc0ZDBlOTlmMzk0Y2Ey
MzE5OGVjZWZjZmNlYjE3ZTQ4MDliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVs
ZW1lbnQuaApAQCAtNTEsMzUgKzUxLDI0IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBX
aWRnZXQqIHBsdWdpbldpZGdldChQbHVnaW5Mb2FkaW5nUG9saWN5ID0gUGx1Z2luTG9hZGluZ1Bv
bGljeTo6TG9hZCkgY29uc3Q7CiAKICAgICBlbnVtIERpc3BsYXlTdGF0ZSB7Ci0gICAgICAgIFdh
aXRpbmdGb3JTbmFwc2hvdCwKLSAgICAgICAgRGlzcGxheWluZ1NuYXBzaG90LAotICAgICAgICBS
ZXN0YXJ0aW5nLAotICAgICAgICBSZXN0YXJ0aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrLAogICAg
ICAgICBQbGF5aW5nLAogICAgICAgICBQcmVwYXJpbmdQbHVnaW5SZXBsYWNlbWVudCwKICAgICAg
ICAgRGlzcGxheWluZ1BsdWdpblJlcGxhY2VtZW50LAogICAgIH07CiAgICAgRGlzcGxheVN0YXRl
IGRpc3BsYXlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheVN0YXRlOyB9Ci0gICAgdmly
dHVhbCB2b2lkIHNldERpc3BsYXlTdGF0ZShEaXNwbGF5U3RhdGUpOwotICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVTbmFwc2hvdChJbWFnZSopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFBl
bmRpbmdNb3VzZUNsaWNrKCkgeyB9Ci0gICAgdmlydHVhbCBib29sIGlzUmVzdGFydGVkUGx1Z2lu
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHNldERpc3BsYXlTdGF0ZShEaXNw
bGF5U3RhdGUpOwogCiAgICAgSlNDOjpKU09iamVjdCogc2NyaXB0T2JqZWN0Rm9yUGx1Z2luUmVw
bGFjZW1lbnQoKTsKIAogICAgIGJvb2wgaXNDYXB0dXJpbmdNb3VzZUV2ZW50cygpIGNvbnN0IHsg
cmV0dXJuIG1faXNDYXB0dXJpbmdNb3VzZUV2ZW50czsgfQogICAgIHZvaWQgc2V0SXNDYXB0dXJp
bmdNb3VzZUV2ZW50cyhib29sIGNhcHR1cmluZykgeyBtX2lzQ2FwdHVyaW5nTW91c2VFdmVudHMg
PSBjYXB0dXJpbmc7IH0KIAotICAgIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgYm9vbCBjYW5Qcm9jZXNzRHJhZygp
IGNvbnN0OwotCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBib29sIHdpbGxSZXNwb25k
VG9Nb3VzZU1vdmVFdmVudHMoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
d2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50cygpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAj
ZW5kaWYKLSAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgb3ZlcnJpZGU7
CisgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIGZpbmFsOwogCi0gICAg
dmlydHVhbCBib29sIGlzUGx1Z0luSW1hZ2VFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNQbHVnSW5JbWFnZUVsZW1lbnQoKSBjb25zdCA9IDA7CiAK
ICAgICBib29sIGlzVXNlck9ic2VydmFibGUoKSBjb25zdDsKIApAQCAtOTMsMjMgKzgyLDIyIEBA
IHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBIVE1MUGx1Z0luRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOwogCisgICAgYm9vbCBjYW5Db250YWluUmFuZ2VF
bmRQb2ludCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxs
RGV0YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb2xs
ZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21TdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgdXNlRmFsbGJhY2tDb250ZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIAotICAgIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYpIG92ZXJyaWRlOworICAg
IHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYpIGZpbmFsOwogCiAgICAgdmlydHVhbCBi
b29sIHJlcXVlc3RPYmplY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFyYW1WYWx1ZXMpOwogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QmKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCYp
IGZpbmFsOwogCiAgICAgLy8gU3ViY2xhc3NlcyBzaG91bGQgdXNlIGd1YXJkZWREaXNwYXRjaEJl
Zm9yZUxvYWRFdmVudCBpbnN0ZWFkIG9mIGNhbGxpbmcgZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQg
ZGlyZWN0bHkuCiAgICAgYm9vbCBndWFyZGVkRGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQoY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwpOwogCi0gICAgYm9vbCBtX2luQmVmb3JlTG9hZEV2ZW50SGFuZGxl
cjsKLSAgICAKICAgICAvLyBUaGlzIHdpbGwgbG9hZCB0aGUgcGx1Z2luIGlmIG5lY2Vzc2FyeS4K
ICAgICB2aXJ0dWFsIFJlbmRlcldpZGdldCogcmVuZGVyV2lkZ2V0TG9hZGluZ1BsdWdpbigpIGNv
bnN0OwogCkBAIC0xMTksMTggKzEwNywxOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBkaXNwYXRj
aEJlZm9yZUxvYWRFdmVudChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgPSBkZWxldGU7IC8vIEdl
bmVyYXRlIGEgY29tcGlsZSBlcnJvciBpZiBzb21lb25lIGNhbGxzIHRoaXMgYnkgbWlzdGFrZS4K
IAotICAgIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3Vw
cG9ydHNGb2N1cygpIGNvbnN0IGZpbmFsOwogCi0gICAgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxl
KEtleWJvYXJkRXZlbnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzS2V5Ym9hcmRGb2N1
c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNQbHVnaW5FbGVt
ZW50KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBjYW5Mb2FkU2NyaXB0VVJMKGNvbnN0IFVSTCYp
IGNvbnN0IGZpbmFsOwogCiAgICAgUmVmUHRyPEpTQzo6QmluZGluZ3M6Okluc3RhbmNlPiBtX2lu
c3RhbmNlOwogICAgIFRpbWVyIG1fc3dhcFJlbmRlcmVyVGltZXI7CiAgICAgUmVmUHRyPFBsdWdp
blJlcGxhY2VtZW50PiBtX3BsdWdpblJlcGxhY2VtZW50OwotICAgIGJvb2wgbV9pc0NhcHR1cmlu
Z01vdXNlRXZlbnRzOwotCi0gICAgRGlzcGxheVN0YXRlIG1fZGlzcGxheVN0YXRlOworICAgIGJv
b2wgbV9pc0NhcHR1cmluZ01vdXNlRXZlbnRzIHsgZmFsc2UgfTsKKyAgICBib29sIG1faW5CZWZv
cmVMb2FkRXZlbnRIYW5kbGVyIHsgZmFsc2UgfTsKKyAgICBEaXNwbGF5U3RhdGUgbV9kaXNwbGF5
U3RhdGUgeyBQbGF5aW5nIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCBkMmFmODUw
NjYxMzExNjgzZDhmODVhNjRiMmI3YWEzMTU3OGEwOTE2Li4yZTFiZTY3ZTYwNWQyNjQyNzYxYjEx
NWNlNzk3YmU1MGNhNTFiMTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkltYWdlRWxlbWVudC5jcHAKQEAgLTM5LDEwICszOSw4IEBACiAjaW5jbHVkZSAiTW91c2VFdmVu
dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIK
LSNpbmNsdWRlICJQbHVnSW5DbGllbnQuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3QmFzZS5oIgog
I2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCi0jaW5jbHVkZSAiUmVuZGVyU25hcHNob3R0ZWRQbHVn
SW4uaCIKICNpbmNsdWRlICJSZW5kZXJUcmVlVXBkYXRlci5oIgogI2luY2x1ZGUgIlNjcmlwdENv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgpAQCAtNjAsNTYgKzU4LDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSFRN
TFBsdWdJbkltYWdlRWxlbWVudCk7CiAKLXN0YXRpYyBjb25zdCBpbnQgc2l6aW5nVGlueURpbWVu
c2lvblRocmVzaG9sZCA9IDQwOwotc3RhdGljIGNvbnN0IGZsb2F0IHNpemluZ0Z1bGxQYWdlQXJl
YVJhdGlvVGhyZXNob2xkID0gMC45NjsKLXN0YXRpYyBjb25zdCBTZWNvbmRzIGF1dG9zdGFydFNv
b25BZnRlclVzZXJHZXN0dXJlVGhyZXNob2xkID0gNV9zOwotCi0vLyBUaGlzIGRlbGF5IHNob3Vs
ZCBub3QgZXhjZWVkIHRoZSBzbmFwc2hvdCBkZWxheSBpbiBQbHVnaW5WaWV3LmNwcAotc3RhdGlj
IGNvbnN0IFNlY29uZHMgc2ltdWxhdGVkTW91c2VDbGlja1RpbWVyRGVsYXkgeyA3NTBfbXMgfTsK
LQotI2lmIFBMQVRGT1JNKENPQ09BKQotc3RhdGljIGNvbnN0IFNlY29uZHMgcmVtb3ZlU25hcHNo
b3RUaW1lckRlbGF5IHsgMTUwMF9tcyB9OwotI2VuZGlmCi0KLXN0YXRpYyBjb25zdCBTdHJpbmcg
dGl0bGVUZXh0KFBhZ2UmIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCi17Ci0gICAgaWYg
KG1pbWVUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHNuYXBzaG90dGVkUGx1Z0luTGFi
ZWxUaXRsZSgpOwotCi0gICAgLy8gRklYTUU6IEl0J3Mgbm90IGNvbnNpc3RlbnQgdG8gZ2V0IGEg
c3RyaW5nIGZyb20gdGhlIHBhZ2UncyBjaHJvbWUgY2xpZW50LCBidXQgdGhlbiBjYWNoZSBpdCBn
bG9iYWxseS4KLSAgICAvLyBJZiBpdCdzIGdsb2JhbCwgaXQgc2hvdWxkIGNvbWUgZnJvbSBlbHNl
d2hlcmUuIElmIGl0J3MgcGVyLXBhZ2UgdGhlbiBpdCBzaG91bGQgYmUgY2FjaGVkIHBlciBwYWdl
LgotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFN0cmluZywgU3RyaW5nPj4gbWlt
ZVR5cGVUb0xhYmVsVGl0bGVNYXA7Ci0gICAgcmV0dXJuIG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFw
LmdldCgpLmVuc3VyZShtaW1lVHlwZSwgWyZdIHsKLSAgICAgICAgYXV0byB0aXRsZSA9IHBhZ2Uu
Y2hyb21lKCkuY2xpZW50KCkucGx1Z0luU3RhcnRMYWJlbFRpdGxlKG1pbWVUeXBlKTsKLSAgICAg
ICAgaWYgKCF0aXRsZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gdGl0bGU7Ci0gICAg
ICAgIHJldHVybiBzbmFwc2hvdHRlZFBsdWdJbkxhYmVsVGl0bGUoKTsKLSAgICB9KS5pdGVyYXRv
ci0+dmFsdWU7Ci19OwotCi1zdGF0aWMgY29uc3QgU3RyaW5nIHN1YnRpdGxlVGV4dChQYWdlJiBw
YWdlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQotewotICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBzbmFwc2hvdHRlZFBsdWdJbkxhYmVsU3VidGl0bGUoKTsKLQot
ICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBjb25zaXN0ZW50IHRvIGdldCBhIHN0cmluZyBmcm9tIHRo
ZSBwYWdlJ3MgY2hyb21lIGNsaWVudCwgYnV0IHRoZW4gY2FjaGUgaXQgZ2xvYmFsbHkuCi0gICAg
Ly8gSWYgaXQncyBnbG9iYWwsIGl0IHNob3VsZCBjb21lIGZyb20gZWxzZXdoZXJlLiBJZiBpdCdz
IHBlci1wYWdlIHRoZW4gaXQgc2hvdWxkIGJlIGNhY2hlZCBwZXIgcGFnZS4KLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4+IG1pbWVUeXBlVG9MYWJlbFN1
YnRpdGxlTWFwOwotICAgIHJldHVybiBtaW1lVHlwZVRvTGFiZWxTdWJ0aXRsZU1hcC5nZXQoKS5l
bnN1cmUobWltZVR5cGUsIFsmXSB7Ci0gICAgICAgIGF1dG8gc3VidGl0bGUgPSBwYWdlLmNocm9t
ZSgpLmNsaWVudCgpLnBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZShtaW1lVHlwZSk7Ci0gICAgICAg
IGlmICghc3VidGl0bGUuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHN1YnRpdGxlOwot
ICAgICAgICByZXR1cm4gc25hcHNob3R0ZWRQbHVnSW5MYWJlbFN1YnRpdGxlKCk7Ci0gICAgfSku
aXRlcmF0b3ItPnZhbHVlOwotfTsKLQogSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6SFRNTFBsdWdJ
bkltYWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
dW1lbnQpCiAgICAgOiBIVE1MUGx1Z0luRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKLSAgICAs
IG1fc2ltdWxhdGVkTW91c2VDbGlja1RpbWVyKCp0aGlzLCAmSFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6c2ltdWxhdGVkTW91c2VDbGlja1RpbWVyRmlyZWQsIHNpbXVsYXRlZE1vdXNlQ2xpY2tUaW1l
ckRlbGF5KQotICAgICwgbV9yZW1vdmVTbmFwc2hvdFRpbWVyKCp0aGlzLCAmSFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6cmVtb3ZlU25hcHNob3RUaW1lckZpcmVkKQotICAgICwgbV9jcmVhdGVkRHVy
aW5nVXNlckdlc3R1cmUoVXNlckdlc3R1cmVJbmRpY2F0b3I6OnByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSgpKQogewotICAgIHNldEhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpOwogfQogCiB2
b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmZpbmlzaENyZWF0aW5nKCkKQEAgLTEyMywyMSAr
NzQsNiBAQCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp+SFRNTFBsdWdJbkltYWdlRWxlbWVudCgp
CiAgICAgICAgIGRvY3VtZW50KCkudW5yZWdpc3RlckZvckRvY3VtZW50U3VzcGVuc2lvbkNhbGxi
YWNrcygqdGhpcyk7CiB9CiAKLXZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c2V0RGlzcGxh
eVN0YXRlKERpc3BsYXlTdGF0ZSBzdGF0ZSkKLXsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBp
ZiAoc3RhdGUgPT0gUmVzdGFydGluZ1dpdGhQZW5kaW5nTW91c2VDbGljayB8fCBzdGF0ZSA9PSBS
ZXN0YXJ0aW5nKSB7Ci0gICAgICAgIG1faXNSZXN0YXJ0ZWRQbHVnaW4gPSB0cnVlOwotICAgICAg
ICBtX3NuYXBzaG90RGVjaXNpb24gPSBOZXZlclNuYXBzaG90OwotICAgICAgICBpbnZhbGlkYXRl
U3R5bGVBbmRMYXllckNvbXBvc2l0aW9uKCk7Ci0gICAgICAgIGlmIChkaXNwbGF5U3RhdGUoKSA9
PSBEaXNwbGF5aW5nU25hcHNob3QpCi0gICAgICAgICAgICBtX3JlbW92ZVNuYXBzaG90VGltZXIu
c3RhcnRPbmVTaG90KHJlbW92ZVNuYXBzaG90VGltZXJEZWxheSk7Ci0gICAgfQotI2VuZGlmCi0K
LSAgICBIVE1MUGx1Z0luRWxlbWVudDo6c2V0RGlzcGxheVN0YXRlKHN0YXRlKTsKLX0KLQogUmVu
ZGVyRW1iZWRkZWRPYmplY3QqIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnJlbmRlckVtYmVkZGVk
T2JqZWN0KCkgY29uc3QKIHsKICAgICAvLyBIVE1MT2JqZWN0RWxlbWVudCBhbmQgSFRNTEVtYmVk
RWxlbWVudCBtYXkgcmV0dXJuIGFyYml0cmFyeSByZW5kZXJlcnMgd2hlbiB1c2luZyBmYWxsYmFj
ayBjb250ZW50LgpAQCAtMTk3LDEyICsxMzMsNiBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eQog
ICAgICAgICBkb2N1bWVudCgpLnJlZ2lzdGVyRm9yRG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tz
KCp0aGlzKTsKICAgICB9CiAKLSAgICBpZiAoZGlzcGxheVN0YXRlKCkgPT0gRGlzcGxheWluZ1Nu
YXBzaG90KSB7Ci0gICAgICAgIGF1dG8gcmVuZGVyU25hcHNob3R0ZWRQbHVnSW4gPSBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsK
LSAgICAgICAgcmVuZGVyU25hcHNob3R0ZWRQbHVnSW4tPnVwZGF0ZVNuYXBzaG90KG1fc25hcHNo
b3RJbWFnZS5nZXQoKSk7Ci0gICAgICAgIHJldHVybiByZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjsK
LSAgICB9Ci0KICAgICBpZiAodXNlRmFsbGJhY2tDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBS
ZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIApAQCAtMjE0
LDkgKzE0NCw2IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5CiAKIGJvb2wgSFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJiBjaGlsZCkg
Y29uc3QKIHsKLSAgICBpZiAoaXM8UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4+KHJlbmRlcmVyKCkp
ICYmICFoYXNTaGFkb3dSb290UGFyZW50KGNoaWxkKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
CiAgICAgcmV0dXJuIEhUTUxQbHVnSW5FbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVy
KGNoaWxkKTsKIH0KIApAQCAtMjI4LDcgKzE1NSw3IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxl
bWVudDo6d2lsbFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UgY2hhbmdlKQogCiAgICAgLy8gRklY
TUU6IFRoZXJlIHNob3Vkbid0IGJlIG5lZWQgdG8gZm9yY2UgcmVuZGVyIHRyZWUgcmVjb25zdHJ1
Y3Rpb24gaGVyZS4KICAgICAvLyBJdCBpcyBvbmx5IGRvbmUgYmVjYXVzZSBsb2FkaW5nIGFuZCBs
b2FkIGV2ZW50IGRpc3BhdGNoaW5nIGlzIHRpZWQgdG8gcmVuZGVyIHRyZWUgY29uc3RydWN0aW9u
LgotICAgIGlmICghdXNlRmFsbGJhY2tDb250ZW50KCkgJiYgbmVlZHNXaWRnZXRVcGRhdGUoKSAm
JiByZW5kZXJlcigpICYmICFpc0ltYWdlVHlwZSgpICYmIGRpc3BsYXlTdGF0ZSgpICE9IERpc3Bs
YXlpbmdTbmFwc2hvdCkKKyAgICBpZiAoIXVzZUZhbGxiYWNrQ29udGVudCgpICYmIG5lZWRzV2lk
Z2V0VXBkYXRlKCkgJiYgcmVuZGVyZXIoKSAmJiAhaXNJbWFnZVR5cGUoKSkKICAgICAgICAgaW52
YWxpZGF0ZVN0eWxlQW5kUmVuZGVyZXJzRm9yU3VidHJlZSgpOwogfQogCkBAIC0zNDEsNDM1ICsy
NjgsNiBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnJlc3VtZUZyb21Eb2N1bWVudFN1
c3BlbnNpb24oKQogICAgIEhUTUxQbHVnSW5FbGVtZW50OjpyZXN1bWVGcm9tRG9jdW1lbnRTdXNw
ZW5zaW9uKCk7CiB9CiAKLXZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlU25hcHNo
b3QoSW1hZ2UqIGltYWdlKQotewotICAgIGlmIChkaXNwbGF5U3RhdGUoKSA+IERpc3BsYXlpbmdT
bmFwc2hvdCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zbmFwc2hvdEltYWdlID0gaW1hZ2U7
Ci0KLSAgICBhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5k
ZXJlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGlzPFJlbmRlclNuYXBzaG90dGVkUGx1
Z0luPigqcmVuZGVyZXIpKSB7Ci0gICAgICAgIGRvd25jYXN0PFJlbmRlclNuYXBzaG90dGVkUGx1
Z0luPigqcmVuZGVyZXIpLnVwZGF0ZVNuYXBzaG90KGltYWdlKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChpczxSZW5kZXJFbWJlZGRlZE9iamVjdD4oKnJlbmRlcmVyKSkKLSAg
ICAgICAgcmVuZGVyZXItPnJlcGFpbnQoKTsKLX0KLQotc3RhdGljIERPTVdyYXBwZXJXb3JsZCYg
cGx1Z0luSW1hZ2VFbGVtZW50SXNvbGF0ZWRXb3JsZCgpCi17Ci0gICAgc3RhdGljIGF1dG8mIGlz
b2xhdGVkV29ybGQgPSBET01XcmFwcGVyV29ybGQ6OmNyZWF0ZShjb21tb25WTSgpLCBET01XcmFw
cGVyV29ybGQ6OlR5cGU6OkludGVybmFsLCAiUGx1Z2luIl9zKS5sZWFrUmVmKCk7Ci0gICAgcmV0
dXJuIGlzb2xhdGVkV29ybGQ7Ci19Ci0KLXZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlk
QWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290JiByb290KQotewotICAgIEhUTUxQbHVn
SW5FbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KHJvb3QpOwotICAgIGlmIChkaXNw
bGF5U3RhdGUoKSA+PSBQcmVwYXJpbmdQbHVnaW5SZXBsYWNlbWVudCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgYXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpOwotICAgIGlmICghcGFnZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gUmVzZXQgYW55IGF1dGhvciBzdHlsZXMgdGhhdCBt
YXkgYXBwbHkgYXMgd2Ugb25seSB3YW50IGV4cGxpY2l0Ci0gICAgLy8gc3R5bGVzIGRlZmluZWQg
aW4gdGhlIGluamVjdGVkIHVzZXIgYWdlbnRzIHN0eWxlc2hlZXRzIHRvIHNwZWNpZnkKLSAgICAv
LyB0aGUgbG9vay1hbmQtZmVlbCBvZiB0aGUgc25hcHNob3R0ZWQgcGx1Zy1pbiBvdmVybGF5LiAK
LSAgICByb290LnNldFJlc2V0U3R5bGVJbmhlcml0YW5jZSh0cnVlKTsKLSAgICAKLSAgICBTdHJp
bmcgbWltZVR5cGUgPSBzZXJ2aWNlVHlwZSgpOwotCi0gICAgYXV0byYgaXNvbGF0ZWRXb3JsZCA9
IHBsdWdJbkltYWdlRWxlbWVudElzb2xhdGVkV29ybGQoKTsKLSAgICBkb2N1bWVudCgpLmVuc3Vy
ZVBsdWdJbnNJbmplY3RlZFNjcmlwdChpc29sYXRlZFdvcmxkKTsKLQotICAgIGF1dG8mIHNjcmlw
dENvbnRyb2xsZXIgPSBkb2N1bWVudCgpLmZyYW1lKCktPnNjcmlwdCgpOwotICAgIGF1dG8mIGds
b2JhbE9iamVjdCA9ICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdENvbnRy
b2xsZXIuZ2xvYmFsT2JqZWN0KGlzb2xhdGVkV29ybGQpKTsKLQotICAgIGF1dG8mIHZtID0gZ2xv
YmFsT2JqZWN0LnZtKCk7Ci0gICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotICAgIGF1dG8mIGxleGljYWxHbG9i
YWxPYmplY3QgPSBnbG9iYWxPYmplY3Q7Ci0KLSAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ0xpc3Q7Ci0gICAgYXJnTGlzdC5hcHBlbmQodG9KUzxJRExJbnRlcmZhY2U8U2hhZG93Um9v
dD4+KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgcm9vdCkpOwotICAgIGFyZ0xp
c3QuYXBwZW5kKHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aXRsZVRl
eHQoKnBhZ2UsIG1pbWVUeXBlKSkpOwotICAgIGFyZ0xpc3QuYXBwZW5kKHRvSlM8SURMRE9NU3Ry
aW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzdWJ0aXRsZVRleHQoKnBhZ2UsIG1pbWVUeXBlKSkp
OwotICAgIAotICAgIC8vIFRoaXMgcGFyYW1ldGVyIGRldGVybWluZXMgd2hldGhlciBvciBub3Qg
dGhlIHNuYXBzaG90IG92ZXJsYXkgc2hvdWxkIGFsd2F5cyBiZSB2aXNpYmxlIG92ZXIgdGhlIHBs
dWdpbiBzbmFwc2hvdC4KLSAgICAvLyBJZiBubyBzbmFwc2hvdCB3YXMgZm91bmQgdGhlbiB3ZSB3
YW50IHRoZSBvdmVybGF5IHRvIGJlIHZpc2libGUuCi0gICAgYXJnTGlzdC5hcHBlbmQodG9KUzxJ
RExCb29sZWFuPighbV9zbmFwc2hvdEltYWdlKSk7Ci0gICAgQVNTRVJUKCFhcmdMaXN0Lmhhc092
ZXJmbG93ZWQoKSk7Ci0KLSAgICAvLyBJdCBpcyBleHBlY3RlZCB0aGUgSlMgZmlsZSBwcm92aWRl
cyBhIGNyZWF0ZU92ZXJsYXkoc2hhZG93Um9vdCwgdGl0bGUsIHN1YnRpdGxlKSBmdW5jdGlvbi4K
LSAgICBhdXRvKiBvdmVybGF5ID0gZ2xvYmFsT2JqZWN0LmdldCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3JlYXRlT3ZlcmxheSIpKS50b09i
amVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgQVNTRVJUKCFvdmVybGF5ID09ICEhc2Nv
cGUuZXhjZXB0aW9uKCkpOwotICAgIGlmICghb3ZlcmxheSkgewotICAgICAgICBzY29wZS5jbGVh
ckV4Y2VwdGlvbigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGF1dG8gY2FsbERhdGEg
PSBKU0M6OmdldENhbGxEYXRhKHZtLCBvdmVybGF5KTsKLSAgICBpZiAoY2FsbERhdGEudHlwZSA9
PSBKU0M6OkNhbGxEYXRhOjpUeXBlOjpOb25lKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjYWxs
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBvdmVybGF5LCBjYWxsRGF0YSwgJmdsb2JhbE9iamVjdCwg
YXJnTGlzdCk7Ci0gICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKLX0KLQotYm9vbCBIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50OjpwYXJ0T2ZTbmFwc2hvdE92ZXJsYXkoY29uc3QgRXZlbnRUYXJnZXQq
IHRhcmdldCkgY29uc3QKLXsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21TdHJpbmc+IHNlbGVjdG9yKCIuc25hcHNob3Qtb3ZlcmxheSIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBhdXRvIHNoYWRvdyA9IHVzZXJBZ2VudFNoYWRv
d1Jvb3QoKTsKLSAgICBpZiAoIXNoYWRvdykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICghaXM8Tm9kZT4odGFyZ2V0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8gcXVl
cnlSZXN1bHQgPSBzaGFkb3ctPnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IuZ2V0KCkpOwotICAgIGlm
IChxdWVyeVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGF1dG8gc25hcHNob3RMYWJlbCA9IG1ha2VSZWZQdHIocXVlcnlSZXN1bHQucmVsZWFzZVJldHVy
blZhbHVlKCkpOwotICAgIHJldHVybiBzbmFwc2hvdExhYmVsICYmIHNuYXBzaG90TGFiZWwtPmNv
bnRhaW5zKGRvd25jYXN0PE5vZGU+KHRhcmdldCkpOwotfQotCi12b2lkIEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ6OnJlbW92ZVNuYXBzaG90VGltZXJGaXJlZCgpCi17Ci0gICAgbV9zbmFwc2hvdElt
YWdlID0gbnVsbHB0cjsKLSAgICBtX2lzUmVzdGFydGVkUGx1Z2luID0gZmFsc2U7Ci0gICAgaW52
YWxpZGF0ZVN0eWxlQW5kTGF5ZXJDb21wb3NpdGlvbigpOwotICAgIGlmIChyZW5kZXJlcigpKQot
ICAgICAgICByZW5kZXJlcigpLT5yZXBhaW50KCk7Ci19Ci0KLXZvaWQgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6cmVzdGFydFNpbWlsYXJQbHVnSW5zKCkKLXsKLSAgICAvLyBSZXN0YXJ0IGFueSBv
dGhlciBzbmFwc2hvdHRlZCBwbHVnaW5zIGluIHRoZSBwYWdlIHdpdGggdGhlIHNhbWUgb3JpZ2lu
LiBOb3RlIHRoYXQgdGhleQotICAgIC8vIG1heSBiZSBpbiBkaWZmZXJlbnQgZnJhbWVzLCBzbyB0
cmF2ZXJzZSBmcm9tIHRoZSB0b3Agb2YgdGhlIGRvY3VtZW50LgotCi0gICAgYXV0byBwbHVnSW5P
cmlnaW4gPSBtX2xvYWRlZFVybC5ob3N0KCk7Ci0gICAgU3RyaW5nIG1pbWVUeXBlID0gc2Vydmlj
ZVR5cGUoKTsKLSAgICBWZWN0b3I8UmVmPEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+PiBzaW1pbGFy
UGx1Z2luczsKLQotICAgIGlmICghZG9jdW1lbnQoKS5wYWdlKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGZvciAoUmVmUHRyPEZyYW1lPiBmcmFtZSA9ICZkb2N1bWVudCgpLnBhZ2UoKS0+bWFp
bkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsK
LSAgICAgICAgaWYgKCFmcmFtZS0+bG9hZGVyKCkuc3ViZnJhbWVMb2FkZXIoKS5jb250YWluc1Bs
dWdpbnMoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAgICAgaWYgKCFm
cmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGZvciAo
YXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+
KCpmcmFtZS0+ZG9jdW1lbnQoKSkpIHsKLSAgICAgICAgICAgIGlmIChwbHVnSW5PcmlnaW4gPT0g
ZWxlbWVudC5sb2FkZWRVcmwoKS5ob3N0KCkgJiYgbWltZVR5cGUgPT0gZWxlbWVudC5zZXJ2aWNl
VHlwZSgpKQotICAgICAgICAgICAgICAgIHNpbWlsYXJQbHVnaW5zLmFwcGVuZChlbGVtZW50KTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIGZvciAoYXV0byYgcGx1Z0luVG9SZXN0YXJ0IDogc2lt
aWxhclBsdWdpbnMpIHsKLSAgICAgICAgaWYgKHBsdWdJblRvUmVzdGFydC0+ZGlzcGxheVN0YXRl
KCkgPD0gSFRNTFBsdWdJbkVsZW1lbnQ6OkRpc3BsYXlpbmdTbmFwc2hvdCkgewotICAgICAgICAg
ICAgTE9HKFBsdWdpbnMsICIlcCBQbHVnLWluIGxvb2tzIHNpbWlsYXIgdG8gYSByZXN0YXJ0ZWQg
cGx1Zy1pbi4gUmVzdGFydC4iLCBwbHVnSW5Ub1Jlc3RhcnQucHRyKCkpOwotICAgICAgICAgICAg
cGx1Z0luVG9SZXN0YXJ0LT5yZXN0YXJ0U25hcHNob3R0ZWRQbHVnSW4oKTsKLSAgICAgICAgfQot
ICAgICAgICBwbHVnSW5Ub1Jlc3RhcnQtPm1fc25hcHNob3REZWNpc2lvbiA9IE5ldmVyU25hcHNo
b3Q7Ci0gICAgfQotfQotCi12b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVzZXJEaWRDbGlj
a1NuYXBzaG90KE1vdXNlRXZlbnQmIGV2ZW50LCBib29sIGZvcndhcmRFdmVudCkKLXsKLSAgICBp
ZiAoZm9yd2FyZEV2ZW50KQotICAgICAgICBtX3BlbmRpbmdDbGlja0V2ZW50RnJvbVNuYXBzaG90
ID0gJmV2ZW50OwotCi0gICAgYXV0byBwbHVnSW5PcmlnaW4gPSBtX2xvYWRlZFVybC5ob3N0KCk7
Ci0gICAgaWYgKGRvY3VtZW50KCkucGFnZSgpICYmICFMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hv
dWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKGRvY3VtZW50KCkucGFnZSgpLT5tYWluRnJhbWUoKS5k
b2N1bWVudCgpLT5iYXNlVVJMKCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkp
ICYmIGRvY3VtZW50KCkucGFnZSgpLT5zZXR0aW5ncygpLmF1dG9zdGFydE9yaWdpblBsdWdJblNu
YXBzaG90dGluZ0VuYWJsZWQoKSkKLSAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPnBsdWdJbkNs
aWVudCgpLT5kaWRTdGFydEZyb21PcmlnaW4oZG9jdW1lbnQoKS5wYWdlKCktPm1haW5GcmFtZSgp
LmRvY3VtZW50KCktPmJhc2VVUkwoKS5ob3N0KCkudG9TdHJpbmcoKSwgcGx1Z0luT3JpZ2luLnRv
U3RyaW5nKCksIHNlcnZpY2VUeXBlKCkpOwotCi0gICAgTE9HKFBsdWdpbnMsICIlcCBVc2VyIGNs
aWNrZWQgb24gc25hcHNob3R0ZWQgcGx1Zy1pbi4gUmVzdGFydC4iLCB0aGlzKTsKLSAgICByZXN0
YXJ0U25hcHNob3R0ZWRQbHVnSW4oKTsKLSAgICBpZiAoZm9yd2FyZEV2ZW50KQotICAgICAgICBz
ZXREaXNwbGF5U3RhdGUoUmVzdGFydGluZ1dpdGhQZW5kaW5nTW91c2VDbGljayk7Ci0gICAgcmVz
dGFydFNpbWlsYXJQbHVnSW5zKCk7Ci19Ci0KLXZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6
c2V0SXNQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW4oYm9vbCBpc1ByaW1hcnlTbmFwc2hvdHRlZFBs
dWdJbikKLXsKLSAgICBpZiAoIWRvY3VtZW50KCkucGFnZSgpIHx8ICFkb2N1bWVudCgpLnBhZ2Uo
KS0+c2V0dGluZ3MoKS5wcmltYXJ5UGx1Z0luU25hcHNob3REZXRlY3Rpb25FbmFibGVkKCkgfHwg
ZG9jdW1lbnQoKS5wYWdlKCktPnNldHRpbmdzKCkuc25hcHNob3RBbGxQbHVnSW5zKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGlmIChpc1ByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbikgewotICAg
ICAgICBpZiAobV9wbHVnSW5XYXNDcmVhdGVkKSB7Ci0gICAgICAgICAgICBMT0coUGx1Z2lucywg
IiVwIFBsdWctaW4gd2FzIGRldGVjdGVkIGFzIHRoZSBwcmltYXJ5IGVsZW1lbnQgaW4gdGhlIHBh
Z2UuIFJlc3RhcnQuIiwgdGhpcyk7Ci0gICAgICAgICAgICByZXN0YXJ0U25hcHNob3R0ZWRQbHVn
SW4oKTsKLSAgICAgICAgICAgIHJlc3RhcnRTaW1pbGFyUGx1Z0lucygpOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgTE9HKFBsdWdpbnMsICIlcCBQbHVnLWluIHdhcyBkZXRlY3RlZCBh
cyB0aGUgcHJpbWFyeSBlbGVtZW50IGluIHRoZSBwYWdlLCBidXQgaXMgbm90IHlldCBjcmVhdGVk
LiBXaWxsIHJlc3RhcnQgbGF0ZXIuIiwgdGhpcyk7Ci0gICAgICAgICAgICBtX2RlZmVycmVkUHJv
bW90aW9uVG9QcmltYXJ5UGx1Z0luID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9p
ZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZXN0YXJ0U25hcHNob3R0ZWRQbHVnSW4oKQotewot
ICAgIGlmIChkaXNwbGF5U3RhdGUoKSA+PSBSZXN0YXJ0aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNr
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBzZXREaXNwbGF5U3RhdGUoUmVzdGFydGluZyk7Ci0g
ICAgaW52YWxpZGF0ZVN0eWxlQW5kUmVuZGVyZXJzRm9yU3VidHJlZSgpOwotfQotCi12b2lkIEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ01vdXNlQ2xpY2soKQotewotICAg
IEFTU0VSVCghbV9zaW11bGF0ZWRNb3VzZUNsaWNrVGltZXIuaXNBY3RpdmUoKSk7Ci0gICAgbV9z
aW11bGF0ZWRNb3VzZUNsaWNrVGltZXIucmVzdGFydCgpOwotfQotCi12b2lkIEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ6OnNpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lckZpcmVkKCkKLXsKLSAgICBBU1NF
UlQoZGlzcGxheVN0YXRlKCkgPT0gUmVzdGFydGluZ1dpdGhQZW5kaW5nTW91c2VDbGljayk7Ci0g
ICAgQVNTRVJUKG1fcGVuZGluZ0NsaWNrRXZlbnRGcm9tU25hcHNob3QpOwotCi0gICAgc2V0RGlz
cGxheVN0YXRlKFBsYXlpbmcpOwotICAgIGRpc3BhdGNoU2ltdWxhdGVkQ2xpY2sobV9wZW5kaW5n
Q2xpY2tFdmVudEZyb21TbmFwc2hvdC5nZXQoKSwgU2VuZE1vdXNlT3ZlclVwRG93bkV2ZW50cywg
RG9Ob3RTaG93UHJlc3NlZExvb2spOwotCi0gICAgbV9wZW5kaW5nQ2xpY2tFdmVudEZyb21TbmFw
c2hvdCA9IG51bGxwdHI7Ci19Ci0KLXN0YXRpYyBib29sIGRvY3VtZW50SGFkUmVjZW50VXNlckdl
c3R1cmUoRG9jdW1lbnQmIGRvY3VtZW50KQotewotICAgIE1vbm90b25pY1RpbWUgbGFzdEtub3du
VXNlckdlc3R1cmVUaW1lc3RhbXAgPSBkb2N1bWVudC5sYXN0SGFuZGxlZFVzZXJHZXN0dXJlVGlt
ZXN0YW1wKCk7Ci0gICAgaWYgKGRvY3VtZW50LmZyYW1lKCkgIT0gJmRvY3VtZW50LnBhZ2UoKS0+
bWFpbkZyYW1lKCkgJiYgZG9jdW1lbnQucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQot
ICAgICAgICBsYXN0S25vd25Vc2VyR2VzdHVyZVRpbWVzdGFtcCA9IHN0ZDo6bWF4KGxhc3RLbm93
blVzZXJHZXN0dXJlVGltZXN0YW1wLCBkb2N1bWVudC5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3Vt
ZW50KCktPmxhc3RIYW5kbGVkVXNlckdlc3R1cmVUaW1lc3RhbXAoKSk7Ci0KLSAgICByZXR1cm4g
TW9ub3RvbmljVGltZTo6bm93KCkgLSBsYXN0S25vd25Vc2VyR2VzdHVyZVRpbWVzdGFtcCA8IGF1
dG9zdGFydFNvb25BZnRlclVzZXJHZXN0dXJlVGhyZXNob2xkOwotfQotCi12b2lkIEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQ6OmNoZWNrU2l6ZUNoYW5nZUZvclNuYXBzaG90dGluZygpCi17Ci0gICAg
aWYgKCFtX25lZWRzQ2hlY2tGb3JTaXplQ2hhbmdlIHx8IG1fc25hcHNob3REZWNpc2lvbiAhPSBN
YXlTbmFwc2hvdFdoZW5SZXNpemVkIHx8IGRvY3VtZW50SGFkUmVjZW50VXNlckdlc3R1cmUoZG9j
dW1lbnQoKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fbmVlZHNDaGVja0ZvclNpemVDaGFu
Z2UgPSBmYWxzZTsKLQotICAgIGF1dG8gY29udGVudEJveFJlY3QgPSBkb3duY2FzdDxSZW5kZXJC
b3g+KCpyZW5kZXJlcigpKS5jb250ZW50Qm94UmVjdCgpOwotICAgIGludCBjb250ZW50V2lkdGgg
PSBjb250ZW50Qm94UmVjdC53aWR0aCgpOwotICAgIGludCBjb250ZW50SGVpZ2h0ID0gY29udGVu
dEJveFJlY3QuaGVpZ2h0KCk7Ci0KLSAgICBpZiAoY29udGVudFdpZHRoIDw9IHNpemluZ1RpbnlE
aW1lbnNpb25UaHJlc2hvbGQgfHwgY29udGVudEhlaWdodCA8PSBzaXppbmdUaW55RGltZW5zaW9u
VGhyZXNob2xkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBMT0coUGx1Z2lucywgIiVwIFBsdWct
aW4gb3JpZ2luYWxseSBhdm9pZGVkIHNuYXBzaG90dGluZyBiZWNhdXNlIGl0IHdhcyBzaXplZCAl
ZHglZC4gTm93IGl0IGlzICVkeCVkLiBUZWxsIGl0IHRvIHNuYXBzaG90LlxuIiwgdGhpcywgbV9z
aXplV2hlblNuYXBzaG90dGVkLndpZHRoKCksIG1fc2l6ZVdoZW5TbmFwc2hvdHRlZC5oZWlnaHQo
KSwgY29udGVudFdpZHRoLCBjb250ZW50SGVpZ2h0KTsKLSAgICBzZXREaXNwbGF5U3RhdGUoV2Fp
dGluZ0ZvclNuYXBzaG90KTsKLSAgICBtX3NuYXBzaG90RGVjaXNpb24gPSBTbmFwc2hvdHRlZDsK
LSAgICBhdXRvIHdpZGdldCA9IG1ha2VSZWZQdHIocGx1Z2luV2lkZ2V0KCkpOwotICAgIGlmIChp
czxQbHVnaW5WaWV3QmFzZT4od2lkZ2V0KSkKLSAgICAgICAgZG93bmNhc3Q8UGx1Z2luVmlld0Jh
c2U+KCp3aWRnZXQpLmJlZ2luU25hcHNob3R0aW5nUnVubmluZ1BsdWdpbigpOwotfQotCi1zdGF0
aWMgaW5saW5lIGJvb2wgaXMxMDBQZXJjZW50KExlbmd0aCBsZW5ndGgpCi17Ci0gICAgcmV0dXJu
IGxlbmd0aC5pc1BlcmNlbnQoKSAmJiBsZW5ndGgucGVyY2VudCgpID09IDEwMDsKLX0KLSAgICAK
LXN0YXRpYyBpbmxpbmUgYm9vbCBpc1NtYWxsZXJUaGFuVGlueVNpemluZ1RocmVzaG9sZChjb25z
dCBSZW5kZXJFbWJlZGRlZE9iamVjdCYgcmVuZGVyZXIpCi17Ci0gICAgYXV0byBjb250ZW50UmVj
dCA9IHJlbmRlcmVyLmNvbnRlbnRCb3hSZWN0KCk7Ci0gICAgcmV0dXJuIGNvbnRlbnRSZWN0Lndp
ZHRoKCkgPD0gc2l6aW5nVGlueURpbWVuc2lvblRocmVzaG9sZCB8fCBjb250ZW50UmVjdC5oZWln
aHQoKSA8PSBzaXppbmdUaW55RGltZW5zaW9uVGhyZXNob2xkOwotfQotICAgIAotYm9vbCBIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50Ojppc1RvcExldmVsRnVsbFBhZ2VQbHVnaW4oY29uc3QgUmVuZGVy
RW1iZWRkZWRPYmplY3QmIHJlbmRlcmVyKSBjb25zdAotewotICAgIEFTU0VSVChkb2N1bWVudCgp
LmZyYW1lKCkpOwotICAgIGF1dG8mIGZyYW1lID0gKmRvY3VtZW50KCkuZnJhbWUoKTsKLSAgICBp
ZiAoIWZyYW1lLmlzTWFpbkZyYW1lKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAg
ICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyLnN0eWxlKCk7Ci0gICAgYXV0byB2aXNpYmxlU2l6ZSA9
IGZyYW1lLnZpZXcoKS0+dmlzaWJsZVNpemUoKTsKLSAgICBhdXRvIGNvbnRlbnRSZWN0ID0gcmVu
ZGVyZXIuY29udGVudEJveFJlY3QoKTsKLSAgICBmbG9hdCBjb250ZW50V2lkdGggPSBjb250ZW50
UmVjdC53aWR0aCgpOwotICAgIGZsb2F0IGNvbnRlbnRIZWlnaHQgPSBjb250ZW50UmVjdC5oZWln
aHQoKTsKLSAgICByZXR1cm4gaXMxMDBQZXJjZW50KHN0eWxlLndpZHRoKCkpICYmIGlzMTAwUGVy
Y2VudChzdHlsZS5oZWlnaHQoKSkgJiYgY29udGVudFdpZHRoICogY29udGVudEhlaWdodCA+IHZp
c2libGVTaXplLmFyZWEoKS51bnNhZmVHZXQoKSAqIHNpemluZ0Z1bGxQYWdlQXJlYVJhdGlvVGhy
ZXNob2xkOwotfQotCi12b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNoZWNrU25hcHNob3RT
dGF0dXMoKQotewotICAgIGlmICghaXM8UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4+KCpyZW5kZXJl
cigpKSkgewotICAgICAgICBpZiAoZGlzcGxheVN0YXRlKCkgPT0gUGxheWluZykKLSAgICAgICAg
ICAgIGNoZWNrU2l6ZUNoYW5nZUZvclNuYXBzaG90dGluZygpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIAotICAgIC8vIElmIHdpZHRoIGFuZCBoZWlnaHQgc3R5bGVzIHdlcmUgcHJldmlv
dXNseSBub3Qgc2V0IGFuZCB3ZSd2ZSBzbmFwc2hvdHRlZCB0aGUgcGx1Z2luIHdlIG1heSBuZWVk
IHRvIHJlc3RhcnQgdGhlIHBsdWdpbiBzbyB0aGF0IGl0cyBzdGF0ZSBjYW4gYmUgdXBkYXRlZCBh
cHByb3ByaWF0ZWx5LgotICAgIGlmICghZG9jdW1lbnQoKS5wYWdlKCktPnNldHRpbmdzKCkuc25h
cHNob3RBbGxQbHVnSW5zKCkgJiYgZGlzcGxheVN0YXRlKCkgPD0gRGlzcGxheWluZ1NuYXBzaG90
ICYmICFtX3BsdWdJbkRpbWVuc2lvbnNTcGVjaWZpZWQpIHsKLSAgICAgICAgYXV0byYgcmVuZGVy
ZXIgPSBkb3duY2FzdDxSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbj4oKnRoaXMtPnJlbmRlcmVyKCkp
OwotICAgICAgICBpZiAoIXJlbmRlcmVyLnN0eWxlKCkubG9naWNhbFdpZHRoKCkuaXNTcGVjaWZp
ZWQoKSAmJiAhcmVuZGVyZXIuc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNTcGVjaWZpZWQoKSkK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIG1fcGx1Z0luRGltZW5zaW9u
c1NwZWNpZmllZCA9IHRydWU7Ci0gICAgICAgIGlmIChpc1RvcExldmVsRnVsbFBhZ2VQbHVnaW4o
cmVuZGVyZXIpKSB7Ci0gICAgICAgICAgICBtX3NuYXBzaG90RGVjaXNpb24gPSBOZXZlclNuYXBz
aG90OwotICAgICAgICAgICAgcmVzdGFydFNuYXBzaG90dGVkUGx1Z0luKCk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoaXNTbWFsbGVyVGhhblRpbnlTaXppbmdUaHJlc2hvbGQocmVuZGVyZXIpKSB7Ci0g
ICAgICAgICAgICBtX3NuYXBzaG90RGVjaXNpb24gPSBNYXlTbmFwc2hvdFdoZW5SZXNpemVkOwot
ICAgICAgICAgICAgcmVzdGFydFNuYXBzaG90dGVkUGx1Z0luKCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICAvLyBOb3RpZnkgdGhlIHNoYWRvdyByb290IHRo
YXQgdGhlIHNpemUgY2hhbmdlZCBzbyB0aGF0IHdlIG1heSB1cGRhdGUgdGhlIG92ZXJsYXkgbGF5
b3V0LgotICAgIGVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKS5kaXNwYXRjaEV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLnJlc2l6ZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMs
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7Ci19Ci0gICAgCi12b2lkIEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ6OnN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBsdWdJbihjb25zdCBVUkwmIHVybCkK
LXsKLSAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gVVJMOiAlcyIsIHRoaXMsIG1fdXJsLnV0
ZjgoKS5kYXRhKCkpOwotICAgIExPRyhQbHVnaW5zLCAiICAgQWN0dWFsIFVSTDogJXMiLCB1cmwu
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgTE9HKFBsdWdpbnMsICIgICBNSU1FIHR5cGU6
ICVzIiwgc2VydmljZVR5cGUoKS51dGY4KCkuZGF0YSgpKTsKLQotICAgIG1fbG9hZGVkVXJsID0g
dXJsOwotICAgIG1fcGx1Z0luV2FzQ3JlYXRlZCA9IGZhbHNlOwotICAgIG1fZGVmZXJyZWRQcm9t
b3Rpb25Ub1ByaW1hcnlQbHVnSW4gPSBmYWxzZTsKLQotICAgIGlmICghZG9jdW1lbnQoKS5wYWdl
KCkgfHwgIWRvY3VtZW50KCkucGFnZSgpLT5zZXR0aW5ncygpLnBsdWdJblNuYXBzaG90dGluZ0Vu
YWJsZWQoKSkgewotICAgICAgICBtX3NuYXBzaG90RGVjaXNpb24gPSBOZXZlclNuYXBzaG90Owot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGRpc3BsYXlTdGF0ZSgpID09IFJlc3Rh
cnRpbmcpIHsKLSAgICAgICAgTE9HKFBsdWdpbnMsICIlcCBQbHVnLWluIGlzIGV4cGxpY2l0bHkg
cmVzdGFydGluZyIsIHRoaXMpOwotICAgICAgICBtX3NuYXBzaG90RGVjaXNpb24gPSBOZXZlclNu
YXBzaG90OwotICAgICAgICBzZXREaXNwbGF5U3RhdGUoUGxheWluZyk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoZGlzcGxheVN0YXRlKCkgPT0gUmVzdGFydGluZ1dpdGhQZW5k
aW5nTW91c2VDbGljaykgewotICAgICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gaXMgZXhw
bGljaXRseSByZXN0YXJ0aW5nIGJ1dCBhbHNvIHdhaXRpbmcgZm9yIGEgY2xpY2siLCB0aGlzKTsK
LSAgICAgICAgbV9zbmFwc2hvdERlY2lzaW9uID0gTmV2ZXJTbmFwc2hvdDsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChtX3NuYXBzaG90RGVjaXNpb24gPT0gTmV2ZXJTbmFwc2hv
dCkgewotICAgICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gaXMgYmxlc3NlZCwgYWxsb3cg
aXQgdG8gc3RhcnQiLCB0aGlzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGJvb2wg
aW5NYWluRnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCktPmlzTWFpbkZyYW1lKCk7Ci0KLSAgICBp
ZiAoZG9jdW1lbnQoKS5pc1BsdWdpbkRvY3VtZW50KCkgJiYgaW5NYWluRnJhbWUpIHsKLSAgICAg
ICAgTE9HKFBsdWdpbnMsICIlcCBQbHVnLWluIGRvY3VtZW50IGluIG1haW4gZnJhbWUiLCB0aGlz
KTsKLSAgICAgICAgbV9zbmFwc2hvdERlY2lzaW9uID0gTmV2ZXJTbmFwc2hvdDsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKCkpIHsKLSAgICAgICAgTE9HKFBsdWdpbnMsICIlcCBTY3JpcHQgaXMgY3Vy
cmVudGx5IHByb2Nlc3NpbmcgdXNlciBnZXN0dXJlLCBzZXQgdG8gcGxheSIsIHRoaXMpOwotICAg
ICAgICBtX3NuYXBzaG90RGVjaXNpb24gPSBOZXZlclNuYXBzaG90OwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKG1fY3JlYXRlZER1cmluZ1VzZXJHZXN0dXJlKSB7Ci0gICAgICAg
IExPRyhQbHVnaW5zLCAiJXAgUGx1Zy1pbiB3YXMgY3JlYXRlZCB3aGVuIHByb2Nlc3NpbmcgdXNl
ciBnZXN0dXJlLCBzZXQgdG8gcGxheSIsIHRoaXMpOwotICAgICAgICBtX3NuYXBzaG90RGVjaXNp
b24gPSBOZXZlclNuYXBzaG90OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGRv
Y3VtZW50SGFkUmVjZW50VXNlckdlc3R1cmUoZG9jdW1lbnQoKSkpIHsKLSAgICAgICAgTE9HKFBs
dWdpbnMsICIlcCBQbHVnLWluIHdhcyBjcmVhdGVkIHNob3J0bHkgYWZ0ZXIgYSB1c2VyIGdlc3R1
cmUsIHNldCB0byBwbGF5IiwgdGhpcyk7Ci0gICAgICAgIG1fc25hcHNob3REZWNpc2lvbiA9IE5l
dmVyU25hcHNob3Q7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoZG9jdW1lbnQo
KS5wYWdlKCktPnNldHRpbmdzKCkuc25hcHNob3RBbGxQbHVnSW5zKCkpIHsKLSAgICAgICAgTE9H
KFBsdWdpbnMsICIlcCBQbHVnLWluIGZvcmNlZCB0byBzbmFwc2hvdCBieSB1c2VyIHByZWZlcmVu
Y2UiLCB0aGlzKTsKLSAgICAgICAgbV9zbmFwc2hvdERlY2lzaW9uID0gU25hcHNob3R0ZWQ7Ci0g
ICAgICAgIHNldERpc3BsYXlTdGF0ZShXYWl0aW5nRm9yU25hcHNob3QpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKGRvY3VtZW50KCkucGFnZSgpLT5zZXR0aW5ncygpLmF1dG9z
dGFydE9yaWdpblBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQoKSAmJiBkb2N1bWVudCgpLnBhZ2Uo
KS0+cGx1Z0luQ2xpZW50KCkgJiYgZG9jdW1lbnQoKS5wYWdlKCktPnBsdWdJbkNsaWVudCgpLT5z
aG91bGRBdXRvU3RhcnRGcm9tT3JpZ2luKGRvY3VtZW50KCkucGFnZSgpLT5tYWluRnJhbWUoKS5k
b2N1bWVudCgpLT5iYXNlVVJMKCkuaG9zdCgpLnRvU3RyaW5nKCksIHVybC5ob3N0KCkudG9TdHJp
bmcoKSwgc2VydmljZVR5cGUoKSkpIHsKLSAgICAgICAgTE9HKFBsdWdpbnMsICIlcCBQbHVnLWlu
IGZyb20gKCVzLCAlcykgaXMgbWFya2VkIHRvIGF1dG8tc3RhcnQsIHNldCB0byBwbGF5IiwgdGhp
cywgZG9jdW1lbnQoKS5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmJhc2VVUkwoKS5o
b3N0KCkudXRmOCgpLmRhdGEoKSwgdXJsLmhvc3QoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAg
bV9zbmFwc2hvdERlY2lzaW9uID0gTmV2ZXJTbmFwc2hvdDsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChtX2xvYWRlZFVybC5pc0VtcHR5KCkgJiYgIXNlcnZpY2VUeXBlKCkuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIExPRyhQbHVnaW5zLCAiJXAgUGx1Zy1pbiBoYXMgbm8gc3JjIFVS
TCBidXQgZG9lcyBoYXZlIGEgdmFsaWQgbWltZSB0eXBlICVzLCBzZXQgdG8gcGxheSIsIHRoaXMs
IHNlcnZpY2VUeXBlKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIG1fc25hcHNob3REZWNpc2lv
biA9IE1heVNuYXBzaG90V2hlbkNvbnRlbnRJc1NldDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmICghTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNM
b2NhbChtX2xvYWRlZFVybC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkgJiYg
IW1fbG9hZGVkVXJsLmhvc3QoKS5pc0VtcHR5KCkgJiYgbV9sb2FkZWRVcmwuaG9zdCgpID09IGRv
Y3VtZW50KCkucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5iYXNlVVJMKCkuaG9zdCgp
KSB7Ci0gICAgICAgIExPRyhQbHVnaW5zLCAiJXAgUGx1Zy1pbiBpcyBzZXJ2ZWQgZnJvbSBwYWdl
J3MgZG9tYWluLCBzZXQgdG8gcGxheSIsIHRoaXMpOwotICAgICAgICBtX3NuYXBzaG90RGVjaXNp
b24gPSBOZXZlclNuYXBzaG90OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGF1
dG8mIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KCp0aGlzLT5yZW5k
ZXJlcigpKTsKLSAgICBhdXRvIGNvbnRlbnRSZWN0ID0gcmVuZGVyZXIuY29udGVudEJveFJlY3Qo
KTsKLSAgICBpbnQgY29udGVudFdpZHRoID0gY29udGVudFJlY3Qud2lkdGgoKTsKLSAgICBpbnQg
Y29udGVudEhlaWdodCA9IGNvbnRlbnRSZWN0LmhlaWdodCgpOwotICAgIAotICAgIG1fcGx1Z0lu
RGltZW5zaW9uc1NwZWNpZmllZCA9IHJlbmRlcmVyLnN0eWxlKCkubG9naWNhbFdpZHRoKCkuaXNT
cGVjaWZpZWQoKSB8fCByZW5kZXJlci5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc1NwZWNpZmll
ZCgpOwotICAgIAotICAgIGlmIChpc1RvcExldmVsRnVsbFBhZ2VQbHVnaW4ocmVuZGVyZXIpKSB7
Ci0gICAgICAgIExPRyhQbHVnaW5zLCAiJXAgUGx1Zy1pbiBpcyB0b3AgbGV2ZWwgZnVsbCBwYWdl
LCBzZXQgdG8gcGxheSIsIHRoaXMpOwotICAgICAgICBtX3NuYXBzaG90RGVjaXNpb24gPSBOZXZl
clNuYXBzaG90OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGlzU21hbGxlclRo
YW5UaW55U2l6aW5nVGhyZXNob2xkKHJlbmRlcmVyKSkgewotICAgICAgICBMT0coUGx1Z2lucywg
IiVwIFBsdWctaW4gaXMgdmVyeSBzbWFsbCAlZHglZCwgc2V0IHRvIHBsYXkiLCB0aGlzLCBjb250
ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHQpOwotICAgICAgICBtX3NpemVXaGVuU25hcHNob3R0ZWQg
PSBJbnRTaXplKGNvbnRlbnRXaWR0aCwgY29udGVudEhlaWdodCk7Ci0gICAgICAgIG1fc25hcHNo
b3REZWNpc2lvbiA9IE1heVNuYXBzaG90V2hlblJlc2l6ZWQ7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoIWRvY3VtZW50KCkucGFnZSgpLT5wbHVnSW5DbGllbnQoKSkgewotICAg
ICAgICBMT0coUGx1Z2lucywgIiVwIFRoZXJlIGlzIG5vIHBsdWctaW4gY2xpZW50LiBTZXQgdG8g
d2FpdCBmb3Igc25hcHNob3QiLCB0aGlzKTsKLSAgICAgICAgbV9zbmFwc2hvdERlY2lzaW9uID0g
TmV2ZXJTbmFwc2hvdDsKLSAgICAgICAgc2V0RGlzcGxheVN0YXRlKFdhaXRpbmdGb3JTbmFwc2hv
dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBMT0coUGx1Z2lucywgIiVwIFBsdWct
aW4gZnJvbSAoJXMsICVzKSBpcyBub3QgYXV0by1zdGFydCwgc2l6ZWQgYXQgJWR4JWQsIHNldCB0
byB3YWl0IGZvciBzbmFwc2hvdCIsIHRoaXMsIGRvY3VtZW50KCkudG9wRG9jdW1lbnQoKS5iYXNl
VVJMKCkuaG9zdCgpLnV0ZjgoKS5kYXRhKCksIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSwgY29u
dGVudFdpZHRoLCBjb250ZW50SGVpZ2h0KTsKLSAgICBtX3NuYXBzaG90RGVjaXNpb24gPSBTbmFw
c2hvdHRlZDsKLSAgICBzZXREaXNwbGF5U3RhdGUoV2FpdGluZ0ZvclNuYXBzaG90KTsKLX0KLQot
dm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzdWJmcmFtZUxvYWRlckRpZENyZWF0ZVBsdWdJ
bihjb25zdCBXaWRnZXQmIHdpZGdldCkKLXsKLSAgICBtX3BsdWdJbldhc0NyZWF0ZWQgPSB0cnVl
OwotCi0gICAgaWYgKGlzPFBsdWdpblZpZXdCYXNlPih3aWRnZXQpICYmIGRvd25jYXN0PFBsdWdp
blZpZXdCYXNlPih3aWRnZXQpLnNob3VsZEFsd2F5c0F1dG9TdGFydCgpKSB7Ci0gICAgICAgIExP
RyhQbHVnaW5zLCAiJXAgUGx1Zy1pbiBzaG91bGQgYXV0by1zdGFydCwgc2V0IHRvIHBsYXkiLCB0
aGlzKTsKLSAgICAgICAgbV9zbmFwc2hvdERlY2lzaW9uID0gTmV2ZXJTbmFwc2hvdDsKLSAgICAg
ICAgc2V0RGlzcGxheVN0YXRlKFBsYXlpbmcpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKG1fZGVmZXJyZWRQcm9tb3Rpb25Ub1ByaW1hcnlQbHVnSW4pIHsKLSAgICAgICAgTE9H
KFBsdWdpbnMsICIlcCBQbHVnLWluIHdhcyBjcmVhdGVkLCBwcmV2aW91c2x5IGRlZmVycmVkIHBy
b21vdGlvbiB0byBwcmltYXJ5LiBXaWxsIHByb21vdGUiLCB0aGlzKTsKLSAgICAgICAgc2V0SXNQ
cmltYXJ5U25hcHNob3R0ZWRQbHVnSW4odHJ1ZSk7Ci0gICAgICAgIG1fZGVmZXJyZWRQcm9tb3Rp
b25Ub1ByaW1hcnlQbHVnSW4gPSBmYWxzZTsKLSAgICB9Ci19Ci0KLXZvaWQgSFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCi17Ci0gICAgaWYg
KGlzPFJlbmRlckVtYmVkZGVkT2JqZWN0PihyZW5kZXJlcigpKSAmJiBkaXNwbGF5U3RhdGUoKSA9
PSBXYWl0aW5nRm9yU25hcHNob3QgJiYgaXM8TW91c2VFdmVudD4oZXZlbnQpICYmIGV2ZW50LnR5
cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewotICAgICAgICBhdXRvJiBtb3VzZUV2
ZW50ID0gZG93bmNhc3Q8TW91c2VFdmVudD4oZXZlbnQpOwotICAgICAgICBpZiAobW91c2VFdmVu
dC5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB7Ci0gICAgICAgICAgICB1c2VyRGlkQ2xpY2tTbmFw
c2hvdChtb3VzZUV2ZW50LCB0cnVlKTsKLSAgICAgICAgICAgIG1vdXNlRXZlbnQuc2V0RGVmYXVs
dEhhbmRsZWQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLSAgICBI
VE1MUGx1Z0luRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7Ci19Ci0KIGJvb2wg
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y2FuTG9hZFBsdWdJbkNvbnRlbnQoY29uc3QgU3RyaW5n
JiByZWxhdGl2ZVVSTCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKIHsKICAgICAvLyBF
bGVtZW50cyBpbiB1c2VyIGFnZW50IHNob3cgdHJlZSBzaG91bGQgbG9hZCB3aGF0ZXZlciB0aGUg
ZW1iZWRkaW5nIGRvY3VtZW50IHBvbGljeSBpcy4KQEAgLTgwNyw3ICszMDUsNyBAQCBib29sIEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnJlcXVlc3RPYmplY3QoY29uc3QgU3RyaW5nJiByZWxhdGl2
ZVVSTCwgY29uc3QgU3RyaQogCiAgICAgaWYgKEhUTUxQbHVnSW5FbGVtZW50OjpyZXF1ZXN0T2Jq
ZWN0KHJlbGF0aXZlVVJMLCBtaW1lVHlwZSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAKKwogICAgIHJldHVybiBkb2N1bWVudCgpLmZyYW1lKCkt
PmxvYWRlcigpLnN1YmZyYW1lTG9hZGVyKCkucmVxdWVzdE9iamVjdCgqdGhpcywgcmVsYXRpdmVV
UkwsIGdldE5hbWVBdHRyaWJ1dGUoKSwgbWltZVR5cGUsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVz
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaApp
bmRleCA4MmU5Mjg2NDliZmMzNjBjOWFhYjUyZWRhM2FkYzZmMjQyYWRiMDg4Li45NjQyYWJjMDI0
YWFlMmQ1ODJmZTY0YWVjMjA2ZDU1NTBhOTc1ZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaApAQCAtMjUsMTEgKzI1LDExIEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxJbWFnZUxvYWRlcjsKLWNsYXNzIE1vdXNlRXZlbnQ7CiAK
IGVudW0gY2xhc3MgQ3JlYXRlUGx1Z2lucyB7IE5vLCBZZXMgfTsKIAogLy8gQmFzZSBjbGFzcyBm
b3IgSFRNTEVtYmVkRWxlbWVudCBhbmQgSFRNTE9iamVjdEVsZW1lbnQuCisvLyBGSVhNRTogVGhp
cyBpcyB0aGUgb25seSBjbGFzcyB0aGF0IGRlcml2ZXMgZnJvbSBIVE1MUGx1Z0luRWxlbWVudCwg
c28gd2UgY291bGQgbWVyZ2UgdGhlIHR3byBjbGFzc2VzLgogY2xhc3MgSFRNTFBsdWdJbkltYWdl
RWxlbWVudCA6IHB1YmxpYyBIVE1MUGx1Z0luRWxlbWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KTsKIHB1YmxpYzoKQEAgLTQxLDM3ICs0MSwx
MCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIHNlcnZpY2VUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXJ2aWNlVHlwZTsgfQogICAgIGNvbnN0IFN0cmluZyYgdXJsKCkgY29uc3QgeyBy
ZXR1cm4gbV91cmw7IH0KLSAgICBjb25zdCBVUkwmIGxvYWRlZFVybCgpIGNvbnN0IHsgcmV0dXJu
IG1fbG9hZGVkVXJsOyB9CiAKLSAgICAvLyBQdWJsaWMgZm9yIEZyYW1lVmlldzo6YWRkV2lkZ2V0
VG9VcGRhdGUoKQogICAgIGJvb2wgbmVlZHNXaWRnZXRVcGRhdGUoKSBjb25zdCB7IHJldHVybiBt
X25lZWRzV2lkZ2V0VXBkYXRlOyB9CiAgICAgdm9pZCBzZXROZWVkc1dpZGdldFVwZGF0ZShib29s
IG5lZWRzV2lkZ2V0VXBkYXRlKSB7IG1fbmVlZHNXaWRnZXRVcGRhdGUgPSBuZWVkc1dpZGdldFVw
ZGF0ZTsgfQogICAgIAotICAgIHZvaWQgdXNlckRpZENsaWNrU25hcHNob3QoTW91c2VFdmVudCYs
IGJvb2wgZm9yd2FyZEV2ZW50KTsKLSAgICB2b2lkIGNoZWNrU25hcHNob3RTdGF0dXMoKTsKLSAg
ICBJbWFnZSogc25hcHNob3RJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fc25hcHNob3RJbWFnZS5n
ZXQoKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdGFydFNuYXBzaG90dGVkUGx1Z0lu
KCk7Ci0KLSAgICAvLyBQbHVnLWluIFVSTCBtaWdodCBub3QgYmUgdGhlIHNhbWUgYXMgdXJsKCkg
d2l0aCBvdmVycmlkaW5nIHBhcmFtZXRlcnMuCi0gICAgdm9pZCBzdWJmcmFtZUxvYWRlcldpbGxD
cmVhdGVQbHVnSW4oY29uc3QgVVJMJiBwbHVnSW5VUkwpOwotICAgIHZvaWQgc3ViZnJhbWVMb2Fk
ZXJEaWRDcmVhdGVQbHVnSW4oY29uc3QgV2lkZ2V0Jik7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldElzUHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luKGJvb2wpOwotICAgIGJvb2wgcGFydE9m
U25hcHNob3RPdmVybGF5KGNvbnN0IEV2ZW50VGFyZ2V0KikgY29uc3Q7Ci0KLSAgICBib29sIG5l
ZWRzQ2hlY2tGb3JTaXplQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0NoZWNrRm9yU2l6
ZUNoYW5nZTsgfQotICAgIHZvaWQgc2V0TmVlZHNDaGVja0ZvclNpemVDaGFuZ2UoKSB7IG1fbmVl
ZHNDaGVja0ZvclNpemVDaGFuZ2UgPSB0cnVlOyB9Ci0gICAgdm9pZCBjaGVja1NpemVDaGFuZ2VG
b3JTbmFwc2hvdHRpbmcoKTsKLQotICAgIGVudW0gU25hcHNob3REZWNpc2lvbiB7Ci0gICAgICAg
IFNuYXBzaG90Tm90WWV0RGVjaWRlZCwKLSAgICAgICAgTmV2ZXJTbmFwc2hvdCwKLSAgICAgICAg
U25hcHNob3R0ZWQsCi0gICAgICAgIE1heVNuYXBzaG90V2hlblJlc2l6ZWQsCi0gICAgICAgIE1h
eVNuYXBzaG90V2hlbkNvbnRlbnRJc1NldAotICAgIH07Ci0gICAgU25hcHNob3REZWNpc2lvbiBz
bmFwc2hvdERlY2lzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zbmFwc2hvdERlY2lzaW9uOyB9Ci0K
IHByb3RlY3RlZDoKICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGluZygpOwpAQCAt
OTQsMTMgKzY3LDEwIEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBib29sIGlzUGx1Z0lu
SW1hZ2VFbGVtZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGJvb2wgaXNS
ZXN0YXJ0ZWRQbHVnaW4oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzUmVzdGFydGVkUGx1Z2lu
OyB9CiAKICAgICBib29sIGNhbkxvYWRQbHVnSW5Db250ZW50KGNvbnN0IFN0cmluZyYgcmVsYXRp
dmVVUkwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0OwogICAgIGJvb2wgY2FuTG9hZFVS
TChjb25zdCBVUkwmKSBjb25zdDsKIAotICAgIHZvaWQgZGlkQWRkVXNlckFnZW50U2hhZG93Um9v
dChTaGFkb3dSb290JikgZmluYWw7Ci0KICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpIG92ZXJyaWRlOwogICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBO
b2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsUmVjYWxjU3R5bGUoU3R5bGU6OkNo
YW5nZSkgZmluYWw7CkBAIC0xMTEsMzYgKzgxLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcmVw
YXJlRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgZmluYWw7CiAgICAgdm9pZCByZXN1bWVGcm9tRG9j
dW1lbnRTdXNwZW5zaW9uKCkgZmluYWw7CiAKLSAgICB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQmKSBmaW5hbDsKLSAgICB2b2lkIGRpc3BhdGNoUGVuZGluZ01vdXNlQ2xpY2soKSBmaW5h
bDsKLQotICAgIHZvaWQgdXBkYXRlU25hcHNob3QoSW1hZ2UqKSBmaW5hbDsKLQogICAgIHZvaWQg
dXBkYXRlQWZ0ZXJTdHlsZVJlc29sdXRpb24oKTsKIAotICAgIHZvaWQgc2ltdWxhdGVkTW91c2VD
bGlja1RpbWVyRmlyZWQoKTsKLQotICAgIHZvaWQgcmVzdGFydFNpbWlsYXJQbHVnSW5zKCk7Ci0g
ICAgdm9pZCByZW1vdmVTbmFwc2hvdFRpbWVyRmlyZWQoKTsKLSAgICBib29sIGlzVG9wTGV2ZWxG
dWxsUGFnZVBsdWdpbihjb25zdCBSZW5kZXJFbWJlZGRlZE9iamVjdCYpIGNvbnN0OwotCi0gICAg
dm9pZCBzZXREaXNwbGF5U3RhdGUoRGlzcGxheVN0YXRlKSBmaW5hbDsKLQotICAgIFVSTCBtX2xv
YWRlZFVybDsKICAgICBib29sIG1fbmVlZHNXaWRnZXRVcGRhdGUgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9uZWVkc0RvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcyB7IGZhbHNlIH07Ci0gICAgUmVm
UHRyPE1vdXNlRXZlbnQ+IG1fcGVuZGluZ0NsaWNrRXZlbnRGcm9tU25hcHNob3Q7Ci0gICAgRGVm
ZXJyYWJsZU9uZVNob3RUaW1lciBtX3NpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lcjsKLSAgICBUaW1l
ciBtX3JlbW92ZVNuYXBzaG90VGltZXI7Ci0gICAgUmVmUHRyPEltYWdlPiBtX3NuYXBzaG90SW1h
Z2U7Ci0gICAgYm9vbCBtX2NyZWF0ZWREdXJpbmdVc2VyR2VzdHVyZSB7IGZhbHNlIH07Ci0gICAg
Ym9vbCBtX2lzUmVzdGFydGVkUGx1Z2luIHsgZmFsc2UgfTsKLSAgICBib29sIG1fbmVlZHNDaGVj
a0ZvclNpemVDaGFuZ2UgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9wbHVnSW5XYXNDcmVhdGVkIHsg
ZmFsc2UgfTsKLSAgICBib29sIG1fZGVmZXJyZWRQcm9tb3Rpb25Ub1ByaW1hcnlQbHVnSW4geyBm
YWxzZSB9OwotICAgIEludFNpemUgbV9zaXplV2hlblNuYXBzaG90dGVkOwotICAgIFNuYXBzaG90
RGVjaXNpb24gbV9zbmFwc2hvdERlY2lzaW9uIHsgU25hcHNob3ROb3RZZXREZWNpZGVkIH07Ci0g
ICAgYm9vbCBtX3BsdWdJbkRpbWVuc2lvbnNTcGVjaWZpZWQgeyBmYWxzZSB9OwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxIVE1MSW1hZ2VMb2FkZXI+IG1faW1hZ2VMb2FkZXI7CiAgICAgYm9vbCBtX25l
ZWRzSW1hZ2VSZWxvYWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNVcGRhdGVTY2hlZHVsZWRG
b3JBZnRlclN0eWxlUmVzb2x1dGlvbiB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YmZyYW1lTG9hZGVyLmNwcAppbmRleCAyMWNmMDYyZDkwYzgzN2U5MTZkZjAzYTMzNWE0OWQ2MjA2
Yzg5ZmFhLi4xYjFjZTYyMGMwMjk0MDMyMTA5YzBjYTAzMDEwNTJkNTVkNjI3YjRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKQEAgLTM1Myw4ICszNTMsNiBAQCBi
b29sIEZyYW1lTG9hZGVyOjpTdWJmcmFtZUxvYWRlcjo6bG9hZFBsdWdpbihIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50JiBwbHVnaW5FbGVtZQogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHBsdWdpbkVsZW1lbnQuc3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1
Z0luKHVybCk7Ci0KICAgICBJbnRTaXplIGNvbnRlbnRTaXplID0gcm91bmRlZEludFNpemUoTGF5
b3V0U2l6ZShyZW5kZXJlci0+Y29udGVudFdpZHRoKCksIHJlbmRlcmVyLT5jb250ZW50SGVpZ2h0
KCkpKTsKICAgICBib29sIGxvYWRNYW51YWxseSA9IGlzPFBsdWdpbkRvY3VtZW50Pihkb2N1bWVu
dCkgJiYgIW1fY29udGFpbnNQbHVnaW5zICYmIGRvd25jYXN0PFBsdWdpbkRvY3VtZW50Pihkb2N1
bWVudCkuc2hvdWxkTG9hZFBsdWdpbk1hbnVhbGx5KCk7CiAKQEAgLTM3OCw3ICszNzYsNiBAQCBi
b29sIEZyYW1lTG9hZGVyOjpTdWJmcmFtZUxvYWRlcjo6bG9hZFBsdWdpbihIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50JiBwbHVnaW5FbGVtZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgcGx1Z2luRWxlbWVudC5zdWJmcmFtZUxvYWRlckRpZENyZWF0ZVBsdWdJbigqd2lkZ2V0KTsK
ICAgICByZW5kZXJlci0+c2V0V2lkZ2V0KFdURk1vdmUod2lkZ2V0KSk7CiAgICAgbV9jb250YWlu
c1BsdWdpbnMgPSB0cnVlOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcAppbmRleCBhN2NhYjE0MDM4MmNjY2Q4MTI4NzhkNmRhZmM2YjA3ZDU5ZDMy
YzI0Li45ZmNlZmQ2ZTlmMzMzMjRiMWM2ZTI5MDNmZDYxN2Y0MDdkMzVmY2QxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtNjg0LDEwICs2ODQsNyBAQCBib29sIERy
YWdDb250cm9sbGVyOjpjYW5Qcm9jZXNzRHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAKLSAgICBpZiAoaXM8SFRNTFBsdWdJbkVsZW1l
bnQ+KCpkcmFnTm9kZSkpIHsKLSAgICAgICAgaWYgKCFkb3duY2FzdDxIVE1MUGx1Z0luRWxlbWVu
dD4oKmRyYWdOb2RlKS5jYW5Qcm9jZXNzRHJhZygpICYmICFkcmFnTm9kZS0+aGFzRWRpdGFibGVT
dHlsZSgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0gZWxzZSBpZiAoIWRyYWdO
b2RlLT5oYXNFZGl0YWJsZVN0eWxlKCkpCisgICAgaWYgKCFkcmFnTm9kZS0+aGFzRWRpdGFibGVT
dHlsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9kaWRJbml0aWF0ZURy
YWcgJiYgbV9kb2N1bWVudFVuZGVyTW91c2UgPT0gbV9kcmFnSW5pdGlhdG9yICYmIHJlc3VsdC5p
c1NlbGVjdGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggNDdkMDMxMDdmMDRh
Mjk0OGRmZTk3ODJiMzMwMDU5YTg4ZDFjNTMyYS4uYjFjYzIyN2VkNDhhMTAwZWI5M2I5YWEzODlk
Yzg0NTI3ZjFkNmFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMTM0NSwxMyAr
MTM0NSw5IEBAIHZvaWQgRnJhbWVWaWV3OjphZGRFbWJlZGRlZE9iamVjdFRvVXBkYXRlKFJlbmRl
ckVtYmVkZGVkT2JqZWN0JiBlbWJlZGRlZE9iamVjdCkKICAgICBpZiAoIW1fZW1iZWRkZWRPYmpl
Y3RzVG9VcGRhdGUpCiAgICAgICAgIG1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGUgPSBtYWtlVW5p
cXVlPExpc3RIYXNoU2V0PFJlbmRlckVtYmVkZGVkT2JqZWN0Kj4+KCk7CiAKLSAgICBIVE1MRnJh
bWVPd25lckVsZW1lbnQmIGVsZW1lbnQgPSBlbWJlZGRlZE9iamVjdC5mcmFtZU93bmVyRWxlbWVu
dCgpOwotICAgIGlmIChpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTEVt
YmVkRWxlbWVudD4oZWxlbWVudCkpIHsKLSAgICAgICAgLy8gVGVsbCB0aGUgRE9NIGVsZW1lbnQg
dGhhdCBpdCBuZWVkcyBhIHdpZGdldCB1cGRhdGUuCi0gICAgICAgIEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQmIHBsdWdpbkVsZW1lbnQgPSBkb3duY2FzdDxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Pihl
bGVtZW50KTsKLSAgICAgICAgaWYgKCFwbHVnaW5FbGVtZW50Lm5lZWRzQ2hlY2tGb3JTaXplQ2hh
bmdlKCkpCi0gICAgICAgICAgICBwbHVnaW5FbGVtZW50LnNldE5lZWRzV2lkZ2V0VXBkYXRlKHRy
dWUpOwotICAgIH0KKyAgICBhdXRvJiBlbGVtZW50ID0gZW1iZWRkZWRPYmplY3QuZnJhbWVPd25l
ckVsZW1lbnQoKTsKKyAgICBpZiAoaXM8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4oZWxlbWVudCkp
CisgICAgICAgIGRvd25jYXN0PEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+KGVsZW1lbnQpLnNldE5l
ZWRzV2lkZ2V0VXBkYXRlKHRydWUpOwogCiAgICAgbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZS0+
YWRkKCZlbWJlZGRlZE9iamVjdCk7CiB9CkBAIC0zMjM4LDI2ICszMjM0LDEyIEBAIHZvaWQgRnJh
bWVWaWV3Ojp1cGRhdGVFbWJlZGRlZE9iamVjdChSZW5kZXJFbWJlZGRlZE9iamVjdCYgZW1iZWRk
ZWRPYmplY3QpCiAgICAgaWYgKGVtYmVkZGVkT2JqZWN0LmlzUGx1Z2luVW5hdmFpbGFibGUoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgSFRNTEZyYW1lT3duZXJFbGVtZW50JiBlbGVtZW50ID0g
ZW1iZWRkZWRPYmplY3QuZnJhbWVPd25lckVsZW1lbnQoKTsKLQotICAgIGlmIChlbWJlZGRlZE9i
amVjdC5pc1NuYXBzaG90dGVkUGx1Z0luKCkpIHsKLSAgICAgICAgaWYgKGlzPEhUTUxPYmplY3RF
bGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MRW1iZWRFbGVtZW50PihlbGVtZW50KSkgewotICAg
ICAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgcGx1Z2luRWxlbWVudCA9IGRvd25jYXN0
PEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+KGVsZW1lbnQpOwotICAgICAgICAgICAgcGx1Z2luRWxl
bWVudC5jaGVja1NuYXBzaG90U3RhdHVzKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBhdXRvJiBlbGVtZW50ID0gZW1iZWRkZWRPYmplY3QuZnJhbWVPd25lckVsZW1l
bnQoKTsKIAogICAgIGF1dG8gd2Vha1JlbmRlcmVyID0gbWFrZVdlYWtQdHIoZW1iZWRkZWRPYmpl
Y3QpOwogCi0gICAgLy8gRklYTUU6IFRoaXMgY291bGQgdHVybiBpbnRvIGEgcmVhbCB2aXJ0dWFs
IGRpc3BhdGNoIGlmIHdlIGRlZmluZWQKLSAgICAvLyB1cGRhdGVXaWRnZXQoUGx1Z2luQ3JlYXRp
b25PcHRpb24pIG9uIEhUTUxFbGVtZW50LgogICAgIGlmIChpczxIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50PihlbGVtZW50KSkgewotICAgICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBwbHVnaW5F
bGVtZW50ID0gZG93bmNhc3Q8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4oZWxlbWVudCk7Ci0gICAg
ICAgIGlmIChwbHVnaW5FbGVtZW50Lm5lZWRzQ2hlY2tGb3JTaXplQ2hhbmdlKCkpIHsKLSAgICAg
ICAgICAgIHBsdWdpbkVsZW1lbnQuY2hlY2tTbmFwc2hvdFN0YXR1cygpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGF1dG8mIHBsdWdpbkVsZW1lbnQgPSBkb3duY2Fz
dDxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PihlbGVtZW50KTsKICAgICAgICAgaWYgKHBsdWdpbkVs
ZW1lbnQubmVlZHNXaWRnZXRVcGRhdGUoKSkKICAgICAgICAgICAgIHBsdWdpbkVsZW1lbnQudXBk
YXRlV2lkZ2V0KENyZWF0ZVBsdWdpbnM6Olllcyk7CiAgICAgfSBlbHNlCkBAIC0zMjg0LDcgKzMy
NjYsNyBAQCBib29sIEZyYW1lVmlldzo6dXBkYXRlRW1iZWRkZWRPYmplY3RzKCkKICAgICBtX2Vt
YmVkZGVkT2JqZWN0c1RvVXBkYXRlLT5hZGQobnVsbHB0cik7CiAKICAgICB3aGlsZSAoIW1fZW1i
ZWRkZWRPYmplY3RzVG9VcGRhdGUtPmlzRW1wdHkoKSkgewotICAgICAgICBSZW5kZXJFbWJlZGRl
ZE9iamVjdCogZW1iZWRkZWRPYmplY3QgPSBtX2VtYmVkZGVkT2JqZWN0c1RvVXBkYXRlLT50YWtl
Rmlyc3QoKTsKKyAgICAgICAgYXV0byBlbWJlZGRlZE9iamVjdCA9IG1fZW1iZWRkZWRPYmplY3Rz
VG9VcGRhdGUtPnRha2VGaXJzdCgpOwogICAgICAgICBpZiAoIWVtYmVkZGVkT2JqZWN0KQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIHVwZGF0ZUVtYmVkZGVkT2JqZWN0KCplbWJlZGRlZE9i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBmOTQyYjRiNGU3MDIyNTkxZjEyNTE5Zjg5YWI3
MmU3NDg0YzFlNTU5Li41YjFkOWU2NTVmNDJiYTlkMjVkNDI4YjA1ODU0MDA2NmI1NzVkNWE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTkxLDcgKzkxLDYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgotI2luY2x1ZGUgIlBsdWdJbkNsaWVudC5oIgogI2lu
Y2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRlICJQbHVnaW5JbmZvUHJvdmlkZXIuaCIKICNp
bmNsdWRlICJQbHVnaW5WaWV3QmFzZS5oIgpAQCAtMjQzLDcgKzI0Miw2IEBAIFBhZ2U6OlBhZ2Uo
UGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikKICAgICAsIG1fYmFja0Zvcndh
cmRDb250cm9sbGVyKG1ha2VVbmlxdWU8QmFja0ZvcndhcmRDb250cm9sbGVyPigqdGhpcywgV1RG
TW92ZShwYWdlQ29uZmlndXJhdGlvbi5iYWNrRm9yd2FyZENsaWVudCkpKQogICAgICwgbV9tYWlu
RnJhbWUoRnJhbWU6OmNyZWF0ZSh0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0
aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSkpKQogICAgICwgbV9lZGl0b3JDbGllbnQoV1RG
TW92ZShwYWdlQ29uZmlndXJhdGlvbi5lZGl0b3JDbGllbnQpKQotICAgICwgbV9wbHVnSW5DbGll
bnQoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5wbHVnSW5DbGllbnQpKQogICAgICwgbV92YWxp
ZGF0aW9uTWVzc2FnZUNsaWVudChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLnZhbGlkYXRpb25N
ZXNzYWdlQ2xpZW50KSkKICAgICAsIG1fZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoV1RGTW92ZShw
YWdlQ29uZmlndXJhdGlvbi5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCkpCiAgICAgLCBtX3BlcmZv
cm1hbmNlTG9nZ2luZ0NsaWVudChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLnBlcmZvcm1hbmNl
TG9nZ2luZ0NsaWVudCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDEwMzZhZmE4Y2I5OGQ2NzhjYzYwNzQ0
NmM4OTU2YjM5YmE2ZDIzZWYuLjkxNTIxNGE3MTIwMTljNzk5NTFlNjk1ZTM5NzcyYmU2ZDc0YTE1
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0xMjIsNyArMTIyLDYgQEAgY2xhc3MgUGF5bWVudENvb3Jk
aW5hdG9yOwogY2xhc3MgUGVyZm9ybWFuY2VMb2dnaW5nOwogY2xhc3MgUGVyZm9ybWFuY2VMb2dn
aW5nQ2xpZW50OwogY2xhc3MgUGVyZm9ybWFuY2VNb25pdG9yOwotY2xhc3MgUGx1Z0luQ2xpZW50
OwogY2xhc3MgUGx1Z2luRGF0YTsKIGNsYXNzIFBsdWdpbkluZm9Qcm92aWRlcjsKIGNsYXNzIFBs
dWdpblZpZXdCYXNlOwpAQCAtMjU3LDcgKzI1Niw2IEBAIHB1YmxpYzoKICAgICBib29sIGNhblN0
YXJ0TWVkaWEoKSBjb25zdCB7IHJldHVybiBtX2NhblN0YXJ0TWVkaWE7IH0KIAogICAgIEVkaXRv
ckNsaWVudCYgZWRpdG9yQ2xpZW50KCkgeyByZXR1cm4gbV9lZGl0b3JDbGllbnQuZ2V0KCk7IH0K
LSAgICBQbHVnSW5DbGllbnQqIHBsdWdJbkNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z0lu
Q2xpZW50LmdldCgpOyB9CiAKICAgICBGcmFtZSYgbWFpbkZyYW1lKCkgeyByZXR1cm4gbV9tYWlu
RnJhbWUuZ2V0KCk7IH0KICAgICBjb25zdCBGcmFtZSYgbWFpbkZyYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9tYWluRnJhbWUuZ2V0KCk7IH0KQEAgLTkwMCw3ICs4OTgsNiBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxQbHVnaW5EYXRhPiBtX3BsdWdpbkRhdGE7CiAKICAgICBVbmlxdWVSZWY8RWRpdG9y
Q2xpZW50PiBtX2VkaXRvckNsaWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z0luQ2xpZW50
PiBtX3BsdWdJbkNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmFsaWRhdGlvbk1lc3NhZ2VD
bGllbnQ+IG1fdmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPERp
YWdub3N0aWNMb2dnaW5nQ2xpZW50PiBtX2RpYWdub3N0aWNMb2dnaW5nQ2xpZW50OwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQ+IG1fcGVyZm9ybWFuY2VMb2dn
aW5nQ2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAppbmRl
eCA0YTA1YmUyNGM3ZmM5NjZlYzAwMDI3OGJlN2ViZTFiZWU2M2M0ZTgyLi45NWE5ODRhY2I1NThi
ZTNiOWQ4NTIxOGVlMjg5MWZiNzdjZDRkYTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VD
b25maWd1cmF0aW9uLmNwcApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIkxpYldlYlJUQ1By
b3ZpZGVyLmgiCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAi
UGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50LmgiCi0jaW5jbHVkZSAiUGx1Z0luQ2xpZW50LmgiCiAj
aW5jbHVkZSAiUGx1Z2luSW5mb1Byb3ZpZGVyLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2Vy
Q2xpZW50LmgiCiAjaW5jbHVkZSAiU29ja2V0UHJvdmlkZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZUNvbmZpZ3VyYXRpb24uaAppbmRleCA5YzQ3MzMxMDk1YTg4OWI4MDAzNDhhM2FhNDBhMmIx
YTE1YmMwMzUyLi5mMDU0ZmNiMzY3NTFiYmVhZWY0YmY4YjEyYzQ3ZjIwZjUzMGMxMzU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCkBAIC01OCw3ICs1OCw2IEBAIGNs
YXNzIExpYldlYlJUQ1Byb3ZpZGVyOwogY2xhc3MgTWVkaWFSZWNvcmRlclByb3ZpZGVyOwogY2xh
c3MgUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OwogY2xhc3MgUGVyZm9ybWFuY2VMb2dnaW5nQ2xp
ZW50OwotY2xhc3MgUGx1Z0luQ2xpZW50OwogY2xhc3MgUGx1Z2luSW5mb1Byb3ZpZGVyOwogY2xh
c3MgUHJvZ3Jlc3NUcmFja2VyQ2xpZW50OwogY2xhc3MgU29ja2V0UHJvdmlkZXI7CkBAIC0xMDIs
NyArMTAxLDYgQEAgcHVibGljOgogCiAgICAgVW5pcXVlUmVmPExpYldlYlJUQ1Byb3ZpZGVyPiBs
aWJXZWJSVENQcm92aWRlcjsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxQbHVnSW5DbGllbnQ+IHBs
dWdJbkNsaWVudDsKICAgICBVbmlxdWVSZWY8UHJvZ3Jlc3NUcmFja2VyQ2xpZW50PiBwcm9ncmVz
c1RyYWNrZXJDbGllbnQ7CiAgICAgUmVmPEJhY2tGb3J3YXJkQ2xpZW50PiBiYWNrRm9yd2FyZENs
aWVudDsKICAgICBSZWY8Q29va2llSmFyPiBjb29raWVKYXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BsdWdJbkNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QbHVnSW5D
bGllbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzFkMDA3ODU4NjZmNzYzNzdj
MWQ3NzVhNzE1YjViYTYzMzY1ZDAwZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdJbkNsaWVudC5oCisrKyAvZGV2
L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBQbHVn
SW5DbGllbnQgewotcHVibGljOgotICAgIHZpcnR1YWwgflBsdWdJbkNsaWVudCgpID0gZGVmYXVs
dDsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXV0b1N0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJp
bmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0RnJvbU9yaWdpbihjb25z
dCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLnlhbWwKaW5kZXggNmY0MGQxOWNkMDc3NzM4MjBkMjBjZGVmMTgzYjcx
MjE5Yjc1ZWQ3MS4uYTlkOTQyMWIwNjMxZmJiNzE1NDEwZTE1NmRjZWVjZmU0MzNlMmU3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbApAQCAtMzkyLDEyICszOTIsNiBAQCBNYXhpbXVtSFRN
TFBhcnNlckRPTVRyZWVEZXB0aDoKICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDogZGVmYXVs
dE1heGltdW1IVE1MUGFyc2VyRE9NVHJlZURlcHRoCiAKLU1heGltdW1QbHVnSW5TbmFwc2hvdEF0
dGVtcHRzOgotICB0eXBlOiB1aW50MzJfdAotICBkZWZhdWx0VmFsdWU6Ci0gICAgV2ViQ29yZToK
LSAgICAgIGRlZmF1bHQ6IDIwCi0KIE1heGltdW1Tb3VyY2VCdWZmZXJTaXplOgogICBjb21tZW50
OiA+LQogICAgIEFsbG93IFNvdXJjZUJ1ZmZlcnMgdG8gc3RvcmUgdXAgdG8gMzA0TUIgZWFjaCwg
ZW5vdWdoIGZvciBhcHByb3hpbWF0ZWx5IGZpdmUgbWludXRlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVGhlbWVUeXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9UaGVtZVR5cGVzLmNwcAppbmRleCA0ZDQ2ZDk4NGNkZWM0MzM1YjJhNTc4OGVkNzI4N2U1OGZi
MzQwY2E4Li5jZGIyYjEyYmI5M2U2ZWE2ZGJhYjAxODBkODgxMGQwMzY5NzMzNGFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmNwcApAQCAtODUsNyArODUsNiBAQCBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBDb250cm9sUGFydCBjb250cm9sUGFydCkK
ICAgICBjYXNlIFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0OiB0cyA8PCAic2VhcmNo
LWZpZWxkLXJlc3VsdHMtZGVjb3JhdGlvbi1wYXJ0IjsgYnJlYWs7CiAgICAgY2FzZSBTZWFyY2hG
aWVsZFJlc3VsdHNCdXR0b25QYXJ0OiB0cyA8PCAic2VhcmNoLWZpZWxkLXJlc3VsdHMtYnV0dG9u
LXBhcnQiOyBicmVhazsKICAgICBjYXNlIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uUGFydDogdHMg
PDwgInNlYXJjaC1maWVsZC1jYW5jZWwtYnV0dG9uLXBhcnQiOyBicmVhazsKLSAgICBjYXNlIFNu
YXBzaG90dGVkUGx1Z2luT3ZlcmxheVBhcnQ6IHRzIDw8ICJzbmFwc2hvdHRlZC1wbHVnaW4tb3Zl
cmxheS1wYXJ0IjsgYnJlYWs7CiAgICAgY2FzZSBUZXh0RmllbGRQYXJ0OiB0cyA8PCAidGV4dC1m
aWVsZC1wYXJ0IjsgYnJlYWs7CiAgICAgY2FzZSBSZWxldmFuY3lMZXZlbEluZGljYXRvclBhcnQ6
IHRzIDw8ICJyZWxldmFuY3ktbGV2ZWwtaW5kaWNhdG9yLXBhcnQiOyBicmVhazsKICAgICBjYXNl
IENvbnRpbnVvdXNDYXBhY2l0eUxldmVsSW5kaWNhdG9yUGFydDogdHMgPDwgImNvbnRpbnVvdXMt
Y2FwYWNpdHktbGV2ZWwtaW5kaWNhdG9yLXBhcnQiOyBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RoZW1lVHlwZXMuaAppbmRleCAzZDVhMmIzMTQ5NTk0Y2EzOWVmOTAzMjg3M2NkOWNiNTM4YWRj
MTNiLi5jMjg3NWUzYjRhZmJjZDgzMzkyZjMwNDY2ZTA3YmIyNjliNjg0YzhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVGhlbWVUeXBlcy5oCkBAIC04NSw3ICs4NSw2IEBAIGVudW0gQ29udHJvbFBh
cnQgewogICAgIFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0LAogICAgIFNlYXJjaEZp
ZWxkUmVzdWx0c0J1dHRvblBhcnQsCiAgICAgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25QYXJ0LAot
ICAgIFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheVBhcnQsCiAgICAgVGV4dEZpZWxkUGFydCwKICAg
ICBSZWxldmFuY3lMZXZlbEluZGljYXRvclBhcnQsCiAgICAgQ29udGludW91c0NhcGFjaXR5TGV2
ZWxJbmRpY2F0b3JQYXJ0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5WaWV3QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oCmlu
ZGV4IDFiMjFmMDQ0N2Y3N2IyNDkxMDhjMjkwYjc1NDY0ZDg4MDBhOWRmNWIuLmU2NDgzYjA4Mzk2
YTE1Njc1ZWMzY2ZlYjIwYjFiZjI0NjE5NDM5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpblZpZXdCYXNlLmgKQEAgLTY5LDEwICs2OSw2IEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTog
VGhpcyBpcyBhIGhhY2sgdGhhdCB3b3JrcyBhcm91bmQgdGhlIGZhY3QgdGhhdCB0aGUgV2ViS2l0
MiBQbHVnaW5WaWV3IGlzbid0IGEgU2Nyb2xsYWJsZUFyZWEuCiAgICAgdmlydHVhbCBib29sIHdh
bnRzV2hlZWxFdmVudHMoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c0tleWJvYXJkRm9jdXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBjYW5Qcm9jZXNzRHJhZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkQWx3YXlzQXV0b1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5TbmFwc2hvdHRpbmdSdW5uaW5nUGx1Z2luKCkgeyB9CiAK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQWxsb3dOYXZpZ2F0aW9uRnJvbURyYWdzKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuaAppbmRleCAwZDg3YjJhYzVlM2JkZGJkYWZjY2Y4Yzg4MDY1MDYyODZh
ZGRkYzIxLi40ZTVhYmE2ZDA0NzM1MjIzZWNjNmM2MzIwZjY1Nzc1ZTM3ZjY1YzI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApAQCAtMjk3
LDcgKzI5Nyw3IEBAIHB1YmxpYzoKICAgICBDb250aW51YXRpb25DaGFpbk5vZGUqIGNvbnRpbnVh
dGlvbkNoYWluTm9kZSgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgTGF5b3V0VW5pdCBjb21w
dXRlZENTU1BhZGRpbmcoY29uc3QgTGVuZ3RoJikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
TGF5b3V0VW5pdCBjb21wdXRlZENTU1BhZGRpbmcoY29uc3QgTGVuZ3RoJikgY29uc3Q7CiAgICAg
dmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHNJZ25vcmluZ0NvbnRpbnVhdGlvbihjb25zdCBGbG9h
dFJlY3QmLCBWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIC8qd2FzRml4ZWQqLykgY29uc3QgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZvaWQgY29sbGVjdEFic29sdXRlUXVhZHNGb3JD
b250aW51YXRpb24oVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRl
ZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmpl
Y3QuY3BwCmluZGV4IDAyODdjMWU0OGQ4NWNiYWU1ODNjZTFhMTMyMWRlNDA1MTk4YmZhZWYuLmUx
Y2QwMjQ5YWQ3MGM2YmY0YjYwZjgwZmYxMmFjMmM1NTdkZmVjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcApAQCAtMTc3LDQ3ICsx
NzcsNiBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpzZXRVbmF2YWlsYWJsZVBsdWdpbklu
ZGljYXRvcklzUHJlc3NlZChib29sIHByZXNzZWQpCiAgICAgcmVwYWludCgpOwogfQogCi12b2lk
IFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNuYXBzaG90SW1hZ2UoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgSW1hZ2UmIGltYWdlKQotewot
ICAgIExheW91dFVuaXQgY1dpZHRoID0gY29udGVudFdpZHRoKCk7Ci0gICAgTGF5b3V0VW5pdCBj
SGVpZ2h0ID0gY29udGVudEhlaWdodCgpOwotICAgIGlmICghY1dpZHRoIHx8ICFjSGVpZ2h0KQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludElu
Zm8uY29udGV4dCgpOwotICAgIExheW91dFNpemUgY29udGVudFNpemUoY1dpZHRoLCBjSGVpZ2h0
KTsKLSAgICBMYXlvdXRQb2ludCBjb250ZW50TG9jYXRpb24gPSBsb2NhdGlvbigpICsgcGFpbnRP
ZmZzZXQ7Ci0gICAgY29udGVudExvY2F0aW9uLm1vdmUoYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xl
ZnQoKSwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkpOwotCi0gICAgTGF5b3V0UmVjdCByZWN0
KGNvbnRlbnRMb2NhdGlvbiwgY29udGVudFNpemUpOwotICAgIEludFJlY3QgYWxpZ25lZFJlY3Qg
PSBzbmFwcGVkSW50UmVjdChyZWN0KTsKLSAgICBpZiAoYWxpZ25lZFJlY3Qud2lkdGgoKSA8PSAw
IHx8IGFsaWduZWRSZWN0LmhlaWdodCgpIDw9IDApCi0gICAgICAgIHJldHVybjsKLQotICAgIElu
dGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb24gPSBjaG9vc2VJbnRlcnBvbGF0aW9uUXVh
bGl0eShjb250ZXh0LCBpbWFnZSwgJmltYWdlLCBhbGlnbmVkUmVjdC5zaXplKCkpOwotICAgIGNv
bnRleHQuZHJhd0ltYWdlKGltYWdlLCBhbGlnbmVkUmVjdCwgeyBpbWFnZU9yaWVudGF0aW9uKCks
IGludGVycG9sYXRpb24gfSk7Ci19Ci0KLXZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50
Q29udGVudHMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
ZnNldCkKLXsKLSAgICBpZiAoIWlzPEhUTUxQbHVnSW5FbGVtZW50PihmcmFtZU93bmVyRWxlbWVu
dCgpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdJbkVs
ZW1lbnQgPSBkb3duY2FzdDxIVE1MUGx1Z0luRWxlbWVudD4oZnJhbWVPd25lckVsZW1lbnQoKSk7
Ci0KLSAgICBpZiAocGx1Z0luRWxlbWVudC5kaXNwbGF5U3RhdGUoKSA+IEhUTUxQbHVnSW5FbGVt
ZW50OjpEaXNwbGF5aW5nU25hcHNob3QpIHsKLSAgICAgICAgUmVuZGVyV2lkZ2V0OjpwYWludENv
bnRlbnRzKHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwotICAgICAgICBpZiAoIXBsdWdJbkVsZW1l
bnQuaXNSZXN0YXJ0ZWRQbHVnaW4oKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoIWlzPEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+KHBsdWdJbkVsZW1lbnQpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAoSW1hZ2UqIHNuYXBzaG90ID0gZG93bmNhc3Q8SFRNTFBsdWdJ
bkltYWdlRWxlbWVudD4ocGx1Z0luRWxlbWVudCkuc25hcHNob3RJbWFnZSgpKQotICAgICAgICBw
YWludFNuYXBzaG90SW1hZ2UocGFpbnRJbmZvLCBwYWludE9mZnNldCwgKnNuYXBzaG90KTsKLX0K
LQogdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICAvLyBUaGUgcmVsZXZhbnQg
cmVwYWludGVkIG9iamVjdCBoZXVyaXN0aWMgaXMgbm90IHR1bmVkIGZvciBwbHVnaW4gZG9jdW1l
bnRzLgpAQCAtMzgwLDggKzMzOSw2IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OmxheW91
dCgpCiAgICAgU3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQb2ludCBsYXlvdXRDaGVja1BvaW50Owog
ICAgIEFTU0VSVChuZWVkc0xheW91dCgpKTsKIAotICAgIExheW91dFNpemUgb2xkU2l6ZSA9IGNv
bnRlbnRCb3hSZWN0KCkuc2l6ZSgpOwotCiAgICAgdXBkYXRlTG9naWNhbFdpZHRoKCk7CiAgICAg
dXBkYXRlTG9naWNhbEhlaWdodCgpOwogCkBAIC0zOTIsNTIgKzM0OSwxMCBAQCB2b2lkIFJlbmRl
ckVtYmVkZGVkT2JqZWN0OjpsYXlvdXQoKQogCiAgICAgdXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsK
IAotICAgIGJvb2wgd2FzTWlzc2luZ1dpZGdldCA9IGZhbHNlOwotICAgIGlmICghd2lkZ2V0KCkg
JiYgY2FuSGF2ZVdpZGdldCgpKSB7Ci0gICAgICAgIHdhc01pc3NpbmdXaWRnZXQgPSB0cnVlOwor
ICAgIGlmICghd2lkZ2V0KCkpCiAgICAgICAgIHZpZXcoKS5mcmFtZVZpZXcoKS5hZGRFbWJlZGRl
ZE9iamVjdFRvVXBkYXRlKCp0aGlzKTsKLSAgICB9CiAKICAgICBjbGVhck5lZWRzTGF5b3V0KCk7
Ci0KLSAgICBMYXlvdXRTaXplIG5ld1NpemUgPSBjb250ZW50Qm94UmVjdCgpLnNpemUoKTsKLQot
ICAgIGlmICghd2FzTWlzc2luZ1dpZGdldCAmJiBuZXdTaXplLndpZHRoKCkgPj0gb2xkU2l6ZS53
aWR0aCgpICYmIG5ld1NpemUuaGVpZ2h0KCkgPj0gb2xkU2l6ZS5oZWlnaHQoKSkgewotICAgICAg
ICBIVE1MRnJhbWVPd25lckVsZW1lbnQmIGVsZW1lbnQgPSBmcmFtZU93bmVyRWxlbWVudCgpOwot
ICAgICAgICBpZiAoaXM8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4oZWxlbWVudCkpIHsKLSAgICAg
ICAgICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBsdWdJbkltYWdlRWxlbWVudCA9IGRvd25j
YXN0PEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+KGVsZW1lbnQpOwotICAgICAgICAgICAgaWYgKHBs
dWdJbkltYWdlRWxlbWVudC5kaXNwbGF5U3RhdGUoKSA+IEhUTUxQbHVnSW5FbGVtZW50OjpEaXNw
bGF5aW5nU25hcHNob3QgJiYgcGx1Z0luSW1hZ2VFbGVtZW50LnNuYXBzaG90RGVjaXNpb24oKSA9
PSBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpNYXlTbmFwc2hvdFdoZW5SZXNpemVkKSB7Ci0gICAg
ICAgICAgICAgICAgcGx1Z0luSW1hZ2VFbGVtZW50LnNldE5lZWRzQ2hlY2tGb3JTaXplQ2hhbmdl
KCk7Ci0gICAgICAgICAgICAgICAgdmlldygpLmZyYW1lVmlldygpLmFkZEVtYmVkZGVkT2JqZWN0
VG9VcGRhdGUoKnRoaXMpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAg
aWYgKCFjYW5IYXZlQ2hpbGRyZW4oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVGhpcyBj
b2RlIGNvcGllZCBmcm9tIFJlbmRlck1lZGlhOjpsYXlvdXQoKS4KLSAgICBSZW5kZXJPYmplY3Qq
IGNoaWxkID0gZmlyc3RDaGlsZCgpOwotCi0gICAgaWYgKCFjaGlsZCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgYXV0byYgY2hpbGRCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KCpjaGlsZCk7Ci0K
LSAgICBpZiAobmV3U2l6ZSA9PSBvbGRTaXplICYmICFjaGlsZEJveC5uZWVkc0xheW91dCgpKQot
ICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgLy8gV2hlbiBjYWxsaW5nIGxheW91dCgpIG9uIGEg
Y2hpbGQgbm9kZSwgYSBwYXJlbnQgbXVzdCBlaXRoZXIgcHVzaCBhIExheW91dFN0YXRlTWFpbnRh
aW50ZXIsIG9yCi0gICAgLy8gaW5zdGFudGlhdGUgTGF5b3V0U3RhdGVEaXNhYmxlci4gU2luY2Ug
dXNpbmcgYSBMYXlvdXRTdGF0ZU1haW50YWluZXIgaXMgc2xpZ2h0bHkgbW9yZSBlZmZpY2llbnQs
Ci0gICAgLy8gYW5kIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIG1hbnkgdGltZXMgcGVyIHNl
Y29uZCBkdXJpbmcgcGxheWJhY2ssIHVzZSBhIExheW91dFN0YXRlTWFpbnRhaW5lcjoKLSAgICBM
YXlvdXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIoKnRoaXMsIGxvY2F0aW9uT2Zmc2V0KCks
IGhhc1RyYW5zZm9ybSgpIHx8IGhhc1JlZmxlY3Rpb24oKSB8fCBzdHlsZSgpLmlzRmxpcHBlZEJs
b2Nrc1dyaXRpbmdNb2RlKCkpOwotICAgIAotICAgIGNoaWxkQm94LnNldExvY2F0aW9uKExheW91
dFBvaW50KGJvcmRlckxlZnQoKSwgYm9yZGVyVG9wKCkpICsgTGF5b3V0U2l6ZShwYWRkaW5nTGVm
dCgpLCBwYWRkaW5nVG9wKCkpKTsKLSAgICBjaGlsZEJveC5tdXRhYmxlU3R5bGUoKS5zZXRIZWln
aHQoTGVuZ3RoKG5ld1NpemUuaGVpZ2h0KCksIEZpeGVkKSk7Ci0gICAgY2hpbGRCb3gubXV0YWJs
ZVN0eWxlKCkuc2V0V2lkdGgoTGVuZ3RoKG5ld1NpemUud2lkdGgoKSwgRml4ZWQpKTsKLSAgICBj
aGlsZEJveC5zZXROZWVkc0xheW91dChNYXJrT25seVRoaXMpOwotICAgIGNoaWxkQm94LmxheW91
dCgpOwotICAgIGNsZWFyQ2hpbGROZWVkc0xheW91dCgpOwogfQogCiBib29sIFJlbmRlckVtYmVk
ZGVkT2JqZWN0Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0
VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250
YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlv
biBoaXRUZXN0QWN0aW9uKQpAQCAtNDgyLDcgKzM5Nyw2IEBAIGJvb2wgUmVuZGVyRW1iZWRkZWRP
YmplY3Q6OmxvZ2ljYWxTY3JvbGwoU2Nyb2xsTG9naWNhbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNj
cm9sCiAgICAgcmV0dXJuIHNjcm9sbChsb2dpY2FsVG9QaHlzaWNhbChkaXJlY3Rpb24sIHRydWUs
IGZhbHNlKSwgZ3JhbnVsYXJpdHksIG11bHRpcGxpZXIsIHN0b3BFbGVtZW50KTsKIH0KIAotCiBi
b29sIFJlbmRlckVtYmVkZGVkT2JqZWN0Ojppc0luVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3Io
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdldFJlcGxhY2Vt
ZW50VGV4dEdlb21ldHJ5KExheW91dFBvaW50KCkpLmNvbnRhaW5zKExheW91dFBvaW50KHBvaW50
KSk7CkBAIC01NDMsMTIgKzQ1Nyw0IEBAIEN1cnNvckRpcmVjdGl2ZSBSZW5kZXJFbWJlZGRlZE9i
amVjdDo6Z2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgQ3Vyc29yCiAgICAgcmV0
dXJuIFJlbmRlcldpZGdldDo6Z2V0Q3Vyc29yKHBvaW50LCBjdXJzb3IpOwogfQogCi1ib29sIFJl
bmRlckVtYmVkZGVkT2JqZWN0OjpjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdAotewotICAgIGlmIChp
c1NuYXBzaG90dGVkUGx1Z0luKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJu
IGZhbHNlOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRW1iZWRkZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJl
ZGRlZE9iamVjdC5oCmluZGV4IDlhMDFjNDk0NzE4ZjVmM2Q1YzNkYTQ5MTNlNmFmMzQyOTlhOGVl
YzQuLmViNmJkNDM2MjFkYjJlMDZjMWNhZGFhZDczNmNjYmUzNmI4OTRhYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oCkBAIC0zMSw3ICsz
MSw3IEBAIGNsYXNzIFRleHRSdW47CiAKIC8vIFJlbmRlcmVyIGZvciBlbWJlZHMgYW5kIG9iamVj
dHMsIG9mdGVuLCBidXQgbm90IGFsd2F5cywgcmVuZGVyZWQgdmlhIHBsdWctaW5zLgogLy8gRm9y
IGV4YW1wbGUsIDxlbWJlZCBzcmM9ImZvby5odG1sIj4gZG9lcyBub3QgaW52b2tlIGEgcGx1Zy1p
bi4KLWNsYXNzIFJlbmRlckVtYmVkZGVkT2JqZWN0IDogcHVibGljIFJlbmRlcldpZGdldCB7Citj
bGFzcyBSZW5kZXJFbWJlZGRlZE9iamVjdCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJXaWRnZXQgewog
ICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoUmVuZGVyRW1iZWRkZWRPYmplY3QpOwogcHVibGlj
OgogICAgIFJlbmRlckVtYmVkZGVkT2JqZWN0KEhUTUxGcmFtZU93bmVyRWxlbWVudCYsIFJlbmRl
clN0eWxlJiYpOwpAQCAtNjEsMjMgKzYxLDE5IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmlu
ZyYgcGx1Z2luUmVwbGFjZW1lbnRUZXh0SWZVbmF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dW5hdmFpbGFibGVQbHVnaW5SZXBsYWNlbWVudFRleHQ7IH0KIAotcHJvdGVjdGVkOgorcHJpdmF0
ZToKICAgICB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQm
KSBmaW5hbDsKLSAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikg
b3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYp
IGZpbmFsOwogCi0gICAgQ3Vyc29yRGlyZWN0aXZlIGdldEN1cnNvcihjb25zdCBMYXlvdXRQb2lu
dCYsIEN1cnNvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIEN1cnNvckRpcmVjdGl2ZSBnZXRDdXJz
b3IoY29uc3QgTGF5b3V0UG9pbnQmLCBDdXJzb3ImKSBjb25zdCBmaW5hbDsKIAotcHJvdGVjdGVk
OgotICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3aWxsQmVEZXN0cm95ZWQo
KSBvdmVycmlkZTsKKyAgICB2b2lkIGxheW91dCgpIGZpbmFsOworICAgIHZvaWQgd2lsbEJlRGVz
dHJveWVkKCkgZmluYWw7CiAKLXByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJFbWJlZGRlZE9iamVjdCI7IH0KKyAgICBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlckVtYmVk
ZGVkT2JqZWN0IjsgfQogICAgIGJvb2wgaXNFbWJlZGRlZE9iamVjdCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KIAogICAgIGJvb2wgc2hvd3NVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRv
cigpIGNvbnN0IHsgcmV0dXJuIGlzUGx1Z2luVW5hdmFpbGFibGUoKSAmJiBtX2lzVW5hdmFpbGFi
bGVQbHVnaW5JbmRpY2F0b3JTdGF0ZSAhPSBVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvclN0YXRl
OjpIaWRkZW47IH0KLSAgICB2b2lkIHBhaW50U25hcHNob3RJbWFnZShQYWludEluZm8mLCBjb25z
dCBMYXlvdXRQb2ludCYsIEltYWdlJik7Ci0gICAgdm9pZCBwYWludENvbnRlbnRzKFBhaW50SW5m
byYsIGNvbnN0IExheW91dFBvaW50JikgZmluYWw7CiAKICAgICBib29sIHJlcXVpcmVzTGF5ZXIo
KSBjb25zdCBmaW5hbDsKIApAQCAtOTIsOSArODgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0
UmVwbGFjZW1lbnRUZXh0R2VvbWV0cnkoY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zm
c2V0LCBGbG9hdFJlY3QmIGNvbnRlbnRSZWN0LCBGbG9hdFJlY3QmIGluZGljYXRvclJlY3QsIEZs
b2F0UmVjdCYgcmVwbGFjZW1lbnRUZXh0UmVjdCwgRmxvYXRSZWN0JiBhcnJvd1JlY3QsIEZvbnRD
YXNjYWRlJiwgVGV4dFJ1biYsIGZsb2F0JiB0ZXh0V2lkdGgpIGNvbnN0OwogICAgIExheW91dFJl
Y3QgZ2V0UmVwbGFjZW1lbnRUZXh0R2VvbWV0cnkoY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxh
dGVkT2Zmc2V0KSBjb25zdDsKIAotICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QgZmlu
YWw7Ci0gICAgdmlydHVhbCBib29sIGNhbkhhdmVXaWRnZXQoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9Ci0KICAgICBib29sIG1faXNQbHVnaW5VbmF2YWlsYWJsZTsKICAgICBlbnVtIGNsYXNzIFVu
YXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yU3RhdGUgeyBVbmluaXRpYWxpemVkLCBIaWRkZW4sIFZp
c2libGUgfTsKICAgICBVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvclN0YXRlIG1faXNVbmF2YWls
YWJsZVBsdWdpbkluZGljYXRvclN0YXRlIHsgVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3JTdGF0
ZTo6VW5pbml0aWFsaXplZCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcAppbmRleCAzZjBiNzk1OGU2Y2FhMjM4ZDMxNTIzZDZkNGFiNzFhNTU0
NDhmNGRlLi4zNjE3OGZjZjE4NjgyY2VkMWY4NTFhNDFiMzRkYzE3NWJkYWNkMDRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMjYz
OCwxOCArMjYzOCw2IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludHNDb250ZW50KFJl
bmRlckxheWVyOjpQYWludGVkQ29udGVudFJlcXVlc3QmIHJlcXVlCiAgICAgcmV0dXJuIHBhaW50
c0NvbnRlbnQ7CiB9CiAKLXN0YXRpYyBib29sIGlzUmVzdGFydGVkUGx1Z2luKFJlbmRlck9iamVj
dCYgcmVuZGVyZXIpCi17Ci0gICAgaWYgKCFpczxSZW5kZXJFbWJlZGRlZE9iamVjdD4ocmVuZGVy
ZXIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvJiBlbGVtZW50ID0gZG93bmNh
c3Q8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KHJlbmRlcmVyKS5mcmFtZU93bmVyRWxlbWVudCgpOwot
ICAgIGlmICghaXM8SFRNTFBsdWdJbkVsZW1lbnQ+KGVsZW1lbnQpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFBsdWdJbkVsZW1lbnQ+KGVsZW1lbnQp
LmlzUmVzdGFydGVkUGx1Z2luKCk7Ci19Ci0KIHN0YXRpYyBib29sIGlzQ29tcG9zaXRlZFBsdWdp
bihSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogewogICAgIHJldHVybiBpczxSZW5kZXJFbWJlZGRl
ZE9iamVjdD4ocmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlckVtYmVkZGVkT2JqZWN0PihyZW5k
ZXJlcikuYWxsb3dzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpOwpAQCAtMjY2Niw3ICsyNjU0LDcg
QEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OmlzU2ltcGxlQ29udGFpbmVyQ29tcG9zaXRpbmdM
YXllcihQYWludGVkQ29udGVudHNJbmZvJgogICAgIGlmIChoYXNCYWNraW5nU2hhcmluZ0xheWVy
cygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAocmVuZGVyZXIoKS5pc1JlbmRl
clJlcGxhY2VkKCkgJiYgKCFpc0NvbXBvc2l0ZWRQbHVnaW4ocmVuZGVyZXIoKSkgfHwgaXNSZXN0
YXJ0ZWRQbHVnaW4ocmVuZGVyZXIoKSkpKQorICAgIGlmIChyZW5kZXJlcigpLmlzUmVuZGVyUmVw
bGFjZWQoKSAmJiAhaXNDb21wb3NpdGVkUGx1Z2luKHJlbmRlcmVyKCkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAocmVuZGVyZXIoKS5pc1RleHRDb250cm9sKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggOTUzMzdhNGNhMDE2NDA2Yjc2MTM4
ZDA3NTg3MjFjOGRjYzRjYTk3OS4uYjkxNTkyMmIyMWU5ODgzMmNjZWI1MDhhM2NkOTc0NDhhZjYy
N2JhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtMjE3LDcg
KzIxNyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzTWVudUxpc3QoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc01ldGVyKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTbmFwc2hvdHRlZFBsdWdJbigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlckJ1dHRvbigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVySUZyYW1lKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW4uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmU4
NTg2MjVjOTI5ZDgwYmVjYWZlYTY2ZjA2NGUzNDIxODEyNWNlLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTIgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlbmRlclNu
YXBzaG90dGVkUGx1Z0luLmgiCi0KLSNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgotI2luY2x1ZGUg
IkN1cnNvci5oIgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJGaWx0ZXIuaCIK
LSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCi0jaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiR3JhZGllbnQuaCIKLSNpbmNsdWRlICJIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50LmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKLSNpbmNsdWRl
ICJNb3VzZUV2ZW50LmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBhaW50SW5mby5o
IgotI2luY2x1ZGUgIlBhdGguaCIKLSNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKLSNp
bmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlLmgiCi0jaW5jbHVkZSAiUmVuZGVySXRlcmF0b3Iu
aCIKLSNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCi0jaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGlu
ZXMuaD4KLSNpbmNsdWRlIDx3dGYvU3RhY2tTdGF0cy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLVdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbik7
Ci0KLVJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQotICAgIDog
UmVuZGVyRW1iZWRkZWRPYmplY3QoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCi0gICAgLCBtX3Nu
YXBzaG90UmVzb3VyY2UobWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQotewotICAg
IG1fc25hcHNob3RSZXNvdXJjZS0+aW5pdGlhbGl6ZSgqdGhpcyk7Ci19Ci0KLVJlbmRlclNuYXBz
aG90dGVkUGx1Z0luOjp+UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oKQotewotICAgIC8vIERvIG5v
dCBhZGQgYW55IGNvZGUgaGVyZS4gQWRkIGl0IHRvIHdpbGxCZURlc3Ryb3llZCgpIGluc3RlYWQu
Ci19Ci0KLXZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OndpbGxCZURlc3Ryb3llZCgpCi17
Ci0gICAgQVNTRVJUKG1fc25hcHNob3RSZXNvdXJjZSk7Ci0gICAgbV9zbmFwc2hvdFJlc291cmNl
LT5zaHV0ZG93bigpOwotCi0gICAgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OndpbGxCZURlc3Ryb3ll
ZCgpOwotfQotCi1IVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bjo6cGx1Z0luSW1hZ2VFbGVtZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZG93bmNhc3Q8SFRN
TFBsdWdJbkltYWdlRWxlbWVudD4oUmVuZGVyRW1iZWRkZWRPYmplY3Q6OmZyYW1lT3duZXJFbGVt
ZW50KCkpOwotfQotCi12b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpsYXlvdXQoKQotewot
ICAgIFN0YWNrU3RhdHM6OkxheW91dENoZWNrUG9pbnQgbGF5b3V0Q2hlY2tQb2ludDsKLSAgICBM
YXlvdXRTaXplIG9sZFNpemUgPSBjb250ZW50Qm94UmVjdCgpLnNpemUoKTsKLQotICAgIFJlbmRl
ckVtYmVkZGVkT2JqZWN0OjpsYXlvdXQoKTsKLQotICAgIExheW91dFNpemUgbmV3U2l6ZSA9IGNv
bnRlbnRCb3hSZWN0KCkuc2l6ZSgpOwotICAgIGlmIChuZXdTaXplID09IG9sZFNpemUpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIHZpZXcoKS5mcmFtZVZpZXcoKS5hZGRFbWJlZGRlZE9iamVjdFRv
VXBkYXRlKCp0aGlzKTsKLX0KLQotdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6dXBkYXRl
U25hcHNob3QoSW1hZ2UqIGltYWdlKQotewotICAgIC8vIFplcm8tc2l6ZSBwbHVnaW5zIHdpbGwg
aGF2ZSBubyBpbWFnZS4KLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X3NuYXBzaG90UmVzb3VyY2UtPnNldENhY2hlZEltYWdlKG5ldyBDYWNoZWRJbWFnZShpbWFnZSwg
cGFnZSgpLnNlc3Npb25JRCgpLCAmcGFnZSgpLmNvb2tpZUphcigpKSk7Ci0gICAgcmVwYWludCgp
OwotfQotCi12b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludChQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQotewotICAgIGlmIChwYWlu
dEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCAmJiBwbHVnSW5JbWFnZUVsZW1l
bnQoKS5kaXNwbGF5U3RhdGUoKSA8IEhUTUxQbHVnSW5FbGVtZW50OjpSZXN0YXJ0aW5nKSB7Ci0g
ICAgICAgIHBhaW50U25hcHNob3QocGFpbnRJbmZvLCBwYWludE9mZnNldCk7Ci0gICAgfQotCi0g
ICAgUGFpbnRQaGFzZSBuZXdQaGFzZSA9IChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6
Q2hpbGRPdXRsaW5lcykgPyBQYWludFBoYXNlOjpPdXRsaW5lIDogcGFpbnRJbmZvLnBoYXNlOwot
ICAgIG5ld1BoYXNlID0gKG5ld1BoYXNlID09IFBhaW50UGhhc2U6OkNoaWxkQmxvY2tCYWNrZ3Jv
dW5kcykgPyBQYWludFBoYXNlOjpDaGlsZEJsb2NrQmFja2dyb3VuZCA6IG5ld1BoYXNlOwotCi0g
ICAgUGFpbnRJbmZvIHBhaW50SW5mb0ZvckNoaWxkKHBhaW50SW5mbyk7Ci0gICAgcGFpbnRJbmZv
Rm9yQ2hpbGQucGhhc2UgPSBuZXdQaGFzZTsKLSAgICBwYWludEluZm9Gb3JDaGlsZC51cGRhdGVT
dWJ0cmVlUGFpbnRSb290Rm9yQ2hpbGRyZW4odGhpcyk7Ci0KLSAgICBmb3IgKGF1dG8mIGNoaWxk
IDogY2hpbGRyZW5PZlR5cGU8UmVuZGVyQm94PigqdGhpcykpIHsKLSAgICAgICAgTGF5b3V0UG9p
bnQgY2hpbGRQb2ludCA9IGZsaXBGb3JXcml0aW5nTW9kZUZvckNoaWxkKCZjaGlsZCwgcGFpbnRP
ZmZzZXQpOwotICAgICAgICBpZiAoIWNoaWxkLmhhc1NlbGZQYWludGluZ0xheWVyKCkgJiYgIWNo
aWxkLmlzRmxvYXRpbmcoKSkKLSAgICAgICAgICAgIGNoaWxkLnBhaW50KHBhaW50SW5mb0ZvckNo
aWxkLCBjaGlsZFBvaW50KTsKLSAgICB9Ci0KLSAgICBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFp
bnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7Ci19Ci0KLXZvaWQgUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW46OnBhaW50U25hcHNob3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldCkKLXsKLSAgICBJbWFnZSogaW1hZ2UgPSBtX3NuYXBzaG90UmVzb3Vy
Y2UtPmltYWdlKCkuZ2V0KCk7Ci0gICAgaWYgKCFpbWFnZSB8fCBpbWFnZS0+aXNOdWxsKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIExheW91dFVuaXQgY1dpZHRoID0gY29udGVudFdpZHRoKCk7
Ci0gICAgTGF5b3V0VW5pdCBjSGVpZ2h0ID0gY29udGVudEhlaWdodCgpOwotICAgIGlmICghY1dp
ZHRoIHx8ICFjSGVpZ2h0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwotCi0gICAgTGF5b3V0U2l6ZSBjb250ZW50
U2l6ZShjV2lkdGgsIGNIZWlnaHQpOwotICAgIExheW91dFBvaW50IGNvbnRlbnRMb2NhdGlvbiA9
IGxvY2F0aW9uKCkgKyBwYWludE9mZnNldDsKLSAgICBjb250ZW50TG9jYXRpb24ubW92ZShib3Jk
ZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSk7Ci0K
LSAgICBMYXlvdXRSZWN0IHJlY3QoY29udGVudExvY2F0aW9uLCBjb250ZW50U2l6ZSk7Ci0gICAg
SW50UmVjdCBhbGlnbmVkUmVjdCA9IHNuYXBwZWRJbnRSZWN0KHJlY3QpOwotICAgIGlmIChhbGln
bmVkUmVjdC53aWR0aCgpIDw9IDAgfHwgYWxpZ25lZFJlY3QuaGVpZ2h0KCkgPD0gMCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvbiA9IGNo
b29zZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQsICppbWFnZSwgaW1hZ2UsIGFsaWduZWRS
ZWN0LnNpemUoKSk7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBhbGlnbmVkUmVjdCwg
eyBpbWFnZU9yaWVudGF0aW9uKCksIGludGVycG9sYXRpb24gfSk7Ci19Ci0KLUN1cnNvckRpcmVj
dGl2ZSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6Z2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50
JiBwb2ludCwgQ3Vyc29yJiBvdmVycmlkZUN1cnNvcikgY29uc3QKLXsKLSAgICBpZiAocGx1Z0lu
SW1hZ2VFbGVtZW50KCkuZGlzcGxheVN0YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UmVzdGFy
dGluZykgewotICAgICAgICBvdmVycmlkZUN1cnNvciA9IGhhbmRDdXJzb3IoKTsKLSAgICAgICAg
cmV0dXJuIFNldEN1cnNvcjsKLSAgICB9Ci0gICAgcmV0dXJuIFJlbmRlckVtYmVkZGVkT2JqZWN0
OjpnZXRDdXJzb3IocG9pbnQsIG92ZXJyaWRlQ3Vyc29yKTsKLX0KLQotdm9pZCBSZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbjo6aGFuZGxlRXZlbnQoRXZlbnQmIGV2ZW50KQotewotICAgIGlmICghaXM8
TW91c2VFdmVudD4oZXZlbnQpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBtb3VzZUV2
ZW50ID0gZG93bmNhc3Q8TW91c2VFdmVudD4oZXZlbnQpOwotCi0gICAgLy8gSWYgd2UncmUgYSBz
bmFwc2hvdHRlZCBwbHVnaW4sIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHdlIGFjdGl2YXRlIG9uCi0g
ICAgLy8gY2xpY2tzIGV2ZW4gaWYgdGhlIHBhZ2UgaXMgcHJldmVudGluZyBvdXIgZGVmYXVsdCBi
ZWhhdmlvdXIuIE90aGVyd2lzZQotICAgIC8vIHdlIGNhbiBuZXZlciByZXN0YXJ0LiBPbmUgd2Ug
ZG8gcmVzdGFydCwgdGhlbiB0aGUgcGFnZSB3aWxsIGhhcHBpbHkKLSAgICAvLyBibG9jayB0aGUg
bmV3IHBsdWdpbiBpbiB0aGUgbm9ybWFsIHJlbmRlcmVyLiBBbGwgdGhpcyBtZWFucyB3ZSBoYXZl
IHRvCi0gICAgLy8gYmUgb24gdGhlIGxvb2tvdXQgZm9yIGEgbW91c2V1cCBldmVudCB0aGF0IGNv
bWVzIGFmdGVyIGEgbW91c2Vkb3duCi0gICAgLy8gZXZlbnQuIFRoZSBjb2RlIGJlbG93IGlzIG5v
dCBjb21wbGV0ZWx5IGZvb2xwcm9vZiwgYnV0IHRoZSB3b3JzdCB0aGF0Ci0gICAgLy8gY291bGQg
aGFwcGVuIGlzIHRoYXQgYSBzbmFwc2hvdHRlZCBwbHVnaW4gcmVzdGFydHMuCi0KLSAgICBpZiAo
bW91c2VFdmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3V0RXZlbnQpCi0gICAgICAg
IG1faXNQb3RlbnRpYWxNb3VzZUFjdGl2YXRpb24gPSBmYWxzZTsKLQotICAgIGlmIChtb3VzZUV2
ZW50LmJ1dHRvbigpICE9IExlZnRCdXR0b24pCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICht
b3VzZUV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCB8fCAobV9pc1BvdGVu
dGlhbE1vdXNlQWN0aXZhdGlvbiAmJiBtb3VzZUV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCku
bW91c2V1cEV2ZW50KSkgewotICAgICAgICBtX2lzUG90ZW50aWFsTW91c2VBY3RpdmF0aW9uID0g
ZmFsc2U7Ci0gICAgICAgIGJvb2wgY2xpY2tXYXNPbk92ZXJsYXkgPSBwbHVnSW5JbWFnZUVsZW1l
bnQoKS5wYXJ0T2ZTbmFwc2hvdE92ZXJsYXkobW91c2VFdmVudC50YXJnZXQoKSk7Ci0gICAgICAg
IHBsdWdJbkltYWdlRWxlbWVudCgpLnVzZXJEaWRDbGlja1NuYXBzaG90KG1vdXNlRXZlbnQsICFj
bGlja1dhc09uT3ZlcmxheSk7Ci0gICAgICAgIG1vdXNlRXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQo
KTsKLSAgICB9IGVsc2UgaWYgKG1vdXNlRXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3Vz
ZWRvd25FdmVudCkgewotICAgICAgICBtX2lzUG90ZW50aWFsTW91c2VBY3RpdmF0aW9uID0gdHJ1
ZTsKLSAgICAgICAgbW91c2VFdmVudC5zZXREZWZhdWx0SGFuZGxlZCgpOwotICAgIH0KLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YTQ1YTMxYTU3MGIyZWZjYjQ1YTZlMTBlYjQ2N2I4ZWFiMGRjNDFmMC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiUmVuZGVyRW1iZWRk
ZWRPYmplY3QuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50OwotY2xhc3MgUmVuZGVySW1hZ2VSZXNvdXJjZTsKLQotY2xhc3MgUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4gZmluYWwgOiBwdWJsaWMgUmVuZGVyRW1iZWRkZWRPYmplY3QgewotICAg
IFdURl9NQUtFX0lTT19BTExPQ0FURUQoUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4pOwotcHVibGlj
OgotICAgIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmLCBS
ZW5kZXJTdHlsZSYmKTsKLSAgICB2aXJ0dWFsIH5SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbigpOwot
Ci0gICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgcGx1Z0luSW1hZ2VFbGVtZW50KCkgY29uc3Q7
Ci0gICAgdm9pZCB1cGRhdGVTbmFwc2hvdChJbWFnZSopOwotICAgIHZvaWQgaGFuZGxlRXZlbnQo
RXZlbnQmKTsKLQotcHJpdmF0ZToKLSAgICB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRl
OwotICAgIHZvaWQgZnJhbWVPd25lckVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKLSAgICBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlclNuYXBzaG90
dGVkUGx1Z0luIjsgfQotICAgIEN1cnNvckRpcmVjdGl2ZSBnZXRDdXJzb3IoY29uc3QgTGF5b3V0
UG9pbnQmLCBDdXJzb3ImKSBjb25zdCBmaW5hbDsKLSAgICBib29sIGlzU25hcHNob3R0ZWRQbHVn
SW4oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCBwYWludChQYWludElu
Zm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIGZpbmFsOwotICAgIGJvb2wgY2FuSGF2ZVdpZGdldCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdm9pZCBwYWludFNuYXBzaG90KFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7Ci0gICAgdm9pZCBsYXlvdXQoKSBmaW5hbDsK
LQotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJJbWFnZVJlc291cmNlPiBtX3NuYXBzaG90UmVz
b3VyY2U7Ci0gICAgYm9vbCBtX2lzUG90ZW50aWFsTW91c2VBY3RpdmF0aW9uIHsgZmFsc2UgfTsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19S
RU5ERVJfT0JKRUNUKFJlbmRlclNuYXBzaG90dGVkUGx1Z0luLCBpc1NuYXBzaG90dGVkUGx1Z0lu
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCBiODlhYzBk
MWYyOGVhODZhZTIwMTM0NzVlNWRhNDlkNTQ1NmQzZWRiLi4wNGE5MzBjODBhN2M3OGRjMDEwODA1
MjkxNTAzMjlmM2FhM2ExMzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZS5jcHAKQEAgLTQxMyw4ICs0MTMsNiBAQCBib29sIFJlbmRlclRoZW1lOjpwYWludChjb25zdCBS
ZW5kZXJCb3gmIGJveCwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXRlcywgY29ucwogICAgICAg
ICByZXR1cm4gcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydChib3gsIHBhaW50
SW5mbywgaW50ZWdyYWxTbmFwcGVkUmVjdCk7CiAgICAgY2FzZSBTZWFyY2hGaWVsZFJlc3VsdHNC
dXR0b25QYXJ0OgogICAgICAgICByZXR1cm4gcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24o
Ym94LCBwYWludEluZm8sIGludGVncmFsU25hcHBlZFJlY3QpOwotICAgIGNhc2UgU25hcHNob3R0
ZWRQbHVnaW5PdmVybGF5UGFydDoKLSAgICAgICAgcmV0dXJuIHBhaW50U25hcHNob3R0ZWRQbHVn
aW5PdmVybGF5KGJveCwgcGFpbnRJbmZvLCBpbnRlZ3JhbFNuYXBwZWRSZWN0KTsKICNpZiBFTkFC
TEUoU0VSVklDRV9DT05UUk9MUykKICAgICBjYXNlIEltYWdlQ29udHJvbHNCdXR0b25QYXJ0Ogog
ICAgICAgICByZXR1cm4gcGFpbnRJbWFnZUNvbnRyb2xzQnV0dG9uKGJveCwgcGFpbnRJbmZvLCBp
bnRlZ3JhbFNuYXBwZWRSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgK
aW5kZXggNzFiM2I0MGU4ZTg1YzMyOGQwZTJkNDE5MmFmZmIwM2ExODVmNGMzYy4uYmUxOTkwM2Q1
YWI2NDZmYWU5NDJjYzIyOWQ0MWMxNDhlOGQ0ZTdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lLmgKQEAgLTM4Niw4ICszODYsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCBib29sIHBhaW50TWVkaWFGdWxsU2NyZWVuVm9sdW1lU2xpZGVyVHJhY2soY29uc3QgUmVuZGVy
T2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7
IH0KICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYUZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXJUaHVt
Yihjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikg
eyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBib29sIHBhaW50U25hcHNob3R0ZWRQbHVn
aW5PdmVybGF5KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKSB7IHJldHVybiB0cnVlOyB9Ci0KICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykK
ICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRJbWFnZUNvbnRyb2xzQnV0dG9uKGNvbnN0IFJlbmRlck9i
amVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJldHVybiB0cnVlOyB9
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgKaW5kZXgg
MmRjNWYyYjMxNzkwNThlMmZiNjNhM2MxYjRkOTRlNzA5MmZlMjM3Ni4uNGY1Nzk2NTkzNjllYzRi
NmU5MDM0Zjc5MGNmZjJlMDI5YjVjNGUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lTWFjLmgKQEAgLTE1Niw4ICsxNTYsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgc3Vw
cG9ydHNDbG9zZWRDYXB0aW9uaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogI2Vu
ZGlmCiAKLSAgICBib29sIHBhaW50U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5KGNvbnN0IFJlbmRl
ck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBmaW5hbDsKLQogI2lm
IEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgTGF5b3V0U2l6ZSBhdHRhY2htZW50SW50
cmluc2ljU2l6ZShjb25zdCBSZW5kZXJBdHRhY2htZW50JikgY29uc3QgZmluYWw7CiAgICAgaW50
IGF0dGFjaG1lbnRCYXNlbGluZShjb25zdCBSZW5kZXJBdHRhY2htZW50JikgY29uc3QgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggNGQyMGQx
NzY3OGE3ZTIwZDdiNzUyNDdkNWVlYWQ2N2E0OWNkZmUwYi4uNzY5MWI2MzNmYzBmNTc0OWE3YTdh
ZWFhN2VhZjU4YTcxOWIwYTEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbQpAQCAtNTgsNyArNTgsNiBAQAogI2ltcG9ydCAiUmVuZGVyTWV0ZXIuaCIKICNp
bXBvcnQgIlJlbmRlclByb2dyZXNzLmgiCiAjaW1wb3J0ICJSZW5kZXJTbGlkZXIuaCIKLSNpbXBv
cnQgIlJlbmRlclNuYXBzaG90dGVkUGx1Z0luLmgiCiAjaW1wb3J0ICJSZW5kZXJWaWV3LmgiCiAj
aW1wb3J0ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIu
aCIKQEAgLTIxMzgsODEgKzIxMzcsNiBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJj
aEZpZWxkUmVzdWx0c0J1dHRvbihjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QgUAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbmFwc2hvdHRlZFBs
dWdpbk92ZXJsYXkoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmKQotewotICAgIGlmIChwYWludEluZm8ucGhhc2Ug
IT0gUGFpbnRQaGFzZTo6QmxvY2tCYWNrZ3JvdW5kKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQot
ICAgIGlmICghaXM8UmVuZGVyQmxvY2s+KHJlbmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0KLSAgICBjb25zdCBSZW5kZXJCbG9jayYgcmVuZGVyQmxvY2sgPSBkb3duY2FzdDxSZW5kZXJC
bG9jaz4ocmVuZGVyZXIpOwotCi0gICAgTGF5b3V0VW5pdCBjb250ZW50V2lkdGggPSByZW5kZXJC
bG9jay5jb250ZW50V2lkdGgoKTsKLSAgICBMYXlvdXRVbml0IGNvbnRlbnRIZWlnaHQgPSByZW5k
ZXJCbG9jay5jb250ZW50SGVpZ2h0KCk7Ci0gICAgaWYgKCFjb250ZW50V2lkdGggfHwgIWNvbnRl
bnRIZWlnaHQpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKLQotICAgIExheW91dFNpemUgY29udGVudFNp
emUoY29udGVudFdpZHRoLCBjb250ZW50SGVpZ2h0KTsKLSAgICBMYXlvdXRQb2ludCBjb250ZW50
TG9jYXRpb24gPSByZW5kZXJCbG9jay5sb2NhdGlvbigpOwotICAgIGNvbnRlbnRMb2NhdGlvbi5t
b3ZlKHJlbmRlckJsb2NrLmJvcmRlckxlZnQoKSArIHJlbmRlckJsb2NrLnBhZGRpbmdMZWZ0KCks
IHJlbmRlckJsb2NrLmJvcmRlclRvcCgpICsgcmVuZGVyQmxvY2sucGFkZGluZ1RvcCgpKTsKLQot
ICAgIExheW91dFJlY3QgcmVjdChjb250ZW50TG9jYXRpb24sIGNvbnRlbnRTaXplKTsKLSAgICBJ
bnRSZWN0IGFsaWduZWRSZWN0ID0gc25hcHBlZEludFJlY3QocmVjdCk7Ci0gICAgaWYgKGFsaWdu
ZWRSZWN0LndpZHRoKCkgPD0gMCB8fCBhbGlnbmVkUmVjdC5oZWlnaHQoKSA8PSAwKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIFdlIG5lZWQgdG8gZ2V0IHRoZSBzbmFwc2hvdCBpbWFn
ZSBmcm9tIHRoZSBwbHVnaW4gZWxlbWVudCwgd2hpY2ggc2hvdWxkIGJlIGF2YWlsYWJsZQotICAg
IC8vIGZyb20gb3VyIG5vZGUuIEFzc3VtaW5nIHRoaXMgbm9kZSBpcyB0aGUgcGx1Z2luIG92ZXJs
YXkgZWxlbWVudCwgd2Ugc2hvdWxkIGdldCB0byB0aGUKLSAgICAvLyBwbHVnaW4gaXRzZWxmIGJ5
IGFza2luZyBmb3IgdGhlIHNoYWRvdyByb290IHBhcmVudCwgYW5kIHRoZW4gaXRzIHBhcmVudC4K
LQotICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KCpyZW5kZXJCbG9jay5lbGVtZW50KCkpKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIEhUTUxFbGVtZW50JiBwbHVnSW5PdmVybGF5ID0gZG93
bmNhc3Q8SFRNTEVsZW1lbnQ+KCpyZW5kZXJCbG9jay5lbGVtZW50KCkpOwotICAgIEVsZW1lbnQq
IHBhcmVudCA9IHBsdWdJbk92ZXJsYXkucGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpOwotICAg
IHdoaWxlIChwYXJlbnQgJiYgIWlzPEhUTUxQbHVnSW5FbGVtZW50PigqcGFyZW50KSkKLSAgICAg
ICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCk7Ci0KLSAgICBp
ZiAoIXBhcmVudCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBIVE1MUGx1Z0luRWxlbWVu
dCYgcGx1Z0luRWxlbWVudCA9IGRvd25jYXN0PEhUTUxQbHVnSW5FbGVtZW50PigqcGFyZW50KTsK
LSAgICBpZiAoIWlzPEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+KHBsdWdJbkVsZW1lbnQpKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBsdWdJbklt
YWdlRWxlbWVudCA9IGRvd25jYXN0PEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+KHBsdWdJbkVsZW1l
bnQpOwotCi0gICAgSW1hZ2UqIHNuYXBzaG90ID0gcGx1Z0luSW1hZ2VFbGVtZW50LnNuYXBzaG90
SW1hZ2UoKTsKLSAgICBpZiAoIXNuYXBzaG90KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
IFJlbmRlclNuYXBzaG90dGVkUGx1Z0luJiBwbHVnSW5SZW5kZXJlciA9IGRvd25jYXN0PFJlbmRl
clNuYXBzaG90dGVkUGx1Z0luPigqcGx1Z0luSW1hZ2VFbGVtZW50LnJlbmRlcmVyKCkpOwotICAg
IEZsb2F0UG9pbnQgc25hcHNob3RBYnNQb3MgPSBwbHVnSW5SZW5kZXJlci5sb2NhbFRvQWJzb2x1
dGUoKTsKLSAgICBzbmFwc2hvdEFic1Bvcy5tb3ZlKHBsdWdJblJlbmRlcmVyLmJvcmRlckxlZnQo
KSArIHBsdWdJblJlbmRlcmVyLnBhZGRpbmdMZWZ0KCksIHBsdWdJblJlbmRlcmVyLmJvcmRlclRv
cCgpICsgcGx1Z0luUmVuZGVyZXIucGFkZGluZ1RvcCgpKTsKLQotICAgIC8vIFdlIGNvdWxkIGRy
YXcgdGhlIHNuYXBzaG90IHdpdGggdGhhdCBjb29yZGluYXRlcywgYnV0IHdlIG5lZWQgdG8gbWFr
ZSBzdXJlIHRoZXJlCi0gICAgLy8gaXNuJ3QgYSBjb21wb3NpdGVkIGxheWVyIGJldHdlZW4gdXMg
YW5kIHRoZSBwbHVnSW5SZW5kZXJlci4KLSAgICBmb3IgKGF1dG8qIHJlbmRlckJveCA9ICZkb3du
Y2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKTsgcmVuZGVyQm94ICE9ICZwbHVnSW5SZW5kZXJlcjsg
cmVuZGVyQm94ID0gcmVuZGVyQm94LT5wYXJlbnRCb3goKSkgewotICAgICAgICBpZiAocmVuZGVy
Qm94LT5pc0NvbXBvc2l0ZWQoKSkgewotICAgICAgICAgICAgc25hcHNob3RBYnNQb3MgPSAtcmVu
ZGVyQm94LT5sb2NhdGlvbigpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBMYXlvdXRTaXplIHBsdWdpblNpemUocGx1Z0luUmVuZGVyZXIuY29udGVudFdpZHRo
KCksIHBsdWdJblJlbmRlcmVyLmNvbnRlbnRIZWlnaHQoKSk7Ci0gICAgTGF5b3V0UmVjdCBwbHVn
aW5SZWN0KHNuYXBzaG90QWJzUG9zLCBwbHVnaW5TaXplKTsKLSAgICBJbnRSZWN0IGFsaWduZWRQ
bHVnaW5SZWN0ID0gc25hcHBlZEludFJlY3QocGx1Z2luUmVjdCk7Ci0KLSAgICBpZiAoYWxpZ25l
ZFBsdWdpblJlY3Qud2lkdGgoKSA8PSAwIHx8IGFsaWduZWRQbHVnaW5SZWN0LmhlaWdodCgpIDw9
IDApCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY29udGV4dC5kcmF3SW1hZ2UoKnNuYXBz
aG90LCBhbGlnbmVkUGx1Z2luUmVjdCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiAjaWYgRU5B
QkxFKERBVEFMSVNUX0VMRU1FTlQpCiBJbnRTaXplIFJlbmRlclRoZW1lTWFjOjpzbGlkZXJUaWNr
U2l6ZSgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMGZm
YmFhZTNhYTIwOGQ2MTc1ODhmY2JjNGYwM2U3NDE0Y2QxNTc4OS4uMWNmYTEzYTMxNjM2OTYyNDFi
OWFmOTQ2MDkwZTk2NWFkM2E4NTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cApAQCAtNDA0NCw5ICs0MDQ0LDkgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBJbnRlcm5hbHM6OnVu
YXZhaWxhYmxlUGx1Z2luUmVwbGFjZW1lbnRUZXh0KEVsZW1lbnQmIGVsZW1lbnQKICAgICByZXR1
cm4gU3RyaW5nIHsgZG93bmNhc3Q8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KCpyZW5kZXJlcikucGx1
Z2luUmVwbGFjZW1lbnRUZXh0SWZVbmF2YWlsYWJsZSgpIH07CiB9CiAKLWJvb2wgSW50ZXJuYWxz
Ojppc1BsdWdpblNuYXBzaG90dGVkKEVsZW1lbnQmIGVsZW1lbnQpCitib29sIEludGVybmFsczo6
aXNQbHVnaW5TbmFwc2hvdHRlZChFbGVtZW50JikKIHsKLSAgICByZXR1cm4gaXM8SFRNTFBsdWdJ
bkVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxQbHVnSW5FbGVtZW50PihlbGVtZW50
KS5kaXNwbGF5U3RhdGUoKSA8PSBIVE1MUGx1Z0luRWxlbWVudDo6RGlzcGxheWluZ1NuYXBzaG90
OworICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBJbnRlcm5hbHM6OnBsdWdpbklzQmVsb3dT
aXplVGhyZXNob2xkKEVsZW1lbnQmIGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1Bs
dWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KaW5kZXggZjVlMjQzMjBlZjcwODM1
ZTcxYjkxZjcwMTI2NzQ5NGE1ZGIzMTQ1ZS4uMzFlOWNmOTJmMDJlZTBjY2YxMDdhZmZlNTZjMDUz
NDhmYmM1YzRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9Q
bHVnaW5Qcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMv
UGx1Z2luUHJvY2Vzc01hYy5tbQpAQCAtMzczLDE5ICszNzMsOSBAQCBib29sIFBsdWdpblByb2Nl
c3M6Om9wZW5GaWxlKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotc3RhdGljIHZvaWQgbXV0ZUF1ZGlvKHZvaWQpCi17Ci0gICAgQXVkaW9PYmplY3RQcm9w
ZXJ0eUFkZHJlc3MgcHJvcGVydHlBZGRyZXNzID0geyBrQXVkaW9IYXJkd2FyZVByb3BlcnR5UHJv
Y2Vzc0lzQXVkaWJsZSwga0F1ZGlvT2JqZWN0UHJvcGVydHlTY29wZUdsb2JhbCwga0F1ZGlvT2Jq
ZWN0UHJvcGVydHlFbGVtZW50TWFzdGVyIH07Ci0gICAgVUludDMyIHByb3BlcnR5RGF0YSA9IDA7
Ci0gICAgT1NTdGF0dXMgcmVzdWx0ID0gQXVkaW9PYmplY3RTZXRQcm9wZXJ0eURhdGEoa0F1ZGlv
T2JqZWN0U3lzdGVtT2JqZWN0LCAmcHJvcGVydHlBZGRyZXNzLCAwLCAwLCBzaXplb2YoVUludDMy
KSwgJnByb3BlcnR5RGF0YSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9PSBu
b0Vycik7Ci19Ci0KIHZvaWQgUGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2lu
UHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsK
ICAgICBtX2NvbXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydCA9IFdURk1vdmUocGFyYW1ldGVycy5h
Y2NlbGVyYXRlZENvbXBvc2l0aW5nUG9ydCk7Ci0gICAgaWYgKHBhcmFtZXRlcnMucHJvY2Vzc1R5
cGUgPT0gUGx1Z2luUHJvY2Vzc1R5cGU6OlNuYXBzaG90KQotICAgICAgICBtdXRlQXVkaW8oKTsK
IAogICAgIFtOU1VSTENhY2hlIHNldFNoYXJlZFVSTENhY2hlOmFkb3B0TlMoW1tOU1VSTENhY2hl
IGFsbG9jXQogICAgICAgICBpbml0V2l0aE1lbW9yeUNhcGFjaXR5OnBsdWdpbk1lbW9yeUNhY2hl
U2l6ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggZGZmMTQz
MzI4MGFhMmUxYTkwMTVhYTM3MjJjNGYxOGY5MDdjYjYwYy4uNTBlMmExN2I5MjQzMjQyMjcyYjQ2
ODhhNzU5NjBhMTU0ZGMzNzYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CkBAIC0yNTEsNyArMjUxLDYgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2Zvcndh
cmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6TWVkaWFSZWNvcmRlcklkZW50aWZpZXIn
LAogICAgICAgICAnV2ViS2l0OjpQREZQbHVnaW5JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktp
dDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXInLAotICAgICAgICAnV2ViS2l0OjpQ
bHVnaW5Qcm9jZXNzVHlwZScsCiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlQXVkaW9TZXNzaW9uSWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZUNETUlkZW50aWZpZXInLApAQCAtNjgxLDcg
KzY4MCw2IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpQ
YWdlU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKICAgICAgICAgJ1dlYktpdDo6UGF5bWVu
dFNldHVwQ29uZmlndXJhdGlvbic6IFsnIlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25XZWJLaXQu
aCInXSwKICAgICAgICAgJ1dlYktpdDo6UGF5bWVudFNldHVwRmVhdHVyZXMnOiBbJyJBcHBsZVBh
eVBheW1lbnRTZXR1cEZlYXR1cmVzV2ViS2l0LmgiJ10sCi0gICAgICAgICdXZWJLaXQ6OlBsdWdp
blByb2Nlc3NUeXBlJzogWyciUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMuaCInXSwKICAgICAgICAg
J1dlYktpdDo6UmVzcGVjdFNlbGVjdGlvbkFuY2hvcic6IFsnIkdlc3R1cmVUeXBlcy5oIiddLAog
ICAgICAgICAnV2ViS2l0OjpTZWxlY3Rpb25GbGFncyc6IFsnIkdlc3R1cmVUeXBlcy5oIiddLAog
ICAgICAgICAnV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCc6IFsnIkdlc3R1cmVUeXBlcy5oIiddLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQXR0
cmlidXRlcy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQXR0
cmlidXRlcy5oCmluZGV4IDIxYzk1MmE2NjNiOWM2NDZiMzAzMTY5Y2I2ZjhiZGQ3ODhhMjQwNmUu
LjQxODdhYWZjMzczNDRhNjI4NzdiYTExYWRmOWQ4ZGEzNWYyMDc5ZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLmgK
QEAgLTMwLDExICszMCw2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1lbnVtIGNsYXNzIFBs
dWdpblByb2Nlc3NUeXBlIDogYm9vbCB7Ci0gICAgTm9ybWFsLAotICAgIFNuYXBzaG90LAotfTsK
LQogZW51bSBjbGFzcyBQbHVnaW5Qcm9jZXNzU2FuZGJveFBvbGljeSA6IGJvb2wgewogICAgIE5v
cm1hbCwKICAgICBVbnNhbmRib3hlZCwKQEAgLTQyLDcgKzM3LDYgQEAgZW51bSBjbGFzcyBQbHVn
aW5Qcm9jZXNzU2FuZGJveFBvbGljeSA6IGJvb2wgewogCiBzdHJ1Y3QgUGx1Z2luUHJvY2Vzc0F0
dHJpYnV0ZXMgewogICAgIFBsdWdpbk1vZHVsZUluZm8gbW9kdWxlSW5mbzsKLSAgICBQbHVnaW5Q
cm9jZXNzVHlwZSBwcm9jZXNzVHlwZTsKICAgICBQbHVnaW5Qcm9jZXNzU2FuZGJveFBvbGljeSBz
YW5kYm94UG9saWN5OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXgg
MzgxNjVkZTRhMTBlZmE2YjE1OTFlNzMwZGQyMTRmYjViMGYzZTZjZC4uMWQzNmZlOTNhZDRiNzFh
MDIxNzg5OTk2OTI2ZjE1ZmQyNWE1YzdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCkBAIC00MSw3ICs0MSw2IEBAIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OlBs
dWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMoKQogCiB2b2lkIFBsdWdpblByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0g
ICAgZW5jb2RlciA8PCBwcm9jZXNzVHlwZTsKICAgICBlbmNvZGVyIDw8IHN1cHBvcnRzQXN5bmNo
cm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb247CiAgICAgZW5jb2RlciA8PCBtaW5pbXVtTGlmZXRp
bWU7CiAgICAgZW5jb2RlciA8PCB0ZXJtaW5hdGlvblRpbWVvdXQ7CkBAIC01Myw4ICs1Miw2IEBA
IHZvaWQgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIAogYm9vbCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJiByZXN1bHQpCiB7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucHJvY2Vz
c1R5cGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5taW5pbXVtTGlm
ZXRpbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5z
L1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCAyMTU5MTU4OGU2ZmVjZWMy
YzUyMTgwY2UzZjQ1YmUxZTNiZmFhYmQxLi5iZjg0MmYwYTU0Yjk5YzU0NTg1ZmRiMmU3NmZjZWQ2
OWE5ZjAyNjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNDcsNyArNDcsNiBA
QCBzdHJ1Y3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgdm9pZCBlbmNv
ZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZShJUEM6OkRlY29kZXImLCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
Jik7CiAKLSAgICBQbHVnaW5Qcm9jZXNzVHlwZSBwcm9jZXNzVHlwZTsKICAgICBib29sIHN1cHBv
cnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb247CiAKICAgICBTZWNvbmRzIG1pbmlt
dW1MaWZldGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggMWRhMDA2ZmViNWYzMjQ2Yzc5NzU2MzNhNzUxYzBi
YzU5YTFjYWM4ZC4uYzVlZjQ0OWJlYmFlZjE1NTFlYzU1NDdmZTNjM2IwMmExYTkzY2MzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAKQEAgLTExMiw3ICsxMTIsNiBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8
PCBub3RpZmljYXRpb25QZXJtaXNzaW9uczsKICNlbmRpZgogCi0gICAgZW5jb2RlciA8PCBwbHVn
SW5BdXRvU3RhcnRPcmlnaW5zOwogICAgIGVuY29kZXIgPDwgbWVtb3J5Q2FjaGVEaXNhYmxlZDsK
ICAgICBlbmNvZGVyIDw8IGF0dHJTdHlsZUVuYWJsZWQ7CiAKQEAgLTEyMiwxMCArMTIxLDYgQEAg
dm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgaGFzUmljaENvbnRlbnRTZXJ2aWNlczsKICNl
bmRpZgogCi0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgZW5jb2RlciA8PCBw
bHVnaW5Mb2FkQ2xpZW50UG9saWNpZXM7Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIG5ldHdvcmtBVFNDb250ZXh0LmdldCgpKTsKICNlbmRp
ZgpAQCAtMzUxLDggKzM0Niw2IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICNlbmRpZgogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
LnBsdWdJbkF1dG9TdGFydE9yaWdpbnMpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm1lbW9yeUNhY2hlRGlzYWJsZWQpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmF0dHJT
dHlsZUVuYWJsZWQpKQpAQCAtMzY3LDExICszNjAsNiBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVh
dAogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5wbHVnaW5Mb2Fk
Q2xpZW50UG9saWNpZXMpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLQogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgcGFyYW1ldGVycy5u
ZXR3b3JrQVRTQ29udGV4dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA4OGIz
ZDZjMTM2ZGQzOGM1ZmJkN2JhM2YzNWNhNDgwYzM1NThhYTg2Li5mYzg3YTM3YTg3NDQzZDEwZmEz
ZmNhMmIwMTUxNWFmNzU0YWNmZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0xNTksOCArMTU5LDYgQEAgc3RydWN0
IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIEhhc2hNYXA8U3RyaW5nLCBib29s
PiBub3RpZmljYXRpb25QZXJtaXNzaW9uczsKICNlbmRpZgogCi0gICAgVmVjdG9yPFN0cmluZz4g
cGx1Z0luQXV0b1N0YXJ0T3JpZ2luczsKLQogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQogICAgIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIFdl
YkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+Pj4gcGx1Z2luTG9hZENsaWVudFBvbGljaWVz
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0
YVN0b3JlUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0RhdGFT
dG9yZVBhcmFtZXRlcnMuaAppbmRleCBlNjI2MzQyNDRlODFhOWVjNWU3NjdjYjcyYWYwNzFlZGUz
NWRmOTUzLi45ZWExNWU5OTliY2VkZmY4YTNlYzEyZjIzNjhjODNhYTA3YWFkYzI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJz
LmgKQEAgLTQ1LDcgKzQ1LDYgQEAgc3RydWN0IFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJz
IHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOwogICAgIFN0cmluZyBqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVj
dG9yeTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgamF2YVNjcmlwdENvbmZpZ3VyYXRp
b25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgSGFzaE1hcDx1bnNpZ25lZCwgV2FsbFRp
bWU+IHBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlczsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQogICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUg
dGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB7IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGU6OkFsbCB9OwogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uOwpAQCAtNzEsNyArNzAsNiBAQCB2b2lkIFdl
YlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKICAgICBlbmNvZGVyIDw8IG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZTsKICAgICBlbmNvZGVyIDw8IGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5OwogICAg
IGVuY29kZXIgPDwgamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGU7Ci0gICAgZW5jb2RlciA8PCBwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXM7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBlbmNvZGVyIDw8IHRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGU7CiAgICAgZW5jb2RlciA8PCBkb21haW5zV2l0aFVzZXJJbnRlcmFj
dGlvbjsKQEAgLTEzNiwxMSArMTM0LDYgQEAgT3B0aW9uYWw8V2ViUHJvY2Vzc0RhdGFTdG9yZVBh
cmFtZXRlcnM+IFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUoRGUKICAgICBp
ZiAoIWphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICAKLSAgICBPcHRpb25hbDxIYXNoTWFw
PHVuc2lnbmVkLCBXYWxsVGltZT4+IHBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlczsKLSAgICBk
ZWNvZGVyID4+IHBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlczsKLSAgICBpZiAoIXBsdWdJbkF1
dG9TdGFydE9yaWdpbkhhc2hlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZT4gdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZTsKICAgICBkZWNvZGVyID4+IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CkBAIC0xNzAs
NyArMTYzLDYgQEAgT3B0aW9uYWw8V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM+IFdlYlBy
b2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUoRGUKICAgICAgICAgV1RGTW92ZSgqbWVk
aWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKSwKICAgICAgICAgV1RGTW92ZShq
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSksCiAgICAgICAgIFdURk1vdmUoKmphdmFT
Y3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKSwKLSAgICAgICAgV1RG
TW92ZSgqcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKSwKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQogICAgICAgICAqdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwK
ICAgICAgICAgV1RGTW92ZSgqZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24pLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQK
aW5kZXggZDNhZWVmOWI3M2IxNzhiMWNjOTVkMjZiMzliZmYyOGE4N2Y1OWRjNS4uMmZlNTJmYjVh
Yzc3NzhmZGFmZjE4NzA4MDM0NWM3ZTE4OTcwZDJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC00NTQsNyAr
NDU0LDYgQEAgVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcAogVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAogVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCiAKLVVJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNwcAogVUlQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luSW5mb1N0b3JlLmNwcAogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01h
bmFnZXIuY3BwCiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCkBAIC02
NTYsNyArNjU1LDYgQEAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlci5jcHAKIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0
aW9uQ2xpZW50LmNwcAogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQZXJmb3JtYW5jZUxv
Z2dpbmdDbGllbnQuY3BwCiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAKLVdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmNw
cAogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5jcHAKIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCA3Y2Y1NzcyNGYyYWI5MzM5MDA4
ZDFiMmUxZGJkMmU3YTM0ZGYxOTc5Li4zZDFiNDBiYjVhYTA5YThkMzZlY2U2YzI1NzY1NWMxN2Y0
ZTQ1ZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAK
QEAgLTUxMywzMiArNTEzLDYgQEAgdm9pZCBXS0NvbnRleHRTZXRKYXZhU2NyaXB0R2FyYmFnZUNv
bGxlY3RvclRpbWVyRW5hYmxlZChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwKICAgICBXZWJLaXQ6
OnRvSW1wbChjb250ZXh0UmVmKS0+c2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVu
YWJsZWQoZW5hYmxlKTsKIH0KIAotV0tEaWN0aW9uYXJ5UmVmIFdLQ29udGV4dENvcHlQbHVnSW5B
dXRvU3RhcnRPcmlnaW5IYXNoZXMoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCi17Ci0gICAgcmV0
dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5wbHVnSW5BdXRv
U3RhcnRPcmlnaW5IYXNoZXMoKS5sZWFrUmVmKCkpOwotfQotCi12b2lkIFdLQ29udGV4dFNldFBs
dWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tEaWN0
aW9uYXJ5UmVmIGRpY3Rpb25hcnlSZWYpCi17Ci0gICAgaWYgKCFkaWN0aW9uYXJ5UmVmKQotICAg
ICAgICByZXR1cm47Ci0gICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldFBsdWdJbkF1
dG9TdGFydE9yaWdpbkhhc2hlcygqV2ViS2l0Ojp0b0ltcGwoZGljdGlvbmFyeVJlZikpOwotfQot
Ci12b2lkIFdLQ29udGV4dFNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnNGaWx0ZXJpbmdPdXRFbnRy
aWVzQWRkZWRBZnRlclRpbWUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLRGljdGlvbmFyeVJl
ZiBkaWN0aW9uYXJ5UmVmLCBkb3VibGUgdGltZSkKLXsKLSAgICBpZiAoIWRpY3Rpb25hcnlSZWYp
Ci0gICAgICAgIHJldHVybjsKLSAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+c2V0UGx1
Z0luQXV0b1N0YXJ0T3JpZ2luc0ZpbHRlcmluZ091dEVudHJpZXNBZGRlZEFmdGVyVGltZSgqV2Vi
S2l0Ojp0b0ltcGwoZGljdGlvbmFyeVJlZiksIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh0aW1l
KSk7Ci19Ci0KLXZvaWQgV0tDb250ZXh0U2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2lucyhXS0NvbnRl
eHRSZWYgY29udGV4dFJlZiwgV0tBcnJheVJlZiBhcnJheVJlZikKLXsKLSAgICBpZiAoIWFycmF5
UmVmKQotICAgICAgICByZXR1cm47Ci0gICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNl
dFBsdWdJbkF1dG9TdGFydE9yaWdpbnMoKldlYktpdDo6dG9JbXBsKGFycmF5UmVmKSk7Ci19Ci0K
IHZvaWQgV0tDb250ZXh0U2V0SW52YWxpZE1lc3NhZ2VGdW5jdGlvbihXS0NvbnRleHRJbnZhbGlk
TWVzc2FnZUZ1bmN0aW9uIGludmFsaWRNZXNzYWdlRnVuY3Rpb24pCiB7CiAgICAgV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6c2V0SW52YWxpZE1lc3NhZ2VDYWxsYmFjayhpbnZhbGlkTWVzc2FnZUZ1
bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDQz
NjljZGQ4MjViNTE1N2ZiMDEwYzNmODFhZTc4ZTY2MGRhYTc0ZmMuLmNhZGQ5NTVkMTViNGVkZTVh
NGRmZmNmNDMxZmY1ODE4NzY5YWYyZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmNwcApAQCAtMjI5OCwyNCArMjI5OCw2IEBAIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmln
YXRpb25DbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZU5hdmlnYXRpb25DbGll
CiAgICAgICAgICAgICBpZiAoIWFwaU5vdGlmaWNhdGlvbnMuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgICAgIG1fY2xpZW50LmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbih0b0FQSSgmcGFnZSks
IHRvVVJMUmVmKHVybC5zdHJpbmcoKS5pbXBsKCkpLCB0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUo
V1RGTW92ZShhcGlMaXN0SWRlbnRpZmllcnMpKS5wdHIoKSksIHRvQVBJKEFQSTo6QXJyYXk6OmNy
ZWF0ZShXVEZNb3ZlKGFwaU5vdGlmaWNhdGlvbnMpKS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CiAgICAgICAgIH0KLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAg
ICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JQbHVnaW5Mb2FkKFdlYlBhZ2VQcm94eSYgcGFnZSwg
UGx1Z2luTW9kdWxlTG9hZFBvbGljeSBjdXJyZW50UGx1Z2luTG9hZFBvbGljeSwgQVBJOjpEaWN0
aW9uYXJ5JiBwbHVnaW5JbmZvcm1hdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQbHVnaW5N
b2R1bGVMb2FkUG9saWN5LCBjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3Zl
cnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgV0tTdHJpbmdSZWYgdW5hdmFpbGFiaWxpdHlE
ZXNjcmlwdGlvbk91dCA9IDA7Ci0gICAgICAgICAgICBQbHVnaW5Nb2R1bGVMb2FkUG9saWN5IGxv
YWRQb2xpY3kgPSBjdXJyZW50UGx1Z2luTG9hZFBvbGljeTsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgaWYgKG1fY2xpZW50LmRlY2lkZVBvbGljeUZvclBsdWdpbkxvYWQpCi0gICAgICAgICAg
ICAgICAgbG9hZFBvbGljeSA9IHRvUGx1Z2luTW9kdWxlTG9hZFBvbGljeShtX2NsaWVudC5kZWNp
ZGVQb2xpY3lGb3JQbHVnaW5Mb2FkKHRvQVBJKCZwYWdlKSwgdG9XS1BsdWdpbkxvYWRQb2xpY3ko
Y3VycmVudFBsdWdpbkxvYWRQb2xpY3kpLCB0b0FQSSgmcGx1Z2luSW5mb3JtYXRpb24pLCAmdW5h
dmFpbGFiaWxpdHlEZXNjcmlwdGlvbk91dCwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIFN0cmluZyB1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9u
OwotICAgICAgICAgICAgaWYgKHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb25PdXQpIHsKLSAgICAg
ICAgICAgICAgICBSZWZQdHI8QVBJOjpTdHJpbmc+IHdlYlVuYXZhaWxhYmlsaXR5RGVzY3JpcHRp
b24gPSBhZG9wdFJlZih0b0ltcGwodW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbk91dCkpOwotICAg
ICAgICAgICAgICAgIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24gPSB3ZWJVbmF2YWlsYWJpbGl0
eURlc2NyaXB0aW9uLT5zdHJpbmcoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobG9hZFBvbGljeSwgdW5hdmFpbGFiaWxpdHlEZXNj
cmlwdGlvbik7Ci0gICAgICAgIH0KLSNlbmRpZgogICAgIH07CiAKICAgICBXZWJQYWdlUHJveHkq
IHdlYlBhZ2VQcm94eSA9IHRvSW1wbChwYWdlUmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKaW5kZXggOWUyM2YzMzNiOWQ5MzMyYzlhNWNk
NjQ1Njg1NzViMjExMjE3ODgyNi4uYTEyNTAzNjZjODZjMzRkMDM1NWE5NjczYzA4MDViZmZmNjBh
NjdiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJl
bmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
cy5jcHAKQEAgLTEwNjYsMTQgKzEwNjYsMTMgQEAgYm9vbCBXS1ByZWZlcmVuY2VzR2V0U2Nyb2xs
aW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmUKICAg
ICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dn
aW5nRW5hYmxlZCgpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXRQbHVnSW5TbmFwc2hvdHRp
bmdFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCkK
K3ZvaWQgV0tQcmVmZXJlbmNlc1NldFBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQoV0tQcmVmZXJl
bmNlc1JlZiwgYm9vbCkKIHsKLSAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRQbHVnSW5T
bmFwc2hvdHRpbmdFbmFibGVkKGVuYWJsZWQpOwogfQogCiBib29sIFdLUHJlZmVyZW5jZXNHZXRQ
bHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYp
CiB7Ci0gICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnBsdWdJblNuYXBzaG90dGlu
Z0VuYWJsZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgV0tQcmVmZXJlbmNlc1Nl
dFBsdWdpblNhbmRib3hQcm9maWxlc0VuYWJsZWRGb3JBbGxQbHVnaW5zKFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCkKQEAgLTEwODksMzQgKzEwODgsMzEgQEAg
Ym9vbCBXS1ByZWZlcmVuY2VzR2V0UGx1Z2luU2FuZGJveFByb2ZpbGVzRW5hYmxlZEZvckFsbFBs
dWdpbnMoV0tQcmVmZXJlbmNlc1JlZgogICAgIHJldHVybiB0b0ltcGwocHJlZmVyZW5jZXNSZWYp
LT5leHBlcmltZW50YWxQbHVnSW5TYW5kYm94UHJvZmlsZXNFbmFibGVkKCk7CiB9CiAKLXZvaWQg
V0tQcmVmZXJlbmNlc1NldFNuYXBzaG90QWxsUGx1Z0lucyhXS1ByZWZlcmVuY2VzUmVmIHByZWZl
cmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCit2b2lkIFdLUHJlZmVyZW5jZXNTZXRTbmFwc2hvdEFs
bFBsdWdJbnMoV0tQcmVmZXJlbmNlc1JlZiwgYm9vbCkKIHsKLSAgICB0b0ltcGwocHJlZmVyZW5j
ZXNSZWYpLT5zZXRTbmFwc2hvdEFsbFBsdWdJbnMoZW5hYmxlZCk7CiB9CiAKLWJvb2wgV0tQcmVm
ZXJlbmNlc0dldFNuYXBzaG90QWxsUGx1Z0lucyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2Vz
UmVmKQorYm9vbCBXS1ByZWZlcmVuY2VzR2V0U25hcHNob3RBbGxQbHVnSW5zKFdLUHJlZmVyZW5j
ZXNSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNuYXBzaG90QWxs
UGx1Z0lucygpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0
QXV0b3N0YXJ0T3JpZ2luUGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVm
IHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCit2b2lkIFdLUHJlZmVyZW5jZXNTZXRBdXRv
c3RhcnRPcmlnaW5QbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYsIGJv
b2wpCiB7Ci0gICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0QXV0b3N0YXJ0T3JpZ2luUGx1
Z0luU25hcHNob3R0aW5nRW5hYmxlZChlbmFibGVkKTsKIH0KIAogYm9vbCBXS1ByZWZlcmVuY2Vz
R2V0QXV0b3N0YXJ0T3JpZ2luUGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZChXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzUmVmKQogewotICAgIHJldHVybiB0b0ltcGwocHJlZmVyZW5jZXNSZWYp
LT5hdXRvc3RhcnRPcmlnaW5QbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKCk7CisgICAgcmV0dXJu
IGZhbHNlOwogfQogCiB2b2lkIFdLUHJlZmVyZW5jZXNTZXRQcmltYXJ5UGx1Z0luU25hcHNob3RE
ZXRlY3Rpb25FbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5h
YmxlZCkKIHsKLSAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRQcmltYXJ5UGx1Z0luU25h
cHNob3REZXRlY3Rpb25FbmFibGVkKGVuYWJsZWQpOwogfQogCiBib29sIFdLUHJlZmVyZW5jZXNH
ZXRQcmltYXJ5UGx1Z0luU25hcHNob3REZXRlY3Rpb25FbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnBy
aW1hcnlQbHVnSW5TbmFwc2hvdERldGVjdGlvbkVuYWJsZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7
CiB9CiAKIHZvaWQgV0tQcmVmZXJlbmNlc1NldFBERlBsdWdpbkVuYWJsZWQoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQppbmRleCBk
M2EwNzE3YTZiZjJkYzk3NGM2ZTM5MDljYjEzODBmZjBmNmVlOTYyLi5hZTJhMTg4MjQ2NDA1MGVm
MWUxNzk5Mzc1NGIyMmIzNDMxMDgzNjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQpAQCAtNDIsMjcgKzQy
LDE3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1dlYkdMQmxvY2tsaXN0Lmg+CiAjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CiAKLWJvb2wgV0tDb250ZXh0SXNQbHVnSW5VcGRhdGVBdmFpbGFibGUoV0tD
b250ZXh0UmVmIGNvbnRleHRSZWYsIFdLU3RyaW5nUmVmIHBsdWdJbkJ1bmRsZUlkZW50aWZpZXJS
ZWYpCitib29sIFdLQ29udGV4dElzUGx1Z0luVXBkYXRlQXZhaWxhYmxlKFdLQ29udGV4dFJlZiwg
V0tTdHJpbmdSZWYpCiB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gZmFs
c2U7Ci0jZWxzZQotICAgIHJldHVybiBXZWJDb3JlOjpQbHVnaW5CbG9ja2xpc3Q6OmlzUGx1Z2lu
VXBkYXRlQXZhaWxhYmxlKChfX2JyaWRnZSBOU1N0cmluZyAqKWFkb3B0Q0YoV0tTdHJpbmdDb3B5
Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGx1Z0luQnVuZGxlSWRlbnRpZmllclJlZikp
LmdldCgpKTsKLSNlbmRpZgogfQogCi12b2lkIFdLQ29udGV4dFNldFBsdWdpbkxvYWRDbGllbnRQ
b2xpY3koV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGx1Z2luTG9hZENsaWVudFBvbGljeSBw
b2xpY3ksIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGJ1bmRsZUlkZW50aWZpZXIsIFdL
U3RyaW5nUmVmIHZlcnNpb25TdHJpbmcpCit2b2lkIFdLQ29udGV4dFNldFBsdWdpbkxvYWRDbGll
bnRQb2xpY3koV0tDb250ZXh0UmVmLCBXS1BsdWdpbkxvYWRDbGllbnRQb2xpY3ksIFdLU3RyaW5n
UmVmLCBXS1N0cmluZ1JlZiwgV0tTdHJpbmdSZWYpCiB7Ci0jaWYgRU5BQkxFKE5FVFNDQVBFX1BM
VUdJTl9BUEkpCi0gICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldFBsdWdpbkxvYWRD
bGllbnRQb2xpY3koV2ViS2l0Ojp0b1BsdWdpbkxvYWRDbGllbnRQb2xpY3kocG9saWN5KSwgV2Vi
S2l0Ojp0b1dURlN0cmluZyhob3N0KSwgV2ViS2l0Ojp0b1dURlN0cmluZyhidW5kbGVJZGVudGlm
aWVyKSwgV2ViS2l0Ojp0b1dURlN0cmluZyh2ZXJzaW9uU3RyaW5nKSk7Ci0jZW5kaWYKIH0KIAot
dm9pZCBXS0NvbnRleHRDbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKFdLQ29udGV4dFJlZiBjb250
ZXh0UmVmKQordm9pZCBXS0NvbnRleHRDbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKFdLQ29udGV4
dFJlZikKIHsKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBXZWJLaXQ6OnRv
SW1wbChjb250ZXh0UmVmKS0+Y2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpOwotI2VuZGlmCiB9
CiAKIFdLRGljdGlvbmFyeVJlZiBXS0NvbnRleHRDb3B5UGx1Z0luSW5mb0ZvckJ1bmRsZUlkZW50
aWZpZXIoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLU3RyaW5nUmVmIHBsdWdJbkJ1bmRsZUlk
ZW50aWZpZXJSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1ByZWZlcmVuY2VzLm1tCmluZGV4IDFlZWEyMDU0ZDA2ZGU3OGViYmYyNjMyZmI4OTkyYzM5OGQz
ZmEwYjcuLjFlZDhkMTNjYjcyNGQ1Zjc0OThlMjM0OGQxZWY2ZjFlODVlZjIzYTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCkBA
IC0xMTA0LDEyICsxMTA0LDExIEBAIC0gKEJPT0wpX2Nvb2tpZUVuYWJsZWQKIAogLSAodm9pZClf
c2V0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZDooQk9PTCllbmFibGVkCiB7Ci0gICAgX3ByZWZl
cmVuY2VzLT5zZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKGVuYWJsZWQpOwogfQogCiAtIChC
T09MKV9wbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkCiB7Ci0gICAgcmV0dXJuIF9wcmVmZXJlbmNl
cy0+cGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCgpOworICAgIHJldHVybiBOTzsKIH0KIAogLSAo
dm9pZClfc2V0Vmlld0dlc3R1cmVEZWJ1Z2dpbmdFbmFibGVkOihCT09MKWVuYWJsZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5k
ZXggMDM1OTFlOGE4ZmE5MDQyMTIwOWI5MzkwZDRmM2Q4ZTA3NjgwZGY2MS4uNGYzNmUyMzI2NDM3
MTAyM2QzOGYyODM4MTA3NTFiY2JhOTk4NTlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTI0OSw5NiArMjQ5LDE2IEBA
IC0gKHZvaWQpX3NldE9iamVjdHNGb3JCdW5kbGVQYXJhbWV0ZXJzV2l0aERpY3Rpb25hcnk6KE5T
RGljdGlvbmFyeSAqKWRpY3Rpb25hcnkKIAogI2lmICFUQVJHRVRfT1NfSVBIT05FCiAKLSNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLQotc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBIYXNo
TWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xp
Y3k+Pj4gdG9QbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXNIYXNoTWFwKE5TRGljdGlvbmFyeSogZGlj
dGlvbmFyeSkKLXsKLSAgICBfX2Jsb2NrIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywg
SGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+Pj4gcGx1Z2lu
TG9hZENsaWVudFBvbGljaWVzOwotICAgIFtkaWN0aW9uYXJ5IGVudW1lcmF0ZUtleXNBbmRPYmpl
Y3RzVXNpbmdCbG9jazpeKGlkIG5zSG9zdCwgaWQgbnNQb2xpY2llc0Zvckhvc3QsIEJPT0wgKnN0
b3ApIHsKLSAgICAgICAgaWYgKCFbbnNIb3N0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNz
XV0pIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBsdWdpbnMsICJfcmVzZXRQbHVn
aW5Mb2FkQ2xpZW50UG9saWNpZXMgd2FzIGNhbGxlZCB3aXRoIGRpY3Rpb25hcnkgaW4gd3Jvbmcg
Zm9ybWF0Iik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFb
bnNQb2xpY2llc0Zvckhvc3QgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pIHsK
LSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBsdWdpbnMsICJfcmVzZXRQbHVnaW5Mb2Fk
Q2xpZW50UG9saWNpZXMgd2FzIGNhbGxlZCB3aXRoIGRpY3Rpb25hcnkgaW4gd3JvbmcgZm9ybWF0
Iik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBTdHJpbmcgaG9z
dCA9IChOU1N0cmluZyAqKW5zSG9zdDsKLSAgICAgICAgX19ibG9jayBIYXNoTWFwPFN0cmluZywg
SGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+PiBwb2xpY2ll
c0Zvckhvc3Q7Ci0gICAgICAgIFtuc1BvbGljaWVzRm9ySG9zdCBlbnVtZXJhdGVLZXlzQW5kT2Jq
ZWN0c1VzaW5nQmxvY2s6XihpZCBuc0lkZW50aWZpZXIsIGlkIG5zVmVyc2lvbnNUb1BvbGljaWVz
LCBCT09MICpzdG9wKSB7Ci0gICAgICAgICAgICBpZiAoIVtuc0lkZW50aWZpZXIgaXNLaW5kT2ZD
bGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKFBsdWdpbnMsICJfcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMgd2FzIGNhbGxlZCB3
aXRoIGRpY3Rpb25hcnkgaW4gd3JvbmcgZm9ybWF0Iik7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFbbnNWZXJzaW9uc1RvUG9saWNpZXMg
aXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pIHsKLSAgICAgICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihQbHVnaW5zLCAiX3Jlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVz
IHdhcyBjYWxsZWQgd2l0aCBkaWN0aW9uYXJ5IGluIHdyb25nIGZvcm1hdCIpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgU3RyaW5nIGJ1bmRs
ZUlkZW50aWZpZXIgPSAoTlNTdHJpbmcgKiluc0lkZW50aWZpZXI7Ci0gICAgICAgICAgICBfX2Js
b2NrIEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5PiB2ZXJz
aW9uc1RvUG9saWNpZXM7Ci0gICAgICAgICAgICBbbnNWZXJzaW9uc1RvUG9saWNpZXMgZW51bWVy
YXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oaWQgbnNWZXJzaW9uLCBpZCBuc1BvbGljeSwg
Qk9PTCAqc3RvcCkgewotICAgICAgICAgICAgICAgIGlmICghW25zVmVyc2lvbiBpc0tpbmRPZkNs
YXNzOltOU1N0cmluZyBjbGFzc11dKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFBsdWdpbnMsICJfcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMgd2FzIGNhbGxl
ZCB3aXRoIGRpY3Rpb25hcnkgaW4gd3JvbmcgZm9ybWF0Iik7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCFbbnNQb2xp
Y3kgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkgewotICAgICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihQbHVnaW5zLCAiX3Jlc2V0UGx1Z2luTG9hZENsaWVudFBvbGlj
aWVzIHdhcyBjYWxsZWQgd2l0aCBkaWN0aW9uYXJ5IGluIHdyb25nIGZvcm1hdCIpOwotICAgICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHBvbGljeSA9ICgoTlNOdW1iZXIgKiluc1BvbGljeSkudW5zaWduZWRJbnRWYWx1
ZTsKLSAgICAgICAgICAgICAgICBpZiAoIVdURjo6aXNWYWxpZEVudW08V2ViQ29yZTo6UGx1Z2lu
TG9hZENsaWVudFBvbGljeT4ocG9saWN5KSkgewotICAgICAgICAgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihQbHVnaW5zLCAiX3Jlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzIHdhcyBj
YWxsZWQgd2l0aCBkaWN0aW9uYXJ5IGluIHdyb25nIGZvcm1hdCIpOwotICAgICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFN0cmluZyB2
ZXJzaW9uID0gKE5TU3RyaW5nICopbnNWZXJzaW9uOwotICAgICAgICAgICAgICAgIHZlcnNpb25z
VG9Qb2xpY2llcy5hZGQodmVyc2lvbiwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGx1Z2luTG9hZENs
aWVudFBvbGljeT4ocG9saWN5KSk7Ci0gICAgICAgICAgICB9XTsKLSAgICAgICAgICAgIGlmICgh
dmVyc2lvbnNUb1BvbGljaWVzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBwb2xpY2llc0Zv
ckhvc3QuYWRkKGJ1bmRsZUlkZW50aWZpZXIsIFdURk1vdmUodmVyc2lvbnNUb1BvbGljaWVzKSk7
Ci0gICAgICAgIH1dOwotICAgICAgICBpZiAoIXBvbGljaWVzRm9ySG9zdC5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICBwbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMuYWRkKGhvc3QsIFdURk1vdmUocG9s
aWNpZXNGb3JIb3N0KSk7Ci0gICAgfV07Ci0gICAgcmV0dXJuIHBsdWdpbkxvYWRDbGllbnRQb2xp
Y2llczsKLX0KLQotc3RhdGljIE5TRGljdGlvbmFyeSAqcG9saWNpZXNIYXNoTWFwVG9EaWN0aW9u
YXJ5KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcs
IFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+Pj4mIG1hcCkKLXsKLSAgICBhdXRvIHBv
bGljaWVzID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2Fw
YWNpdHk6bWFwLnNpemUoKV0pOwotICAgIGZvciAoYXV0byYgaG9zdFBhaXIgOiBtYXApIHsKLSAg
ICAgICAgTlNTdHJpbmcgKmhvc3QgPSBob3N0UGFpci5rZXk7Ci0gICAgICAgIHBvbGljaWVzLmdl
dCgpW2hvc3RdID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRo
Q2FwYWNpdHk6aG9zdFBhaXIudmFsdWUuc2l6ZSgpXSkuZ2V0KCk7Ci0gICAgICAgIGZvciAoYXV0
byYgYnVuZGxlSWRlbnRpZmllclBhaXIgOiBob3N0UGFpci52YWx1ZSkgewotICAgICAgICAgICAg
TlNTdHJpbmcgKmJ1bmRsZXJJZGVudGlmaWVyID0gYnVuZGxlSWRlbnRpZmllclBhaXIua2V5Owot
ICAgICAgICAgICAgcG9saWNpZXMuZ2V0KClbaG9zdF1bYnVuZGxlcklkZW50aWZpZXJdID0gYWRv
cHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6YnVuZGxl
SWRlbnRpZmllclBhaXIudmFsdWUuc2l6ZSgpXSkuZ2V0KCk7Ci0gICAgICAgICAgICBmb3IgKGF1
dG8mIHZlcnNpb25QYWlyIDogYnVuZGxlSWRlbnRpZmllclBhaXIudmFsdWUpIHsKLSAgICAgICAg
ICAgICAgICBOU1N0cmluZyAqdmVyc2lvbiA9IHZlcnNpb25QYWlyLmtleTsKLSAgICAgICAgICAg
ICAgICBhdXRvIHBvbGljeVZhbHVlID0gc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVf
dDxXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5Pj4odmVyc2lvblBhaXIudmFsdWUpOwot
ICAgICAgICAgICAgICAgIHBvbGljaWVzLmdldCgpW2hvc3RdW2J1bmRsZXJJZGVudGlmaWVyXVt2
ZXJzaW9uXSA9IGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhVbnNpZ25lZEludDpw
b2xpY3lWYWx1ZV0pLmdldCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAg
IHJldHVybiBwb2xpY2llcy5hdXRvcmVsZWFzZSgpOwotfQotCi0jZW5kaWYKLQogLSAodm9pZClf
cmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXM6KE5TRGljdGlvbmFyeSAqKXBvbGljaWVzCiB7
Ci0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgX3Byb2Nlc3NQb29sLT5yZXNl
dFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyh0b1BsdWdpbkxvYWRDbGllbnRQb2xpY2llc0hhc2hN
YXAocG9saWNpZXMpKTsKLSNlbmRpZgogfQogCiAtKE5TRGljdGlvbmFyeSAqKV9wbHVnaW5Mb2Fk
Q2xpZW50UG9saWNpZXMKIHsKLSAgICBhdXRvJiBtYXAgPSBfcHJvY2Vzc1Bvb2wtPnBsdWdpbkxv
YWRDbGllbnRQb2xpY2llcygpOwotICAgIHJldHVybiBwb2xpY2llc0hhc2hNYXBUb0RpY3Rpb25h
cnkobWFwKTsKKyAgICByZXR1cm4gQHsgfTsKIH0KLSNlbmRpZgogCisjZW5kaWYKIAogLSAoaWQg
PF9XS0Rvd25sb2FkRGVsZWdhdGU+KV9kb3dubG9hZERlbGVnYXRlCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCmluZGV4IDU3NGMzNDJmMzNk
Y2YwNmNjYWRhMTFmMGJkMmQwOTdlYzVhOTU3YTMuLjA0MmU3ODg1NDExZDQxNzdmY2U5YzY3NWVk
OGQ0OGYxMmJiM2Q0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5oCkBAIC0xMzQsOSArMTM0LDYgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgICAgIHZvaWQgd2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0
IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4m
JikgY29uc3QgZmluYWw7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJQ
YWdlUHJveHkmLCBjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Oldl
YkdMTG9hZFBvbGljeSk+JiYpIGNvbnN0IGZpbmFsOwotICAgICAgICBib29sIGRpZEZhaWxUb0lu
aXRpYWxpemVQbHVnSW4oV2ViUGFnZVByb3h5JiwgQVBJOjpEaWN0aW9uYXJ5JikgZmluYWw7Ci0g
ICAgICAgIGJvb2wgZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oV2ViUGFnZVByb3h5Jiwg
QVBJOjpEaWN0aW9uYXJ5JikgZmluYWw7Ci0gICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUGx1
Z2luTG9hZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6UGx1Z2luTW9kdWxlTG9hZFBv
bGljeSwgQVBJOjpEaWN0aW9uYXJ5JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OlBs
dWdpbk1vZHVsZUxvYWRQb2xpY3ksIGNvbnN0IFdURjo6U3RyaW5nJik+JiYpIGZpbmFsOwogICAg
ICAgICBib29sIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChXZWJQYWdlUHJveHkmLCBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtKiwgY29uc3QgVmVjdG9yPFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVt
Pj4mKSBmaW5hbDsKICNlbmRpZgogICAgICAgICBib29sIHdpbGxHb1RvQmFja0ZvcndhcmRMaXN0
SXRlbShXZWJQYWdlUHJveHkmLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwgYm9vbCBpbkJhY2tG
b3J3YXJkQ2FjaGUpIGZpbmFsOwpAQCAtMjU1LDkgKzI1Miw2IEBAIHByaXZhdGU6CiAgICAgICAg
IGJvb2wgd2ViVmlld1dlYkdMTG9hZFBvbGljeUZvclVSTCA6IDE7CiAgICAgICAgIGJvb2wgd2Vi
Vmlld1Jlc29sdmVXZWJHTExvYWRQb2xpY3lGb3JVUkwgOiAxOwogICAgICAgICBib29sIHdlYlZp
ZXdCYWNrRm9yd2FyZExpc3RJdGVtQWRkZWRSZW1vdmVkIDogMTsKLSAgICAgICAgYm9vbCB3ZWJW
aWV3RGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdJbldpdGhJbmZvIDogMTsKLSAgICAgICAgYm9vbCB3
ZWJWaWV3RGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb25XaXRoSW5mbyA6IDE7Ci0gICAgICAg
IGJvb2wgd2ViVmlld0RlY2lkZVBvbGljeUZvclBsdWdpbkxvYWRXaXRoQ3VycmVudFBvbGljeVBs
dWdpbkluZm9Db21wbGV0aW9uSGFuZGxlciA6IDE7CiAjZW5kaWYKICAgICAgICAgYm9vbCB3ZWJW
aWV3V2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtSW5CYWNrRm9yd2FyZENhY2hlIDogMTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRl
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmlu
ZGV4IGM0MTAyZmY1MmI5NWUzMjM0NTkwY2U5ZTAzMTc2NTI5NWU5NmJkYTcuLmU3Y2IwODNjNGZm
MmIzMzkwOTNkNzE5NDgzYjU5NGM4MDVmZDU0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTIwMywxMCArMjAzLDcgQEAgdm9p
ZCBOYXZpZ2F0aW9uU3RhdGU6OnNldE5hdmlnYXRpb25EZWxlZ2F0ZShpZCA8V0tOYXZpZ2F0aW9u
RGVsZWdhdGU+IGRlbGVnYXRlKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBtX25hdmlnYXRpb25E
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dlYkdMTG9hZFBvbGljeUZvclVSTCA9IFtkZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OndlYkdMTG9hZFBvbGljeUZvclVS
TDpkZWNpc2lvbkhhbmRsZXI6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndl
YlZpZXdSZXNvbHZlV2ViR0xMb2FkUG9saWN5Rm9yVVJMID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVzb2x2ZVdlYkdMTG9hZFBvbGljeUZvclVSTDpk
ZWNpc2lvbkhhbmRsZXI6KV07Ci0gICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZp
ZXdEaWRGYWlsVG9Jbml0aWFsaXplUGx1Z0luV2l0aEluZm8gPSBbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z0luV2l0
aEluZm86KV07Ci0gICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRCbG9j
a0luc2VjdXJlUGx1Z2luVmVyc2lvbldpdGhJbmZvID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb25XaXRo
SW5mbzopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0JhY2tGb3J3
YXJkTGlzdEl0ZW1BZGRlZFJlbW92ZWQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihfd2ViVmlldzpiYWNrRm9yd2FyZExpc3RJdGVtQWRkZWQ6cmVtb3ZlZDopXTsKLSAg
ICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RlY2lkZVBvbGljeUZvclBsdWdp
bkxvYWRXaXRoQ3VycmVudFBvbGljeVBsdWdpbkluZm9Db21wbGV0aW9uSGFuZGxlciA9IFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRlY2lkZVBvbGljeUZv
clBsdWdpbkxvYWRXaXRoQ3VycmVudFBvbGljeTpwbHVnaW5JbmZvOmNvbXBsZXRpb25IYW5kbGVy
OildOwogI2VuZGlmCiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdXaWxs
R29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1JbkJhY2tGb3J3YXJkQ2FjaGUgPSBbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp3aWxsR29Ub0JhY2tGb3J3YXJkTGlz
dEl0ZW06aW5QYWdlQ2FjaGU6KV07CiAjaWYgSEFWRShBUFBfU1NPKQpAQCAtMzI1LDg2ICszMjIs
NiBAQCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6On5OYXZpZ2F0aW9uQ2xpZW50
KCkKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLWJvb2wgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50OjpkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z0luKFdlYlBhZ2VQcm94eSYsIEFQSTo6
RGljdGlvbmFyeSYgaW5mbykKLXsKLSAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdh
dGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdJbldpdGhJ
bmZvKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgYXV0byBuYXZpZ2F0aW9uRGVs
ZWdhdGUgPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKLSAg
ICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAot
ICAgIFsoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRl
IF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRGYWlsVG9Jbml0aWFsaXpl
UGx1Z0luV2l0aEluZm86d3JhcHBlcihpbmZvKV07Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJv
b2wgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRCbG9ja0luc2VjdXJlUGx1
Z2luVmVyc2lvbihXZWJQYWdlUHJveHkmLCBBUEk6OkRpY3Rpb25hcnkmIGluZm8pCi17Ci0gICAg
aWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmll
d0RpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uV2l0aEluZm8pCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUu
bV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7Ci0gICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFsoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRl
UHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1f
d2ViVmlldyBkaWRCbG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbldpdGhJbmZvOndyYXBwZXIoaW5m
byldOwotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgV2ViS2l0OjpQbHVnaW5Nb2R1bGVM
b2FkUG9saWN5IHBsdWdpbk1vZHVsZUxvYWRQb2xpY3koX1dLUGx1Z2luTW9kdWxlTG9hZFBvbGlj
eSBwb2xpY3kpCi17Ci0gICAgc3dpdGNoIChwb2xpY3kpIHsKLSAgICBjYXNlIF9XS1BsdWdpbk1v
ZHVsZUxvYWRQb2xpY3lMb2FkTm9ybWFsbHk6Ci0gICAgICAgIHJldHVybiBXZWJLaXQ6OlBsdWdp
bk1vZHVsZUxvYWROb3JtYWxseTsKLSAgICBjYXNlIF9XS1BsdWdpbk1vZHVsZUxvYWRQb2xpY3lM
b2FkVW5zYW5kYm94ZWQ6Ci0gICAgICAgIHJldHVybiBXZWJLaXQ6OlBsdWdpbk1vZHVsZUxvYWRV
bnNhbmRib3hlZDsKLSAgICBjYXNlIF9XS1BsdWdpbk1vZHVsZUxvYWRQb2xpY3lCbG9ja2VkRm9y
U2VjdXJpdHk6Ci0gICAgICAgIHJldHVybiBXZWJLaXQ6OlBsdWdpbk1vZHVsZUJsb2NrZWRGb3JT
ZWN1cml0eTsKLSAgICBjYXNlIF9XS1BsdWdpbk1vZHVsZUxvYWRQb2xpY3lCbG9ja2VkRm9yQ29t
cGF0aWJpbGl0eToKLSAgICAgICAgcmV0dXJuIFdlYktpdDo6UGx1Z2luTW9kdWxlQmxvY2tlZEZv
ckNvbXBhdGliaWxpdHk7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiBXZWJLaXQ6OlBsdWdpbk1vZHVsZUxvYWROb3JtYWxseTsKLX0KLQotc3RhdGljIF9XS1Bs
dWdpbk1vZHVsZUxvYWRQb2xpY3kgd2tQbHVnaW5Nb2R1bGVMb2FkUG9saWN5KFdlYktpdDo6UGx1
Z2luTW9kdWxlTG9hZFBvbGljeSBwb2xpY3kpCi17Ci0gICAgc3dpdGNoIChwb2xpY3kpIHsKLSAg
ICBjYXNlIFdlYktpdDo6UGx1Z2luTW9kdWxlTG9hZE5vcm1hbGx5OgotICAgICAgICByZXR1cm4g
X1dLUGx1Z2luTW9kdWxlTG9hZFBvbGljeUxvYWROb3JtYWxseTsKLSAgICBjYXNlIFdlYktpdDo6
UGx1Z2luTW9kdWxlTG9hZFVuc2FuZGJveGVkOgotICAgICAgICByZXR1cm4gX1dLUGx1Z2luTW9k
dWxlTG9hZFBvbGljeUxvYWRVbnNhbmRib3hlZDsKLSAgICBjYXNlIFdlYktpdDo6UGx1Z2luTW9k
dWxlQmxvY2tlZEZvclNlY3VyaXR5OgotICAgICAgICByZXR1cm4gX1dLUGx1Z2luTW9kdWxlTG9h
ZFBvbGljeUJsb2NrZWRGb3JTZWN1cml0eTsKLSAgICBjYXNlIFdlYktpdDo6UGx1Z2luTW9kdWxl
QmxvY2tlZEZvckNvbXBhdGliaWxpdHk6Ci0gICAgICAgIHJldHVybiBfV0tQbHVnaW5Nb2R1bGVM
b2FkUG9saWN5QmxvY2tlZEZvckNvbXBhdGliaWxpdHk7Ci0gICAgfQotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBfV0tQbHVnaW5Nb2R1bGVMb2FkUG9saWN5TG9hZE5vcm1h
bGx5OwotfQotCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRl
UG9saWN5Rm9yUGx1Z2luTG9hZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6UGx1Z2lu
TW9kdWxlTG9hZFBvbGljeSBjdXJyZW50UGx1Z2luTG9hZFBvbGljeSwgQVBJOjpEaWN0aW9uYXJ5
JiBwbHVnaW5JbmZvcm1hdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OlBsdWdp
bk1vZHVsZUxvYWRQb2xpY3ksIGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQot
ewotICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2Rz
LndlYlZpZXdEZWNpZGVQb2xpY3lGb3JQbHVnaW5Mb2FkV2l0aEN1cnJlbnRQb2xpY3lQbHVnaW5J
bmZvQ29tcGxldGlvbkhhbmRsZXIpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY3VycmVu
dFBsdWdpbkxvYWRQb2xpY3ksIHsgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0g
ICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRp
b25EZWxlZ2F0ZS5nZXQoKTsKLSAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkgewotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihjdXJyZW50UGx1Z2luTG9hZFBvbGljeSwgeyB9KTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVy
Q2FsbENoZWNrZXI6OmNyZWF0ZShuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihf
d2ViVmlldzpkZWNpZGVQb2xpY3lGb3JQbHVnaW5Mb2FkV2l0aEN1cnJlbnRQb2xpY3k6cGx1Z2lu
SW5mbzpjb21wbGV0aW9uSGFuZGxlcjopKTsKLSAgICBbKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0
ZVByaXZhdGU+KW5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5t
X3dlYlZpZXcgZGVjaWRlUG9saWN5Rm9yUGx1Z2luTG9hZFdpdGhDdXJyZW50UG9saWN5OndrUGx1
Z2luTW9kdWxlTG9hZFBvbGljeShjdXJyZW50UGx1Z2luTG9hZFBvbGljeSkgcGx1Z2luSW5mbzp3
cmFwcGVyKHBsdWdpbkluZm9ybWF0aW9uKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIo
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIg
PSBXVEZNb3ZlKGNoZWNrZXIpXShfV0tQbHVnaW5Nb2R1bGVMb2FkUG9saWN5IHBvbGljeSwgTlNT
dHJpbmcgKnVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24pIG11dGFibGUgewotICAgICAgICBpZiAo
Y2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihwbHVnaW5Nb2R1bGVMb2FkUG9saWN5KHBvbGljeSksIHVu
YXZhaWxhYmlsaXR5RGVzY3JpcHRpb24pOwotICAgIH0pLmdldCgpXTsKLX0KLQogaW5saW5lIFdl
YkNvcmU6OldlYkdMTG9hZFBvbGljeSB0b1dlYkNvcmVXZWJHTExvYWRQb2xpY3koX1dLV2ViR0xM
b2FkUG9saWN5IHBvbGljeSkKIHsKICAgICBzd2l0Y2ggKHBvbGljeSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3Zp
ZGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBjZmYwY2JhYzMxYzI3ZTIy
OTgxOWY3ZTQ1YmM3YWMyZTI1NzI2Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9T
dGFydFByb3ZpZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUGx1Z0luQXV0b1N0YXJ0
UHJvdmlkZXIuaCIKLQotI2luY2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiQVBJRGljdGlv
bmFyeS5oIgotI2luY2x1ZGUgIldlYkNvbnRleHRDbGllbnQuaCIKLSNpbmNsdWRlICJXZWJQcm9j
ZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotI2luY2x1ZGUgPHd0
Zi9XYWxsVGltZS5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwotCi1zdGF0aWMgY29uc3QgU2Vjb25kcyBwbHVnSW5BdXRvU3RhcnRFeHBpcmF0aW9uVGlt
ZVRocmVzaG9sZCB7IDMwICogMjQgKiA2MCAqIDYwIH07Ci0KLVBsdWdJbkF1dG9TdGFydFByb3Zp
ZGVyOjpQbHVnSW5BdXRvU3RhcnRQcm92aWRlcihXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wp
Ci0gICAgOiBtX3Byb2Nlc3NQb29sKHByb2Nlc3NQb29sKQotewotICAgIG1faGFzaFRvT3JpZ2lu
TWFwLmFkZChQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBIYXNoVG9PcmlnaW5N
YXAoKSk7Ci0gICAgbV9hdXRvU3RhcnRUYWJsZS5hZGQoUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRT
ZXNzaW9uSUQoKSwgQXV0b1N0YXJ0VGFibGUoKSk7Ci19Ci0KLXN0YXRpYyBXYWxsVGltZSBleHBp
cmF0aW9uVGltZUZyb21Ob3coKQotewotICAgIHJldHVybiBXYWxsVGltZTo6bm93KCkgKyBwbHVn
SW5BdXRvU3RhcnRFeHBpcmF0aW9uVGltZVRocmVzaG9sZDsKLX0KLQotdm9pZCBQbHVnSW5BdXRv
U3RhcnRQcm92aWRlcjo6YWRkQXV0b1N0YXJ0T3JpZ2luSGFzaChjb25zdCBTdHJpbmcmIHBhZ2VP
cmlnaW4sIHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKLXsKLSAgICBhdXRvIHNlc3Npb25JdGVyYXRvciA9IG1faGFzaFRvT3JpZ2luTWFwLmZpbmQo
c2Vzc2lvbklEKTsKLSAgICBpZiAoc2Vzc2lvbkl0ZXJhdG9yID09IG1faGFzaFRvT3JpZ2luTWFw
LmVuZCgpKSB7Ci0gICAgICAgIGlmIChtX2hhc2hUb09yaWdpbk1hcC5nZXQoUEFMOjpTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkuY29udGFpbnMocGx1Z0luT3JpZ2luSGFzaCkpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIHNlc3Npb25JdGVyYXRvciA9IG1faGFzaFRvT3JpZ2lu
TWFwLnNldChzZXNzaW9uSUQsIEhhc2hUb09yaWdpbk1hcCgpKS5pdGVyYXRvcjsKLSAgICB9IGVs
c2UgaWYgKHNlc3Npb25JdGVyYXRvci0+dmFsdWUuY29udGFpbnMocGx1Z0luT3JpZ2luSGFzaCkg
fHwgbV9oYXNoVG9PcmlnaW5NYXAuZ2V0KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCkpLmNvbnRhaW5zKHBsdWdJbk9yaWdpbkhhc2gpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBB
dXRvU3RhcnRUYWJsZTo6aXRlcmF0b3IgaXQgPSBtX2F1dG9TdGFydFRhYmxlLmFkZChzZXNzaW9u
SUQsIEF1dG9TdGFydFRhYmxlKCkpLml0ZXJhdG9yLT52YWx1ZS5hZGQocGFnZU9yaWdpbiwgUGx1
Z0luQXV0b1N0YXJ0T3JpZ2luTWFwKCkpLml0ZXJhdG9yOwotCi0gICAgV2FsbFRpbWUgZXhwaXJh
dGlvblRpbWUgPSBleHBpcmF0aW9uVGltZUZyb21Ob3coKTsKLSAgICBpdC0+dmFsdWUuc2V0KHBs
dWdJbk9yaWdpbkhhc2gsIGV4cGlyYXRpb25UaW1lKTsKLSAgICBzZXNzaW9uSXRlcmF0b3ItPnZh
bHVlLnNldChwbHVnSW5PcmlnaW5IYXNoLCBwYWdlT3JpZ2luKTsKLQotICAgIG1fcHJvY2Vzc1Bv
b2wtPnNlbmRUb0FsbFByb2Nlc3Nlc0ZvclNlc3Npb24oTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRp
ZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gocGx1Z0luT3JpZ2luSGFzaCwgZXhwaXJhdGlv
blRpbWUpLCBzZXNzaW9uSUQpOwotCi0gICAgaWYgKCFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkK
LSAgICAgICAgbV9wcm9jZXNzUG9vbC0+Y2xpZW50KCkucGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFz
aGVzQ2hhbmdlZChtX3Byb2Nlc3NQb29sKTsKLX0KLQotUGx1Z0luQXV0b1N0YXJ0T3JpZ2luTWFw
IFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjphdXRvU3RhcnRPcmlnaW5IYXNoZXNDb3B5KFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkgY29uc3QKLXsKLSAgICBQbHVnSW5BdXRvU3RhcnRPcmlnaW5N
YXAgbWFwOwotCi0gICAgYXV0byBpdCA9IG1fYXV0b1N0YXJ0VGFibGUuZmluZChzZXNzaW9uSUQp
OwotICAgIGlmIChpdCAhPSBtX2F1dG9TdGFydFRhYmxlLmVuZCgpKSB7Ci0gICAgICAgIGZvciAo
Y29uc3QgYXV0byYga2V5T3JpZ2luSGFzaCA6IGl0LT52YWx1ZSkgewotICAgICAgICAgICAgZm9y
IChjb25zdCBhdXRvJiBvcmlnaW5IYXNoIDoga2V5T3JpZ2luSGFzaC52YWx1ZSkKLSAgICAgICAg
ICAgICAgICBtYXAuc2V0KG9yaWdpbkhhc2gua2V5LCBvcmlnaW5IYXNoLnZhbHVlKTsKLSAgICAg
ICAgfQotICAgIH0KLSAgICByZXR1cm4gbWFwOwotfQotCi1SZWY8QVBJOjpEaWN0aW9uYXJ5PiBQ
bHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6YXV0b1N0YXJ0T3JpZ2luc1RhYmxlQ29weSgpIGNvbnN0
Ci17Ci0gICAgQVBJOjpEaWN0aW9uYXJ5OjpNYXBUeXBlIG1hcDsKLQotICAgIFdhbGxUaW1lIG5v
dyA9IFdhbGxUaW1lOjpub3coKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHN0cmluZ09yaWdpbkhh
c2ggOiBtX2F1dG9TdGFydFRhYmxlLmdldChQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25J
RCgpKSkgewotICAgICAgICBBUEk6OkRpY3Rpb25hcnk6Ok1hcFR5cGUgaGFzaE1hcDsKLSAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW5IYXNoIDogc3RyaW5nT3JpZ2luSGFzaC52YWx1ZSkg
ewotICAgICAgICAgICAgaWYgKG5vdyA8PSBvcmlnaW5IYXNoLnZhbHVlKQotICAgICAgICAgICAg
ICAgIGhhc2hNYXAuc2V0KFN0cmluZzo6bnVtYmVyKG9yaWdpbkhhc2gua2V5KSwgQVBJOjpEb3Vi
bGU6OmNyZWF0ZShvcmlnaW5IYXNoLnZhbHVlLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygp
KSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGhhc2hNYXAuc2l6ZSgpKQotICAgICAgICAgICAg
bWFwLnNldChzdHJpbmdPcmlnaW5IYXNoLmtleSwgQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RG
TW92ZShoYXNoTWFwKSkpOwotICAgIH0KLQotICAgIHJldHVybiBBUEk6OkRpY3Rpb25hcnk6OmNy
ZWF0ZShXVEZNb3ZlKG1hcCkpOwotfQotCi12b2lkIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjpz
ZXRBdXRvU3RhcnRPcmlnaW5zVGFibGUoQVBJOjpEaWN0aW9uYXJ5JiB0YWJsZSkKLXsKLSAgICBz
ZXRBdXRvU3RhcnRPcmlnaW5zVGFibGVXaXRoSXRlbXNQYXNzaW5nVGVzdCh0YWJsZSwgW10oV2Fs
bFRpbWUpIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgUGx1Z0lu
QXV0b1N0YXJ0UHJvdmlkZXI6OnNldEF1dG9TdGFydE9yaWdpbnNGaWx0ZXJpbmdPdXRFbnRyaWVz
QWRkZWRBZnRlclRpbWUoQVBJOjpEaWN0aW9uYXJ5JiB0YWJsZSwgV2FsbFRpbWUgdGltZSkKLXsK
LSAgICBXYWxsVGltZSBhZGp1c3RlZFRpbWVzdGFtcCA9IHRpbWUgKyBwbHVnSW5BdXRvU3RhcnRF
eHBpcmF0aW9uVGltZVRocmVzaG9sZDsKLSAgICBzZXRBdXRvU3RhcnRPcmlnaW5zVGFibGVXaXRo
SXRlbXNQYXNzaW5nVGVzdCh0YWJsZSwgW2FkanVzdGVkVGltZXN0YW1wXShXYWxsVGltZSBleHBp
cmF0aW9uVGltZXN0YW1wKSB7Ci0gICAgICAgIHJldHVybiBhZGp1c3RlZFRpbWVzdGFtcCA+IGV4
cGlyYXRpb25UaW1lc3RhbXA7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgUGx1Z0luQXV0b1N0YXJ0UHJv
dmlkZXI6OnNldEF1dG9TdGFydE9yaWdpbnNUYWJsZVdpdGhJdGVtc1Bhc3NpbmdUZXN0KEFQSTo6
RGljdGlvbmFyeSYgdGFibGUsIFdURjo6RnVuY3Rpb248Ym9vbChXYWxsVGltZSBleHBpcmF0aW9u
VGltZXN0YW1wKT4mJiBpc0V4cGlyYXRpb25UaW1lQWNjZXB0YWJsZSkKLXsKLSAgICBBU1NFUlQo
aXNFeHBpcmF0aW9uVGltZUFjY2VwdGFibGUpOwotCi0gICAgbV9oYXNoVG9PcmlnaW5NYXAuY2xl
YXIoKTsKLSAgICBtX2F1dG9TdGFydFRhYmxlLmNsZWFyKCk7Ci0gICAgSGFzaE1hcDx1bnNpZ25l
ZCwgV2FsbFRpbWU+IGhhc2hNYXA7Ci0gICAgYXV0byYgaGFzaFRvT3JpZ2luTWFwID0gbV9oYXNo
VG9PcmlnaW5NYXAuYWRkKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIEhhc2hU
b09yaWdpbk1hcCgpKS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgQXV0b1N0YXJ0VGFibGUmIGFzdCA9
IG1fYXV0b1N0YXJ0VGFibGUuYWRkKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCks
IEF1dG9TdGFydFRhYmxlKCkpLml0ZXJhdG9yLT52YWx1ZTsKLQotICAgIGZvciAoYXV0byYgc3Ry
RGljdCA6IHRhYmxlLm1hcCgpKSB7Ci0gICAgICAgIFBsdWdJbkF1dG9TdGFydE9yaWdpbk1hcCBo
YXNoZXM7Ci0gICAgICAgIGZvciAoYXV0byYgaGFzaFRpbWUgOiBzdGF0aWNfY2FzdDxBUEk6OkRp
Y3Rpb25hcnkqPihzdHJEaWN0LnZhbHVlLmdldCgpKS0+bWFwKCkpIHsKLSAgICAgICAgICAgIGJv
b2wgb2s7Ci0gICAgICAgICAgICB1bnNpZ25lZCBoYXNoID0gaGFzaFRpbWUua2V5LnRvVUludCgm
b2spOwotICAgICAgICAgICAgaWYgKCFvaykKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICAgICAgaWYgKGhhc2hUaW1lLnZhbHVlLT50eXBlKCkgIT0gQVBJOjpEb3VibGU6OkFQ
SVR5cGUpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIFdhbGxUaW1l
IGV4cGlyYXRpb25UaW1lID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRpY19jYXN0PEFQ
STo6RG91YmxlKj4oaGFzaFRpbWUudmFsdWUuZ2V0KCkpLT52YWx1ZSgpKTsKLSAgICAgICAgICAg
IGlmICghaXNFeHBpcmF0aW9uVGltZUFjY2VwdGFibGUoZXhwaXJhdGlvblRpbWUpKQotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBoYXNoZXMuc2V0KGhhc2gsIGV4cGly
YXRpb25UaW1lKTsKLSAgICAgICAgICAgIGhhc2hNYXAuc2V0KGhhc2gsIGV4cGlyYXRpb25UaW1l
KTsKLSAgICAgICAgICAgIGhhc2hUb09yaWdpbk1hcC5zZXQoaGFzaCwgc3RyRGljdC5rZXkpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFoYXNoZXMuaXNFbXB0eSgpKQotICAgICAgICAgICAg
YXN0LnNldChzdHJEaWN0LmtleSwgaGFzaGVzKTsKLSAgICB9Ci0KLSAgICBtX3Byb2Nlc3NQb29s
LT5zZW5kVG9BbGxQcm9jZXNzZXNGb3JTZXNzaW9uKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZXNl
dFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhoYXNoTWFwKSwgUEFMOjpTZXNzaW9uSUQ6OmRl
ZmF1bHRTZXNzaW9uSUQoKSk7Ci19Ci0KLXZvaWQgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OnNl
dEF1dG9TdGFydE9yaWdpbnNBcnJheShBUEk6OkFycmF5JiBvcmlnaW5MaXN0KQotewotICAgIG1f
YXV0b1N0YXJ0T3JpZ2lucy5jbGVhcigpOwotICAgIGZvciAoYXV0byBzdHJpbmcgOiBvcmlnaW5M
aXN0LmVsZW1lbnRzT2ZUeXBlPEFQSTo6U3RyaW5nPigpKQotICAgICAgICBtX2F1dG9TdGFydE9y
aWdpbnMuYXBwZW5kKHN0cmluZy0+c3RyaW5nKCkpOwotfQotCi12b2lkIFBsdWdJbkF1dG9TdGFy
dFByb3ZpZGVyOjpkaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHVuc2lnbmVkIHBsdWdJbk9yaWdp
bkhhc2gsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSAgICBhdXRvIHNlc3Npb25JdGVy
YXRvciA9IG1faGFzaFRvT3JpZ2luTWFwLmZpbmQoc2Vzc2lvbklEKTsKLSAgICBIYXNoVG9Pcmln
aW5NYXA6OmNvbnN0X2l0ZXJhdG9yIGl0OwotICAgIGJvb2wgY29udGFpbnMgPSBmYWxzZTsKLSAg
ICBpZiAoc2Vzc2lvbkl0ZXJhdG9yICE9IG1faGFzaFRvT3JpZ2luTWFwLmVuZCgpKSB7Ci0gICAg
ICAgIGl0ID0gc2Vzc2lvbkl0ZXJhdG9yLT52YWx1ZS5maW5kKHBsdWdJbk9yaWdpbkhhc2gpOwot
ICAgICAgICBjb250YWlucyA9IGl0ICE9IHNlc3Npb25JdGVyYXRvci0+dmFsdWUuZW5kKCk7Ci0g
ICAgfQotICAgIGlmICghY29udGFpbnMpIHsKLSAgICAgICAgc2Vzc2lvbkl0ZXJhdG9yID0gbV9o
YXNoVG9PcmlnaW5NYXAuZmluZChQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsK
LSAgICAgICAgaXQgPSBzZXNzaW9uSXRlcmF0b3ItPnZhbHVlLmZpbmQocGx1Z0luT3JpZ2luSGFz
aCk7Ci0gICAgICAgIGlmIChpdCA9PSBzZXNzaW9uSXRlcmF0b3ItPnZhbHVlLmVuZCgpKSB7Ci0g
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIFdhbGxUaW1lIG5ld0V4cGlyYXRpb25UaW1lID0gZXhwaXJh
dGlvblRpbWVGcm9tTm93KCk7Ci0gICAgbV9hdXRvU3RhcnRUYWJsZS5hZGQoc2Vzc2lvbklELCBB
dXRvU3RhcnRUYWJsZSgpKS5pdGVyYXRvci0+dmFsdWUuYWRkKGl0LT52YWx1ZSwgUGx1Z0luQXV0
b1N0YXJ0T3JpZ2luTWFwKCkpLml0ZXJhdG9yLT52YWx1ZS5zZXQocGx1Z0luT3JpZ2luSGFzaCwg
bmV3RXhwaXJhdGlvblRpbWUpOwotICAgIG1fcHJvY2Vzc1Bvb2wtPnNlbmRUb0FsbFByb2Nlc3Nl
c0ZvclNlc3Npb24oTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRpZEFkZFBsdWdJbkF1dG9TdGFydE9y
aWdpbkhhc2gocGx1Z0luT3JpZ2luSGFzaCwgbmV3RXhwaXJhdGlvblRpbWUpLCBzZXNzaW9uSUQp
OwotICAgIG1fcHJvY2Vzc1Bvb2wtPmNsaWVudCgpLnBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hl
c0NoYW5nZWQobV9wcm9jZXNzUG9vbCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQ
cm92aWRlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3Rh
cnRQcm92aWRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDJkMTZlZGQ4ODgx
YzNmYjQ5ZWY3OWE2NmQ2NjU1ZTkwMzQzNDUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0lu
QXV0b1N0YXJ0UHJvdmlkZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaWZuZGVmIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyX2gKLSNkZWZpbmUgUGx1Z0lu
QXV0b1N0YXJ0UHJvdmlkZXJfaAotCi0jaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgotI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3Rm
L1dhbGxUaW1lLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgQVBJIHsKLWNsYXNzIEFycmF5Owot
Y2xhc3MgRGljdGlvbmFyeTsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlBy
b2Nlc3NQb29sOwotCi10eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQsIFdhbGxUaW1lPiBQbHVnSW5B
dXRvU3RhcnRPcmlnaW5NYXA7Ci10eXBlZGVmIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFBsdWdJ
bkF1dG9TdGFydE9yaWdpbk1hcD4gU2Vzc2lvblBsdWdJbkF1dG9TdGFydE9yaWdpbk1hcDsKLXR5
cGVkZWYgVmVjdG9yPFN0cmluZz4gUGx1Z0luQXV0b1N0YXJ0T3JpZ2luczsKLQotY2xhc3MgUGx1
Z0luQXV0b1N0YXJ0UHJvdmlkZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBsdWdJbkF1
dG9TdGFydFByb3ZpZGVyKTsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBQbHVnSW5BdXRvU3RhcnRQ
cm92aWRlcihXZWJQcm9jZXNzUG9vbCopOwotCi0gICAgdm9pZCBhZGRBdXRvU3RhcnRPcmlnaW5I
YXNoKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgdW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwg
UEFMOjpTZXNzaW9uSUQpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbih1bnNp
Z25lZCBwbHVnSW5PcmlnaW5IYXNoLCBQQUw6OlNlc3Npb25JRCk7Ci0KLSAgICBSZWY8QVBJOjpE
aWN0aW9uYXJ5PiBhdXRvU3RhcnRPcmlnaW5zVGFibGVDb3B5KCkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXRBdXRvU3RhcnRPcmlnaW5zVGFibGUoQVBJOjpEaWN0aW9uYXJ5Jik7Ci0gICAgdm9pZCBzZXRB
dXRvU3RhcnRPcmlnaW5zRmlsdGVyaW5nT3V0RW50cmllc0FkZGVkQWZ0ZXJUaW1lKEFQSTo6RGlj
dGlvbmFyeSYsIFdhbGxUaW1lKTsKLSAgICB2b2lkIHNldEF1dG9TdGFydE9yaWdpbnNBcnJheShB
UEk6OkFycmF5Jik7Ci0KLSAgICBQbHVnSW5BdXRvU3RhcnRPcmlnaW5NYXAgYXV0b1N0YXJ0T3Jp
Z2luSGFzaGVzQ29weShQQUw6OlNlc3Npb25JRCkgY29uc3Q7Ci0gICAgY29uc3QgUGx1Z0luQXV0
b1N0YXJ0T3JpZ2lucyYgYXV0b1N0YXJ0T3JpZ2lucygpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b1N0
YXJ0T3JpZ2luczsgfQotCi0gICAgdXNpbmcgSGFzaFRvT3JpZ2luTWFwID0gSGFzaE1hcDx1bnNp
Z25lZCwgU3RyaW5nPjsKLSAgICB1c2luZyBQZXJTZXNzaW9uSGFzaFRvT3JpZ2luTWFwID0gSGFz
aE1hcDxQQUw6OlNlc3Npb25JRCwgSGFzaFRvT3JpZ2luTWFwPjsKLSAgICB1c2luZyBBdXRvU3Rh
cnRUYWJsZSA9IEhhc2hNYXA8U3RyaW5nLCBQbHVnSW5BdXRvU3RhcnRPcmlnaW5NYXAsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD47Ci0KLXByaXZhdGU6Ci0gICAgV2ViUHJvY2Vzc1Bvb2wqIG1f
cHJvY2Vzc1Bvb2w7Ci0KLSAgICB2b2lkIHNldEF1dG9TdGFydE9yaWdpbnNUYWJsZVdpdGhJdGVt
c1Bhc3NpbmdUZXN0KEFQSTo6RGljdGlvbmFyeSYsIFdURjo6RnVuY3Rpb248Ym9vbChXYWxsVGlt
ZSBleHBpcmF0aW9uVGltZXN0YW1wKT4mJik7Ci0KLSAgICB0eXBlZGVmIEhhc2hNYXA8UEFMOjpT
ZXNzaW9uSUQsIEF1dG9TdGFydFRhYmxlPiBTZXNzaW9uQXV0b1N0YXJ0VGFibGU7Ci0gICAgU2Vz
c2lvbkF1dG9TdGFydFRhYmxlIG1fYXV0b1N0YXJ0VGFibGU7Ci0KLSAgICBQZXJTZXNzaW9uSGFz
aFRvT3JpZ2luTWFwIG1faGFzaFRvT3JpZ2luTWFwOwotCi0gICAgUGx1Z0luQXV0b1N0YXJ0T3Jp
Z2lucyBtX2F1dG9TdGFydE9yaWdpbnM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8qIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAKaW5k
ZXggZmI3MjJiYzVhZGZiY2UyOTYyMjhmNzA1OTJhMjJiZTkyZWM5MGRiZi4uZmNkNWUzMzA2MThm
Y2YzY2ZiNDgxNjY5YmUyMzZmMWQ2YWJlY2QyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAKQEAgLTUxLDE0
ICs1MSwxMyBAQCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6UGx1Z2luUHJvY2Vzc01hbmFnZXIoKQog
ewogfQogCi11aW50NjRfdCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6cGx1Z2luUHJvY2Vzc1Rva2Vu
KGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbk1vZHVsZUluZm8sIFBsdWdpblByb2Nlc3NU
eXBlIHBsdWdpblByb2Nlc3NUeXBlLCBQbHVnaW5Qcm9jZXNzU2FuZGJveFBvbGljeSBwbHVnaW5Q
cm9jZXNzU2FuZGJveFBvbGljeSkKK3VpbnQ2NF90IFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpwbHVn
aW5Qcm9jZXNzVG9rZW4oY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luTW9kdWxlSW5mbywg
UGx1Z2luUHJvY2Vzc1NhbmRib3hQb2xpY3kgcGx1Z2luUHJvY2Vzc1NhbmRib3hQb2xpY3kpCiB7
CiAgICAgLy8gU2VlIGlmIHdlIGtub3cgdGhpcyB0b2tlbiBhbHJlYWR5LgogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9wbHVnaW5Qcm9jZXNzVG9rZW5zLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIGNvbnN0IFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzID0gbV9wbHVnaW5Q
cm9jZXNzVG9rZW5zW2ldLmZpcnN0OwogCiAgICAgICAgIGlmIChhdHRyaWJ1dGVzLm1vZHVsZUlu
Zm8ucGF0aCA9PSBwbHVnaW5Nb2R1bGVJbmZvLnBhdGgKLSAgICAgICAgICAgICYmIGF0dHJpYnV0
ZXMucHJvY2Vzc1R5cGUgPT0gcGx1Z2luUHJvY2Vzc1R5cGUKICAgICAgICAgICAgICYmIGF0dHJp
YnV0ZXMuc2FuZGJveFBvbGljeSA9PSBwbHVnaW5Qcm9jZXNzU2FuZGJveFBvbGljeSkKICAgICAg
ICAgICAgIHJldHVybiBtX3BsdWdpblByb2Nlc3NUb2tlbnNbaV0uc2Vjb25kOwogICAgIH0KQEAg
LTczLDcgKzcyLDYgQEAgdWludDY0X3QgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnBsdWdpblByb2Nl
c3NUb2tlbihjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4KIAogICAgIFBsdWdpblByb2Nl
c3NBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CiAgICAgYXR0cmlidXRlcy5tb2R1bGVJbmZvID0gcGx1
Z2luTW9kdWxlSW5mbzsKLSAgICBhdHRyaWJ1dGVzLnByb2Nlc3NUeXBlID0gcGx1Z2luUHJvY2Vz
c1R5cGU7CiAgICAgYXR0cmlidXRlcy5zYW5kYm94UG9saWN5ID0gcGx1Z2luUHJvY2Vzc1NhbmRi
b3hQb2xpY3k7CiAKICAgICBtX3BsdWdpblByb2Nlc3NUb2tlbnMuYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKFdURk1vdmUoYXR0cmlidXRlcyksIHRva2VuKSk7CkBAIC0xMDUsNyArMTAzLDcgQEAgdm9p
ZCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6cmVtb3ZlUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblBy
b2Nlc3NQcm94eSogcGx1Z2luUHIKIAogdm9pZCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6ZmV0Y2hX
ZWJzaXRlRGF0YShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4sIE9wdGlvblNldDxXZWJz
aXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMsIFdURjo6RnVuY3Rpb248dm9pZCAoVmVj
dG9yPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8gdG9rZW4gPSBw
bHVnaW5Qcm9jZXNzVG9rZW4ocGx1Z2luLCBQbHVnaW5Qcm9jZXNzVHlwZTo6Tm9ybWFsLCBQbHVn
aW5Qcm9jZXNzU2FuZGJveFBvbGljeTo6Tm9ybWFsKTsKKyAgICBhdXRvIHRva2VuID0gcGx1Z2lu
UHJvY2Vzc1Rva2VuKHBsdWdpbiwgUGx1Z2luUHJvY2Vzc1NhbmRib3hQb2xpY3k6Ok5vcm1hbCk7
CiAgICAgYXV0byBwbHVnaW5Qcm9jZXNzID0gZmV0Y2hPcHRpb25zLmNvbnRhaW5zKFdlYnNpdGVE
YXRhRmV0Y2hPcHRpb246OkRvTm90Q3JlYXRlUHJvY2Vzc2VzKSA/IGdldFBsdWdpblByb2Nlc3Mo
dG9rZW4pIDogZ2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKHRva2VuKTsKICAgICBpZiAoIXBsdWdp
blByb2Nlc3MpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKQEAgLTExNywxMyAr
MTE1LDEzIEBAIHZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OmZldGNoV2Vic2l0ZURhdGEoY29u
c3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luLCBPcHRpCiAKIHZvaWQgUGx1Z2luUHJvY2Vzc01h
bmFnZXI6OmRlbGV0ZVdlYnNpdGVEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwg
V2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2VzcyA9IGdl
dE9yQ3JlYXRlUGx1Z2luUHJvY2VzcyhwbHVnaW5Qcm9jZXNzVG9rZW4ocGx1Z2luLCBQbHVnaW5Q
cm9jZXNzVHlwZTo6Tm9ybWFsLCBQbHVnaW5Qcm9jZXNzU2FuZGJveFBvbGljeTo6Tm9ybWFsKSk7
CisgICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzID0gZ2V0T3JDcmVhdGVQbHVn
aW5Qcm9jZXNzKHBsdWdpblByb2Nlc3NUb2tlbihwbHVnaW4sIFBsdWdpblByb2Nlc3NTYW5kYm94
UG9saWN5OjpOb3JtYWwpKTsKICAgICBwbHVnaW5Qcm9jZXNzLT5kZWxldGVXZWJzaXRlRGF0YSht
b2RpZmllZFNpbmNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgUGx1
Z2luUHJvY2Vzc01hbmFnZXI6OmRlbGV0ZVdlYnNpdGVEYXRhRm9ySG9zdE5hbWVzKGNvbnN0IFBs
dWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3ROYW1lcyxX
VEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUGx1Z2lu
UHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzID0gZ2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKHBs
dWdpblByb2Nlc3NUb2tlbihwbHVnaW4sIFBsdWdpblByb2Nlc3NUeXBlOjpOb3JtYWwsIFBsdWdp
blByb2Nlc3NTYW5kYm94UG9saWN5OjpOb3JtYWwpKTsKKyAgICBQbHVnaW5Qcm9jZXNzUHJveHkq
IHBsdWdpblByb2Nlc3MgPSBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MocGx1Z2luUHJvY2Vzc1Rv
a2VuKHBsdWdpbiwgUGx1Z2luUHJvY2Vzc1NhbmRib3hQb2xpY3k6Ok5vcm1hbCkpOwogICAgIHBs
dWdpblByb2Nlc3MtPmRlbGV0ZVdlYnNpdGVEYXRhRm9ySG9zdE5hbWVzKGhvc3ROYW1lcywgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgKaW5kZXggNWQ4ODVlYTE1
ODgzZGNkYjY0YTIwYTZjNzhiZDJlNTZjZWY4Y2JkNS4uMmUwZGJiMDAyZWIzZWYzMjgwNmMyZGFi
YjUzMjg1NjQyMGZiY2Y1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBQ
bHVnaW5Qcm9jZXNzTWFuYWdlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBsdWdpblByb2Nlc3NN
YW5hZ2VyJiBzaW5nbGV0b24oKTsKIAotICAgIHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbihj
b25zdCBQbHVnaW5Nb2R1bGVJbmZvJiwgUGx1Z2luUHJvY2Vzc1R5cGUsIFBsdWdpblByb2Nlc3NT
YW5kYm94UG9saWN5KTsKKyAgICB1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4oY29uc3QgUGx1
Z2luTW9kdWxlSW5mbyYsIFBsdWdpblByb2Nlc3NTYW5kYm94UG9saWN5KTsKIAogICAgIGJvb2wg
Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbkRlbGF5
ZWRSZXBseSYmKTsKICAgICB2b2lkIHJlbW92ZVBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9j
ZXNzUHJveHkqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyY2NhNmQ5OGNkYThhMjlkZTJkYjU5NzlkM2Vh
NTQ4NmNmMDZhNDFhLi4xYTcwZjYzMmFmYzNmNmQ1NGY1NTFhNDNiYjAwMzNlMTE4YTQyMzc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzUHJveHkuY3BwCkBAIC0yMzUsMTQgKzIzNSw4IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5
OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0aW9uOjpJ
CiAgICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7CiAgICAgCiAgICAgUGx1Z2luUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICAgIHBhcmFtZXRlcnMucHJvY2Vzc1R5cGUgPSBt
X3BsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLnByb2Nlc3NUeXBlOwotICAgIGlmIChwYXJhbWV0ZXJz
LnByb2Nlc3NUeXBlID09IFBsdWdpblByb2Nlc3NUeXBlOjpTbmFwc2hvdCkgewotICAgICAgICBw
YXJhbWV0ZXJzLm1pbmltdW1MaWZldGltZSA9IHNuYXBzaG90dGluZ01pbmltdW1MaWZldGltZTsK
LSAgICAgICAgcGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQgPSBzbmFwc2hvdHRpbmdTaHV0
ZG93blRpbWVvdXQ7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcGFyYW1ldGVycy5taW5pbXVtTGlm
ZXRpbWUgPSBtaW5pbXVtTGlmZXRpbWU7Ci0gICAgICAgIHBhcmFtZXRlcnMudGVybWluYXRpb25U
aW1lb3V0ID0gc2h1dGRvd25UaW1lb3V0OwotICAgIH0KKyAgICBwYXJhbWV0ZXJzLm1pbmltdW1M
aWZldGltZSA9IG1pbmltdW1MaWZldGltZTsKKyAgICBwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGlt
ZW91dCA9IHNodXRkb3duVGltZW91dDsKIAogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblBy
b2Nlc3MocGFyYW1ldGVycyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDMxMzg2MTcwZDI2MDE1YTdhMDI5ZWU0YjkxZmJhOGI2Mzc5NWU0ZTcuLmRlMDBj
OWU3NTc4NWE2ZjZkMzYxMGRhZmJhZTg0YzljZDg4Y2QzZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjcwNyw3ICsyNzA3LDcgQEAgV2ViUHJlZmVyZW5j
ZXNTdG9yZSBXZWJQYWdlUHJveHk6OnByZWZlcmVuY2VzU3RvcmUoKSBjb25zdAogfQogCiAjaWYg
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi12b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFBsdWdp
bihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBQbHVnaW5Qcm9jZXNzVHlwZSBwcm9jZXNzVHlwZSwg
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZywgYm9vbCBhbGxvd09ubHlBcHBsaWNhdGlvblBsdWdp
bnMsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmRQbHVnaW46OkRlbGF5ZWRSZXBseSYmIHJl
cGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmZpbmRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZywgYm9vbCBhbGxvd09ubHlBcHBsaWNhdGlvblBs
dWdpbnMsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmRQbHVnaW46OkRlbGF5ZWRSZXBseSYm
IHJlcGx5KQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQo
KSk7CiAKQEAgLTI3MzYsNyArMjczNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmaW5kUGx1Z2lu
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFBsdWdpblByb2Nlc3NUeXBlIHByb2Nlc3NUCiAgICAg
YXV0byBwbHVnaW5JbmZvcm1hdGlvbiA9IGNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFy
eShwbHVnaW4sIGZyYW1lVVJMU3RyaW5nLCBTdHJpbmcoKSwgcGFnZVVSTFN0cmluZywgU3RyaW5n
KCksIFN0cmluZygpKTsKICNlbmRpZgogCi0gICAgYXV0byBmaW5kUGx1Z2luQ29tcGxldGlvbiA9
IFtwcm9jZXNzVHlwZSwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KSwgbmV3TWltZVR5cGUgPSBXVEZN
b3ZlKG5ld01pbWVUeXBlKSwgcGx1Z2luID0gV1RGTW92ZShwbHVnaW4pXSAodWludDMyX3QgcGx1
Z2luTG9hZFBvbGljeSwgY29uc3QgU3RyaW5nJiB1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uKSBt
dXRhYmxlIHsKKyAgICBhdXRvIGZpbmRQbHVnaW5Db21wbGV0aW9uID0gW3JlcGx5ID0gV1RGTW92
ZShyZXBseSksIG5ld01pbWVUeXBlID0gV1RGTW92ZShuZXdNaW1lVHlwZSksIHBsdWdpbiA9IFdU
Rk1vdmUocGx1Z2luKV0gKHVpbnQzMl90IHBsdWdpbkxvYWRQb2xpY3ksIGNvbnN0IFN0cmluZyYg
dW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIFBsdWdpblByb2Nl
c3NTYW5kYm94UG9saWN5IHBsdWdpblByb2Nlc3NTYW5kYm94UG9saWN5ID0gUGx1Z2luUHJvY2Vz
c1NhbmRib3hQb2xpY3k6Ok5vcm1hbDsKICAgICAgICAgc3dpdGNoIChwbHVnaW5Mb2FkUG9saWN5
KSB7CiAgICAgICAgIGNhc2UgUGx1Z2luTW9kdWxlTG9hZE5vcm1hbGx5OgpAQCAtMjc1Miw3ICsy
NzUyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgUGx1Z2luUHJvY2Vzc1R5cGUgcHJvY2Vzc1QKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIHJlcGx5KFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaW5nbGV0b24o
KS5wbHVnaW5Qcm9jZXNzVG9rZW4ocGx1Z2luLCBwcm9jZXNzVHlwZSwgcGx1Z2luUHJvY2Vzc1Nh
bmRib3hQb2xpY3kpLCBuZXdNaW1lVHlwZSwgcGx1Z2luTG9hZFBvbGljeSwgdW5hdmFpbGFiaWxp
dHlEZXNjcmlwdGlvbiwgZmFsc2UpOworICAgICAgICByZXBseShQbHVnaW5Qcm9jZXNzTWFuYWdl
cjo6c2luZ2xldG9uKCkucGx1Z2luUHJvY2Vzc1Rva2VuKHBsdWdpbiwgcGx1Z2luUHJvY2Vzc1Nh
bmRib3hQb2xpY3kpLCBuZXdNaW1lVHlwZSwgcGx1Z2luTG9hZFBvbGljeSwgdW5hdmFpbGFiaWxp
dHlEZXNjcmlwdGlvbiwgZmFsc2UpOwogICAgIH07CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYmRmMTFiYTQ2NjQ3NmMyN2Iz
MmE1YjlmYzlmZWUzNTU3ZjIwYTdkNS4uMzM1NTVkN2FkNDg0NDk1OTFmZDEzOTBlOGY0MWY4MThl
OGI0OTQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTIyNDYs
NyArMjI0Niw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQotICAgIHZvaWQgZmluZFBsdWdpbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJL
aXQ6OlBsdWdpblByb2Nlc3NUeXBlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3Ry
aW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nLCBib29sIGFs
bG93T25seUFwcGxpY2F0aW9uUGx1Z2lucywgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluZFBs
dWdpbkRlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIGZpbmRQbHVnaW4oY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZywgYm9vbCBhbGxvd09ubHlBcHBsaWNh
dGlvblBsdWdpbnMsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmRQbHVnaW5EZWxheWVkUmVw
bHkmJik7CiAjZW5kaWYKIAogI2lmIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGZmYTdkNjFjZWUyNTkz
NzE0ZDI5ODYyNjMyNmI0NjM5ZjNjNDY5OTAuLjNiYzY3YWI1NWQyMTk0ZTJmNDUxN2Q4ODBlNTc2
YTU2YWM4MDQ0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTQ0NCw3ICs0NDQsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJv
eHkgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBGaW5k
UGx1Z2luKFN0cmluZyBtaW1lVHlwZSwgV2ViS2l0OjpQbHVnaW5Qcm9jZXNzVHlwZSBwcm9jZXNz
VHlwZSwgU3RyaW5nIHVybFN0cmluZywgU3RyaW5nIGZyYW1lVVJMU3RyaW5nLCBTdHJpbmcgcGFn
ZVVSTFN0cmluZywgYm9vbCBhbGxvd09ubHlBcHBsaWNhdGlvblBsdWdpbnMpIC0+ICh1aW50NjRf
dCBwbHVnaW5Qcm9jZXNzVG9rZW4sIFN0cmluZyBuZXdNSU1FVHlwZSwgdWludDMyX3QgcGx1Z2lu
TG9hZFBvbGljeSwgU3RyaW5nIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24sIGJvb2wgaXNVbnN1
cHBvcnRlZCkgU3luY2hyb25vdXMKKyAgICBGaW5kUGx1Z2luKFN0cmluZyBtaW1lVHlwZSwgU3Ry
aW5nIHVybFN0cmluZywgU3RyaW5nIGZyYW1lVVJMU3RyaW5nLCBTdHJpbmcgcGFnZVVSTFN0cmlu
ZywgYm9vbCBhbGxvd09ubHlBcHBsaWNhdGlvblBsdWdpbnMpIC0+ICh1aW50NjRfdCBwbHVnaW5Q
cm9jZXNzVG9rZW4sIFN0cmluZyBuZXdNSU1FVHlwZSwgdWludDMyX3QgcGx1Z2luTG9hZFBvbGlj
eSwgU3RyaW5nIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24sIGJvb2wgaXNVbnN1cHBvcnRlZCkg
U3luY2hyb25vdXMKICNlbmRpZgogCiAgICAgRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMmJhZDRhY2VjNWI0
OTViMzQxMGQ1M2IxMjk3Y2FkZjE1MzRhMGYzZC4uYTQ4NDZiZjQyYTU5MzdiNGE2Y2UwNjEwZDQ5
OWMyZGE5YTc3NjU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcApAQCAtNzQ1LDggKzc0NSw2IEBAIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIFdl
YlByb2Nlc3NQb29sOjp3ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQCiAgICAgaWYg
KCFqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGphdmFTY3Jp
cHRDb25maWd1cmF0aW9uRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3Jp
dGUsIGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAg
ICAgICAgCi0gICAgYXV0byBwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMgPSBtX3BsdWdJbkF1
dG9TdGFydFByb3ZpZGVyLmF1dG9TdGFydE9yaWdpbkhhc2hlc0NvcHkod2Vic2l0ZURhdGFTdG9y
ZS5zZXNzaW9uSUQoKSk7Ci0KICAgICByZXR1cm4gV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRl
cnMgewogICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlLnNlc3Npb25JRCgpLAogICAgICAgICBXVEZN
b3ZlKGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpLApAQCAtNzYwLDcgKzc1OCw2IEBAIFdlYlBy
b2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYlByb2Nlc3NQb29sOjp3ZWJQcm9jZXNzRGF0YVN0
b3JlUGFyYW1ldGVycyhXZWJQCiAgICAgICAgIFdURk1vdmUobWVkaWFLZXlTdG9yYWdlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKSwKICAgICAgICAgV1RGTW92ZShqYXZhU2NyaXB0Q29uZmlndXJh
dGlvbkRpcmVjdG9yeSksCiAgICAgICAgIFdURk1vdmUoamF2YVNjcmlwdENvbmZpZ3VyYXRpb25E
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpLAotICAgICAgICBXVEZNb3ZlKHBsdWdJbkF1dG9TdGFy
dE9yaWdpbkhhc2hlcyksCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAg
ICAgICAgd2Vic2l0ZURhdGFTdG9yZS50aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCksCiAg
ICAgICAgIG1fZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24sCkBAIC04MjYsOCArODIzLDYgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzLCBXZWJzaXRlRGEKICAgICBwYXJhbWV0ZXJzLm5vdGlmaWNhdGlvblBlcm1p
c3Npb25zID0gc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPm5vdGlm
aWNhdGlvblBlcm1pc3Npb25zKCk7CiAjZW5kaWYKIAotICAgIHBhcmFtZXRlcnMucGx1Z0luQXV0
b1N0YXJ0T3JpZ2lucyA9IGNvcHlUb1ZlY3RvcihtX3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmF1
dG9TdGFydE9yaWdpbnMoKSk7Ci0KICAgICBwYXJhbWV0ZXJzLm1lbW9yeUNhY2hlRGlzYWJsZWQg
PSBtX21lbW9yeUNhY2hlRGlzYWJsZWQ7CiAgICAgcGFyYW1ldGVycy5hdHRyU3R5bGVFbmFibGVk
ID0gbV9jb25maWd1cmF0aW9uLT5hdHRyU3R5bGVFbmFibGVkKCk7CiAKQEAgLTgzOSwxMCArODM0
LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MoV2ViUHJv
Y2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWJzaXRlRGEKICAgICBzZXJ2aWNlQ29udHJvbGxlci5yZWZy
ZXNoRXhpc3RpbmdTZXJ2aWNlcygpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKLSAgICBwYXJhbWV0ZXJzLnBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyA9IG1fcGx1
Z2luTG9hZENsaWVudFBvbGljaWVzOwotI2VuZGlmCi0KICNpZiBPUyhMSU5VWCkKICAgICBwYXJh
bWV0ZXJzLnNob3VsZEVuYWJsZU1lbW9yeVByZXNzdXJlUmVsaWVmTG9nZ2luZyA9IHRydWU7CiAj
ZW5kaWYKQEAgLTE2NTksNTMgKzE2NTAsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRKYXZh
U2NyaXB0R2FyYmFnZUNvbGxlY3RvclRpbWVyRW5hYmxlZChib29sIGZsYWcpCiAgICAgc2VuZFRv
QWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRKYXZhU2NyaXB0R2FyYmFnZUNv
bGxlY3RvclRpbWVyRW5hYmxlZChmbGFnKSk7CiB9CiAKLVJlZjxBUEk6OkRpY3Rpb25hcnk+IFdl
YlByb2Nlc3NQb29sOjpwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoKSBjb25zdAotewotICAg
IHJldHVybiBtX3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmF1dG9TdGFydE9yaWdpbnNUYWJsZUNv
cHkoKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2lu
SGFzaGVzKEFQSTo6RGljdGlvbmFyeSYgZGljdGlvbmFyeSkKLXsKLSAgICBtX3BsdWdJbkF1dG9T
dGFydFByb3ZpZGVyLnNldEF1dG9TdGFydE9yaWdpbnNUYWJsZShkaWN0aW9uYXJ5KTsKLX0KLQot
dm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2lucyhBUEk6OkFycmF5
JiBhcnJheSkKLXsKLSAgICBtX3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLnNldEF1dG9TdGFydE9y
aWdpbnNBcnJheShhcnJheSk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFBsdWdJbkF1
dG9TdGFydE9yaWdpbnNGaWx0ZXJpbmdPdXRFbnRyaWVzQWRkZWRBZnRlclRpbWUoQVBJOjpEaWN0
aW9uYXJ5JiBkaWN0aW9uYXJ5LCBXYWxsVGltZSB0aW1lKQotewotICAgIG1fcGx1Z0luQXV0b1N0
YXJ0UHJvdmlkZXIuc2V0QXV0b1N0YXJ0T3JpZ2luc0ZpbHRlcmluZ091dEVudHJpZXNBZGRlZEFm
dGVyVGltZShkaWN0aW9uYXJ5LCB0aW1lKTsKLX0KLQotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShX
ZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5IHBvbGljeSwgY29uc3QgU3RyaW5nJiBob3N0
LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0
cmluZykKLXsKLSAgICBhdXRvJiBwb2xpY2llc0Zvckhvc3QgPSBtX3BsdWdpbkxvYWRDbGllbnRQ
b2xpY2llcy5lbnN1cmUoaG9zdCwgW10gewotICAgICAgICByZXR1cm4gSGFzaE1hcDxTdHJpbmcs
IEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5Pj4oKTsKLSAg
ICB9KS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgYXV0byYgdmVyc2lvbnNUb1BvbGljaWVzID0gcG9s
aWNpZXNGb3JIb3N0LmVuc3VyZShidW5kbGVJZGVudGlmaWVyLCBbXSB7Ci0gICAgICAgIHJldHVy
biBIYXNoTWFwPFN0cmluZywgV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeT4oKTsKLSAg
ICB9KS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgdmVyc2lvbnNUb1BvbGljaWVzLnNldCh2ZXJzaW9u
U3RyaW5nLCBwb2xpY3kpOwotCi0gICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpTZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KHBvbGljeSwgaG9zdCwgYnVuZGxlSWRl
bnRpZmllciwgdmVyc2lvblN0cmluZykpOwotfQotCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNl
dFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyhIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcs
IEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5Pj4+JiYgcGx1
Z2luTG9hZENsaWVudFBvbGljaWVzKQotewotICAgIG1fcGx1Z2luTG9hZENsaWVudFBvbGljaWVz
ID0gV1RGTW92ZShwbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMpOwotICAgIHNlbmRUb0FsbFByb2Nl
c3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMo
bV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMpKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6
Y2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpCi17Ci0gICAgbV9wbHVnaW5Mb2FkQ2xpZW50UG9s
aWNpZXMuY2xlYXIoKTsKLSAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OkNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6YWRkU3VwcG9ydGVkUGx1Z2luKFN0cmluZyYmIG1hdGNoaW5nRG9tYWluLCBT
dHJpbmcmJiBuYW1lLCBIYXNoU2V0PFN0cmluZz4mJiBtaW1lVHlwZXMsIEhhc2hTZXQ8U3RyaW5n
PiBleHRlbnNpb25zKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggOWUwMmI0NmUzODQ5NjIxMTQ4
NGJiYzk2ZDk1N2JhZGM2MTQ5Mzc0NS4uZWRiMjc1M2M2ODIyMzkyNDc1MTEwYjZmMGUzMjYwZGVk
YjY5MjViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0z
NCw3ICszNCw2IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgotI2lu
Y2x1ZGUgIlBsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb1N0
b3JlLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlci5oIgogI2luY2x1ZGUgIlZpc2l0ZWRM
aW5rU3RvcmUuaCIKQEAgLTIyNSwxMSArMjI0LDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVmcmVz
aFBsdWdpbnMoKTsKIAogICAgIFBsdWdpbkluZm9TdG9yZSYgcGx1Z2luSW5mb1N0b3JlKCkgeyBy
ZXR1cm4gbV9wbHVnaW5JbmZvU3RvcmU7IH0KLQotICAgIHZvaWQgc2V0UGx1Z2luTG9hZENsaWVu
dFBvbGljeShXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5LCBjb25zdCBTdHJpbmcmIGhv
c3QsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9u
U3RyaW5nKTsKLSAgICB2b2lkIHJlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzKEhhc2hNYXA8
U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6OlBsdWdpbkxv
YWRDbGllbnRQb2xpY3k+Pj4mJik7Ci0gICAgdm9pZCBjbGVhclBsdWdpbkNsaWVudFBvbGljaWVz
KCk7Ci0gICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0
cmluZywgV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeT4+PiYgcGx1Z2luTG9hZENsaWVu
dFBvbGljaWVzKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXM7IH0K
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dT
RVJWRVJfQkxPQ0tJTkcpCkBAIC0zNDgsMTEgKzM0Miw2IEBAIHB1YmxpYzoKICNlbmRpZgogICAg
IHZvaWQgdGV4dENoZWNrZXJTdGF0ZUNoYW5nZWQoKTsKIAotICAgIFJlZjxBUEk6OkRpY3Rpb25h
cnk+IHBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcygpIGNvbnN0OwotICAgIHZvaWQgc2V0UGx1
Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKEFQSTo6RGljdGlvbmFyeSYpOwotICAgIHZvaWQgc2V0
UGx1Z0luQXV0b1N0YXJ0T3JpZ2lucyhBUEk6OkFycmF5Jik7Ci0gICAgdm9pZCBzZXRQbHVnSW5B
dXRvU3RhcnRPcmlnaW5zRmlsdGVyaW5nT3V0RW50cmllc0FkZGVkQWZ0ZXJUaW1lKEFQSTo6RGlj
dGlvbmFyeSYsIFdhbGxUaW1lKTsKLQogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICB2b2lk
IGdwdVByb2Nlc3NDcmFzaGVkKFByb2Nlc3NJRCk7CiAgICAgdm9pZCByZXNldEdQVVByb2Nlc3ND
cmFzaENvdW50KCk7CkBAIC00ODksOCArNDc4LDYgQEAgcHVibGljOgogICAgIAogICAgIFdlYlBy
b2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIHdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzKFdl
YlByb2Nlc3NQcm94eSYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKICAgICAKLSAgICBQbHVnSW5BdXRv
U3RhcnRQcm92aWRlciYgcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIoKSB7IHJldHVybiBtX3BsdWdJ
bkF1dG9TdGFydFByb3ZpZGVyOyB9Ci0KICAgICBzdGF0aWMgdm9pZCBzZXRVc2VTZXBhcmF0ZVNl
cnZpY2VXb3JrZXJQcm9jZXNzKGJvb2wpOwogICAgIHN0YXRpYyBib29sIHVzZVNlcGFyYXRlU2Vy
dmljZVdvcmtlclByb2Nlc3MoKSB7IHJldHVybiBzX3VzZVNlcGFyYXRlU2VydmljZVdvcmtlclBy
b2Nlc3M7IH0KIApAQCAtNjIyLDggKzYwOSw2IEBAIHByaXZhdGU6CiAgICAgUmVmPFZpc2l0ZWRM
aW5rU3RvcmU+IG1fdmlzaXRlZExpbmtTdG9yZTsKICAgICBib29sIG1fdmlzaXRlZExpbmtzUG9w
dWxhdGVkIHsgZmFsc2UgfTsKIAotICAgIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyIG1fcGx1Z0lu
QXV0b1N0YXJ0UHJvdmlkZXIgeyB0aGlzIH07Ci0gICAgICAgIAogICAgIEhhc2hTZXQ8U3RyaW5n
PiBtX3NjaGVtZXNUb1JlZ2lzdGVyQXNFbXB0eURvY3VtZW50OwogICAgIEhhc2hTZXQ8U3RyaW5n
PiBtX3NjaGVtZXNUb1NldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3I7CiAgICAgSGFzaFNl
dDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0Rpc3BsYXlJc29sYXRlZDsKQEAgLTcwNSwx
MCArNjkwLDYgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX2VuY29k
ZWRDb250ZW50RXh0ZW5zaW9uczsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCi0gICAgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmlu
ZywgV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeT4+PiBtX3BsdWdpbkxvYWRDbGllbnRQ
b2xpY2llczsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAgICAgSGFzaFNldDxXZWJQ
cm9jZXNzUHJveHkqPiBtX3Byb2Nlc3Nlc1VzaW5nR2FtZXBhZHM7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGE5ZjgyODJiZTU0MDEw
ODljMjk0MjdiMDg4NjA3N2E0ODY5NGM3ODEuLjliZjNlYTNlZDU2NjQ0NTYzMzk1MmQ3OGUyMTU2
NGVhYTMyMjEwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcApAQCAtMTY5OSwxOSArMTY5OSw2IEBAIFBBTDo6U2Vzc2lvbklEIFdlYlByb2Nlc3NQcm94
eTo6c2Vzc2lvbklEKCkgY29uc3QKICAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNz
aW9uSUQoKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZFBsdWdJbkF1dG9TdGFydE9y
aWdpbkhhc2goU3RyaW5nJiYgcGFnZU9yaWdpbiwgdWludDMyX3QgaGFzaCkKLXsKLSAgICBNRVNT
QUdFX0NIRUNLKFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjpBdXRvU3RhcnRUYWJsZTo6aXNWYWxp
ZEtleShwYWdlT3JpZ2luKSk7Ci0gICAgTUVTU0FHRV9DSEVDSyhQbHVnSW5BdXRvU3RhcnRQcm92
aWRlcjo6SGFzaFRvT3JpZ2luTWFwOjppc1ZhbGlkS2V5KGhhc2gpKTsKLSAgICBwcm9jZXNzUG9v
bCgpLnBsdWdJbkF1dG9TdGFydFByb3ZpZGVyKCkuYWRkQXV0b1N0YXJ0T3JpZ2luSGFzaChXVEZN
b3ZlKHBhZ2VPcmlnaW4pLCBoYXNoLCBzZXNzaW9uSUQoKSk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHVpbnQzMl90IGhhc2gpCi17
Ci0gICAgTUVTU0FHRV9DSEVDSyhQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6SGFzaFRvT3JpZ2lu
TWFwOjppc1ZhbGlkS2V5KGhhc2gpKTsKLSAgICBwcm9jZXNzUG9vbCgpLnBsdWdJbkF1dG9TdGFy
dFByb3ZpZGVyKCkuZGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihoYXNoLCBzZXNzaW9uSUQoKSk7
Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlvblNlcnZl
cihTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBh
dXRvIHNwZWVjaFJlY29nbml0aW9uU2VydmVyID0gbV9zcGVlY2hSZWNvZ25pdGlvblNlcnZlck1h
cC5hZGQoaWRlbnRpZmllciwgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCmluZGV4IDUwYmNiOWNhYjkwNDA2MDhlMjQ3NTVkYjc2MzBhNGFkYTZlNmE4
ZjUuLjllMGU1YTBkNGFmZjVmYWQ4ZmZmNWY0NzczNTRiZDg4OGU4ZGJlZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC00NDMsOCArNDQzLDYgQEAgcHJp
dmF0ZToKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICB2b2lkIGdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgTWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHkm
Jik7CiAjZW5kaWYKLSAgICB2b2lkIGFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2goU3RyaW5n
JiYgcGFnZU9yaWdpbiwgdWludDMyX3QgaGFzaCk7Ci0gICAgdm9pZCBwbHVnSW5EaWRSZWNlaXZl
VXNlckludGVyYWN0aW9uKHVpbnQzMl90IGhhc2gpOwogICAgIAogICAgIHZvaWQgZ2V0TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseSYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDllODk3NjNlOGMx
YWUwZTIzOGViZDVlZmQ1YmJjNjBkNjNkMTE1NjMuLjkwNjM5YzJhY2UyZDA1MWQwMzQ5ZmI1MjI2
YWI2MTYxYWZhODNmNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTc2LDEwICs3Niw2IEBAIG1lc3NhZ2VzIC0+IFdl
YlByb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU3RvcERpc3BsYXlMaW5rKFdlYktp
dDo6RGlzcGxheUxpbmtPYnNlcnZlcklEIG9ic2VydmVySUQsIHVpbnQzMl90IGRpc3BsYXlJRCkK
ICNlbmRpZgogCi0gICAgIyBQbHVnLWluIG1lc3NhZ2VzLgotICAgIHZvaWQgQWRkUGx1Z0luQXV0
b1N0YXJ0T3JpZ2luSGFzaChTdHJpbmcgcGFnZU9yaWdpbiwgdWludDMyX3QgaGFzaCkKLSAgICB2
b2lkIFBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24odWludDMyX3QgaGFzaCkKLQogI2lm
IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIFNlbmRNZXNzYWdlVG9XZWJDb250
ZXh0KHN0cnVjdCBXZWJLaXQ6OlVzZXJNZXNzYWdlIHVzZXJNZXNzYWdlKQogICAgIFNlbmRNZXNz
YWdlVG9XZWJDb250ZXh0V2l0aFJlcGx5KHN0cnVjdCBXZWJLaXQ6OlVzZXJNZXNzYWdlIHVzZXJN
ZXNzYWdlKSAtPiAoc3RydWN0IFdlYktpdDo6VXNlck1lc3NhZ2UgcmVwbHlNZXNzYWdlKSBBc3lu
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMjhmZTg4MWMxMmY4NjVjNTQ1ZGY0ZjU5NmQ4YzJiNzM2NGRkNjczYi4uOGE3Njk4YmI3M2Jh
MTk3M2UxMmJhYjc2MmJiNDM5YzY2Mzc1NmIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03OTUsMTQgKzc5NSwxMiBAQAogCQkzMUEy
RUM1NjE0ODk5QzA5MDA4MTBENzEgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTJFQzUzMTQ4
OTk4MjUwMDgxMEQ3MSAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oICovOyB9Owog
CQkzMUEyRUM3NDE0OEQ1OUNBMDA4MTBENzEgLyogV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFB
MkVDNzIxNDhENTlCQjAwODEwRDcxIC8qIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMUE1
MDVGQTE2ODAwMjU1MDBBOTMwRUIgLyogV2ViQ29udGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBNTA1RjgxNjgwMDI1NTAwQTkzMEVC
IC8qIFdlYkNvbnRleHRDbGllbnQuaCAqLzsgfTsKLQkJMzFBNjdFMEQxNjVCMkE5OTAwNkNCQTY2
IC8qIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMUE2N0UwQjE2NUIyQTk5MDA2Q0JBNjYgLyogUGx1Z0luQXV0
b1N0YXJ0UHJvdmlkZXIuaCAqLzsgfTsKIAkJMzFCMzYyOEYyMTQxRUE1RDAwN0JGQTUzIC8qIEFQ
SUludGVybmFsRGVidWdGZWF0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMUIzNjI4RTIxNDFFQTREMDA3QkZBNTMgLyogQVBJSW50ZXJuYWxEZWJ1
Z0ZlYXR1cmUuaCAqLzsgfTsKIAkJMzFCMzYyOTUyMTQxRUJDRDAwN0JGQTUzIC8qIF9XS0ludGVy
bmFsRGVidWdGZWF0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMUIzNjI5NDIxNDFFQkFEMDA3QkZBNTMgLyogX1dLSW50ZXJuYWxEZWJ1Z0ZlYXR1
cmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkz
MUIzNjI5NzIxNDFFQkQ5MDA3QkZBNTMgLyogX1dLSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFCMzYy
OTMyMTQxRUJBRDAwN0JGQTUzIC8qIF9XS0ludGVybmFsRGVidWdGZWF0dXJlSW50ZXJuYWwuaCAq
LzsgfTsKIAkJMzFCMzYyOTkyMTQxRjZFODAwN0JGQTUzIC8qIFdlYlByZWZlcmVuY2VzSW50ZXJu
YWxEZWJ1Z0ZlYXR1cmVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxQjM2Mjk4MjE0MUY2RTAwMDdCRkE1MyAvKiBXZWJQcmVmZXJlbmNlc0ludGVy
bmFsRGVidWdGZWF0dXJlcy5jcHAgKi87IH07CiAJCTMxQkE5MjREMTQ4ODMxMjYwMDYyRURCNSAv
KiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQkE5MjQ4MTQ4ODMwODEwMDYyRURC
NSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJ
MzFCQTkyNEUxNDg4MzEyNjAwNjJFREI1IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFCQTky
NDkxNDg4MzA4MTAwNjJFREI1IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oICov
OyB9OwotCQkzMUQ1OTI5RjE2NkUwNjAwMDBFNkJGMDIgLyogV2ViUGx1Z0luQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUQ1OTI5RDE2NkUw
NjAwMDBFNkJGMDIgLyogV2ViUGx1Z0luQ2xpZW50LmggKi87IH07CiAJCTMxRDc1NUMxMUQ5MUI4
MTUwMDg0M0JEMSAvKiBXS1RleHRDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMTQ4ODhGRjFEOTFCMTFEMDAzNzcwNDIgLyogV0tUZXh0Q2hl
Y2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTMxRjA2MEUxMTY1NDMxODUwMEYzMjgxQyAvKiBOZXR3b3JrU29ja2V0Q2hhbm5lbE1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMUYwNjBERDE2NTQzMTc1MDBGMzI4MUMgLyogTmV0d29ya1NvY2tldENoYW5uZWxNZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OwogCQkzMzA5MzQ0NzEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29v
a2llTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMzA5MzQ0MzEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29va2ll
TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CkBAIC0zMzExLDggKzMzMDksNiBAQAog
CQkzMUEyRUM3NTE0OEQ2NUJCMDA4MTBENzEgLyogV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS05vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzFBNTA1RjcxNjgwMDI1NTAwQTkzMEVCIC8qIFdlYkNvbnRleHRDbGllbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29udGV4dENsaWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxQTUwNUY4MTY4MDAyNTUwMEE5MzBFQiAvKiBXZWJD
b250ZXh0Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbnRl
eHRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzFBNjdFMEExNjVCMkE5
OTAwNkNCQTY2IC8qIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzFBNjdFMEIxNjVCMkE5OTAwNkNCQTY2IC8qIFBsdWdJ
bkF1dG9TdGFydFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBs
dWdJbkF1dG9TdGFydFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMx
QUJBNzlDMjE1QUY5RTAwMEM5MEUzMSAvKiBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzFBQkE3OUQyMTVBRjlFMDAwQzkwRTMxIC8qIEhpZ2hQZXJmb3JtYW5j
ZUdQVU1hbmFnZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBIaWdoUGVyZm9ybWFuY2VHUFVN
YW5hZ2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUIzNjI4RTIxNDFFQTRE
MDA3QkZBNTMgLyogQVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJ
SW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMz
MjMsOCArMzMxOSw2IEBACiAJCTMxQjM2Mjk4MjE0MUY2RTAwMDdCRkE1MyAvKiBXZWJQcmVmZXJl
bmNlc0ludGVybmFsRGVidWdGZWF0dXJlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBXZWJQcmVmZXJlbmNlc0ludGVybmFsRGVidWdGZWF0dXJlcy5jcHA7IHBhdGgg
PSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1
cmVzLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMzFCQTkyNDgx
NDg4MzA4MTAwNjJFREI1IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViTm90aWZpY2F0aW9u
TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQy
L1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkzMUJBOTI0OTE0ODgzMDgxMDA2MkVEQjUgLyogV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaDsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJMzFENTkyOUMxNjZFMDVGRjAwRTZCRjAyIC8q
IFdlYlBsdWdJbkNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJQbHVnSW5DbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMUQ1
OTI5RDE2NkUwNjAwMDBFNkJGMDIgLyogV2ViUGx1Z0luQ2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBsdWdJbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzMUVBMjVEMDEzNEY3OEIyMDA1QjE0NTIgLyogTmF0aXZlV2ViTW91c2VFdmVu
dE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5hdGl2ZVdlYk1vdXNlRXZlbnRNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxRUEyNUQzMTM0Rjc4RDYwMDVCMTQ1MiAv
KiBOYXRpdmVXZWJNb3VzZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5hdGl2ZVdlYk1vdXNlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFG
MDYwREQxNjU0MzE3NTAwRjMyODFDIC8qIE5ldHdvcmtTb2NrZXRDaGFubmVsTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtTb2NrZXRDaGFubmVsTWVzc2FnZVJl
Y2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvTmV0d29ya1NvY2tldENo
YW5uZWxNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwpAQCAtNjYwMSw4ICs2NTk1LDYgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCiAJCQkJMUFFRkNDMEQxMUQwMUY0MTAwODIxOUQzIC8qIG1hYyAqLywKLQkJCQkzMUE2
N0UwQTE2NUIyQTk5MDA2Q0JBNjYgLyogUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuY3BwICovLAot
CQkJCTMxQTY3RTBCMTY1QjJBOTkwMDZDQkE2NiAvKiBQbHVnSW5BdXRvU3RhcnRQcm92aWRlci5o
ICovLAogCQkJCTFBRUZDQzExMTFEMDFGOTYwMDgyMTlEMyAvKiBQbHVnaW5JbmZvU3RvcmUuY3Bw
ICovLAogCQkJCTFBRUZDQzEwMTFEMDFGOTYwMDgyMTlEMyAvKiBQbHVnaW5JbmZvU3RvcmUuaCAq
LywKIAkJCQkxQTBFQzYwMjEyNEE5RjJDMDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc01hbmFnZXIu
Y3BwICovLApAQCAtOTA5Nyw4ICs5MDg5LDYgQEAKIAkJCQkwRjg1MEZFNTFFRDdDMzlGMDBGQjc3
QTcgLyogV2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50LmggKi8sCiAJCQkJMUEzRTczNjAxMUND
MjY1OTAwN0JENTM5IC8qIFdlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgKi8sCiAJCQkJMUEzRTcz
NUYxMUNDMjY1OTAwN0JENTM5IC8qIFdlYlBsYXRmb3JtU3RyYXRlZ2llcy5oICovLAotCQkJCTMx
RDU5MjlDMTY2RTA1RkYwMEU2QkYwMiAvKiBXZWJQbHVnSW5DbGllbnQuY3BwICovLAotCQkJCTMx
RDU5MjlEMTY2RTA2MDAwMEU2QkYwMiAvKiBXZWJQbHVnSW5DbGllbnQuaCAqLywKIAkJCQlEM0I5
NDg0MjExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmNwcCAqLywKIAkJCQlEM0I5NDg0
MzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggKi8sCiAJCQkJMUExRTA5MzExODg2
MUQzODAwRDJEQzQ5IC8qIFdlYlByb2dyZXNzVHJhY2tlckNsaWVudC5jcHAgKi8sCkBAIC0xMTMw
NCw3ICsxMTI5NCw2IEBACiAJCQkJQ0RBMjlBMjAxQ0JFQjVGQjAwOTAxQ0NGIC8qIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBMjlBMkIxQ0JFQjY3
QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTZGQjdEMzExRTY1MUUyMDBEQjEzNzEgLyogUGx1Z2luLmggaW4gSGVh
ZGVycyAqLywKLQkJCQkzMUE2N0UwRDE2NUIyQTk5MDA2Q0JBNjYgLyogUGx1Z0luQXV0b1N0YXJ0
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOUZCQThEMTNGRjA0RTYwMERFRUQ2NyAv
KiBQbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQTU2
RjI5MTFFOTJCQzgwMDYxQjg4MiAvKiBQbHVnaW5Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQThFRjRDQjEyNTI0MDM3MDBGNzA2N0YgLyogUGx1Z2luQ29udHJvbGxlclByb3h5Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTExNjYwLDcgKzExNjQ5LDYgQEAKIAkJCQkxQUIxRjc5OTFEMUIz
NjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY4NTBGRTcxRUQ3QzM5RjAwRkI3N0E3IC8qIFdlYlBlcmZvcm1hbmNl
TG9nZ2luZ0NsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzRTczNjExMUNDMjY1OTAwN0JE
NTM5IC8qIFdlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzFENTky
OUYxNjZFMDYwMDAwRTZCRjAyIC8qIFdlYlBsdWdJbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM1NzQ0RjAxMjYzOEZCMzAwNkYwRjEyIC8qIFdlYlBvcHVwSXRlbS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRDNCOTQ4NDcxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM1NzRFNjMxMjY3RDA4MDAwNkYwRjEyIC8qIFdlYlBvcHVwTWVudVBy
b3h5LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50
LmgKaW5kZXggNjI3ODQ0YjlhNGE2YmQ1ODNjYjUzZmU3NDU2YTM3NGRkZDA2N2U4NS4uMTMyZTk0
YTI4Y2FhMGNkN2QwOWYyODEwMDQ1ODUwMGI5Yjc4OGUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZVVJQ2xpZW50LmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJBUElJbmpl
Y3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oIgogI2luY2x1ZGUgIldLQnVuZGxlUGFnZS5oIgogI2lu
Y2x1ZGUgIldlYkV2ZW50LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbi5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBBUEkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL1Bs
dWdpblByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvbWFjL1BsdWdpblByb3h5TWFjLm1tCmluZGV4IDM1MTNiMDM4NDRlYzAwMDAxY2Q4ZjQ3NWM2
NDZiMDZlOTAwNGUzNDIuLjcyZTgxYzA5Njg4NWU0NGZkN2MyMWIwOTU1YTgyMTU1MjkyYTU5YmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21h
Yy9QbHVnaW5Qcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9tYWMvUGx1Z2luUHJveHlNYWMubW0KQEAgLTUzLDE2ICs1Myw2IEBAIFBsYXRm
b3JtTGF5ZXIqIFBsdWdpblByb3h5OjpwbHVnaW5MYXllcigpCiAgICAgICAgIC8vIHNvIHRoZSBj
b29yZGluYXRlIHN5c3RlbSB3aWxsIG1hdGNoIHRoZSBldmVudCBjb29yZGluYXRlIHN5c3RlbS4K
ICAgICAgICAgbV9wbHVnaW5MYXllciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7
CiAgICAgICAgIFttX3BsdWdpbkxheWVyIHNldEdlb21ldHJ5RmxpcHBlZDpZRVNdOwotCi0gICAg
ICAgIGlmIChtX2lzUmVzdGFydGVkUHJvY2VzcykgewotICAgICAgICAgICAgQ0FCYXNpY0FuaW1h
dGlvbiAqZmFkZUluQW5pbWF0aW9uID0gW0NBQmFzaWNBbmltYXRpb24gYW5pbWF0aW9uV2l0aEtl
eVBhdGg6QCJvcGFjaXR5Il07Ci0gICAgICAgICAgICBmYWRlSW5BbmltYXRpb24uZnJvbVZhbHVl
ID0gW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDowXTsKLSAgICAgICAgICAgIGZhZGVJbkFuaW1h
dGlvbi50b1ZhbHVlID0gW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDoxXTsKLSAgICAgICAgICAg
IGZhZGVJbkFuaW1hdGlvbi5kdXJhdGlvbiA9IGZhZGVJbkR1cmF0aW9uOwotICAgICAgICAgICAg
ZmFkZUluQW5pbWF0aW9uLnJlbW92ZWRPbkNvbXBsZXRpb24gPSBOTzsKLSAgICAgICAgICAgIFtt
X3BsdWdpbkxheWVyIGFkZEFuaW1hdGlvbjpmYWRlSW5BbmltYXRpb24gZm9yS2V5OkAicmVzdGFy
dGVkLXBsdWdpbi1mYWRlLWluIl07Ci0gICAgICAgIH0KLQogICAgICAgICBtYWtlUmVuZGVyTGF5
ZXIobV9wbHVnaW5MYXllci5nZXQoKSwgbV9yZW1vdGVMYXllckNsaWVudElEKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApp
bmRleCAzYzZmNTIzMDRiOTVmYWJjZGI3MzgxMmY3OThmOWUxZDM3NDIzOTQ0Li5lYTUzNTk2MDEw
OWZlZTZkYzQ4MDVjZjY4OTEyNzk4ZWU5YWI2ZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC0yMzAsNyArMjMwLDYgQEAgcHJp
dmF0ZToKIAogICAgIGJvb2wgc2hvdWxkQWxsb3dTY3JpcHRpbmcoKSBmaW5hbCB7IHJldHVybiBm
YWxzZTsgfQogICAgIGJvb2wgc2hvdWxkQWxsb3dOYXZpZ2F0aW9uRnJvbURyYWdzKCkgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQotICAgIGJvb2wgc2hvdWxkQWx3YXlzQXV0b1N0YXJ0KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgLy8gU2Nyb2xsYWJsZUFyZWEgZnVuY3Rpb25z
LgogICAgIGJvb2wgaXNQREZQbHVnaW4oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCmluZGV4IGM2ZDY0YmU0MTM4
ZGFlZDQ0MDczMGQwYTQ4MzQwNmNkMWI4M2NiOGEuLmRjNTU3OWZkMzE5NTI0OGNkZWU5YjAxNTZh
Zjc4MDk3ZjhlYWFmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5oCkBAIC0yODUsOCArMjg1LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpJ
bnRQb2ludCBjb252ZXJ0VG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnRJ
bkxvY2FsQ29vcmRpbmF0ZXMpIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIHNob3VsZEFsd2F5
c0F1dG9TdGFydCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KICAgICB2aXJ0dWFsIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCA9IDA7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggNzI3NGU2ZjA3NDdiN2EzNDk3ZTQwYWYy
MTUwZGQyMjhkOWU1ZGQ1NC4uYmZmODA0YjM4ODVhYTU4YmE0NmMxZjIzODcwYTYwOWUzMzkzOWFj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmNwcApAQCAtNTYsMjIgKzU2LDE1IEBAIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVBsdWdpbklu
c3RhbmNlSUQoKQogICAgIHJldHVybiArK3VuaXF1ZVBsdWdpbkluc3RhbmNlSUQ7CiB9CiAKLVJl
ZjxQbHVnaW5Qcm94eT4gUGx1Z2luUHJveHk6OmNyZWF0ZSh1aW50NjRfdCBwbHVnaW5Qcm9jZXNz
VG9rZW4sIGJvb2wgaXNSZXN0YXJ0ZWRQcm9jZXNzKQorUmVmPFBsdWdpblByb3h5PiBQbHVnaW5Q
cm94eTo6Y3JlYXRlKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbikKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBQbHVnaW5Qcm94eShwbHVnaW5Qcm9jZXNzVG9rZW4sIGlzUmVzdGFydGVk
UHJvY2VzcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsdWdpblByb3h5KHBsdWdpblBy
b2Nlc3NUb2tlbikpOwogfQogCi1QbHVnaW5Qcm94eTo6UGx1Z2luUHJveHkodWludDY0X3QgcGx1
Z2luUHJvY2Vzc1Rva2VuLCBib29sIGlzUmVzdGFydGVkUHJvY2VzcykKK1BsdWdpblByb3h5OjpQ
bHVnaW5Qcm94eSh1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4pCiAgICAgOiBQbHVnaW4oUGx1
Z2luUHJveHlUeXBlKQogICAgICwgbV9wbHVnaW5Qcm9jZXNzVG9rZW4ocGx1Z2luUHJvY2Vzc1Rv
a2VuKQogICAgICwgbV9wbHVnaW5JbnN0YW5jZUlEKGdlbmVyYXRlUGx1Z2luSW5zdGFuY2VJRCgp
KQotICAgICwgbV9wbHVnaW5CYWNraW5nU3RvcmVDb250YWluc1ZhbGlkRGF0YShmYWxzZSkKLSAg
ICAsIG1faXNTdGFydGVkKGZhbHNlKQotICAgICwgbV93YWl0aW5nRm9yUGFpbnRJblJlc3BvbnNl
VG9VcGRhdGUoZmFsc2UpCi0gICAgLCBtX3dhbnRzV2hlZWxFdmVudHMoZmFsc2UpCi0gICAgLCBt
X3JlbW90ZUxheWVyQ2xpZW50SUQoMCkKLSAgICAsIG1fd2FpdGluZ09uQXN5bmNocm9ub3VzSW5p
dGlhbGl6YXRpb24oZmFsc2UpCi0gICAgLCBtX2lzUmVzdGFydGVkUHJvY2Vzcyhpc1Jlc3RhcnRl
ZFByb2Nlc3MpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm94eS5oCmluZGV4IDkxMzlhOTI3ZGFiNzIzMTc2Yzk1NGMyNjA1NjBkMTkzM2M1ODAw
NzMuLmE2M2Q3NDgwNWJmZTg2YTMzNGI2MWViNGRmNGY1YTU2NjQ3OWEyNGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaApAQCAtNTUsNyArNTUs
NyBAQCBzdHJ1Y3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBQbHVnaW5Qcm94
eSA6IHB1YmxpYyBQbHVnaW4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UGx1Z2luUHJveHk+
IGNyZWF0ZSh1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGJvb2wgaXNSZXN0YXJ0ZWRQcm9j
ZXNzKTsKKyAgICBzdGF0aWMgUmVmPFBsdWdpblByb3h5PiBjcmVhdGUodWludDY0X3QgcGx1Z2lu
UHJvY2Vzc1Rva2VuKTsKICAgICB+UGx1Z2luUHJveHkoKTsKIAogICAgIHVpbnQ2NF90IHBsdWdp
bkluc3RhbmNlSUQoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbkluc3RhbmNlSUQ7IH0KQEAgLTY1
LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNQbHVnaW5Qcm94eU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBQbHVnaW5Qcm94eSh1aW50
NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGJvb2wgaXNSZXN0YXJ0ZWRQcm9jZXNzKTsKKyAgICBl
eHBsaWNpdCBQbHVnaW5Qcm94eSh1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4pOwogCiAgICAg
Ly8gUGx1Z2luCiAgICAgYm9vbCBpbml0aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMmKSBvdmVycmlk
ZTsKQEAgLTE4NCwxMCArMTg0LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDcmVhdGVQbHVn
aW5JbnRlcm5hbChib29sIHdhbnRzV2hlZWxFdmVudHMsIHVpbnQzMl90IHJlbW90ZUxheWVyQ2xp
ZW50SUQpOwogICAgIHZvaWQgZGlkRmFpbFRvQ3JlYXRlUGx1Z2luSW50ZXJuYWwoKTsKIAotICAg
IHVpbnQ2NF90IG1fcGx1Z2luUHJvY2Vzc1Rva2VuOworICAgIHVpbnQ2NF90IG1fcGx1Z2luUHJv
Y2Vzc1Rva2VuIHsgMCB9OwogCiAgICAgUmVmUHRyPFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPiBt
X2Nvbm5lY3Rpb247Ci0gICAgdWludDY0X3QgbV9wbHVnaW5JbnN0YW5jZUlEOworICAgIHVpbnQ2
NF90IG1fcGx1Z2luSW5zdGFuY2VJRCB7IDAgfTsKIAogICAgIFdlYkNvcmU6OkludFNpemUgbV9w
bHVnaW5TaXplOwogCkBAIC0yMDUsMjcgKzIwNSwyNSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IG1fcGx1Z2luQmFja2luZ1N0b3JlOwogICAgIAogICAgIC8vIFdoZXRo
ZXIgYWxsIG9mIHRoZSBwbHVnLWluIGJhY2tpbmcgc3RvcmUgY29udGFpbnMgdmFsaWQgZGF0YS4K
LSAgICBib29sIG1fcGx1Z2luQmFja2luZ1N0b3JlQ29udGFpbnNWYWxpZERhdGE7CisgICAgYm9v
bCBtX3BsdWdpbkJhY2tpbmdTdG9yZUNvbnRhaW5zVmFsaWREYXRhIHsgZmFsc2UgfTsKIAotICAg
IGJvb2wgbV9pc1N0YXJ0ZWQ7CisgICAgYm9vbCBtX2lzU3RhcnRlZCB7IGZhbHNlIH07CiAKICAg
ICAvLyBXaGV0aGVyIHdlJ3JlIGNhbGxlZCBpbnZhbGlkYXRlIGluIHJlc3BvbnNlIHRvIGFuIHVw
ZGF0ZSBjYWxsLCBhbmQgYXJlIG5vdyB3YWl0aW5nIGZvciBhIHBhaW50IGNhbGwuCi0gICAgYm9v
bCBtX3dhaXRpbmdGb3JQYWludEluUmVzcG9uc2VUb1VwZGF0ZTsKKyAgICBib29sIG1fd2FpdGlu
Z0ZvclBhaW50SW5SZXNwb25zZVRvVXBkYXRlIHsgZmFsc2UgfTsKIAogICAgIC8vIFdoZXRoZXIg
d2Ugc2hvdWxkIHNlbmQgd2hlZWwgZXZlbnRzIHRvIHRoaXMgcGx1Zy1pbiBvciBub3QuCi0gICAg
Ym9vbCBtX3dhbnRzV2hlZWxFdmVudHM7CisgICAgYm9vbCBtX3dhbnRzV2hlZWxFdmVudHMgeyBm
YWxzZSB9OwogCiAgICAgLy8gVGhlIGNsaWVudCBJRCBmb3IgdGhlIENBIGxheWVyIGluIHRoZSBw
bHVnLWluIHByb2Nlc3MuIFdpbGwgYmUgMCBpZiB0aGUgcGx1Zy1pbiBpcyBub3QgYSBDQSBwbHVn
LWluLgotICAgIHVpbnQzMl90IG1fcmVtb3RlTGF5ZXJDbGllbnRJRDsKLSAgICAKKyAgICB1aW50
MzJfdCBtX3JlbW90ZUxheWVyQ2xpZW50SUQgeyAwIH07CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzPiBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRl
cnM7Ci0gICAgYm9vbCBtX3dhaXRpbmdPbkFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uOworICAg
IGJvb2wgbV93YWl0aW5nT25Bc3luY2hyb25vdXNJbml0aWFsaXphdGlvbiB7IGZhbHNlIH07CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9wbHVnaW5MYXll
cjsKICNlbmRpZgotCi0gICAgYm9vbCBtX2lzUmVzdGFydGVkUHJvY2VzczsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAppbmRleCA5Mjk3NjBlMmRmNmJlM2NiMjdkMGU1ZWY2ZmVjMjMzZmY3OTgx
OWUwLi5jY2RkZGY1Yjk5NWUzMWMxYjI1YWQ0ZGM3ZmM4Y2ZmYzMwOGE1Y2VhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNTMsNyAr
NTMsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxQbHVnSW5FbGVtZW50
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9IVFRQSGVhZGVyTmFtZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hvc3RXaW5k
b3cuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KQEAgLTc5LDkgKzc4
LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKLS8vIFRoaXMgc2ltdWxhdGVkIG1vdXNlIGNsaWNrIGRlbGF5IGlu
IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIHNob3VsZCBnZW5lcmFsbHkgYmUgdGhlIHNhbWUg
b3Igc2hvcnRlciB0aGFuIHRoaXMgZGVsYXkuCi1zdGF0aWMgY29uc3QgU2Vjb25kcyBwbHVnaW5T
bmFwc2hvdFRpbWVyRGVsYXkgeyAxMTAwX21zIH07Ci0KIGNsYXNzIFBsdWdpblZpZXc6OlVSTFJl
cXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxVUkxSZXF1ZXN0PiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxQbHVnaW5WaWV3OjpVUkxSZXF1ZXN0PiBjcmVhdGUodWludDY0X3QgcmVxdWVzdElE
LCBGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBhbGxvd1BvcHVwcykKQEAgLTMwNiw3
ICszMDIsNiBAQCBQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KEhUTUxQbHVnSW5FbGVtZW50JiBwbHVn
aW5FbGVtZW50LCBSZWY8UGx1Z2luPiYmIHBsdWdpbiwgYwogICAgICwgbV93ZWJQYWdlKHdlYlBh
Z2UobV9wbHVnaW5FbGVtZW50LmdldCgpKSkKICAgICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJz
KQogICAgICwgbV9wZW5kaW5nVVJMUmVxdWVzdHNUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMs
ICZQbHVnaW5WaWV3OjpwZW5kaW5nVVJMUmVxdWVzdHNUaW1lckZpcmVkKQotICAgICwgbV9wbHVn
aW5TbmFwc2hvdFRpbWVyKCp0aGlzLCAmUGx1Z2luVmlldzo6cGx1Z2luU25hcHNob3RUaW1lckZp
cmVkLCBwbHVnaW5TbmFwc2hvdFRpbWVyRGVsYXkpCiB7CiAgICAgbV93ZWJQYWdlLT5hZGRQbHVn
aW5WaWV3KHRoaXMpOwogfQpAQCAtMzU4LDExICszNTMsOCBAQCB2b2lkIFBsdWdpblZpZXc6OmRl
c3Ryb3lQbHVnaW5BbmRSZXNldCgpCiAKIHZvaWQgUGx1Z2luVmlldzo6cmVjcmVhdGVBbmRJbml0
aWFsaXplKFJlZjxQbHVnaW4+JiYgcGx1Z2luKQogewotICAgIGlmIChtX3BsdWdpbikgewotICAg
ICAgICBpZiAobV9wbHVnaW5TbmFwc2hvdFRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgICAgICBt
X3BsdWdpblNuYXBzaG90VGltZXIuc3RvcCgpOworICAgIGlmIChtX3BsdWdpbikKICAgICAgICAg
ZGVzdHJveVBsdWdpbkFuZFJlc2V0KCk7Ci0gICAgfQogCiAgICAgbV9wbHVnaW4gPSBXVEZNb3Zl
KHBsdWdpbik7CiAgICAgbV9pc0luaXRpYWxpemVkID0gZmFsc2U7CkBAIC01OTcsMTAgKzU4OSw2
IEBAIHZvaWQgUGx1Z2luVmlldzo6aW5pdGlhbGl6ZVBsdWdpbigpCiAKICAgICBtX3BsdWdpbkVs
ZW1lbnQtPmRvY3VtZW50KCkuYWRkQXVkaW9Qcm9kdWNlcigqdGhpcyk7CiAKLSNpZiBFTkFCTEUo
UFJJTUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElDKQotICAgIEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQmIHBsdWdJbkltYWdlRWxlbWVudCA9IGRvd25jYXN0PEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ+KCptX3BsdWdpbkVsZW1lbnQpOwotICAgIG1fZGlkUGx1Z0luU3RhcnRPZmZTY3JlZW4g
PSAhbV93ZWJQYWdlLT5wbHVnSW5JbnRlcnNlY3RzU2VhcmNoUmVjdChwbHVnSW5JbWFnZUVsZW1l
bnQpOwotI2VuZGlmCiAgICAgbV9wbHVnaW4tPmluaXRpYWxpemUoKnRoaXMsIG1fcGFyYW1ldGVy
cyk7CiAgICAgCiAgICAgLy8gUGx1Zy1pbiBpbml0aWFsaXphdGlvbiBjb250aW51ZWQgaW4gZGlk
RmFpbFRvSW5pdGlhbGl6ZVBsdWdpbigpIG9yIGRpZEluaXRpYWxpemVQbHVnaW4oKS4KQEAgLTYx
NCw3ICs2MDIsNyBAQCB2b2lkIFBsdWdpblZpZXc6OmRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4o
KQogICAgIFN0cmluZyBmcmFtZVVSTFN0cmluZyA9IGZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCktPnJlc3BvbnNlVVJMKCkuc3RyaW5nKCk7CiAgICAgU3RyaW5nIHBhZ2VVUkxTdHJp
bmcgPSBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCktPnJlc3BvbnNlVVJMKCkuc3RyaW5nKCk7CiAgICAgbV93ZWJQYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4obV9wYXJhbWV0
ZXJzLm1pbWVUeXBlLCBmcmFtZVVSTFN0cmluZywgcGFnZVVSTFN0cmluZykpOwotI2VuZGlmIC8v
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorI2VuZGlmCiB9CiAKIHZvaWQgUGx1Z2luVmll
dzo6ZGlkSW5pdGlhbGl6ZVBsdWdpbigpCkBAIC02MzQsMjUgKzYyMiwxMCBAQCB2b2lkIFBsdWdp
blZpZXc6OmRpZEluaXRpYWxpemVQbHVnaW4oKQogICAgIHJlZGVsaXZlck1hbnVhbFN0cmVhbSgp
OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgaWYgKG1fcGx1Z2luRWxlbWVudC0+ZGlzcGxh
eVN0YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UmVzdGFydGluZykgewotICAgICAgICBpZiAo
bV9wbHVnaW4tPnBsdWdpbkxheWVyKCkgJiYgZnJhbWUoKSkgewotICAgICAgICAgICAgZnJhbWUo
KS0+dmlldygpLT5lbnRlckNvbXBvc2l0aW5nTW9kZSgpOwotICAgICAgICAgICAgbV9wbHVnaW5F
bGVtZW50LT5pbnZhbGlkYXRlU3R5bGVBbmRMYXllckNvbXBvc2l0aW9uKCk7Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKGZyYW1lKCkgJiYgIWZyYW1lKCktPnNldHRpbmdzKCkubWF4aW11bVBsdWdJ
blNuYXBzaG90QXR0ZW1wdHMoKSkgewotICAgICAgICAgICAgYmVnaW5TbmFwc2hvdHRpbmdSdW5u
aW5nUGx1Z2luKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbV9w
bHVnaW5TbmFwc2hvdFRpbWVyLnJlc3RhcnQoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAo
bV9wbHVnaW4tPnBsdWdpbkxheWVyKCkgJiYgZnJhbWUoKSkgewotICAgICAgICAgICAgZnJhbWUo
KS0+dmlldygpLT5lbnRlckNvbXBvc2l0aW5nTW9kZSgpOwotICAgICAgICAgICAgbV9wbHVnaW5F
bGVtZW50LT5pbnZhbGlkYXRlU3R5bGVBbmRMYXllckNvbXBvc2l0aW9uKCk7Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKG1fcGx1Z2luRWxlbWVudC0+ZGlzcGxheVN0YXRlKCkgPT0gSFRNTFBsdWdJ
bkVsZW1lbnQ6OlJlc3RhcnRpbmdXaXRoUGVuZGluZ01vdXNlQ2xpY2spCi0gICAgICAgICAgICBt
X3BsdWdpbkVsZW1lbnQtPmRpc3BhdGNoUGVuZGluZ01vdXNlQ2xpY2soKTsKKyAgICBpZiAobV9w
bHVnaW4tPnBsdWdpbkxheWVyKCkgJiYgZnJhbWUoKSkgeworICAgICAgICBmcmFtZSgpLT52aWV3
KCktPmVudGVyQ29tcG9zaXRpbmdNb2RlKCk7CisgICAgICAgIG1fcGx1Z2luRWxlbWVudC0+aW52
YWxpZGF0ZVN0eWxlQW5kTGF5ZXJDb21wb3NpdGlvbigpOwogICAgIH0KLQogICAgIG1fcGx1Z2lu
LT52aXNpYmlsaXR5RGlkQ2hhbmdlKGlzVmlzaWJsZSgpKTsKICAgICBtX3BsdWdpbi0+d2luZG93
VmlzaWJpbGl0eUNoYW5nZWQobV93ZWJQYWdlLT5pc1Zpc2libGVPck9jY2x1ZGVkKCkpOwogICAg
IG1fcGx1Z2luLT53aW5kb3dGb2N1c0NoYW5nZWQobV93ZWJQYWdlLT53aW5kb3dJc0ZvY3VzZWQo
KSk7CkBAIC03ODMsNyArNzU2LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpzZXRGcmFtZVJlY3QoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKIAogdm9pZCBQbHVnaW5WaWV3OjpwYWludChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIC8qZGlydHlSZWN0Ki8sIFdpZGdl
dDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0KikKIHsKLSAg
ICBpZiAoIW1fcGx1Z2luIHx8ICFtX2lzSW5pdGlhbGl6ZWQgfHwgbV9wbHVnaW5FbGVtZW50LT5k
aXNwbGF5U3RhdGUoKSA8IEhUTUxQbHVnSW5FbGVtZW50OjpSZXN0YXJ0aW5nKQorICAgIGlmICgh
bV9wbHVnaW4gfHwgIW1faXNJbml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKSB7CkBAIC05MjYsMjQgKzg5OSwxOCBAQCB2b2lk
IFBsdWdpblZpZXc6OmhhbmRsZUV2ZW50KEV2ZW50JiBldmVudCkKICAgICAgICAgICAgIGZyYW1l
KCktPmV2ZW50SGFuZGxlcigpLnNldENhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudChudWxscHRy
KTsKIAogICAgICAgICBkaWRIYW5kbGVFdmVudCA9IG1fcGx1Z2luLT5oYW5kbGVNb3VzZUV2ZW50
KHN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQmPigqY3VycmVudEV2ZW50KSk7Ci0gICAg
ICAgIGlmIChldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50KQotICAg
ICAgICAgICAgcGx1Z2luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbigpOwogICAgIH0gZWxzZSBp
ZiAoZXZlbnROYW1lcygpLmlzV2hlZWxFdmVudFR5cGUoZXZlbnQudHlwZSgpKQotICAgICAgICAm
JiBjdXJyZW50RXZlbnQtPnR5cGUoKSA9PSBXZWJFdmVudDo6V2hlZWwgJiYgbV9wbHVnaW4tPndh
bnRzV2hlZWxFdmVudHMoKSkgeworICAgICAgICAmJiBjdXJyZW50RXZlbnQtPnR5cGUoKSA9PSBX
ZWJFdmVudDo6V2hlZWwgJiYgbV9wbHVnaW4tPndhbnRzV2hlZWxFdmVudHMoKSkKICAgICAgICAg
ZGlkSGFuZGxlRXZlbnQgPSBtX3BsdWdpbi0+aGFuZGxlV2hlZWxFdmVudChzdGF0aWNfY2FzdDxj
b25zdCBXZWJXaGVlbEV2ZW50Jj4oKmN1cnJlbnRFdmVudCkpOwotICAgICAgICBwbHVnaW5EaWRS
ZWNlaXZlVXNlckludGVyYWN0aW9uKCk7Ci0gICAgfSBlbHNlIGlmIChldmVudC50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50ICYmIGN1cnJlbnRFdmVudC0+dHlwZSgpID09IFdl
YkV2ZW50OjpNb3VzZU1vdmUpCisgICAgZWxzZSBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5tb3VzZW92ZXJFdmVudCAmJiBjdXJyZW50RXZlbnQtPnR5cGUoKSA9PSBXZWJFdmVudDo6
TW91c2VNb3ZlKQogICAgICAgICBkaWRIYW5kbGVFdmVudCA9IG1fcGx1Z2luLT5oYW5kbGVNb3Vz
ZUVudGVyRXZlbnQoc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VFdmVudCY+KCpjdXJyZW50RXZl
bnQpKTsKICAgICBlbHNlIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3V0
RXZlbnQgJiYgY3VycmVudEV2ZW50LT50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlTW92ZSkKICAg
ICAgICAgZGlkSGFuZGxlRXZlbnQgPSBtX3BsdWdpbi0+aGFuZGxlTW91c2VMZWF2ZUV2ZW50KHN0
YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQmPigqY3VycmVudEV2ZW50KSk7Ci0gICAgZWxz
ZSBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5jb250ZXh0bWVudUV2ZW50ICYmIGN1
cnJlbnRFdmVudC0+dHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZURvd24pIHsKKyAgICBlbHNlIGlm
IChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNvbnRleHRtZW51RXZlbnQgJiYgY3VycmVu
dEV2ZW50LT50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlRG93bikKICAgICAgICAgZGlkSGFuZGxl
RXZlbnQgPSBtX3BsdWdpbi0+aGFuZGxlQ29udGV4dE1lbnVFdmVudChzdGF0aWNfY2FzdDxjb25z
dCBXZWJNb3VzZUV2ZW50Jj4oKmN1cnJlbnRFdmVudCkpOwotICAgICAgICBwbHVnaW5EaWRSZWNl
aXZlVXNlckludGVyYWN0aW9uKCk7Ci0gICAgfSBlbHNlIGlmICgoZXZlbnQudHlwZSgpID09IGV2
ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgJiYgY3VycmVudEV2ZW50LT50eXBlKCkgPT0gV2ViRXZl
bnQ6OktleURvd24pCi0gICAgICAgICAgICAgICB8fCAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5rZXl1cEV2ZW50ICYmIGN1cnJlbnRFdmVudC0+dHlwZSgpID09IFdlYkV2ZW50OjpLZXlV
cCkpIHsKKyAgICBlbHNlIGlmICgoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3du
RXZlbnQgJiYgY3VycmVudEV2ZW50LT50eXBlKCkgPT0gV2ViRXZlbnQ6OktleURvd24pCisgICAg
ICAgIHx8IChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXVwRXZlbnQgJiYgY3VycmVu
dEV2ZW50LT50eXBlKCkgPT0gV2ViRXZlbnQ6OktleVVwKSkKICAgICAgICAgZGlkSGFuZGxlRXZl
bnQgPSBtX3BsdWdpbi0+aGFuZGxlS2V5Ym9hcmRFdmVudChzdGF0aWNfY2FzdDxjb25zdCBXZWJL
ZXlib2FyZEV2ZW50Jj4oKmN1cnJlbnRFdmVudCkpOwotICAgICAgICBwbHVnaW5EaWRSZWNlaXZl
VXNlckludGVyYWN0aW9uKCk7Ci0gICAgfQogCiAgICAgaWYgKGRpZEhhbmRsZUV2ZW50KQogICAg
ICAgICBldmVudC5zZXREZWZhdWx0SGFuZGxlZCgpOwpAQCAtOTgzLDcgKzk1MCw3IEBAIGJvb2wg
UGx1Z2luVmlldzo6c2hvdWxkQWxsb3dOYXZpZ2F0aW9uRnJvbURyYWdzKCkgY29uc3QKIAogYm9v
bCBQbHVnaW5WaWV3OjpzaG91bGROb3RBZGRMYXllcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
cGx1Z2luRWxlbWVudC0+ZGlzcGxheVN0YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UmVzdGFy
dGluZyAmJiAhbV9wbHVnaW4tPnN1cHBvcnRzU25hcHNob3R0aW5nKCk7CisgICAgcmV0dXJuIGZh
bHNlOwogfQogCiB2b2lkIFBsdWdpblZpZXc6OndpbGxEZXRhY2hSZW5kZXJlcigpCkBAIC0xMzMw
LDkgKzEyOTcsNiBAQCB2b2lkIFBsdWdpblZpZXc6OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJl
Y3QmIGRpcnR5UmVjdCkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKLSAgICBpZiAobV9wbHVn
aW5FbGVtZW50LT5kaXNwbGF5U3RhdGUoKSA8IEhUTUxQbHVnSW5FbGVtZW50OjpSZXN0YXJ0aW5n
KQotICAgICAgICByZXR1cm47Ci0KICAgICBhdXRvKiByZW5kZXJlciA9IG1fcGx1Z2luRWxlbWVu
dC0+cmVuZGVyZXIoKTsKICAgICBpZiAoIWlzPFJlbmRlckVtYmVkZGVkT2JqZWN0PihyZW5kZXJl
cikpCiAgICAgICAgIHJldHVybjsKQEAgLTE1MTksMTMgKzE0ODMsNiBAQCBib29sIFBsdWdpblZp
ZXc6OmlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKQogICAgIGlmICghZnJhbWUoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIC8vIFdlIGtub3cgdGhhdCBzb21lIHBs
dWctaW5zIGNhbiBzdXBwb3J0IHNuYXBzaG90dGluZyB3aXRob3V0IG5lZWRpbmcKLSAgICAvLyBh
Y2NlbGVyYXRlZCBjb21wb3NpdGluZy4gU2luY2Ugd2UncmUgdHJ5aW5nIHRvIHNuYXBzaG90IHRo
ZW0gYW55d2F5LAotICAgIC8vIHB1dCB0aGVtIGludG8gbm9ybWFsIGNvbXBvc2l0aW5nIG1vZGUu
IEEgc2lkZSBiZW5lZml0IGlzIHRoYXQgdGhpcyBtaWdodAotICAgIC8vIGFsbG93IHRoZSBlbnRp
cmUgcGFnZSB0byBzdGF5IGluIHRoYXQgbW9kZS4KLSAgICBpZiAobV9wbHVnaW5FbGVtZW50LT5k
aXNwbGF5U3RhdGUoKSA8IEhUTUxQbHVnSW5FbGVtZW50OjpSZXN0YXJ0aW5nICYmIG1fcGFyYW1l
dGVycy5taW1lVHlwZSA9PSAiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KICAgICByZXR1cm4gZnJhbWUoKS0+c2V0dGluZ3MoKS5hY2NlbGVy
YXRlZENvbXBvc2l0aW5nRW5hYmxlZCgpOwogfQogCkBAIC0xNjgwLDE0OSArMTYzNyw2IEBAIHZv
aWQgUGx1Z2luVmlldzo6ZGlkRmFpbExvYWQoV2ViRnJhbWUqIHdlYkZyYW1lLCBib29sIHdhc0Nh
bmNlbGxlZCkKICAgICBtX3BsdWdpbi0+ZnJhbWVEaWRGYWlsKHJlcXVlc3QtPnJlcXVlc3RJRCgp
LCB3YXNDYW5jZWxsZWQpOwogfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi1zdGF0aWMgYm9vbCBp
c0FsbW9zdFNvbGlkQ29sb3IoQml0bWFwSW1hZ2UqIGJpdG1hcCkKLXsKLSAgICBDR0ltYWdlUmVm
IGltYWdlID0gYml0bWFwLT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7Ci0g
ICAgQVNTRVJUKENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KGltYWdlKSA9PSA4KTsKLQotICAg
IENHQml0bWFwSW5mbyBpbWFnZUluZm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFnZSk7Ci0g
ICAgaWYgKCEoaW1hZ2VJbmZvICYga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUpIHx8IChpbWFn
ZUluZm8gJiBrQ0dCaXRtYXBBbHBoYUluZm9NYXNrKSAhPSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlw
bGllZEZpcnN0KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBiZWluZyBhYmxlIHRvIGhh
bmRsZSBvdGhlciBwaXhlbCBmb3JtYXRzLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHNpemVfdCB3aWR0aCA9IENHSW1h
Z2VHZXRXaWR0aChpbWFnZSk7Ci0gICAgc2l6ZV90IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQo
aW1hZ2UpOwotICAgIHNpemVfdCBieXRlc1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhp
bWFnZSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwcm92aWRlciA9IGFkb3B0Q0YoQ0dE
YXRhUHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKGltYWdlKSkpOwotICAg
IGNvbnN0IFVJbnQ4KiBkYXRhID0gQ0ZEYXRhR2V0Qnl0ZVB0cihwcm92aWRlci5nZXQoKSk7Ci0K
LSAgICAvLyBPdmVybGF5IGEgZ3JpZCBvZiBzYW1wbGluZyBkb3RzIG9uIHRvcCBvZiBhIGdyYXlz
Y2FsZSB2ZXJzaW9uIG9mIHRoZSBpbWFnZS4KLSAgICAvLyBGb3IgdGhlIGludGVyaW9yIHBvaW50
cywgY2FsY3VsYXRlIHRoZSBkaWZmZXJlbmNlIGluIGx1bWluYW5jZSBhbW9uZyB0aGUgc2FtcGxl
IHBvaW50Ci0gICAgLy8gYW5kIGl0cyBzdXJyb3VuZHMgcG9pbnRzLCBzY2FsZWQgYnkgdHJhbnNw
YXJlbmN5LgotICAgIGNvbnN0IHVuc2lnbmVkIHNhbXBsZVJvd3MgPSA3OwotICAgIGNvbnN0IHVu
c2lnbmVkIHNhbXBsZUNvbHMgPSA3OwotICAgIC8vIEZJWE1FOiBSZWZpbmUgdGhlIHByb3BlciBu
dW1iZXIgb2Ygc2FtcGxlcywgYW5kIGFjY29tbW9kYXRlIGRpZmZlcmVudCBhc3BlY3QgcmF0aW9z
LgotICAgIGlmICh3aWR0aCA8IHNhbXBsZUNvbHMgfHwgaGVpZ2h0IDwgc2FtcGxlUm93cykKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRW5zdXJlIHRoYXQgdGhlIGxhc3Qgcm93L2Nv
bHVtbiBsYW5kIG9uIHRoZSBpbWFnZSBwZXJpbWV0ZXIuCi0gICAgY29uc3QgZmxvYXQgc3RyaWRl
V2lkdGggPSBzdGF0aWNfY2FzdDxmbG9hdD4od2lkdGggLSAxKSAvIChzYW1wbGVDb2xzIC0gMSk7
Ci0gICAgY29uc3QgZmxvYXQgc3RyaWRlSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGhlaWdo
dCAtIDEpIC8gKHNhbXBsZVJvd3MgLSAxKTsKLSAgICBmbG9hdCBzYW1wbGVzW3NhbXBsZVJvd3Nd
W3NhbXBsZUNvbHNdOwotCi0gICAgLy8gRmluZCB0aGUgbHVtaW5hbmNlIG9mIHRoZSBzYW1wbGUg
cG9pbnRzLgotICAgIGZsb2F0IHkgPSAwOwotICAgIGNvbnN0IFVJbnQ4KiByb3cgPSBkYXRhOwot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzYW1wbGVSb3dzOyArK2kpIHsKLSAgICAgICAg
ZmxvYXQgeCA9IDA7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBzYW1wbGVDb2xz
OyArK2opIHsKLSAgICAgICAgICAgIGNvbnN0IFVJbnQ4KiBwMCA9IHJvdyArIChzdGF0aWNfY2Fz
dDxpbnQ+KHggKyAuNSkpICogNDsKLSAgICAgICAgICAgIC8vIFIgRyBCIEEKLSAgICAgICAgICAg
IHNhbXBsZXNbaV1bal0gPSAoMC4yMTI1ICogKnAwICsgMC43MTU0ICogKihwMCsxKSArIDAuMDcy
MSAqICoocDArMikpICogKihwMCszKSAvIDI1NTsKLSAgICAgICAgICAgIHggKz0gc3RyaWRlV2lk
dGg7Ci0gICAgICAgIH0KLSAgICAgICAgeSArPSBzdHJpZGVIZWlnaHQ7Ci0gICAgICAgIHJvdyA9
IGRhdGEgKyAoc3RhdGljX2Nhc3Q8aW50Pih5ICsgLjUpKSAqIGJ5dGVzUGVyUm93OwotICAgIH0K
LQotICAgIC8vIERldGVybWluZSB0aGUgaW1hZ2Ugc2NvcmUuCi0gICAgZmxvYXQgYWNjdW1TY29y
ZSA9IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHNhbXBsZVJvd3MgLSAxOyArK2kp
IHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMTsgaiA8IHNhbXBsZUNvbHMgLSAxOyArK2op
IHsKLSAgICAgICAgICAgIGZsb2F0IGRpZmYgPSBzYW1wbGVzW2kgLSAxXVtqXSArIHNhbXBsZXNb
aSArIDFdW2pdICsgc2FtcGxlc1tpXVtqIC0gMV0gKyBzYW1wbGVzW2ldW2ogKyAxXSAtIDQgKiBz
YW1wbGVzW2ldW2pdOwotICAgICAgICAgICAgYWNjdW1TY29yZSArPSBkaWZmICogZGlmZjsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIC8vIFRoZSBzY29yZSBmb3IgYSBnaXZlbiBzYW1wbGUgY2Fu
IGJlIHdpdGhpbiB0aGUgcmFuZ2Ugb2YgMCBhbmQgMjU1XjIuCi0gICAgcmV0dXJuIGFjY3VtU2Nv
cmUgPCAyNTAwICogKHNhbXBsZVJvd3MgLSAyKSAqIChzYW1wbGVDb2xzIC0gMik7Ci19Ci0jZW5k
aWYKLQotdm9pZCBQbHVnaW5WaWV3OjpwbHVnaW5TbmFwc2hvdFRpbWVyRmlyZWQoKQotewotI2lm
IEVOQUJMRShQUklNQVJZX1NOQVBTSE9UVEVEX1BMVUdJTl9IRVVSSVNUSUMpCi0gICAgSFRNTFBs
dWdJbkltYWdlRWxlbWVudCYgcGx1Z0luSW1hZ2VFbGVtZW50ID0gZG93bmNhc3Q8SFRNTFBsdWdJ
bkltYWdlRWxlbWVudD4oKm1fcGx1Z2luRWxlbWVudCk7Ci0gICAgYm9vbCBpc1BsdWdJbk9uU2Ny
ZWVuID0gbV93ZWJQYWdlLT5wbHVnSW5JbnRlcnNlY3RzU2VhcmNoUmVjdChwbHVnSW5JbWFnZUVs
ZW1lbnQpOwotICAgIGJvb2wgcGx1Z0luQ2FtZU9uU2NyZWVuID0gaXNQbHVnSW5PblNjcmVlbiAm
JiBtX2RpZFBsdWdJblN0YXJ0T2ZmU2NyZWVuOwotICAgIGJvb2wgc25hcHNob3RGb3VuZCA9IGZh
bHNlOwotI2VuZGlmCi0KLSAgICBpZiAobV9wbHVnaW4gJiYgbV9wbHVnaW4tPnN1cHBvcnRzU25h
cHNob3R0aW5nKCkpIHsKLSAgICAgICAgLy8gU25hcHNob3QgbWlnaHQgYmUgMCBpZiBwbHVnaW4g
c2l6ZSBpcyAweDAuCi0gICAgICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBzaG90ID0g
bV9wbHVnaW4tPnNuYXBzaG90KCk7Ci0gICAgICAgIFJlZlB0cjxJbWFnZT4gc25hcHNob3RJbWFn
ZTsKLSAgICAgICAgaWYgKHNuYXBzaG90KQotICAgICAgICAgICAgc25hcHNob3RJbWFnZSA9IHNu
YXBzaG90LT5jcmVhdGVJbWFnZSgpOwotICAgICAgICBtX3BsdWdpbkVsZW1lbnQtPnVwZGF0ZVNu
YXBzaG90KHNuYXBzaG90SW1hZ2UuZ2V0KCkpOwotCi0gICAgICAgIGlmIChzbmFwc2hvdEltYWdl
KSB7Ci0jaWYgRU5BQkxFKFBSSU1BUllfU05BUFNIT1RURURfUExVR0lOX0hFVVJJU1RJQykKLSAg
ICAgICAgICAgIGJvb2wgc25hcHNob3RJc0FsbW9zdFNvbGlkQ29sb3IgPSBpc0FsbW9zdFNvbGlk
Q29sb3IoZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KHNuYXBzaG90SW1hZ2UuZ2V0KCkpKTsKLSAgICAg
ICAgICAgIHNuYXBzaG90Rm91bmQgPSAhc25hcHNob3RJc0FsbW9zdFNvbGlkQ29sb3I7Ci0jZW5k
aWYKLQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICAgICAgdW5zaWduZWQgbWF4aW11bVNu
YXBzaG90UmV0cmllcyA9IGZyYW1lKCkgPyBmcmFtZSgpLT5zZXR0aW5ncygpLm1heGltdW1QbHVn
SW5TbmFwc2hvdEF0dGVtcHRzKCkgOiAwOwotICAgICAgICAgICAgaWYgKHNuYXBzaG90SXNBbG1v
c3RTb2xpZENvbG9yICYmIG1fY291bnRTbmFwc2hvdFJldHJpZXMgPCBtYXhpbXVtU25hcHNob3RS
ZXRyaWVzICYmICFwbHVnSW5DYW1lT25TY3JlZW4pIHsKLSAgICAgICAgICAgICAgICArK21fY291
bnRTbmFwc2hvdFJldHJpZXM7Ci0gICAgICAgICAgICAgICAgbV9wbHVnaW5TbmFwc2hvdFRpbWVy
LnJlc3RhcnQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0jZW5k
aWYKLSAgICAgICAgfQotICAgIH0KLQotI2lmIEVOQUJMRShQUklNQVJZX1NOQVBTSE9UVEVEX1BM
VUdJTl9IRVVSSVNUSUMpCi0gICAgdW5zaWduZWQgY2FuZGlkYXRlQXJlYSA9IDA7Ci0gICAgdW5z
aWduZWQgbWF4aW11bVNuYXBzaG90UmV0cmllcyA9IGZyYW1lKCkgPyBmcmFtZSgpLT5zZXR0aW5n
cygpLm1heGltdW1QbHVnSW5TbmFwc2hvdEF0dGVtcHRzKCkgOiAwOwotICAgIGJvb2wgbm9TbmFw
c2hvdEZvdW5kQWZ0ZXJNYXhSZXRyaWVzID0gbV9jb3VudFNuYXBzaG90UmV0cmllcyA9PSBtYXhp
bXVtU25hcHNob3RSZXRyaWVzICYmICFpc1BsdWdJbk9uU2NyZWVuICYmICFzbmFwc2hvdEZvdW5k
OwotICAgIGlmIChtX3dlYlBhZ2UtPnBsdWdJbklzUHJpbWFyeVNpemUocGx1Z0luSW1hZ2VFbGVt
ZW50LCBjYW5kaWRhdGVBcmVhKQotICAgICAgICAmJiAobm9TbmFwc2hvdEZvdW5kQWZ0ZXJNYXhS
ZXRyaWVzIHx8IHBsdWdJbkNhbWVPblNjcmVlbikpCi0gICAgICAgIG1fcGx1Z2luRWxlbWVudC0+
c2V0RGlzcGxheVN0YXRlKEhUTUxQbHVnSW5FbGVtZW50OjpQbGF5aW5nKTsKLSAgICBlbHNlCi0j
ZW5kaWYKLSAgICAgICAgbV9wbHVnaW5FbGVtZW50LT5zZXREaXNwbGF5U3RhdGUoSFRNTFBsdWdJ
bkVsZW1lbnQ6OkRpc3BsYXlpbmdTbmFwc2hvdCk7Ci19Ci0KLXZvaWQgUGx1Z2luVmlldzo6YmVn
aW5TbmFwc2hvdHRpbmdSdW5uaW5nUGx1Z2luKCkKLXsKLSAgICBtX3BsdWdpblNuYXBzaG90VGlt
ZXIucmVzdGFydCgpOwotfQotCi1ib29sIFBsdWdpblZpZXc6OnNob3VsZEFsd2F5c0F1dG9TdGFy
dCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX3BsdWdpbikKLSAgICAgICAgcmV0dXJuIFBsdWdpblZp
ZXdCYXNlOjpzaG91bGRBbHdheXNBdXRvU3RhcnQoKTsKLQotICAgIGlmIChNSU1FVHlwZVJlZ2lz
dHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlwZShtX3BhcmFtZXRlcnMubWltZVR5cGUpKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBtX3BsdWdpbi0+c2hvdWxkQWx3YXlzQXV0b1N0
YXJ0KCk7Ci19Ci0KLXZvaWQgUGx1Z2luVmlldzo6cGx1Z2luRGlkUmVjZWl2ZVVzZXJJbnRlcmFj
dGlvbigpCi17Ci0gICAgaWYgKGZyYW1lKCkgJiYgIWZyYW1lKCktPnNldHRpbmdzKCkucGx1Z0lu
U25hcHNob3R0aW5nRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9kaWRS
ZWNlaXZlVXNlckludGVyYWN0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2RpZFJlY2Vp
dmVVc2VySW50ZXJhY3Rpb24gPSB0cnVlOwotCi0gICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudCYg
cGx1Z0luSW1hZ2VFbGVtZW50ID0gZG93bmNhc3Q8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4oKm1f
cGx1Z2luRWxlbWVudCk7Ci0gICAgU3RyaW5nIHBhZ2VPcmlnaW4gPSBwbHVnSW5JbWFnZUVsZW1l
bnQuZG9jdW1lbnQoKS5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmJhc2VVUkwoKS5o
b3N0KCkudG9TdHJpbmcoKTsKLSAgICBTdHJpbmcgcGx1Z2luT3JpZ2luID0gcGx1Z0luSW1hZ2VF
bGVtZW50LmxvYWRlZFVybCgpLmhvc3QoKS50b1N0cmluZygpOwotICAgIFN0cmluZyBtaW1lVHlw
ZSA9IHBsdWdJbkltYWdlRWxlbWVudC5zZXJ2aWNlVHlwZSgpOwotCi0gICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihwYWdlT3JpZ2luLCBw
bHVnaW5PcmlnaW4sIG1pbWVUeXBlKTsKLX0KLQogYm9vbCBQbHVnaW5WaWV3OjpzaG91bGRDcmVh
dGVUcmFuc2llbnRQYWludGluZ1NuYXBzaG90KCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGx1Z2lu
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4
IGE2NTA5YjRmOGFkYTVhNmRhNzdlYWI3ZjlkNjdhNmI3MzM4MWE2MjguLmZlNjFmMTU1ODQ0MDkz
MGJlODI4NmM5YTc1MGNjODhiYmQ2MDAxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTE0OCw5ICsxNDgsNiBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCByZWRlbGl2ZXJNYW51YWxTdHJlYW0oKTsKIAotICAgIHZvaWQgcGx1Z2luU25hcHNo
b3RUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBwbHVnaW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9u
KCk7Ci0KICAgICBib29sIHNob3VsZENyZWF0ZVRyYW5zaWVudFBhaW50aW5nU25hcHNob3QoKSBj
b25zdDsKIAogICAgIC8vIFdlYkNvcmU6OlBsdWdpblZpZXdCYXNlCkBAIC0xNjUsOCArMTYyLDYg
QEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIo
KSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkg
b3ZlcnJpZGU7CiAgICAgYm9vbCB3YW50c1doZWVsRXZlbnRzKCkgb3ZlcnJpZGU7Ci0gICAgYm9v
bCBzaG91bGRBbHdheXNBdXRvU3RhcnQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGJlZ2lu
U25hcHNob3R0aW5nUnVubmluZ1BsdWdpbigpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkQWxs
b3dOYXZpZ2F0aW9uRnJvbURyYWdzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRO
b3RBZGRMYXllcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbERldGFjaFJlbmRlcmVy
KCkgb3ZlcnJpZGU7CkBAIC0yNDcsMTAgKzI0Miw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lz
V2FpdGluZ1VudGlsTWVkaWFDYW5TdGFydCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3BsdWdpblBy
b2Nlc3NIYXNDcmFzaGVkIHsgZmFsc2UgfTsKIAotI2lmIEVOQUJMRShQUklNQVJZX1NOQVBTSE9U
VEVEX1BMVUdJTl9IRVVSSVNUSUMpCi0gICAgYm9vbCBtX2RpZFBsdWdJblN0YXJ0T2ZmU2NyZWVu
IHsgZmFsc2UgfTsKLSNlbmRpZgotCiAgICAgLy8gUGVuZGluZyBVUkxSZXF1ZXN0cyB0aGF0IHRo
ZSBwbHVnLWluIGhhcyBtYWRlLgogICAgIERlcXVlPFJlZlB0cjxVUkxSZXF1ZXN0Pj4gbV9wZW5k
aW5nVVJMUmVxdWVzdHM7CiAgICAgUnVuTG9vcDo6VGltZXI8UGx1Z2luVmlldz4gbV9wZW5kaW5n
VVJMUmVxdWVzdHNUaW1lcjsKQEAgLTI3OCwxMiArMjY5LDYgQEAgcHJpdmF0ZToKIAogICAgIC8v
IFRoaXMgc25hcHNob3QgaXMgdXNlZCB0byBhdm9pZCBzaWRlIGVmZmVjdHMgc2hvdWxkIHRoZSBw
bHVnaW4gcnVuIEpTIGR1cmluZyBwYWludGluZy4KICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBtX3RyYW5zaWVudFBhaW50aW5nU25hcHNob3Q7Ci0gICAgLy8gVGhpcyB0aW1lciBpcyB1c2Vk
IHdoZW4gcGx1Z2luIHNuYXBzaG90dGluZyBpcyBlbmFibGVkLCB0byBjYXB0dXJlIGEgcGx1Z2lu
IHBsYWNlaG9sZGVyLgotICAgIFdlYkNvcmU6OkRlZmVycmFibGVPbmVTaG90VGltZXIgbV9wbHVn
aW5TbmFwc2hvdFRpbWVyOwotI2lmIEVOQUJMRShQUklNQVJZX1NOQVBTSE9UVEVEX1BMVUdJTl9I
RVVSSVNUSUMpIHx8IFBMQVRGT1JNKENPQ09BKQotICAgIHVuc2lnbmVkIG1fY291bnRTbmFwc2hv
dFJldHJpZXMgeyAwIH07Ci0jZW5kaWYKLSAgICBib29sIG1fZGlkUmVjZWl2ZVVzZXJJbnRlcmFj
dGlvbiB7IGZhbHNlIH07CiAKICAgICBkb3VibGUgbV9wYWdlU2NhbGVGYWN0b3IgeyAxIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbklu
Zm9Qcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVn
aW5JbmZvUHJvdmlkZXIuY3BwCmluZGV4IDgwZGU0ZDdkYzJhZjY1NzQ0MGNiZTEwNDg1YTBjYWE0
YWZiYzQ0M2UuLjIzYzI4NTRiZDc0YTliMWVmMmExYWVhMzFiZjVmN2JkZGEyZDQyMWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92
aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2lu
SW5mb1Byb3ZpZGVyLmNwcApAQCAtNjEsMzUgKzYxLDYgQEAgV2ViUGx1Z2luSW5mb1Byb3ZpZGVy
Ojp+V2ViUGx1Z2luSW5mb1Byb3ZpZGVyKCkKIHsKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykKLXZv
aWQgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KFdlYkNv
cmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3kgY2xpZW50UG9saWN5LCBjb25zdCBTdHJpbmcmIGhv
c3QsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9u
U3RyaW5nKQotewotICAgIFN0cmluZyBob3N0VG9TZXQgPSBob3N0LmlzTnVsbCgpIHx8ICFob3N0
Lmxlbmd0aCgpID8gIioiIDogaG9zdDsKLSAgICBTdHJpbmcgYnVuZGxlSWRlbnRpZmllclRvU2V0
ID0gYnVuZGxlSWRlbnRpZmllci5pc051bGwoKSB8fCAhYnVuZGxlSWRlbnRpZmllci5sZW5ndGgo
KSA/ICIqIiA6IGJ1bmRsZUlkZW50aWZpZXI7Ci0gICAgU3RyaW5nIHZlcnNpb25TdHJpbmdUb1Nl
dCA9IHZlcnNpb25TdHJpbmcuaXNOdWxsKCkgfHwgIXZlcnNpb25TdHJpbmcubGVuZ3RoKCkgPyAi
KiIgOiB2ZXJzaW9uU3RyaW5nOwotCi0gICAgUGx1Z2luUG9saWN5TWFwc0J5SWRlbnRpZmllciBw
b2xpY2llc0J5SWRlbnRpZmllcjsKLSAgICBpZiAobV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRh
dGEuY29udGFpbnMoaG9zdFRvU2V0KSkKLSAgICAgICAgcG9saWNpZXNCeUlkZW50aWZpZXIgPSBt
X2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5nZXQoaG9zdFRvU2V0KTsKLQotICAgIFBsdWdp
bkxvYWRDbGllbnRQb2xpY2llc0J5QnVuZGxlVmVyc2lvbiB2ZXJzaW9uc1RvUG9saWNpZXM7Ci0g
ICAgaWYgKHBvbGljaWVzQnlJZGVudGlmaWVyLmNvbnRhaW5zKGJ1bmRsZUlkZW50aWZpZXJUb1Nl
dCkpCi0gICAgICAgIHZlcnNpb25zVG9Qb2xpY2llcyA9IHBvbGljaWVzQnlJZGVudGlmaWVyLmdl
dChidW5kbGVJZGVudGlmaWVyVG9TZXQpOwotCi0gICAgdmVyc2lvbnNUb1BvbGljaWVzLnNldCh2
ZXJzaW9uU3RyaW5nVG9TZXQsIGNsaWVudFBvbGljeSk7Ci0gICAgcG9saWNpZXNCeUlkZW50aWZp
ZXIuc2V0KGJ1bmRsZUlkZW50aWZpZXJUb1NldCwgV1RGTW92ZSh2ZXJzaW9uc1RvUG9saWNpZXMp
KTsKLSAgICBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5zZXQoaG9zdFRvU2V0LCBwb2xp
Y2llc0J5SWRlbnRpZmllcik7Ci0KLSAgICBjbGVhclBhZ2VzUGx1Z2luRGF0YSgpOwotfQotCi12
b2lkIFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6Y2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpCi17
Ci0gICAgbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuY2xlYXIoKTsKLSAgICBjbGVhclBh
Z2VzUGx1Z2luRGF0YSgpOwotfQotI2VuZGlmCi0KIHZvaWQgV2ViUGx1Z2luSW5mb1Byb3ZpZGVy
OjpyZWZyZXNoUGx1Z2lucygpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBA
IC0xNDMsNyArMTE0LDcgQEAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IFdlYlBsdWdpbklu
Zm9Qcm92aWRlcjo6d2ViVmlzaWJsZVBsdWdpbkluZm8oUGFnZSYgcGEKIH0KIAogI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQotdm9pZCBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnBvcHVs
YXRlUGx1Z2luQ2FjaGUoY29uc3QgV2ViQ29yZTo6UGFnZSYgcGFnZSkKK3ZvaWQgV2ViUGx1Z2lu
SW5mb1Byb3ZpZGVyOjpwb3B1bGF0ZVBsdWdpbkNhY2hlKGNvbnN0IFdlYkNvcmU6OlBhZ2UmKQog
ewogICAgIGlmICghbV9wbHVnaW5DYWNoZUlzUG9wdWxhdGVkKSB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCkBAIC0xNjIsMTAxICsxMzMsNiBAQCB2b2lkIFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6cG9w
dWxhdGVQbHVnaW5DYWNoZShjb25zdCBXZWJDb3JlOjpQYWdlJiBwYWdlKQogICAgICAgICBtX3No
b3VsZFJlZnJlc2hQbHVnaW5zID0gZmFsc2U7CiAgICAgICAgIG1fcGx1Z2luQ2FjaGVJc1BvcHVs
YXRlZCA9IHRydWU7CiAgICAgfQotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIFN0cmluZyBwYWdl
SG9zdCA9IHBhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9u
c2VVUkwoKS5ob3N0KCkudG9TdHJpbmcoKTsKLSAgICBpZiAocGFnZUhvc3QuaXNOdWxsKCkpCi0g
ICAgICAgIHJldHVybjsKLSAgICBmb3IgKGF1dG8mIGluZm8gOiBtX2NhY2hlZFBsdWdpbnMpIHsK
LSAgICAgICAgaWYgKGF1dG8gY2xpZW50UG9saWN5ID0gcGx1Z2luTG9hZENsaWVudFBvbGljeUZv
ckhvc3QocGFnZUhvc3QsIGluZm8pKQotICAgICAgICAgICAgaW5mby5jbGllbnRMb2FkUG9saWN5
ID0gKmNsaWVudFBvbGljeTsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdlKTsK
LSNlbmRpZiAvLyBub3QgUExBVEZPUk0oTUFDKQotfQotI2VuZGlmCi0KLSNpZiBQTEFURk9STShN
QUMpCi1PcHRpb25hbDxXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5PiBXZWJQbHVnaW5J
bmZvUHJvdmlkZXI6OnBsdWdpbkxvYWRDbGllbnRQb2xpY3lGb3JIb3N0KGNvbnN0IFN0cmluZyYg
aG9zdCwgY29uc3QgV2ViQ29yZTo6UGx1Z2luSW5mbyYgaW5mbykgY29uc3QKLXsKLSAgICBTdHJp
bmcgaG9zdFRvTG9va1VwID0gaG9zdDsKLSAgICBTdHJpbmcgaWRlbnRpZmllciA9IGluZm8uYnVu
ZGxlSWRlbnRpZmllcjsKLQotICAgIGF1dG8gcG9saWNpZXNCeUlkZW50aWZpZXJJdGVyYXRvciA9
IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmZpbmQoaG9zdFRvTG9va1VwKTsKLQotICAg
IGlmICghaWRlbnRpZmllci5pc051bGwoKSAmJiBwb2xpY2llc0J5SWRlbnRpZmllckl0ZXJhdG9y
ID09IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmVuZCgpKSB7Ci0gICAgICAgIGlmICgh
cmVwbGFjZUhvc3RXaXRoTWF0Y2hlZFdpbGRjYXJkSG9zdChob3N0VG9Mb29rVXAsIGlkZW50aWZp
ZXIpKQotICAgICAgICAgICAgaG9zdFRvTG9va1VwID0gIioiOwotICAgICAgICBwb2xpY2llc0J5
SWRlbnRpZmllckl0ZXJhdG9yID0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuZmluZCho
b3N0VG9Mb29rVXApOwotICAgICAgICBpZiAoaG9zdFRvTG9va1VwICE9ICIqIiAmJiBwb2xpY2ll
c0J5SWRlbnRpZmllckl0ZXJhdG9yID09IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmVu
ZCgpKSB7Ci0gICAgICAgICAgICBob3N0VG9Mb29rVXAgPSAiKiI7Ci0gICAgICAgICAgICBwb2xp
Y2llc0J5SWRlbnRpZmllckl0ZXJhdG9yID0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEu
ZmluZChob3N0VG9Mb29rVXApOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChwb2xpY2llc0J5
SWRlbnRpZmllckl0ZXJhdG9yID09IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmVuZCgp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgYXV0byYgcG9saWNpZXNCeUlk
ZW50aWZpZXIgPSBwb2xpY2llc0J5SWRlbnRpZmllckl0ZXJhdG9yLT52YWx1ZTsKLQotICAgIGlm
ICghaWRlbnRpZmllcikKLSAgICAgICAgaWRlbnRpZmllciA9ICIqIjsKLQotICAgIGF1dG8gaWRl
bnRpZmllclBvbGljeUl0ZXJhdG9yID0gcG9saWNpZXNCeUlkZW50aWZpZXIuZmluZChpZGVudGlm
aWVyKTsKLSAgICBpZiAoaWRlbnRpZmllciAhPSAiKiIgJiYgaWRlbnRpZmllclBvbGljeUl0ZXJh
dG9yID09IHBvbGljaWVzQnlJZGVudGlmaWVyLmVuZCgpKSB7Ci0gICAgICAgIGlkZW50aWZpZXIg
PSAiKiI7Ci0gICAgICAgIGlkZW50aWZpZXJQb2xpY3lJdGVyYXRvciA9IHBvbGljaWVzQnlJZGVu
dGlmaWVyLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgfQotCi0gICAgaWYgKGlkZW50aWZpZXJQb2xp
Y3lJdGVyYXRvciA9PSBwb2xpY2llc0J5SWRlbnRpZmllci5lbmQoKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKLQotICAgIGF1dG8mIHZlcnNpb25zVG9Qb2xpY2llcyA9IGlkZW50aWZp
ZXJQb2xpY3lJdGVyYXRvci0+dmFsdWU7Ci0KLSAgICBTdHJpbmcgdmVyc2lvbiA9IGluZm8udmVy
c2lvblN0cmluZzsKLSAgICBpZiAoIXZlcnNpb24pCi0gICAgICAgIHZlcnNpb24gPSAiKiI7Ci0g
ICAgYXV0byBwb2xpY3lJdGVyYXRvciA9IHZlcnNpb25zVG9Qb2xpY2llcy5maW5kKHZlcnNpb24p
OwotICAgIGlmICh2ZXJzaW9uICE9ICIqIiAmJiBwb2xpY3lJdGVyYXRvciA9PSB2ZXJzaW9uc1Rv
UG9saWNpZXMuZW5kKCkpIHsKLSAgICAgICAgdmVyc2lvbiA9ICIqIjsKLSAgICAgICAgcG9saWN5
SXRlcmF0b3IgPSB2ZXJzaW9uc1RvUG9saWNpZXMuZmluZCh2ZXJzaW9uKTsKLSAgICB9Ci0KLSAg
ICBpZiAocG9saWN5SXRlcmF0b3IgPT0gdmVyc2lvbnNUb1BvbGljaWVzLmVuZCgpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIHBvbGljeUl0ZXJhdG9yLT52YWx1
ZTsKLX0KLQotU3RyaW5nIFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6bG9uZ2VzdE1hdGNoZWRXaWxk
Y2FyZEhvc3RGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCkgY29uc3QKLXsKLSAgICBTdHJpbmcg
bG9uZ2VzdE1hdGNoZWRIb3N0OwotCi0gICAgZm9yIChhdXRvJiBrZXkgOiBtX2hvc3RzVG9QbHVn
aW5JZGVudGlmaWVyRGF0YS5rZXlzKCkpIHsKLSAgICAgICAgaWYgKGtleS5jb250YWlucygnKicp
ICYmIGtleSAhPSAiKiIgJiYgc3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKGhvc3QsIGtleSkp
IHsKLSAgICAgICAgICAgIGlmIChrZXkubGVuZ3RoKCkgPiBsb25nZXN0TWF0Y2hlZEhvc3QubGVu
Z3RoKCkpCi0gICAgICAgICAgICAgICAgbG9uZ2VzdE1hdGNoZWRIb3N0ID0ga2V5OwotICAgICAg
ICAgICAgZWxzZSBpZiAoa2V5Lmxlbmd0aCgpID09IGxvbmdlc3RNYXRjaGVkSG9zdC5sZW5ndGgo
KSAmJiBjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4oa2V5LCBsb25nZXN0TWF0Y2hlZEhvc3QpKQot
ICAgICAgICAgICAgICAgIGxvbmdlc3RNYXRjaGVkSG9zdCA9IGtleTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIHJldHVybiBsb25nZXN0TWF0Y2hlZEhvc3Q7Ci19Ci0KLWJvb2wgV2ViUGx1Z2lu
SW5mb1Byb3ZpZGVyOjpyZXBsYWNlSG9zdFdpdGhNYXRjaGVkV2lsZGNhcmRIb3N0KFN0cmluZyYg
aG9zdCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSBjb25zdAotewotICAgIFN0cmluZyBtYXRj
aGVkV2lsZGNhcmRIb3N0ID0gbG9uZ2VzdE1hdGNoZWRXaWxkY2FyZEhvc3RGb3JIb3N0KGhvc3Qp
OwotCi0gICAgaWYgKG1hdGNoZWRXaWxkY2FyZEhvc3QuaXNOdWxsKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGF1dG8gcGx1Z0luSWRlbnRpZmllckRhdGEgPSBtX2hvc3RzVG9QbHVn
aW5JZGVudGlmaWVyRGF0YS5maW5kKG1hdGNoZWRXaWxkY2FyZEhvc3QpOwotICAgIGlmIChwbHVn
SW5JZGVudGlmaWVyRGF0YSA9PSBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5lbmQoKSB8
fCAhcGx1Z0luSWRlbnRpZmllckRhdGEtPnZhbHVlLmNvbnRhaW5zKGlkZW50aWZpZXIpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBob3N0ID0gbWF0Y2hlZFdpbGRjYXJkSG9zdDsKLSAg
ICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCmluZGV4IDNmOWEwYjhm
OGJlODhiZWYyZTJhMmIwYmQzYjU1MDZmNTE5ZWVkNDEuLjQ4MzgzYjM2M2Y1OTJlYTQwMDk4Njkx
ZTRiODk5ODA4MWY2MGQ0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCkBAIC0zNywxMSArMzcsNiBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFdlYlBsdWdpbkluZm9Qcm92aWRlciYgc2luZ2xldG9uKCk7CiAg
ICAgdmlydHVhbCB+V2ViUGx1Z2luSW5mb1Byb3ZpZGVyKCk7CiAKLSNpZiBQTEFURk9STShNQUMp
Ci0gICAgdm9pZCBzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KFdlYkNvcmU6OlBsdWdpbkxvYWRD
bGllbnRQb2xpY3ksIGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgU3RyaW5nJiBidW5kbGVJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpOwotICAgIHZvaWQgY2xlYXJQbHVn
aW5DbGllbnRQb2xpY2llcygpOwotI2VuZGlmCi0KIHByaXZhdGU6CiAgICAgV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyKCk7CiAKQEAgLTUxLDE2ICs0Niw2IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICB2b2lkIHBvcHVsYXRlUGx1Z2luQ2FjaGUoY29uc3Qg
V2ViQ29yZTo6UGFnZSYpOwotI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQot
Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBsdWdpbkxvYWRDbGll
bnRQb2xpY3k+IHBsdWdpbkxvYWRDbGllbnRQb2xpY3lGb3JIb3N0KGNvbnN0IFN0cmluZyYsIGNv
bnN0IFdlYkNvcmU6OlBsdWdpbkluZm8mKSBjb25zdDsKLSAgICBTdHJpbmcgbG9uZ2VzdE1hdGNo
ZWRXaWxkY2FyZEhvc3RGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCkgY29uc3Q7Ci0gICAgYm9v
bCByZXBsYWNlSG9zdFdpdGhNYXRjaGVkV2lsZGNhcmRIb3N0KFN0cmluZyYgaG9zdCwgY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyKSBjb25zdDsKLQotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+IFBsdWdpbkxvYWRDbGllbnRQb2xpY2ll
c0J5QnVuZGxlVmVyc2lvbjsKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBQbHVnaW5Mb2Fk
Q2xpZW50UG9saWNpZXNCeUJ1bmRsZVZlcnNpb24+IFBsdWdpblBvbGljeU1hcHNCeUlkZW50aWZp
ZXI7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFBsdWdpblBvbGljeU1hcHNCeUlkZW50aWZpZXI+IG1f
aG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDgzNjc4OWQ5MzQxNDJkMjdjNTdjNGZmMWZhNzZmYWNiNWY1MjAzYTUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIldlYlBsdWdJbkNsaWVudC5oIgotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1
ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJQbHVn
SW5DbGllbnQ6OldlYlBsdWdJbkNsaWVudChXZWJQYWdlJiB3ZWJQYWdlKQotICAgIDogbV93ZWJQ
YWdlKHdlYlBhZ2UpCi0KLXsKLX0KLQotV2ViUGx1Z0luQ2xpZW50Ojp+V2ViUGx1Z0luQ2xpZW50
KCkKLXsKLX0KLQotYm9vbCBXZWJQbHVnSW5DbGllbnQ6OnNob3VsZEF1dG9TdGFydEZyb21Pcmln
aW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKLXsKLSAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuc2hvdWxkUGx1Z0luQXV0b1N0YXJ0RnJvbU9yaWdpbihtX3dlYlBhZ2UsIHBhZ2VPcmln
aW4sIHBsdWdpbk9yaWdpbiwgbWltZVR5cGUpOwotfQotCi12b2lkIFdlYlBsdWdJbkNsaWVudDo6
ZGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5n
JiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCi17Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2luKHBhZ2VPcmlnaW4sIHBsdWdp
bk9yaWdpbiwgbWltZVR5cGUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5D
bGllbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODAzM2E1OGNkMDk4ZDU2YWMx
Njc5ZGExNmNkZDA3NTQyZjk0YzBiZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGx1Z0luQ2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBXZWJQbHVnSW5DbGllbnRfaAotI2RlZmluZSBXZWJQbHVnSW5DbGllbnRfaAot
Ci0jaW5jbHVkZSA8V2ViQ29yZS9QbHVnSW5DbGllbnQuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLWNsYXNzIFdlYlBhZ2U7Ci0KLWNsYXNzIFdlYlBsdWdJbkNsaWVudCA6IHB1YmxpYyBXZWJD
b3JlOjpQbHVnSW5DbGllbnQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGlj
OgotICAgIGV4cGxpY2l0IFdlYlBsdWdJbkNsaWVudChXZWJQYWdlJik7Ci0gICAgdmlydHVhbCB+
V2ViUGx1Z0luQ2xpZW50KCk7Ci0KLXByaXZhdGU6Ci0gICAgYm9vbCBzaG91bGRBdXRvU3RhcnRG
cm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5P
cmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkU3Rh
cnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVn
aW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIG92ZXJyaWRlOwotCi0gICAgV2ViUGFn
ZSYgbV93ZWJQYWdlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvKiBX
ZWJQbHVnSW5DbGllbnQgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggMTlhMjBiNzZhNmJlMTc2NTRiNTc4MWQxM2I2OGEwOTViY2NjYmUwMC4u
YWVhZWJiZjBhNDQ0YjczNzYyMGRmZDI2MjRjMTJlZmI2OWE4YzVlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTExNSw3ICsxMTUsNiBAQAog
I2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGF5bWVudENv
b3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiV2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50LmgiCi0j
aW5jbHVkZSAiV2ViUGx1Z0luQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2luSW5mb1Byb3Zp
ZGVyLmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5j
ZXNEZWZpbml0aW9ucy5oIgpAQCAtMTg0LDcgKzE4Myw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9I
VE1MTWVudUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNZW51SXRlbUVsZW1lbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxQbHVnSW5FbGVtZW50Lmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MU2Vs
ZWN0RWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpc3RvcnlDb250cm9sbGVyLmg+CkBAIC00MjUsOSAr
NDIzLDYgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICwgbV9zaG91bGRQbGF5TWVkaWFJ
bkdQVVByb2Nlc3MgeyBwYXJhbWV0ZXJzLnNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB9CiAj
aWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgICwgbV9uZWVkc0luQXBwQnJvd3NlclBy
aXZhY3lRdWlya3MgeyBwYXJhbWV0ZXJzLm5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB9
Ci0jZW5kaWYKLSNpZiBFTkFCTEUoUFJJTUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElD
KQotICAgICwgbV9kZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5UaW1lcihSdW5Mb29w
OjptYWluKCksIHRoaXMsICZXZWJQYWdlOjpkZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVn
SW5UaW1lckZpcmVkKQogI2VuZGlmCiAgICAgLCBtX2xheWVySG9zdGluZ01vZGUocGFyYW1ldGVy
cy5sYXllckhvc3RpbmdNb2RlKQogI2lmIEVOQUJMRShQTEFURk9STV9EUklWRU5fVEVYVF9DSEVD
S0lORykKQEAgLTUyMSw3ICs1MTYsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24uYWx0ZXJuYXRpdmVUZXh0Q2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQ+KHRoaXMpOwogI2VuZGlmCiAKLSAgICBwYWdlQ29uZmlndXJhdGlv
bi5wbHVnSW5DbGllbnQgPSBtYWtlVW5pcXVlPFdlYlBsdWdJbkNsaWVudD4oKnRoaXMpOwogICAg
IHBhZ2VDb25maWd1cmF0aW9uLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxX
ZWJEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oKnRoaXMpOwogICAgIHBhZ2VDb25maWd1cmF0aW9u
LnBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudCA9IG1ha2VVbmlxdWU8V2ViUGVyZm9ybWFuY2VMb2dn
aW5nQ2xpZW50PigqdGhpcyk7CiAKQEAgLTEwNzIsMjEgKzEwNjYsMTMgQEAgUmVmUHRyPFBsdWdp
bj4gV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKFdlYkZyYW1lKiBmcmFtZSwgSFRNTFBsdWdJbkVsZW1l
bnQqIHBsdWdpbkUKICAgICBTdHJpbmcgZnJhbWVVUkxTdHJpbmcgPSBmcmFtZS0+Y29yZUZyYW1l
KCktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlVVJMKCkuc3RyaW5nKCk7CiAg
ICAgU3RyaW5nIHBhZ2VVUkxTdHJpbmcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCktPnJlc3BvbnNlVVJMKCkuc3RyaW5nKCk7CiAKLSNpZiBFTkFCTEUoUFJJ
TUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElDKQotICAgIEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQmIHBsdWdpbkltYWdlRWxlbWVudCA9IGRvd25jYXN0PEhUTUxQbHVnSW5JbWFnZUVsZW1l
bnQ+KCpwbHVnaW5FbGVtZW50KTsKLSAgICB1bnNpZ25lZCBwbHVnaW5BcmVhID0gMDsKLSAgICBQ
bHVnaW5Qcm9jZXNzVHlwZSBwcm9jZXNzVHlwZSA9IHBsdWdpbkVsZW1lbnQtPmRpc3BsYXlTdGF0
ZSgpID09IEhUTUxQbHVnSW5FbGVtZW50OjpXYWl0aW5nRm9yU25hcHNob3QgJiYgIShwbHVnSW5J
c1ByaW1hcnlTaXplKHBsdWdpbkltYWdlRWxlbWVudCwgcGx1Z2luQXJlYSkgJiYgIXBsdWdJbklu
dGVyc2VjdHNTZWFyY2hSZWN0KHBsdWdpbkltYWdlRWxlbWVudCkpID8gUGx1Z2luUHJvY2Vzc1R5
cGU6OlNuYXBzaG90IDogUGx1Z2luUHJvY2Vzc1R5cGU6Ok5vcm1hbDsKLSNlbHNlCi0gICAgUGx1
Z2luUHJvY2Vzc1R5cGUgcHJvY2Vzc1R5cGUgPSBwbHVnaW5FbGVtZW50LT5kaXNwbGF5U3RhdGUo
KSA9PSBIVE1MUGx1Z0luRWxlbWVudDo6V2FpdGluZ0ZvclNuYXBzaG90ID8gUGx1Z2luUHJvY2Vz
c1R5cGU6OlNuYXBzaG90IDogUGx1Z2luUHJvY2Vzc1R5cGU6Ok5vcm1hbDsKLSNlbmRpZgotCiAg
ICAgYm9vbCBhbGxvd09ubHlBcHBsaWNhdGlvblBsdWdpbnMgPSAhZnJhbWUtPmNvcmVGcmFtZSgp
LT5sb2FkZXIoKS5hcmVQbHVnaW5zRW5hYmxlZCgpOwogCiAgICAgdWludDY0X3QgcGx1Z2luUHJv
Y2Vzc1Rva2VuOwogICAgIHVpbnQzMl90IHBsdWdpbkxvYWRQb2xpY3k7CiAgICAgU3RyaW5nIHVu
YXZhaWxhYmlsaXR5RGVzY3JpcHRpb247CiAgICAgYm9vbCBpc1Vuc3VwcG9ydGVkOwotICAgIGlm
ICghc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluZFBsdWdpbihwYXJhbWV0ZXJz
Lm1pbWVUeXBlLCBwcm9jZXNzVHlwZSwgcGFyYW1ldGVycy51cmwuc3RyaW5nKCksIGZyYW1lVVJM
U3RyaW5nLCBwYWdlVVJMU3RyaW5nLCBhbGxvd09ubHlBcHBsaWNhdGlvblBsdWdpbnMpLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpGaW5kUGx1Z2luOjpSZXBseShwbHVnaW5Qcm9jZXNzVG9rZW4s
IG5ld01JTUVUeXBlLCBwbHVnaW5Mb2FkUG9saWN5LCB1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9u
LCBpc1Vuc3VwcG9ydGVkKSkpCisgICAgaWYgKCFzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpGaW5kUGx1Z2luKHBhcmFtZXRlcnMubWltZVR5cGUsIHBhcmFtZXRlcnMudXJsLnN0cmlu
ZygpLCBmcmFtZVVSTFN0cmluZywgcGFnZVVSTFN0cmluZywgYWxsb3dPbmx5QXBwbGljYXRpb25Q
bHVnaW5zKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluZFBsdWdpbjo6UmVwbHkocGx1Z2lu
UHJvY2Vzc1Rva2VuLCBuZXdNSU1FVHlwZSwgcGx1Z2luTG9hZFBvbGljeSwgdW5hdmFpbGFiaWxp
dHlEZXNjcmlwdGlvbiwgaXNVbnN1cHBvcnRlZCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIFBsdWdpbk1vZHVsZUxvYWRQb2xpY3kgbG9hZFBvbGljeSA9IHN0YXRpY19jYXN0PFBs
dWdpbk1vZHVsZUxvYWRQb2xpY3k+KHBsdWdpbkxvYWRQb2xpY3kpOwpAQCAtMTEyMCw4ICsxMTA2
LDcgQEAgUmVmUHRyPFBsdWdpbj4gV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKFdlYkZyYW1lKiBmcmFt
ZSwgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdpbkUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgYm9vbCBpc1Jlc3RhcnRlZFByb2Nlc3MgPSAocGx1Z2luRWxlbWVudC0+ZGlz
cGxheVN0YXRlKCkgPT0gSFRNTFBsdWdJbkVsZW1lbnQ6OlJlc3RhcnRpbmcgfHwgcGx1Z2luRWxl
bWVudC0+ZGlzcGxheVN0YXRlKCkgPT0gSFRNTFBsdWdJbkVsZW1lbnQ6OlJlc3RhcnRpbmdXaXRo
UGVuZGluZ01vdXNlQ2xpY2spOwotICAgIHJldHVybiBQbHVnaW5Qcm94eTo6Y3JlYXRlKHBsdWdp
blByb2Nlc3NUb2tlbiwgaXNSZXN0YXJ0ZWRQcm9jZXNzKTsKKyAgICByZXR1cm4gUGx1Z2luUHJv
eHk6OmNyZWF0ZShwbHVnaW5Qcm9jZXNzVG9rZW4pOwogfQogI2VuZGlmIC8vIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQogCkBAIC0xNDgzLDEwICsxNDY4LDYgQEAgdm9pZCBXZWJQYWdlOjpj
bG9zZSgpCiAKICAgICBtX3NhbmRib3hFeHRlbnNpb25UcmFja2VyLmludmFsaWRhdGUoKTsKIAot
I2lmIEVOQUJMRShQUklNQVJZX1NOQVBTSE9UVEVEX1BMVUdJTl9IRVVSSVNUSUMpCi0gICAgbV9k
ZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5UaW1lci5zdG9wKCk7Ci0jZW5kaWYKLQog
I2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgbV90ZXh0QXV0b1NpemluZ0FkanVzdG1l
bnRUaW1lci5zdG9wKCk7CiAjZW5kaWYKQEAgLTQ2NTMsMTAgKzQ2MzQsNiBAQCB2b2lkIFdlYlBh
Z2U6OmFkZFBsdWdpblZpZXcoUGx1Z2luVmlldyogcGx1Z2luVmlldykKIAogICAgIG1fcGx1Z2lu
Vmlld3MuYWRkKHBsdWdpblZpZXcpOwogICAgIG1faGFzU2VlblBsdWdpbiA9IHRydWU7Ci0jaWYg
RU5BQkxFKFBSSU1BUllfU05BUFNIT1RURURfUExVR0lOX0hFVVJJU1RJQykKLSAgICBMT0coUGx1
Z2lucywgIlByaW1hcnkgUGx1Zy1JbiBEZXRlY3Rpb246IHRyaWdnZXJpbmcgZGV0ZWN0aW9uIGZy
b20gYWRkUGx1Z2luVmlldyglcCkiLCBwbHVnaW5WaWV3KTsKLSAgICBtX2RldGVybWluZVByaW1h
cnlTbmFwc2hvdHRlZFBsdWdJblRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwotI2VuZGlmCiB9CiAK
IHZvaWQgV2ViUGFnZTo6cmVtb3ZlUGx1Z2luVmlldyhQbHVnaW5WaWV3KiBwbHVnaW5WaWV3KQpA
QCAtNDY2NCw5ICs0NjQxLDYgQEAgdm9pZCBXZWJQYWdlOjpyZW1vdmVQbHVnaW5WaWV3KFBsdWdp
blZpZXcqIHBsdWdpblZpZXcpCiAgICAgQVNTRVJUKG1fcGx1Z2luVmlld3MuY29udGFpbnMocGx1
Z2luVmlldykpOwogCiAgICAgbV9wbHVnaW5WaWV3cy5yZW1vdmUocGx1Z2luVmlldyk7Ci0jaWYg
RU5BQkxFKFBSSU1BUllfU05BUFNIT1RURURfUExVR0lOX0hFVVJJU1RJQykKLSAgICBMT0coUGx1
Z2lucywgIlByaW1hcnkgUGx1Zy1JbiBEZXRlY3Rpb246IHJlbW92ZVBsdWdpblZpZXcoJXApIiwg
cGx1Z2luVmlldyk7Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJQYWdlOjpzZW5kU2V0V2luZG93RnJh
bWUoY29uc3QgRmxvYXRSZWN0JiB3aW5kb3dGcmFtZSkKQEAgLTU0MzUsNyArNTQwOSw3IEBAIGJv
b2wgV2ViUGFnZTo6Y2FuUGx1Z2luSGFuZGxlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCiAgICAgU3RyaW5nIG5ld01JTUVUeXBlOwogICAgIFN0cmluZyB1bmF2YWls
YWJpbGl0eURlc2NyaXB0aW9uOwogICAgIGJvb2wgaXNVbnN1cHBvcnRlZCA9IGZhbHNlOwotICAg
IGlmICghc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluZFBsdWdpbihyZXNwb25z
ZS5taW1lVHlwZSgpLCBQbHVnaW5Qcm9jZXNzVHlwZTo6Tm9ybWFsLCByZXNwb25zZS51cmwoKS5z
dHJpbmcoKSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIHJlc3BvbnNlLnVybCgpLnN0cmluZygp
LCBhbGxvd09ubHlBcHBsaWNhdGlvblBsdWdpbnMpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpG
aW5kUGx1Z2luOjpSZXBseShwbHVnaW5Qcm9jZXNzVG9rZW4sIG5ld01JTUVUeXBlLCBwbHVnaW5M
b2FkUG9saWN5LCB1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uLCBpc1Vuc3VwcG9ydGVkKSkpCisg
ICAgaWYgKCFzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5kUGx1Z2luKHJlc3Bv
bnNlLm1pbWVUeXBlKCksIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCByZXNwb25zZS51cmwoKS5z
dHJpbmcoKSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIGFsbG93T25seUFwcGxpY2F0aW9uUGx1
Z2lucyksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmRQbHVnaW46OlJlcGx5KHBsdWdpblBy
b2Nlc3NUb2tlbiwgbmV3TUlNRVR5cGUsIHBsdWdpbkxvYWRQb2xpY3ksIHVuYXZhaWxhYmlsaXR5
RGVzY3JpcHRpb24sIGlzVW5zdXBwb3J0ZWQpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgQVNTRVJUKCFpc1Vuc3VwcG9ydGVkKTsKQEAgLTYxMDgsMTAgKzYwODIsNiBAQCB2b2lkIFdl
YlBhZ2U6OmRpZENvbW1pdExvYWQoV2ViRnJhbWUqIGZyYW1lKQogICAgIG1fdGV4dEF1dG9TaXpp
bmdBZGp1c3RtZW50VGltZXIuc3RvcCgpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUFJJTUFSWV9T
TkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElDKQotICAgIHJlc2V0UHJpbWFyeVNuYXBzaG90dGVk
UGx1Z0luKCk7Ci0jZW5kaWYKLQogI2lmIFVTRShPU19TVEFURSkKICAgICBtX2xvYWRDb21taXRU
aW1lID0gV2FsbFRpbWU6Om5vdygpOwogI2VuZGlmCkBAIC02MTQwLDEyICs2MTEwLDYgQEAgdm9p
ZCBXZWJQYWdlOjpkaWRGaW5pc2hMb2FkKFdlYkZyYW1lJiBmcmFtZSkKIAogICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnNlbmRQcmV3YXJtSW5mb3JtYXRpb24oZnJhbWUudXJsKCkpOwogCi0j
aWYgRU5BQkxFKFBSSU1BUllfU05BUFNIT1RURURfUExVR0lOX0hFVVJJU1RJQykKLSAgICBtX3Jl
YWR5VG9GaW5kUHJpbWFyeVNuYXBzaG90dGVkUGx1Z2luID0gdHJ1ZTsKLSAgICBMT0coUGx1Z2lu
cywgIlByaW1hcnkgUGx1Zy1JbiBEZXRlY3Rpb246IHRyaWdnZXJpbmcgZGV0ZWN0aW9uIGZyb20g
ZGlkRmluaXNoTG9hZCAobWFya2luZyBhcyByZWFkeSB0byBkZXRlY3QpLiIpOwotICAgIG1fZGV0
ZXJtaW5lUHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7Ci0j
ZW5kaWYKLQogI2lmIEVOQUJMRShWSUVXUE9SVF9SRVNJWklORykKICAgICBzaHJpbmtUb0ZpdENv
bnRlbnQoWm9vbVRvSW5pdGlhbFNjYWxlOjpZZXMpOwogI2VuZGlmCkBAIC02MTkzLDE5NyArNjE1
Nyw2IEBAIHZvaWQgV2ViUGFnZTo6dGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5X
YWl0aW5nRm9yU3luY1JlcGx5KE1lc3NhZ2VzOjpXCiAgICAgcmVwbHkodHJ1ZSk7CiB9CiAKLSNp
ZiBFTkFCTEUoUFJJTUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElDKQotc3RhdGljIGNv
bnN0IGludCBwcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5TZWFyY2hMaW1pdCA9IDMwMDA7Ci1zdGF0
aWMgY29uc3QgZmxvYXQgcHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luU2VhcmNoQnVja2V0U2l6ZSA9
IDEuMTsKLXN0YXRpYyBjb25zdCBpbnQgcHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luTWluaW11bVdp
ZHRoID0gNDAwOwotc3RhdGljIGNvbnN0IGludCBwcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5NaW5p
bXVtSGVpZ2h0ID0gMzAwOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heFByaW1hcnlTbmFwc2hv
dHRlZFBsdWdJbkRldGVjdGlvbkF0dGVtcHRzID0gMjsKLXN0YXRpYyBjb25zdCBTZWNvbmRzIGRl
ZmVycmVkUHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luRGV0ZWN0aW9uRGVsYXkgPSAzX3M7Ci1zdGF0
aWMgY29uc3QgZmxvYXQgb3ZlcmxhcHBpbmdJbWFnZUJvdW5kc1NjYWxlID0gMS4xOwotc3RhdGlj
IGNvbnN0IGZsb2F0IG1pbmltdW1PdmVybGFwcGluZ0ltYWdlVG9QbHVnaW5EaW1lbnNpb25TY2Fs
ZSA9IC45OwotCi0jaWYgRU5BQkxFKFBSSU1BUllfU05BUFNIT1RURURfUExVR0lOX0hFVVJJU1RJ
QykKLXZvaWQgV2ViUGFnZTo6ZGV0ZXJtaW5lUHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luVGltZXJG
aXJlZCgpCi17Ci0gICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBT
ZXR0aW5ncyYgc2V0dGluZ3MgPSBtX3BhZ2UtPnNldHRpbmdzKCk7Ci0gICAgaWYgKCFzZXR0aW5n
cy5zbmFwc2hvdEFsbFBsdWdJbnMoKSAmJiBzZXR0aW5ncy5wcmltYXJ5UGx1Z0luU25hcHNob3RE
ZXRlY3Rpb25FbmFibGVkKCkpCi0gICAgICAgIGRldGVybWluZVByaW1hcnlTbmFwc2hvdHRlZFBs
dWdJbigpOwotfQotI2VuZGlmCi0KLXZvaWQgV2ViUGFnZTo6ZGV0ZXJtaW5lUHJpbWFyeVNuYXBz
aG90dGVkUGx1Z0luKCkKLXsKLSAgICBpZiAoIW1fcGFnZS0+c2V0dGluZ3MoKS5wbHVnSW5TbmFw
c2hvdHRpbmdFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIExPRyhQbHVnaW5zLCAi
UHJpbWFyeSBQbHVnLUluIERldGVjdGlvbjogYmVnYW4uIik7Ci0KLSAgICBpZiAoIW1fcmVhZHlU
b0ZpbmRQcmltYXJ5U25hcHNob3R0ZWRQbHVnaW4pIHsKLSAgICAgICAgTE9HKFBsdWdpbnMsICJQ
cmltYXJ5IFBsdWctSW4gRGV0ZWN0aW9uOiBleGl0aW5nIC0gbm90IHJlYWR5IHRvIGZpbmQgcGx1
Z2lucy4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghbV9oYXNTZWVuUGx1
Z2luKSB7Ci0gICAgICAgIExPRyhQbHVnaW5zLCAiUHJpbWFyeSBQbHVnLUluIERldGVjdGlvbjog
ZXhpdGluZyAtIHdlIG5ldmVyIHNhdyBhIHBsdWctaW4gZ2V0IGFkZGVkIHRvIHRoZSBwYWdlLiIp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG1fZGlkRmluZFByaW1hcnlTbmFw
c2hvdHRlZFBsdWdpbikgewotICAgICAgICBMT0coUGx1Z2lucywgIlByaW1hcnkgUGx1Zy1JbiBE
ZXRlY3Rpb246IGV4aXRpbmcgLSB3ZSd2ZSBhbHJlYWR5IGZvdW5kIGEgcHJpbWFyeSBwbHVnLWlu
LiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgKyttX251bWJlck9mUHJpbWFyeVNu
YXBzaG90RGV0ZWN0aW9uQXR0ZW1wdHM7Ci0KLSAgICBsYXlvdXRJZk5lZWRlZCgpOwotCi0gICAg
UmVmUHRyPEZyYW1lVmlldz4gbWFpbkZyYW1lVmlldyA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgp
LnZpZXcoKTsKLSAgICBpZiAoIW1haW5GcmFtZVZpZXcpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEludFJlY3Qgc2VhcmNoUmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwgY29yZVBhZ2UoKS0+bWFp
bkZyYW1lKCkudmlldygpLT5jb250ZW50c1NpemUoKSk7Ci0gICAgc2VhcmNoUmVjdC5pbnRlcnNl
Y3QoSW50UmVjdChJbnRQb2ludCgpLCBJbnRTaXplKHByaW1hcnlTbmFwc2hvdHRlZFBsdWdJblNl
YXJjaExpbWl0LCBwcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5TZWFyY2hMaW1pdCkpKTsKLQotICAg
IEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoeyBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRl
c3RSZXF1ZXN0OjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50
LCBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcsIEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxv
d1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQgfSk7Ci0KLSAgICBSZWZQdHI8SFRNTFBsdWdJbkltYWdl
RWxlbWVudD4gY2FuZGlkYXRlUGx1Z0luOwotICAgIHVuc2lnbmVkIGNhbmRpZGF0ZVBsdWdJbkFy
ZWEgPSAwOwotCi0gICAgZm9yIChSZWZQdHI8RnJhbWU+IGZyYW1lID0gJmNvcmVQYWdlKCktPm1h
aW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dFJlbmRl
cmVkKCkpIHsKLSAgICAgICAgaWYgKCFmcmFtZS0+bG9hZGVyKCkuc3ViZnJhbWVMb2FkZXIoKS5j
b250YWluc1BsdWdpbnMoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIWZy
YW1lLT5kb2N1bWVudCgpIHx8ICFmcmFtZS0+dmlldygpKQotICAgICAgICAgICAgY29udGludWU7
Ci0KLSAgICAgICAgVmVjdG9yPFJlZjxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Pj4gbm9uUGxheWlu
Z1BsdWdJbkltYWdlRWxlbWVudHM7Ci0gICAgICAgIGZvciAoYXV0byYgcGx1Z0luSW1hZ2VFbGVt
ZW50IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4oKmZyYW1lLT5k
b2N1bWVudCgpKSkgewotICAgICAgICAgICAgaWYgKHBsdWdJbkltYWdlRWxlbWVudC5kaXNwbGF5
U3RhdGUoKSA9PSBIVE1MUGx1Z0luRWxlbWVudDo6UGxheWluZykKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIG5vblBsYXlpbmdQbHVnSW5JbWFnZUVsZW1lbnRzLmFwcGVu
ZChwbHVnSW5JbWFnZUVsZW1lbnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChhdXRvJiBw
bHVnSW5JbWFnZUVsZW1lbnQgOiBub25QbGF5aW5nUGx1Z0luSW1hZ2VFbGVtZW50cykgewotICAg
ICAgICAgICAgYXV0byBwbHVnaW5SZW5kZXJlciA9IHBsdWdJbkltYWdlRWxlbWVudC0+cmVuZGVy
ZXIoKTsKLSAgICAgICAgICAgIGlmICghcGx1Z2luUmVuZGVyZXIgfHwgIXBsdWdpblJlbmRlcmVy
LT5pc0JveCgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgYXV0byYg
cGx1Z2luUmVuZGVyQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PigqcGx1Z2luUmVuZGVyZXIpOwot
ICAgICAgICAgICAgaWYgKCFwbHVnSW5JbnRlcnNlY3RzU2VhcmNoUmVjdChwbHVnSW5JbWFnZUVs
ZW1lbnQuZ2V0KCkpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBJ
bnRSZWN0IHBsdWdJblJlY3RSZWxhdGl2ZVRvVmlldyA9IHBsdWdJbkltYWdlRWxlbWVudC0+Y2xp
ZW50UmVjdCgpOwotICAgICAgICAgICAgU2Nyb2xsUG9zaXRpb24gc2Nyb2xsUG9zaXRpb24gPSBt
YWluRnJhbWVWaWV3LT5kb2N1bWVudFNjcm9sbFBvc2l0aW9uUmVsYXRpdmVUb1ZpZXdPcmlnaW4o
KTsKLSAgICAgICAgICAgIEludFJlY3QgcGx1Z0luUmVjdFJlbGF0aXZlVG9Ub3BEb2N1bWVudChw
bHVnSW5SZWN0UmVsYXRpdmVUb1ZpZXcubG9jYXRpb24oKSArIHNjcm9sbFBvc2l0aW9uLCBwbHVn
SW5SZWN0UmVsYXRpdmVUb1ZpZXcuc2l6ZSgpKTsKLSAgICAgICAgICAgIEhpdFRlc3RSZXN1bHQg
aGl0VGVzdFJlc3VsdChwbHVnSW5SZWN0UmVsYXRpdmVUb1RvcERvY3VtZW50LmNlbnRlcigpKTsK
LQotICAgICAgICAgICAgaWYgKCFtYWluRnJhbWUoKSB8fCAhbWFpbkZyYW1lKCktPmRvY3VtZW50
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbWFpbkZyYW1lKCktPmRv
Y3VtZW50KCktPmhpdFRlc3QocmVxdWVzdCwgaGl0VGVzdFJlc3VsdCk7Ci0KLSAgICAgICAgICAg
IFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gaGl0VGVzdFJlc3VsdC50YXJnZXRFbGVtZW50KCk7
Ci0gICAgICAgICAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgICAgIEludFJlY3QgZWxlbWVudFJlY3RSZWxhdGl2ZVRvVmlldyA9IGVsZW1lbnQt
PmNsaWVudFJlY3QoKTsKLSAgICAgICAgICAgIEludFJlY3QgZWxlbWVudFJlY3RSZWxhdGl2ZVRv
VG9wRG9jdW1lbnQoZWxlbWVudFJlY3RSZWxhdGl2ZVRvVmlldy5sb2NhdGlvbigpICsgc2Nyb2xs
UG9zaXRpb24sIGVsZW1lbnRSZWN0UmVsYXRpdmVUb1ZpZXcuc2l6ZSgpKTsKLSAgICAgICAgICAg
IExheW91dFJlY3QgaW5mbGF0ZWRQbHVnaW5SZWN0ID0gcGx1Z0luUmVjdFJlbGF0aXZlVG9Ub3BE
b2N1bWVudDsKLSAgICAgICAgICAgIExheW91dFVuaXQgeE9mZnNldCB7IChpbmZsYXRlZFBsdWdp
blJlY3Qud2lkdGgoKSAqIG92ZXJsYXBwaW5nSW1hZ2VCb3VuZHNTY2FsZSAtIGluZmxhdGVkUGx1
Z2luUmVjdC53aWR0aCgpKSAvIDIgfTsKLSAgICAgICAgICAgIExheW91dFVuaXQgeU9mZnNldCB7
IChpbmZsYXRlZFBsdWdpblJlY3QuaGVpZ2h0KCkgKiBvdmVybGFwcGluZ0ltYWdlQm91bmRzU2Nh
bGUgLSBpbmZsYXRlZFBsdWdpblJlY3QuaGVpZ2h0KCkpIC8gMiB9OwotICAgICAgICAgICAgaW5m
bGF0ZWRQbHVnaW5SZWN0LmluZmxhdGVYKHhPZmZzZXQpOwotICAgICAgICAgICAgaW5mbGF0ZWRQ
bHVnaW5SZWN0LmluZmxhdGVZKHlPZmZzZXQpOwotCi0gICAgICAgICAgICBpZiAoZWxlbWVudCAh
PSBwbHVnSW5JbWFnZUVsZW1lbnQucHRyKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIShpczxI
VE1MSW1hZ2VFbGVtZW50PigqZWxlbWVudCkKLSAgICAgICAgICAgICAgICAgICAgJiYgaW5mbGF0
ZWRQbHVnaW5SZWN0LmNvbnRhaW5zKGVsZW1lbnRSZWN0UmVsYXRpdmVUb1RvcERvY3VtZW50KQot
ICAgICAgICAgICAgICAgICAgICAmJiBlbGVtZW50UmVjdFJlbGF0aXZlVG9Ub3BEb2N1bWVudC53
aWR0aCgpID4gcGx1Z2luUmVuZGVyQm94LndpZHRoKCkgKiBtaW5pbXVtT3ZlcmxhcHBpbmdJbWFn
ZVRvUGx1Z2luRGltZW5zaW9uU2NhbGUKLSAgICAgICAgICAgICAgICAgICAgJiYgZWxlbWVudFJl
Y3RSZWxhdGl2ZVRvVG9wRG9jdW1lbnQuaGVpZ2h0KCkgPiBwbHVnaW5SZW5kZXJCb3guaGVpZ2h0
KCkgKiBtaW5pbXVtT3ZlcmxhcHBpbmdJbWFnZVRvUGx1Z2luRGltZW5zaW9uU2NhbGUpKQotICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBMT0coUGx1Z2lucywg
IlByaW1hcnkgUGx1Zy1JbiBEZXRlY3Rpb246IFBsdWctaW4gaXMgaGlkZGVuIGJ5IGFuIGltYWdl
IHRoYXQgaXMgcm91Z2hseSBhbGlnbmVkIHdpdGggaXQsIGF1dG9wbGF5aW5nIHJlZ2FyZGxlc3Mg
b2Ygd2hldGhlciBvciBub3QgaXQncyBhY3R1YWxseSB0aGUgcHJpbWFyeSBwbHVnLWluLiIpOwot
ICAgICAgICAgICAgICAgIHBsdWdJbkltYWdlRWxlbWVudC0+cmVzdGFydFNuYXBzaG90dGVkUGx1
Z0luKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChwbHVnSW5Jc1ByaW1hcnlT
aXplKHBsdWdJbkltYWdlRWxlbWVudCwgY2FuZGlkYXRlUGx1Z0luQXJlYSkpCi0gICAgICAgICAg
ICAgICAgY2FuZGlkYXRlUGx1Z0luID0gV1RGTW92ZShwbHVnSW5JbWFnZUVsZW1lbnQpOwotICAg
ICAgICB9Ci0gICAgfQotICAgIGlmICghY2FuZGlkYXRlUGx1Z0luKSB7Ci0gICAgICAgIExPRyhQ
bHVnaW5zLCAiUHJpbWFyeSBQbHVnLUluIERldGVjdGlvbjogZmFpbCAtIGRpZCBub3QgZmluZCBh
IGNhbmRpZGF0ZSBwbHVnLWluLiIpOwotICAgICAgICBpZiAobV9udW1iZXJPZlByaW1hcnlTbmFw
c2hvdERldGVjdGlvbkF0dGVtcHRzIDwgbWF4UHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luRGV0ZWN0
aW9uQXR0ZW1wdHMpIHsKLSAgICAgICAgICAgIExPRyhQbHVnaW5zLCAiUHJpbWFyeSBQbHVnLUlu
IERldGVjdGlvbjogd2lsbCBhdHRlbXB0IGFnYWluIGluICUuMWYgcy4iLCBkZWZlcnJlZFByaW1h
cnlTbmFwc2hvdHRlZFBsdWdJbkRldGVjdGlvbkRlbGF5LnZhbHVlKCkpOwotICAgICAgICAgICAg
bV9kZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5UaW1lci5zdGFydE9uZVNob3QoZGVm
ZXJyZWRQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5EZXRlY3Rpb25EZWxheSk7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIExPRyhQbHVnaW5zLCAiUHJpbWFyeSBQbHVn
LUluIERldGVjdGlvbjogc3VjY2VzcyAtIGZvdW5kIGEgY2FuZGlkYXRlIHBsdWctaW4gLSBpbmZv
cm0gaXQuIik7Ci0gICAgbV9kaWRGaW5kUHJpbWFyeVNuYXBzaG90dGVkUGx1Z2luID0gdHJ1ZTsK
LSAgICBtX3ByaW1hcnlQbHVnSW5QYWdlT3JpZ2luID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1
bWVudCgpLT5iYXNlVVJMKCkuaG9zdCgpLnRvU3RyaW5nKCk7Ci0gICAgbV9wcmltYXJ5UGx1Z0lu
T3JpZ2luID0gY2FuZGlkYXRlUGx1Z0luLT5sb2FkZWRVcmwoKS5ob3N0KCkudG9TdHJpbmcoKTsK
LSAgICBtX3ByaW1hcnlQbHVnSW5NaW1lVHlwZSA9IGNhbmRpZGF0ZVBsdWdJbi0+c2VydmljZVR5
cGUoKTsKLQotICAgIGNhbmRpZGF0ZVBsdWdJbi0+c2V0SXNQcmltYXJ5U25hcHNob3R0ZWRQbHVn
SW4odHJ1ZSk7Ci19Ci0KLXZvaWQgV2ViUGFnZTo6cmVzZXRQcmltYXJ5U25hcHNob3R0ZWRQbHVn
SW4oKQotewotICAgIG1fcmVhZHlUb0ZpbmRQcmltYXJ5U25hcHNob3R0ZWRQbHVnaW4gPSBmYWxz
ZTsKLSAgICBtX2RpZEZpbmRQcmltYXJ5U25hcHNob3R0ZWRQbHVnaW4gPSBmYWxzZTsKLSAgICBt
X251bWJlck9mUHJpbWFyeVNuYXBzaG90RGV0ZWN0aW9uQXR0ZW1wdHMgPSAwOwotICAgIG1faGFz
U2VlblBsdWdpbiA9IGZhbHNlOwotfQotCi1ib29sIFdlYlBhZ2U6Om1hdGNoZXNQcmltYXJ5UGx1
Z0luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4s
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2RpZEZpbmRQcmlt
YXJ5U25hcHNob3R0ZWRQbHVnaW4pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVy
biAocGFnZU9yaWdpbiA9PSBtX3ByaW1hcnlQbHVnSW5QYWdlT3JpZ2luICYmIHBsdWdpbk9yaWdp
biA9PSBtX3ByaW1hcnlQbHVnSW5PcmlnaW4gJiYgbWltZVR5cGUgPT0gbV9wcmltYXJ5UGx1Z0lu
TWltZVR5cGUpOwotfQotCi1ib29sIFdlYlBhZ2U6OnBsdWdJbkludGVyc2VjdHNTZWFyY2hSZWN0
KEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBsdWdJbkltYWdlRWxlbWVudCkKLXsKLSAgICBhdXRv
JiBtYWluRnJhbWUgPSBjb3JlUGFnZSgpLT5tYWluRnJhbWUoKTsKLSAgICBpZiAoIW1haW5GcmFt
ZS52aWV3KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIW1haW5GcmFtZS52aWV3
KCktPnJlbmRlclZpZXcoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgSW50UmVjdCBz
ZWFyY2hSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBjb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52
aWV3KCktPmNvbnRlbnRzU2l6ZSgpKTsKLSAgICBzZWFyY2hSZWN0LmludGVyc2VjdChJbnRSZWN0
KEludFBvaW50KCksIEludFNpemUocHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luU2VhcmNoTGltaXQs
IHByaW1hcnlTbmFwc2hvdHRlZFBsdWdJblNlYXJjaExpbWl0KSkpOwotCi0gICAgSW50UmVjdCBw
bHVnSW5SZWN0UmVsYXRpdmVUb1ZpZXcgPSBwbHVnSW5JbWFnZUVsZW1lbnQuY2xpZW50UmVjdCgp
OwotICAgIGlmIChwbHVnSW5SZWN0UmVsYXRpdmVUb1ZpZXcuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgU2Nyb2xsUG9zaXRpb24gc2Nyb2xsUG9zaXRpb24gPSBtYWluRnJh
bWUudmlldygpLT5kb2N1bWVudFNjcm9sbFBvc2l0aW9uUmVsYXRpdmVUb1ZpZXdPcmlnaW4oKTsK
LSAgICBJbnRSZWN0IHBsdWdJblJlY3RSZWxhdGl2ZVRvVG9wRG9jdW1lbnQocGx1Z0luUmVjdFJl
bGF0aXZlVG9WaWV3LmxvY2F0aW9uKCkgKyB0b0ludFNpemUoc2Nyb2xsUG9zaXRpb24pLCBwbHVn
SW5SZWN0UmVsYXRpdmVUb1ZpZXcuc2l6ZSgpKTsKLQotICAgIHJldHVybiBwbHVnSW5SZWN0UmVs
YXRpdmVUb1RvcERvY3VtZW50LmludGVyc2VjdHMoc2VhcmNoUmVjdCk7Ci19Ci0KLWJvb2wgV2Vi
UGFnZTo6cGx1Z0luSXNQcmltYXJ5U2l6ZShXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
JiBwbHVnSW5JbWFnZUVsZW1lbnQsIHVuc2lnbmVkJiBjYW5kaWRhdGVQbHVnSW5BcmVhKQotewot
ICAgIGF1dG8qIHJlbmRlcmVyID0gcGx1Z0luSW1hZ2VFbGVtZW50LnJlbmRlcmVyKCk7Ci0gICAg
aWYgKCFpczxSZW5kZXJCb3g+KHJlbmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgYXV0byYgYm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PigqcmVuZGVyZXIpOwotICAgIGlmIChi
b3guY29udGVudFdpZHRoKCkgPCBwcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5NaW5pbXVtV2lkdGgg
fHwgYm94LmNvbnRlbnRIZWlnaHQoKSA8IHByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbk1pbmltdW1I
ZWlnaHQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIExheW91dFVuaXQgY29udGVudEFy
ZWEgPSBib3guY29udGVudFdpZHRoKCkgKiBib3guY29udGVudEhlaWdodCgpOwotICAgIGlmIChj
b250ZW50QXJlYSA+IGNhbmRpZGF0ZVBsdWdJbkFyZWEgKiBwcmltYXJ5U25hcHNob3R0ZWRQbHVn
SW5TZWFyY2hCdWNrZXRTaXplKSB7Ci0gICAgICAgIGNhbmRpZGF0ZVBsdWdJbkFyZWEgPSBjb250
ZW50QXJlYS50b1Vuc2lnbmVkKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotI2VuZGlmIC8vIEVOQUJMRShQUklNQVJZX1NOQVBTSE9UVEVE
X1BMVUdJTl9IRVVSSVNUSUMpCi0KIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBXZWJQYWdlOjpjdXJy
ZW50U2VsZWN0aW9uQXNSYW5nZSgpCiB7CiAgICAgYXV0byogZnJhbWUgPSBmcmFtZVdpdGhTZWxl
Y3Rpb24obV9wYWdlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCAyNjNmZjdlNTRkZjZhODM0MDk5YzlhMzAwZmJkN2Y1NTQ4ZDhkYjI0Li42
ZDkxMTU5MDljNGVmNzcwZjMzZDVmZmUyODQwZGVhZjkxNGFmNjQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xODAsNyArMTgwLDYgQEAgY2xhc3Mg
SFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIEhUTUxNZW51RWxlbWVudDsKIGNsYXNzIEhUTUxNZW51
SXRlbUVsZW1lbnQ7CiBjbGFzcyBIVE1MUGx1Z0luRWxlbWVudDsKLWNsYXNzIEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFz
cyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDsKQEAgLTExMTgsMTUgKzExMTcsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkaWRGaW5pc2hDaGVja2luZ1RleHQodWludDY0X3QgcmVxdWVzdElELCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiYpOwogICAgIHZvaWQgZGlk
Q2FuY2VsQ2hlY2tpbmdUZXh0KHVpbnQ2NF90IHJlcXVlc3RJRCk7CiAKLSNpZiBFTkFCTEUoUFJJ
TUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElDKQotICAgIHZvaWQgZGV0ZXJtaW5lUHJp
bWFyeVNuYXBzaG90dGVkUGx1Z0luKCk7Ci0gICAgdm9pZCBkZXRlcm1pbmVQcmltYXJ5U25hcHNo
b3R0ZWRQbHVnSW5UaW1lckZpcmVkKCk7Ci0gICAgdm9pZCByZXNldFByaW1hcnlTbmFwc2hvdHRl
ZFBsdWdJbigpOwotICAgIGJvb2wgbWF0Y2hlc1ByaW1hcnlQbHVnSW4oY29uc3QgU3RyaW5nJiBw
YWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkgY29uc3Q7Ci0gICAgYm9vbCBwbHVnSW5JbnRlcnNlY3RzU2VhcmNoUmVjdChXZWJDb3Jl
OjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBwbHVnaW5JbWFnZUVsZW1lbnQpOwotICAgIGJvb2wg
cGx1Z0luSXNQcmltYXJ5U2l6ZShXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBwbHVn
aW5JbWFnZUVsZW1lbnQsIHVuc2lnbmVkICZwbHVnaW5BcmVhKTsKLSNlbmRpZgotCiAjaWYgRU5B
QkxFKERBVEFfREVURUNUSU9OKQogICAgIHZvaWQgc2V0RGF0YURldGVjdGlvblJlc3VsdHMoTlNB
cnJheSAqKTsKICAgICB2b2lkIGRldGVjdERhdGFJbkFsbEZyYW1lcyh1aW50NjRfdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBEYXRhRGV0ZWN0aW9uUmVzdWx0Jik+JiYpOwpAQCAtMTgz
NSwxNSArMTgyNSw2IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQog
ICAgIGJvb2wgbV9uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MgeyBmYWxzZSB9OwogI2Vu
ZGlmCi0jaWYgRU5BQkxFKFBSSU1BUllfU05BUFNIT1RURURfUExVR0lOX0hFVVJJU1RJQykKLSAg
ICBib29sIG1fcmVhZHlUb0ZpbmRQcmltYXJ5U25hcHNob3R0ZWRQbHVnaW4geyBmYWxzZSB9Owot
ICAgIGJvb2wgbV9kaWRGaW5kUHJpbWFyeVNuYXBzaG90dGVkUGx1Z2luIHsgZmFsc2UgfTsKLSAg
ICB1bnNpZ25lZCBtX251bWJlck9mUHJpbWFyeVNuYXBzaG90RGV0ZWN0aW9uQXR0ZW1wdHMgeyAw
IH07Ci0gICAgU3RyaW5nIG1fcHJpbWFyeVBsdWdJblBhZ2VPcmlnaW47Ci0gICAgU3RyaW5nIG1f
cHJpbWFyeVBsdWdJbk9yaWdpbjsKLSAgICBTdHJpbmcgbV9wcmltYXJ5UGx1Z0luTWltZVR5cGU7
Ci0gICAgUnVuTG9vcDo6VGltZXI8V2ViUGFnZT4gbV9kZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0
ZWRQbHVnSW5UaW1lcjsKLSNlbmRpZgogCiAgICAgLy8gVGhlIGxheWVyIGhvc3RpbmcgbW9kZS4K
ICAgICBMYXllckhvc3RpbmdNb2RlIG1fbGF5ZXJIb3N0aW5nTW9kZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBiNzZmMTE5NWNlZTY5NmI3NTgxYjE2NTYzYmUz
MzUyNmZhYzlkYTFjLi4wNmEyOWQ3MzU4NzIxMTAzNzQyYjVlYmY4MTVjNjllOTE4NjVkY2FkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC00NTcsOSArNDU3LDYg
QEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIAogICAgIHNldFRlcm1pbmF0aW9uVGltZW91dChw
YXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCk7CiAKLSAgICBmb3IgKGF1dG8mIG9yaWdpbiA6
IHBhcmFtZXRlcnMucGx1Z0luQXV0b1N0YXJ0T3JpZ2lucykKLSAgICAgICAgbV9wbHVnSW5BdXRv
U3RhcnRPcmlnaW5zLmFkZChvcmlnaW4pOwotCiAgICAgc2V0TWVtb3J5Q2FjaGVEaXNhYmxlZChw
YXJhbWV0ZXJzLm1lbW9yeUNhY2hlRGlzYWJsZWQpOwogCiAgICAgV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRBdHRyU3R5bGVFbmFibGVkKHBhcmFt
ZXRlcnMuYXR0clN0eWxlRW5hYmxlZCk7CkBAIC00NzgsMTAgKzQ3NSw2IEBAIHZvaWQgV2ViUHJv
Y2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMpCiAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkgJiYgUExBVEZPUk0oTUFDKQotICAgIHJlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVz
KHBhcmFtZXRlcnMucGx1Z2luTG9hZENsaWVudFBvbGljaWVzKTsKLSNlbmRpZgotCiAjaWYgRU5B
QkxFKEdBTUVQQUQpCiAgICAgR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXRTaGFyZWRQ
cm92aWRlcihXZWJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKICNlbmRpZgpAQCAtNTMy
LDggKzUyNSw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMoV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMmJiBwCiAgICAgCiAjZW5kaWYKIAotICAg
IHJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKFdURk1vdmUocGFyYW1ldGVycy5wbHVn
SW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMpKTsKLQogICAgIGZvciAoYXV0byYgc3VwcGxlbWVudCA6
IG1fc3VwcGxlbWVudHMudmFsdWVzKCkpCiAgICAgICAgIHN1cHBsZW1lbnQtPnNldFdlYnNpdGVE
YXRhU3RvcmUocGFyYW1ldGVycyk7CiAKQEAgLTg5NCwxNDMgKzg4NSwxMSBAQCB2b2lkIFdlYlBy
b2Nlc3M6OnVzZXJHZXN0dXJlVG9rZW5EZXN0cm95ZWQoVXNlckdlc3R1cmVUb2tlbiYgdG9rZW4p
CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpEaWREZXN0cm95VXNlckdlc3R1cmVUb2tlbihpZGVudGlmaWVyKSwgMCk7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgdm9pZCBhZGRDYXNlRm9sZGVkQ2hhcmFjdGVycyhTdHJpbmdIYXNoZXIm
IGhhc2hlciwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgaWYgKHN0cmluZy5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKSB7Ci0gICAgICAg
IGhhc2hlci5hZGRDaGFyYWN0ZXJzPExDaGFyLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g6OkZv
bGRDYXNlPExDaGFyPj4oc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaGFzaGVyLmFkZENoYXJhY3RlcnM8VUNoYXIsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaDo6Rm9sZENhc2U8VUNoYXI+PihzdHJpbmcuY2hhcmFjdGVy
czE2KCksIHN0cmluZy5sZW5ndGgoKSk7Ci19Ci0KLXN0YXRpYyB1bnNpZ25lZCBoYXNoRm9yUGx1
Z0luT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5P
cmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCi17Ci0gICAgLy8gV2Ugd2FudCB0byBhdm9p
ZCBjb25jYXRlbmF0aW5nIHRoZSBzdHJpbmdzIGFuZCB0aGVuIHRha2luZyB0aGUgaGFzaCwgc2lu
Y2UgdGhhdCBjb3VsZCBsZWFkIHRvIGFuIGV4cGVuc2l2ZSBjb252ZXJzaW9uLgotICAgIC8vIFdl
IGFsc28gd2FudCB0byBhdm9pZCB1c2luZyB0aGUgaGFzaCgpIGZ1bmN0aW9uIGluIFN0cmluZ0lt
cGwgb3IgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoIGJlY2F1c2UgdGhhdCBtYXNrcyBvdXQgYml0
cyBmb3IgdGhlIHVzZSBvZiBmbGFncy4KLSAgICBTdHJpbmdIYXNoZXIgaGFzaGVyOwotICAgIGFk
ZENhc2VGb2xkZWRDaGFyYWN0ZXJzKGhhc2hlciwgcGFnZU9yaWdpbik7Ci0gICAgaGFzaGVyLmFk
ZENoYXJhY3RlcigwKTsKLSAgICBhZGRDYXNlRm9sZGVkQ2hhcmFjdGVycyhoYXNoZXIsIHBsdWdp
bk9yaWdpbik7Ci0gICAgaGFzaGVyLmFkZENoYXJhY3RlcigwKTsKLSAgICBhZGRDYXNlRm9sZGVk
Q2hhcmFjdGVycyhoYXNoZXIsIG1pbWVUeXBlKTsKLSAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsK
LX0KLQotYm9vbCBXZWJQcm9jZXNzOjppc1BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godW5zaWdu
ZWQgcGx1Z0luT3JpZ2luSGFzaCkKLXsKLSAgICBhdXRvIGl0ID0gbV9wbHVnSW5BdXRvU3RhcnRP
cmlnaW5IYXNoZXMuZmluZChwbHVnSW5PcmlnaW5IYXNoKTsKLSAgICBpZiAoaXQgPT0gbV9wbHVn
SW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuZW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIHJldHVybiBXYWxsVGltZTo6bm93KCkgPCBpdC0+dmFsdWU7Ci19Ci0KLWJvb2wgV2ViUHJv
Y2Vzczo6c2hvdWxkUGx1Z0luQXV0b1N0YXJ0RnJvbU9yaWdpbihXZWJQYWdlJiB3ZWJQYWdlLCBj
b25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQotewotICAgIGlmICghcGx1Z2luT3JpZ2luLmlzRW1wdHkoKSAm
JiBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbnMuY29udGFpbnMocGx1Z2luT3JpZ2luKSkKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0KLSNpZiBFTkFCTEUoUFJJTUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5f
SEVVUklTVElDKQotICAgIC8vIFRoZSBwbHVnaW4gd2Fzbid0IGluIHRoZSBnZW5lcmFsIGxpc3Qs
IHNvIGNoZWNrIGlmIGl0IHNpbWlsYXIgdG8gdGhlIHByaW1hcnkgcGx1Z2luIGZvciB0aGUgcGFn
ZSAoaWYgd2UndmUgZm91bmQgb25lKS4KLSAgICBpZiAod2ViUGFnZS5tYXRjaGVzUHJpbWFyeVBs
dWdJbihwYWdlT3JpZ2luLCBwbHVnaW5PcmlnaW4sIG1pbWVUeXBlKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh3ZWJQYWdlKTsKLSNlbmRpZgotCi0gICAg
Ly8gTGFzdGx5IGNoZWNrIGFnYWluc3QgdGhlIG1vcmUgZXhwbGljaXQgaGFzaCBsaXN0LgotICAg
IHJldHVybiBpc1BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2goaGFzaEZvclBsdWdJbk9yaWdpbihw
YWdlT3JpZ2luLCBwbHVnaW5PcmlnaW4sIG1pbWVUeXBlKSk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vz
czo6cGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCi17Ci0gICAg
aWYgKHBhZ2VPcmlnaW4uaXNFbXB0eSgpKSB7Ci0gICAgICAgIExPRyhQbHVnaW5zLCAiTm90IGFk
ZGluZyBlbXB0eSBwYWdlIG9yaWdpbiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
dW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCA9IGhhc2hGb3JQbHVnSW5PcmlnaW4ocGFnZU9yaWdp
biwgcGx1Z2luT3JpZ2luLCBtaW1lVHlwZSk7Ci0gICAgaWYgKGlzUGx1Z0luQXV0b1N0YXJ0T3Jp
Z2luSGFzaChwbHVnSW5PcmlnaW5IYXNoKSkgewotICAgICAgICBMT0coUGx1Z2lucywgIkhhc2gg
JXggYWxyZWFkeSBleGlzdHMgYXMgYXV0by1zdGFydCBvcmlnaW4gKHJlcXVlc3QgZm9yICVzKSIs
IHBsdWdJbk9yaWdpbkhhc2gsIHBhZ2VPcmlnaW4udXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICAvLyBXZSBtaWdodCBhdHRlbXB0IHRvIHN0YXJ0IGFub3RoZXIg
cGx1Z2luIGJlZm9yZSB0aGUgZGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luIG1lc3NhZ2UKLSAg
ICAvLyBjb21lcyBiYWNrIGZyb20gdGhlIHBhcmVudCBwcm9jZXNzLiBUZW1wb3JhcmlseSBhZGQg
dGhpcyBoYXNoIHRvIHRoZSBsaXN0IHdpdGggYSB0aGlydHkKLSAgICAvLyBzZWNvbmQgdGltZW91
dC4gVGhhdCB3YXksIGV2ZW4gaWYgdGhlIHBhcmVudCBkZWNpZGVzIG5vdCB0byBhZGQgaXQsIHdl
J2xsIG9ubHkgYmUKLSAgICAvLyBpbmNvcnJlY3QgZm9yIGEgbGl0dGxlIHdoaWxlLgotICAgIG1f
cGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLnNldChwbHVnSW5PcmlnaW5IYXNoLCBXYWxsVGlt
ZTo6bm93KCkgKyAzMF9zICogMTAwMCk7Ci0KLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkFkZFBsdWdJbkF1dG9TdGFydE9yaWdp
bkhhc2gocGFnZU9yaWdpbiwgcGx1Z0luT3JpZ2luSGFzaCksIDApOwotfQotCi12b2lkIFdlYlBy
b2Nlc3M6OmRpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godW5zaWduZWQgcGx1Z0luT3Jp
Z2luSGFzaCwgV2FsbFRpbWUgZXhwaXJhdGlvblRpbWUpCi17Ci0gICAgLy8gV2hlbiBjYWxsZWQs
IHNvbWUgd2ViIHByb2Nlc3MgKHdoaWNoIGFsc28gbWlnaHQgYmUgdGhpcyBvbmUpIGFkZGVkIHRo
ZSBvcmlnaW4gZm9yIGF1dG8tc3RhcnRpbmcsCi0gICAgLy8gb3IgcmVjZWl2ZWQgdXNlciBpbnRl
cmFjdGlvbi4KLSAgICAvLyBTZXQgdGhlIGJpdCB0byBhdm9pZCBoYXZpbmcgcmVkdW5kYW50bHkg
Y2FsbCBpbnRvIHRoZSBVSSBwcm9jZXNzIHVwb24gdXNlciBpbnRlcmFjdGlvbi4KLSAgICBtX3Bs
dWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5zZXQocGx1Z0luT3JpZ2luSGFzaCwgZXhwaXJhdGlv
blRpbWUpOwotfQotCi12b2lkIFdlYlByb2Nlc3M6OnJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2lu
SGFzaGVzKEhhc2hNYXA8dW5zaWduZWQsIFdhbGxUaW1lPiYmIGhhc2hlcykKLXsKLSAgICBtX3Bs
dWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyA9IFdURk1vdmUoaGFzaGVzKTsKLX0KLQotdm9pZCBX
ZWJQcm9jZXNzOjpwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYg
cGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCi17Ci0gICAgaWYgKHBhZ2VPcmlnaW4uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICB1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoID0gaGFzaEZvclBsdWdJbk9yaWdpbihw
YWdlT3JpZ2luLCBwbHVnaW5PcmlnaW4sIG1pbWVUeXBlKTsKLSAgICBpZiAoIXBsdWdJbk9yaWdp
bkhhc2gpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gaXQgPSBtX3BsdWdJbkF1dG9TdGFy
dE9yaWdpbkhhc2hlcy5maW5kKHBsdWdJbk9yaWdpbkhhc2gpOwotICAgIGlmIChpdCA9PSBtX3Bs
dWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKGl0LT52YWx1ZSAtIFdhbGxUaW1lOjpub3coKSA+IHBsdWdJbkF1dG9TdGFydEV4cGlyYXRp
b25UaW1lVXBkYXRlVGhyZXNob2xkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlBsdWdJbkRp
ZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24ocGx1Z0luT3JpZ2luSGFzaCksIDApOwotfQotCi12b2lk
IFdlYlByb2Nlc3M6OnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koV2ViQ29yZTo6UGx1Z2luTG9h
ZENsaWVudFBvbGljeSBwb2xpY3ksIGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgU3RyaW5nJiBi
dW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpCi17Ci0jaWYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpICYmIFBMQVRGT1JNKE1BQykKLSAgICBXZWJQbHVnaW5J
bmZvUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kocG9saWN5
LCBob3N0LCBidW5kbGVJZGVudGlmaWVyLCB2ZXJzaW9uU3RyaW5nKTsKLSNlbmRpZgotfQotCi12
b2lkIFdlYlByb2Nlc3M6OnJlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzKGNvbnN0IEhhc2hN
YXA8V1RGOjpTdHJpbmcsIEhhc2hNYXA8V1RGOjpTdHJpbmcsIEhhc2hNYXA8V1RGOjpTdHJpbmcs
IFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+Pj4mIHBsdWdpbkxvYWRDbGllbnRQb2xp
Y2llcykKLXsKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkgJiYgUExBVEZPUk0oTUFD
KQotICAgIGNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKTsKLQotICAgIGZvciAoYXV0byYgaG9z
dFBhaXIgOiBwbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMpIHsKLSAgICAgICAgZm9yIChhdXRvJiBi
dW5kbGVJZGVudGlmaWVyUGFpciA6IGhvc3RQYWlyLnZhbHVlKSB7Ci0gICAgICAgICAgICBmb3Ig
KGF1dG8mIHZlcnNpb25QYWlyIDogYnVuZGxlSWRlbnRpZmllclBhaXIudmFsdWUpCi0gICAgICAg
ICAgICAgICAgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXRQbHVnaW5Mb2Fk
Q2xpZW50UG9saWN5KHZlcnNpb25QYWlyLnZhbHVlLCBob3N0UGFpci5rZXksIGJ1bmRsZUlkZW50
aWZpZXJQYWlyLmtleSwgdmVyc2lvblBhaXIua2V5KTsKLSAgICAgICAgfQotICAgIH0KLSNlbmRp
ZgotfQotCiB2b2lkIFdlYlByb2Nlc3M6OmlzSklURW5hYmxlZChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVy
KEpTQzo6T3B0aW9uczo6dXNlSklUKCkpOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OmNsZWFyUGx1
Z2luQ2xpZW50UG9saWNpZXMoKQotewotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSAm
JiBQTEFURk9STShNQUMpCi0gICAgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpzaW5nbGV0b24oKS5j
bGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCk7Ci0jZW5kaWYKLX0KLQogdm9pZCBXZWJQcm9jZXNz
OjpyZWZyZXNoUGx1Z2lucygpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA0ZGUyNjE0OTU0NGZkZTNkODZk
MzkwZThkZWZkZDgyM2ZkMDg5MmY5Li5lOTQ4NjcwZTRlNTk4M2JmZDk1NmRlYTZiYzhmNjI5ZTIw
YjNmZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTI3LDkgKzI3
LDYgQEAKIAogI2luY2x1ZGUgIkF1eGlsaWFyeVByb2Nlc3MuaCIKICNpbmNsdWRlICJDYWNoZU1v
ZGVsLmgiCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSNpbmNsdWRlICJNZWRpYURldmljZVNh
bmRib3hFeHRlbnNpb25zLmgiCi0jZW5kaWYKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAi
U3RvcmFnZUFyZWFJZGVudGlmaWVyLmgiCkBAIC01OSw2ICs1NiwxMCBAQAogI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21TdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFzaC5o
PgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJNZWRpYURldmljZVNhbmRi
b3hFeHRlbnNpb25zLmgiCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUg
PFdlYkNvcmUvU2NyZWVuUHJvcGVydGllcy5oPgogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNo
Lmg+CkBAIC0xNzksMTIgKzE4MCw2IEBAIHB1YmxpYzoKICAgICBjb25zdCBXVEY6Ok1hY2hTZW5k
UmlnaHQmIGNvbXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fY29t
cG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0OyB9CiAjZW5kaWYKIAotICAgIGJvb2wgc2hvdWxkUGx1
Z0luQXV0b1N0YXJ0RnJvbU9yaWdpbihXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2lu
LCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7Ci0g
ICAgdm9pZCBwbHVnSW5EaWRTdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2lu
LCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7Ci0g
ICAgdm9pZCBwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgcGFn
ZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpOwotICAgIHZvaWQgc2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShXZWJDb3JlOjpQbHVnaW5M
b2FkQ2xpZW50UG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYgYnVuZGxl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nKTsKLSAgICB2b2lkIHJlc2V0
UGx1Z2luTG9hZENsaWVudFBvbGljaWVzKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0
cmluZywgSGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+Pj4m
KTsKLSAgICB2b2lkIGNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKTsKICAgICB2b2lkIHJlZnJl
c2hQbHVnaW5zKCk7CiAKICAgICBib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2Z1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQ7IH0KQEAgLTQxNCwxMCArNDA5
LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKCkg
Y29uc3Q7CiAgICAgdm9pZCBmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdlZChib29sIGZ1bGxL
ZXlib2FyZEFjY2Vzc0VuYWJsZWQpOwogCi0gICAgYm9vbCBpc1BsdWdJbkF1dG9TdGFydE9yaWdp
bkhhc2godW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCk7Ci0gICAgdm9pZCBkaWRBZGRQbHVnSW5B
dXRvU3RhcnRPcmlnaW5IYXNoKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIFdhbGxUaW1lIGV4
cGlyYXRpb25UaW1lKTsKLSAgICB2b2lkIHJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVz
KEhhc2hNYXA8dW5zaWduZWQsIFdhbGxUaW1lPiYmIGhhc2hlcyk7Ci0KICAgICB2b2lkIHBsYXRm
b3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsKTsKIAogICAgIHZvaWQgc2V0RW5oYW5jZWRBY2Nl
c3NpYmlsaXR5KGJvb2wpOwpAQCAtNTYxLDkgKzU1Miw2IEBAIHByaXZhdGU6CiAjZW5kaWYKICAg
ICBSZWZQdHI8V2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlcj4gbV93ZWJJbnNwZWN0b3JJ
bnRlcnJ1cHREaXNwYXRjaGVyOwogCi0gICAgSGFzaE1hcDx1bnNpZ25lZCwgV2FsbFRpbWU+IG1f
cGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzOwotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3BsdWdJ
bkF1dG9TdGFydE9yaWdpbnM7Ci0KICAgICBib29sIG1faGFzU2V0Q2FjaGVNb2RlbCB7IGZhbHNl
IH07CiAgICAgQ2FjaGVNb2RlbCBtX2NhY2hlTW9kZWwgeyBDYWNoZU1vZGVsOjpEb2N1bWVudFZp
ZXdlciB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCmluZGV4IDNlNWU3MTEzNWY5YmU0N2UzOTUwNjU0MTQxZTgyNDI2ZTBkMGYxN2UuLjlk
OTYyYTI3ZDA1Y2FhZmQyYWRhODUyM2JmZTUxMjI2Njc1NzgxNzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC01NywxMSArNTcsNiBA
QCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewog
CiAgICAgU2V0SGFzU3R5bHVzRGV2aWNlKGJvb2wgaGFzU3R5bHVzRGV2aWNlKQogCi0gICAgRGlk
QWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCh1aW50MzJfdCBoYXNoLCBXYWxsVGltZSBleHBp
cmF0aW9uVGltZSkKLSAgICBSZXNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhIYXNoTWFw
PHVpbnQzMl90LFdhbGxUaW1lPiBoYXNoZXMpCi0gICAgU2V0UGx1Z2luTG9hZENsaWVudFBvbGlj
eShXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5IHBvbGljeSwgU3RyaW5nIGhvc3QsIFN0
cmluZyBidW5kbGVJZGVudGlmaWVyLCBTdHJpbmcgdmVyc2lvblN0cmluZykKLSAgICBSZXNldFBs
dWdpbkxvYWRDbGllbnRQb2xpY2llcyhIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIEhh
c2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5Pj4+IHBsdWdpbkxv
YWRDbGllbnRQb2xpY2llcykKLSAgICBDbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCkKICAgICBS
ZWZyZXNoUGx1Z2lucygpCiAKICAgICB2b2lkIFN0YXJ0TWVtb3J5U2FtcGxlcihXZWJLaXQ6OlNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW1wbGVMb2dGaWxlSGFuZGxlLCBTdHJpbmcgc2FtcGxl
TG9nRmlsZVBhdGgsIGRvdWJsZSBpbnRlcnZhbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQppbmRleCA4MTAwOTBlNzg5Y2YxYjA1MGMw
ZmZkZWRhYzMyOGM5MGNjNjRjMzY3Li42MTFlYmZjOGEwZDM2OWI3YzkyYjE2NTE1YjdlYjZjMmNl
ZDk1ZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZXMubW0KQEAgLTIzNzMsMTIgKzIzNzMsMTEgQEAgLSAoV2ViU3RvcmFnZUJsb2NraW5n
UG9saWN5KXN0b3JhZ2VCbG9ja2luZ1BvbGljeQogCiAtIChCT09MKXBsdWdJblNuYXBzaG90dGlu
Z0VuYWJsZWQKIHsKLSAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTpXZWJLaXRQbHVn
SW5TbmFwc2hvdHRpbmdFbmFibGVkUHJlZmVyZW5jZUtleV07CisgICAgcmV0dXJuIE5POwogfQog
CiAtICh2b2lkKXNldFBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAogewot
ICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6ZW5hYmxlZCBmb3JLZXk6V2ViS2l0UGx1Z0luU25hcHNo
b3R0aW5nRW5hYmxlZFByZWZlcmVuY2VLZXldOwogfQogCiAtIChCT09MKWhpZGRlblBhZ2VET01U
aW1lclRocm90dGxpbmdFbmFibGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2YzMWYwZDFlNzg0MWMwMjRmM2MwMWRjMjVj
OTU5ODk1ZjJhY2I0Yy4uN2M2NDhlZWMzYjg3MDgxNzE4ZGE2M2I5NzdkNWIyZWRmZWZiZDFkOSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTExLTExICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdW51c2VkIGFkdmFuY2VkIHBsdWctaW4gZmVhdHVy
ZXM6IHNuYXBzaG90dGluZyBhbmQgcGx1Zy1pbiBsb2FkIHBvbGljeQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODM1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sxL1Rlc3RF
eHBlY3RhdGlvbnM6IFJlbW92ZWQgc25hcHNob3R0aW5nIGV4cGVjdGF0aW9ucy4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS93
aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL21h
Yy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmc6IFJlbW92ZWQuCisgICAgICAgICogcGx1Z2lucy9z
bmFwc2hvdHRpbmc6IFJlbW92ZWQuCisKIDIwMjAtMTEtMTEgIFJ5YW4gSGFkZGFkICA8cnlhbmhh
ZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCB0ZXN0IGdhcmRlbmluZywgYWRk
IE1vamF2ZSBzcGVjaWZpYyBiYXNlbGluZXMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOGM1NzQ4M2M1Nzk2NWRlMmRkNWMzZWRiNThkMjFh
ZmI2NTVkNjExNy4uNGZkN2I2Y2NiNTQ0ODgxNzRlNWYzY2IxYzJlZGNlZjJjZmE2OTQ1MiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzg0
LDkgKzM4NCw2IEBAIGZhc3QvZm9ybXMvdmFsaWRhdGlvbi1tZXNzYWdlLWluLXJlbGF0aXZlLWJv
ZHkuaHRtbAogZmFzdC9mb3Jtcy92YWxpZGF0aW9uLW1lc3NhZ2UtYXBwZWFyYW5jZS5odG1sCiBm
YXN0L2Zvcm1zL3ZhbGlkYXRpb24tbWVzc2FnZS1vbi10ZXh0YXJlYS5odG1sCiAKLSMgRGlzYWJs
ZSBzbmFwc2hvdHRpbmcgdGVzdHMgb24gV0sxIG9ubHkKLXBsdWdpbnMvc25hcHNob3R0aW5nCi0K
ICMgRGlzYWJsZSBzbWFsbCBwbHVnaW4gYmxvY2tpbmcgb24gV0sxCiBwbHVnaW5zL3NtYWxsLXBs
dWdpbi1ibG9ja2VkLmh0bWwgWyBTa2lwIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDZhYzNlNzBiYmM1YjE4ZjU0MTllNzA4Mjk1N2E4
OTYyZjRmMTFmYTcuLmFhZjVhY2QzOGQxNDc1NjJlNGU3NTBkOGY5MzVmMmI1Y2E4ZGI5ZmEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTM5
OSwxNyArMzk5LDYgQEAgd2Via2l0Lm9yZy9iLzEzMjc2NiBmYXN0L2hpZHBpL2ZpbHRlcnMtaW52
ZXJ0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMzI3NjYgZmFzdC9o
aWRwaS9maWx0ZXJzLW11bHRpcGxlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5v
cmcvYi8xMzI3NjYgZmFzdC9oaWRwaS9maWx0ZXJzLXJlZmVyZW5jZS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiAKLSMgUGx1Zy1pbiBzbmFwc2hvdHRpbmcgdGVzdHMgZG8gbm90IG1ha2UgbXVj
aCBzZW5zZToKLSMgLSBzbmFwc2hvdHRpbmcgaXMgb25seSBzdXBwb3J0ZWQgZm9yIEZsYXNoLCBi
dXQgd2UgY2FuJ3QgdXNlIEZsYXNoIGJlY2F1c2UgaXQgaXNuJ3QgaW5zdGFsbGVkIGV2ZXJ5d2hl
cmU7Ci0jIC0gc28gbW9zdCBvZiB0aGUgdGVzdHMgdXNlIFF1aWNrVGltZSwgd2hpY2ggZG9lc24n
dCBzdXBwb3J0IHNuYXBzaG90dGluZywgYW5kIGlzIDMyLWJpdCBvbmx5LCB0aHVzIGZhaWxpbmcg
dG8gbG9hZCBpbiBlbmdpbmVlcmluZyBidWlsZHMuCi1wbHVnaW5zL3NuYXBzaG90dGluZyBbIFBh
c3MgRmFpbHVyZSBdCi0jIFRoZXNlIHR3byB0ZXN0cyB1c2UgRmxhc2gsIHNvIHRoZXkgdHJpZ2dl
ciBhIHJlbGVhc2UgYXNzZXJ0aW9uLgotcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktc2lt
aWxhci10by1kb21pbmFudC1hZnRlci1kZWxheS5odG1sIFsgU2tpcCBdCi1wbHVnaW5zL3NuYXBz
aG90dGluZy9wcmludC1zbmFwc2hvdHRlZC1wbHVnaW4uaHRtbCBbIFNraXAgXQotCi13ZWJraXQu
b3JnL2IvMTMzMjI3IHBsdWdpbnMvc25hcHNob3R0aW5nL3NldC1wbHVnaW4tc2l6ZS10by10aW55
Lmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xMzMyMjcgcGx1Z2lucy9zbmFwc2hvdHRp
bmcvcXVpY2t0aW1lLXBsdWdpbi1zbmFwc2hvdHRlZC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLQog
ZmFzdC9kb20vZnJhbWUtbG9hZGluZy12aWEtZG9jdW1lbnQtd3JpdGUuaHRtbCBbIFRpbWVvdXQg
XQogCiBmYXN0L3NwZWVjaHN5bnRoZXNpcy9zcGVlY2gtc3ludGhlc2lzLWNhbmNlbC5odG1sIFsg
UGFzcyBUaW1lb3V0IF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
cGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktZG9taW5hbnQtYmxhbmstcGx1Z2luLW1vdmVk
LWludG8tdmlldy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3Bs
dWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LWRvbWluYW50LWJsYW5rLXBsdWdpbi1tb3ZlZC1p
bnRvLXZpZXctZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTdl
NTc4MDgxNDU0OTU2NTgxNWRmYjE3MDA0MDNiN2ZjNWE1MGI4Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
cGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktZG9taW5hbnQtYmxhbmstcGx1Z2luLW1vdmVk
LWludG8tdmlldy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVRo
aXMgdGVzdHMgdGhhdCBhIGRvbWluYW50IGJsYW5rIHBsdWdpbiB0aGF0IHN0YXJ0cyBvZmYgc2Ny
ZWVuIGFuZCBpcyBtb3ZlZCBpbiB0byB2aWV3IGF1dG9wbGF5cwotCi1QQVNTCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0
b3BsYXktZG9taW5hbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1kb21pbmFudC1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3ZmJiZWI2MmYyOTI0MWFhYzE0YWJmYjk0ZTU1
NzM2NDkzZjNiZTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRv
cGxheS1kb21pbmFudC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAK
LVRoaXMgdGVzdCdzIGRvbWluYW50IHBsdWdpbiBzaG91bGQgcGxheSBhdXRvbWF0aWNhbGx5Ci0K
LVBBU1MKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5z
L3NuYXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4tYmxvY2tlZC1ieS1pbWFnZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1
dG9wbGF5LXBsdWdpbi1ibG9ja2VkLWJ5LWltYWdlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNWRlNDkxNmE5ZjI1MTRhYjRjNDEzNmNkYzhmZThlNjM4NmI0YWYy
Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXBsdWdp
bi1ibG9ja2VkLWJ5LWltYWdlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAs
MCBAQAotVGhpcyB0ZXN0cyB0aGF0IGEgZG9taW5hbnQgcGx1Z2luIHNob3VsZCBwbGF5IGF1dG9t
YXRpY2FsbHkgZXZlbiBpZiBhbiBpbWFnZSBpcyBvbiB0b3Agb2YgdGhlIHBsdWdpbi4KLQotUEFT
UwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25h
cHNob3R0aW5nL2F1dG9wbGF5LXBsdWdpbi1tb3N0bHktYmxvY2tlZC1ieS1pbWFnZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5n
L2F1dG9wbGF5LXBsdWdpbi1tb3N0bHktYmxvY2tlZC1ieS1pbWFnZS1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlOWM5YjhiYzc2M2U0NTBhOTM1NDQ4MDg2NWQ1
NDMzNzZjZDgzOGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRv
cGxheS1wbHVnaW4tbW9zdGx5LWJsb2NrZWQtYnktaW1hZ2UtZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsNCArMCwwIEBACi1UaGlzIHRlc3RzIHRoYXQgYSBkb21pbmFudCBwbHVnaW4g
c2hvdWxkIHBsYXkgYXV0b21hdGljYWxseSBpZiBhbiBpbWFnZSBpcyBtb3N0bHkgb24gdG9wIG9m
IHRoZSBwbHVnaW4uCi0KLVBBU1MKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1zaW1pbGFyLXRvLWRvbWluYW50
LWFmdGVyLWRlbGF5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
cGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktc2ltaWxhci10by1kb21pbmFudC1hZnRlci1k
ZWxheS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkZmJjMDNj
MzM2Y2E0NTk3MTY1ZTZmMDQ5NTE2MDBjZDM0OGY3NjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVn
aW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1zaW1pbGFyLXRvLWRvbWluYW50LWFmdGVyLWRlbGF5
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotVGhlIGRvbWluYW50
IHBsdWdpbiBzaG91bGQgcGxheSBhdXRvbWF0aWNhbGx5LCBhbmQgdGhlbiBzbyBzaG91bGQgdGhl
IGlkZW50aWNhbCBwbHVnaW4gdGhhdCBpcyBhZGRlZCBhIGJpdCBsYXRlci4KLQotUEFTUwotCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hv
dHRpbmcvYXV0b3BsYXktc2ltaWxhci10by1kb21pbmFudC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXNpbWls
YXItdG8tZG9taW5hbnQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA2NDlkMzU3ODRkM2ZiYzQ2MTE5YTg1MmRlNzM3MDNhNWI1NzVkN2Q4Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktc2ltaWxhci10by1kb21pbmFudC1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLVRoZSBkb21pbmFudCBw
bHVnaW4gc2hvdWxkIHBsYXkgYXV0b21hdGljYWxseSwgYW5kIHRyaWdnZXIgYWxsIHRoZSBvdGhl
cnMgdG8gcGxheSBhcyB3ZWxsLCBzaW5jZSB0aGV5IGFyZSB0aGUgc2FtZSBvcmlnaW4uCi0KLVBB
U1MKLQotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lu
cy9zbmFwc2hvdHRpbmcvcGx1Z2luLXJlY2VpdmVzLWNsaWNrLWV2ZW50LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvcGx1Z2lu
LXJlY2VpdmVzLWNsaWNrLWV2ZW50LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNjU5M2U1NmY5NDJiM2FlODJlYjI2ZDE1MjYxMzhiOTg2ZDA1ZGE0OC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL3BsdWdpbi1yZWNlaXZlcy1jbGljay1l
dmVudC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLQotUEFTUywg
cGx1Z2luIGRpZCByZWNlaXZlIG1vdXNlIGNsaWNrIGV2ZW50LgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9xdWlja3RpbWUtcGx1
Z2luLXNuYXBzaG90dGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvcXVpY2t0aW1lLXBsdWdpbi1zbmFwc2hvdHRlZC1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4MzY4OWNhZGIzZWQ2ZDZh
NDU4YzVhZDAzMThiNGI4OTVlOTIyNTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBz
aG90dGluZy9xdWlja3RpbWUtcGx1Z2luLXNuYXBzaG90dGVkLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDQgKzAsMCBAQAotVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBxdWlja3RpbWUg
cGx1Z2lucyBjYW4gYWxzbyBiZSBzbmFwc2hvdHRlZC4gV2UgbWFrZSB0aGUgcGx1Z2luIGhlcmUg
dG9vIHNtYWxsIHRvIGJlIHRoZSBwcmltYXJ5IHBsdWdpbiwgdGh1cyBpdCBzaG91bGQgZ2V0IHNu
YXBzaG90dGVkLgotCi1QQVNTCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvcmVzdGFydC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL3Jlc3RhcnQtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzQ1NmFiOTE4ZTE2OTQwYjBm
NWJlMTQ4NGZhYWY5MTg3MDRkYjQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hv
dHRpbmcvcmVzdGFydC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAK
LVRoaXMgdGVzdCBmb3JjZXMgYSBwbHVnaW4gdG8gc25hcHNob3QgaW1tZWRpYXRlbHksIHRoZW4g
dHJpZXMgdG8gcmVzdGFydCBpdC4KLQotUEFTUwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL3NldC1wbHVnaW4tc2l6ZS10by10
aW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9z
bmFwc2hvdHRpbmcvc2V0LXBsdWdpbi1zaXplLXRvLXRpbnktZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDE1Yjk3Zjk1YmJhYTYyYTNjMmM0ZGFjZGZiYmNkYTZj
ZWIyNDI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvc2V0LXBsdWdp
bi1zaXplLXRvLXRpbnktZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBA
Ci1UaGlzIHRlc3QgZW5zdXJlcyB0aGF0IGlmIHdlIGhhdmUgc2V0IGEgcGx1Z2luIHRvIGJlIHRv
byBzbWFsbCBhZnRlciB0aGUgaW5pdGlhbCBsb2FkIHRoYXQgaXQgc3RpbGwgZ2V0cyBwbGF5ZWQu
Ci0KLUFsc28gZW5zdXJlIHRoYXQgdGhlIHBsdWdpbiByZW1haW5zIHNuYXBzaG90dGVkIGlmIHRo
ZSBzaXplIHdhcyBpbml0aWFsbHkgc3BlY2lmaWVkIGJ1dCBtYWRlIHRvbyBzbWFsbCBhZnRlcndh
cmRzLgotCi1QQVNTCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
cGx1Z2lucy9zbmFwc2hvdHRpbmcvc2ltcGxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvc2ltcGxlLWV4cGVjdGVkLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTdiMDAwYzM1YTg2ZDNkN2Y1YjRkOGVjMzAw
NzI3NjEwMGZkMDg2NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL3Np
bXBsZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVRoaXMgdGVz
dCBmb3JjZXMgYSBwbHVnaW4gdG8gc25hcHNob3QgaW1tZWRpYXRlbHkKLQotUEFTUwotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5n
L3NuYXBzaG90LXBsdWdpbi1ub3QtcXVpdGUtYmxvY2tlZC1ieS1pbWFnZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL3NuYXBz
aG90LXBsdWdpbi1ub3QtcXVpdGUtYmxvY2tlZC1ieS1pbWFnZS1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhNjc3NTcwNDUwNjNmMWU2NTc5MDc0MmRlMGMzZDFh
YjFiMzVlYTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9zbmFwc2hv
dC1wbHVnaW4tbm90LXF1aXRlLWJsb2NrZWQtYnktaW1hZ2UtZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsNyArMCwwIEBACi1UaGlzIHRlc3RzIHRoYXQgYSBwbHVnaW4gc2hvdWxkIGJl
IHNuYXBzaG90dGVkIGlmIGl0IGlzIHBhcnRpYWxseSBjb3ZlcmVkIGJ5IGFuIGltYWdlIGJ1dCBu
b3QgZW5vdWdoIHRvIGJlIGNvbnNpZGVyZWQgYmxvY2tpbmcuCi0KLUl0IGFkZGl0aW9uYWxseSB0
ZXN0cyB0aGF0IHdlIHRha2UgdHJhbnNmb3JtcyBpbnRvIGFjY291bnQuCi0KLVBBU1MKLQotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGQzYjZiOTI1Njk1
NTI2MzY4NTY5MmI4YzdkMjY4NDRkNjYwNzJhM2UuLmVjYmE1MmM5ZDUzMTg3NmVhYzY2YTI2YjMy
NDcxN2Q5YzRmNTkxZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0
RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRp
b25zCkBAIC02MzksOSArNjM5LDYgQEAgZmFzdC9ldmVudHMvY2xlYXItZHJhZy1zdGF0ZS5odG1s
IFsgRmFpbHVyZSBdCiAjIE5lZWQgc3VwcG9ydCBmb3IgUmVzb3VyY2VIYW5kbGU6OmRpZENoYW5n
ZVByaW9yaXR5IGFuZCBEUlQgc3VwcG9ydAogd2Via2l0Lm9yZy9iLzExMTAxNiBodHRwL3Rlc3Rz
L2xvYWRpbmcvcHJvbW90ZS1pbWctcHJlbG9hZC1wcmlvcml0eS5odG1sIFsgU2tpcCBdICMgQ3Jh
c2gKIAotIyBUT0RPIFNuYXBzaG90dGVkIHBsdWdpbnMgbm90IGVuYWJsZWQgb24gV0sxCi13ZWJr
aXQub3JnL2IvOTg2OTYgcGx1Z2lucy9zbmFwc2hvdHRpbmcgWyBTa2lwIF0KLQogIyBUT0RPIEV4
Y2x1ZGUgV2ViU1FMIHRlc3RzOgogd2Via2l0Lm9yZy9iLzExNjU1OSBzdG9yYWdlL3dlYnNxbC8g
WyBTa2lwIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggZGRmYWE0Y2M0Njg3NDEwNzYxNWQ3Yzk1NzQ5MGVkNmE5ZGMzMDdmOC4uZDJi
NTQ3NzZjYzdkYmZlYzJkZmQwOWVkMjVmMTUwMGRjZTM0OTUwNCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCkBAIC0zNzIsOSArMzcyLDYgQEAg
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3BsdWdpbnMtdHlwZXMtYmxvY2tzLXlvdXR1
YmUtcGx1Z2luLXJlcGxhY2VtZW50LmgKICMgT3BlcmEtc3VibWl0dGVkIHRlc3RzIHRvIFczQyBm
b3IgPHRyYWNrPiwgYSBsb3Qgb2YgZmFpbHVyZXMgc3RpbGwuCiB3ZWJraXQub3JnL2IvMTAzOTI2
IG1lZGlhL3RyYWNrL29wZXJhIFsgU2tpcCBdCiAKLSMgU25hcHNob3R0ZWQgcGx1Z2lucyBub3Qg
ZW5hYmxlZAotd2Via2l0Lm9yZy9iLzk4Njk2IHBsdWdpbnMvc25hcHNob3R0aW5nIFsgU2tpcCBd
Ci0KICMgVE9ETyBJbXBvc3NpYmxlIHRvIHRlc3QgdGV4dC1vbmx5LXpvb20gZnJvbSBEUlQgb24g
V2luZG93cwogd2Via2l0Lm9yZy9iLzM1MDEzIHN2Zy96b29tL3RleHQvIFsgU2tpcCBdCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LWRvbWlu
YW50LWJsYW5rLXBsdWdpbi1tb3ZlZC1pbnRvLXZpZXcuaHRtbCBiL0xheW91dFRlc3RzL3BsdWdp
bnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LWRvbWluYW50LWJsYW5rLXBsdWdpbi1tb3ZlZC1pbnRv
LXZpZXcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk1YjRjZGZiMWUwNDhl
MGM2NTA5Y2IxZWZhYTg0OTAwMDgzNTJiMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxh
eS1kb21pbmFudC1ibGFuay1wbHVnaW4tbW92ZWQtaW50by12aWV3Lmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSwyMCArMCwwIEBACi08cD5UaGlzIHRlc3RzIHRoYXQgYSBkb21pbmFudCBibGFuayBw
bHVnaW4gdGhhdCBzdGFydHMgb2ZmIHNjcmVlbiBhbmQgaXMgbW92ZWQgaW4gdG8gdmlldyBhdXRv
cGxheXM8L3A+Ci08ZGl2IGlkPSJyZXN1bHQiPkZBSUw8L2Rpdj4KLTxzY3JpcHQ+Ci0gICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwotICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgIHZhciBlbWJlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJwbHVnaW4iKTsKLSAgICAgICAgICAgIGVtYmVkLnN0eWxlLmxlZnQgPSAiMHB4IjsKLSAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIHZhciBy
ZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7Ci0gICAgICAgICAgICAg
ICAgdmFyIGVtYmVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBsdWdpbiIpOwotICAgICAg
ICAgICAgICAgIGlmICghaW50ZXJuYWxzLmlzUGx1Z2luU25hcHNob3R0ZWQoZW1iZWQpKQotICAg
ICAgICAgICAgICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0gIlBBU1MiOwotICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICAgICAgfSwgNTAwKTsgCi0gICAg
ICAgIH0sIDUwMCApOwotICAgIH0KLTwvc2NyaXB0PgotPGVtYmVkIGlkPSJwbHVnaW4iIHNyYz0i
Li4vcmVzb3VyY2VzL29yYW5nZS5tb3YiIHdpZHRoPSI2MDAiIGhlaWdodD0iNjAwIiBzdHlsZT0i
cG9zaXRpb246cmVsYXRpdmU7IGxlZnQ6LTYwMHB4OyI+PC9lbWJlZD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LWRvbWluYW50Lmh0bWwgYi9M
YXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1kb21pbmFudC5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzMxOWYyNjI5ZjQxMzhjMDY4Y2MyZjY0ZDFm
OWFlN2RkNjZlM2MzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LWRvbWluYW50Lmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi08cD5UaGlzIHRlc3QncyBkb21pbmFu
dCBwbHVnaW4gc2hvdWxkIHBsYXkgYXV0b21hdGljYWxseTwvcD4KLTxkaXYgaWQ9InJlc3VsdCI+
RkFJTDwvZGl2PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIGludGVy
bmFscy5zZXR0aW5ncy5zZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKHRydWUpOwotICAgIGlu
dGVybmFscy5zZXR0aW5ncy5zZXRNYXhpbXVtUGx1Z0luU25hcHNob3RBdHRlbXB0cygwKTsKLSAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKLSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKLSAgICAgICAgdmFyIHJlc3VsdCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKLSAgICAgICAgdmFyIGVtYmVkID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBsdWdpbiIpOwotICAgICAgICBpZiAoIWludGVybmFscy5p
c1BsdWdpblNuYXBzaG90dGVkKGVtYmVkKSkKLSAgICAgICAgICAgIHJlc3VsdC5pbm5lckhUTUwg
PSAiUEFTUyI7Ci0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIDEwMDAp
OwotfQotPC9zY3JpcHQ+Ci08ZW1iZWQgaWQ9InBsdWdpbiIgc3JjPSIuLi9yZXNvdXJjZXMvb3Jh
bmdlLm1vdiIgd2lkdGg9IjYwMCIgaGVpZ2h0PSI2MDAiPjwvZW1iZWQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4tYmxvY2tlZC1i
eS1pbWFnZS5odG1sIGIvTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXkt
cGx1Z2luLWJsb2NrZWQtYnktaW1hZ2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYzFlNDhlYjk3NDk2NmIzOTg4NDI0N2Q5OTA4YWI1Yjk1ZGZkNTA2ZC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbHVnaW5zL3Nu
YXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4tYmxvY2tlZC1ieS1pbWFnZS5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTkgKzAsMCBAQAotPHA+VGhpcyB0ZXN0cyB0aGF0IGEgZG9taW5hbnQgcGx1
Z2luIHNob3VsZCBwbGF5IGF1dG9tYXRpY2FsbHkgZXZlbiBpZiBhbiBpbWFnZSBpcyBvbiB0b3Ag
b2YgdGhlIHBsdWdpbi48L3A+Ci08ZGl2IGlkPSJyZXN1bHQiPkZBSUw8L2Rpdj4KLTxzY3JpcHQ+
Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0UGx1
Z0luU25hcHNob3R0aW5nRW5hYmxlZCh0cnVlKTsKLSAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0
TWF4aW11bVBsdWdJblNuYXBzaG90QXR0ZW1wdHMoMCk7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgc2V0VGltZW91dChm
dW5jdGlvbiAoKSB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVzdWx0Iik7Ci0gICAgICAgIHZhciBlbWJlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJwbHVnaW4iKTsKLSAgICAgICAgaWYgKCFpbnRlcm5hbHMuaXNQbHVnaW5TbmFwc2hvdHRlZChl
bWJlZCkpCi0gICAgICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0gIlBBU1MiOwotICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCAxMDAwKTsKLX0KLTwvc2NyaXB0PgotPGVt
YmVkIGlkPSJwbHVnaW4iIHNyYz0iLi4vcmVzb3VyY2VzL29yYW5nZS5tb3YiIHdpZHRoPSI2MDAi
IGhlaWdodD0iNjAwIj48L2VtYmVkPgotPGltZyBzcmM9Ii4uL3Jlc291cmNlcy9hcHBsZS5naWYi
IHdpZHRoPSI2MDAiIGhlaWdodD0iNjAwIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7IHRvcDo2
MHB4OyBsZWZ0OjBweDsiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hv
dHRpbmcvYXV0b3BsYXktcGx1Z2luLW1vc3RseS1ibG9ja2VkLWJ5LWltYWdlLmh0bWwgYi9MYXlv
dXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4tbW9zdGx5LWJsb2Nr
ZWQtYnktaW1hZ2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA2Mjg2NjU5
YTk1ZDVmYjhmNDE5MjRkYzU3NTJkYzYzMWYzNTY3Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9h
dXRvcGxheS1wbHVnaW4tbW9zdGx5LWJsb2NrZWQtYnktaW1hZ2UuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDE5ICswLDAgQEAKLTxwPlRoaXMgdGVzdHMgdGhhdCBhIGRvbWluYW50IHBsdWdpbiBz
aG91bGQgcGxheSBhdXRvbWF0aWNhbGx5IGlmIGFuIGltYWdlIGlzIG1vc3RseSBvbiB0b3Agb2Yg
dGhlIHBsdWdpbi48L3A+Ci08ZGl2IGlkPSJyZXN1bHQiPkZBSUw8L2Rpdj4KLTxzY3JpcHQ+Ci1p
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0UGx1Z0lu
U25hcHNob3R0aW5nRW5hYmxlZCh0cnVlKTsKLSAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0TWF4
aW11bVBsdWdJblNuYXBzaG90QXR0ZW1wdHMoMCk7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgc2V0VGltZW91dChmdW5j
dGlvbiAoKSB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVzdWx0Iik7Ci0gICAgICAgIHZhciBlbWJlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJw
bHVnaW4iKTsKLSAgICAgICAgaWYgKCFpbnRlcm5hbHMuaXNQbHVnaW5TbmFwc2hvdHRlZChlbWJl
ZCkpCi0gICAgICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0gIlBBU1MiOwotICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCAxMDAwKTsKLX0KLTwvc2NyaXB0PgotPGVtYmVk
IGlkPSJwbHVnaW4iIHNyYz0iLi4vcmVzb3VyY2VzL29yYW5nZS5tb3YiIHdpZHRoPSI2MDAiIGhl
aWdodD0iNjAwIj48L2VtYmVkPgotPGltZyBzcmM9Ii4uL3Jlc291cmNlcy9hcHBsZS5naWYiIHdp
ZHRoPSI2MDAiIGhlaWdodD0iNjAwIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7IHRvcDo0NXB4
OyBsZWZ0OjBweDsiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRp
bmcvYXV0b3BsYXktc2ltaWxhci10by1kb21pbmFudC1hZnRlci1kZWxheS5odG1sIGIvTGF5b3V0
VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktc2ltaWxhci10by1kb21pbmFudC1h
ZnRlci1kZWxheS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTllNDA4MWYz
Nzg2NDQxM2YyNGJkMjI3MjA4N2ZiNWViNjQyMzI3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1
dG9wbGF5LXNpbWlsYXItdG8tZG9taW5hbnQtYWZ0ZXItZGVsYXkuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDI3ICswLDAgQEAKLTxwPlRoZSBkb21pbmFudCBwbHVnaW4gc2hvdWxkIHBsYXkgYXV0
b21hdGljYWxseSwgYW5kIHRoZW4gc28gc2hvdWxkIHRoZSBpZGVudGljYWwgcGx1Z2luIHRoYXQg
aXMgYWRkZWQgYSBiaXQgbGF0ZXIuPC9wPgotPGRpdiBpZD0icmVzdWx0Ij5GQUlMPC9kaXY+Ci08
c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgaW50ZXJuYWxzLnNldHRpbmdz
LnNldFBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQodHJ1ZSk7Ci0gICAgaW50ZXJuYWxzLnNldHRp
bmdzLnNldE1heGltdW1QbHVnSW5TbmFwc2hvdEF0dGVtcHRzKDApOwotICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24gKCkgewotICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7Ci0gICAgICAgIGRpdi5pbm5lckhUTUwgPSAnPGVtYmVkIGlkPSJwbHVnaW4y
IiBzcmM9Ii4uL3Jlc291cmNlcy9saW5lcy5zd2YiIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIj48
L2VtYmVkPic7Ci0gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKLSAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOwotICAgICAgICAgICAgdmFyIGVtYmVkMSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwbHVnaW4xIik7Ci0JCQl2YXIgZW1iZWQyID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBsdWdpbjIiKTsKLSAgICAgICAgICAgIGlmICghKGludGVy
bmFscy5pc1BsdWdpblNuYXBzaG90dGVkKGVtYmVkMSkKLSAgICAgICAgICAgICAgICB8fCBpbnRl
cm5hbHMuaXNQbHVnaW5TbmFwc2hvdHRlZChlbWJlZDIpKSkKLSAgICAgICAgICAgICAgICByZXN1
bHQuaW5uZXJIVE1MID0gIlBBU1MiOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci0gICAgICAgIH0sIDEwMDApOwotICAgIH0sIDUwMCk7Ci19Ci08L3NjcmlwdD4KLTxkaXY+
Ci08ZW1iZWQgaWQ9InBsdWdpbjEiIHNyYz0iLi4vcmVzb3VyY2VzL2xpbmVzLnN3ZiIgd2lkdGg9
IjYwMCIgaGVpZ2h0PSI2MDAiPjwvZW1iZWQ+Ci08L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXNpbWlsYXItdG8tZG9taW5hbnQuaHRt
bCBiL0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXNpbWlsYXItdG8t
ZG9taW5hbnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQyODk5ZWM2M2Nk
NzNiOWMzODg4ZGRhNWQ4OWFjOTM2NzM0MjFmYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRv
cGxheS1zaW1pbGFyLXRvLWRvbWluYW50Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCww
IEBACi08cD5UaGUgZG9taW5hbnQgcGx1Z2luIHNob3VsZCBwbGF5IGF1dG9tYXRpY2FsbHksIGFu
ZCB0cmlnZ2VyIGFsbCB0aGUgb3RoZXJzIHRvIHBsYXkgYXMgd2VsbCwgc2luY2UgdGhleSBhcmUg
dGhlIHNhbWUgb3JpZ2luLjwvcD4KLTxkaXYgaWQ9InJlc3VsdCI+RkFJTDwvZGl2PgotPHNjcmlw
dD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRQ
bHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKHRydWUpOwotICAgIGludGVybmFscy5zZXR0aW5ncy5z
ZXRNYXhpbXVtUGx1Z0luU25hcHNob3RBdHRlbXB0cygwKTsKLSAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uICgpIHsKLSAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZXN1bHQiKTsKLSAgICAgICAgdmFyIGVtYmVkMSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJwbHVnaW4xIik7Ci0gICAgICAgIHZhciBlbWJlZDIgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicGx1Z2luMiIpOwotICAgICAgICBpZiAoIWludGVybmFscy5pc1BsdWdpblNuYXBzaG90
dGVkKGVtYmVkMSkKLSAgICAgICAgICAgICYmICFpbnRlcm5hbHMuaXNQbHVnaW5TbmFwc2hvdHRl
ZChlbWJlZDIpKQotICAgICAgICAJcmVzdWx0LmlubmVySFRNTCA9ICJQQVNTIjsKLSAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgMTAwMCk7Ci19Ci08L3NjcmlwdD4KLTxw
PgotPGVtYmVkIGlkPSJwbHVnaW4xIiBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0Lm1vdiIgd2lkdGg9
IjQwMCIgaGVpZ2h0PSI0MDAiPjwvZW1iZWQ+Ci08L3A+Ci08cD4KLTxlbWJlZCBpZD0icGx1Z2lu
MiIgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC5tb3YiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCI+PC9l
bWJlZD4KLTwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5n
L2RldGVybWluZS1wcmltYXJ5LXNuYXBzaG90dGVkLXBsdWdpbi1jcmFzaC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9kZXRlcm1pbmUtcHJpbWFyeS1zbmFw
c2hvdHRlZC1wbHVnaW4tY3Jhc2gtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwODA4ODgyYmZiZmNlYTdlYjk3YTI4MmU0NzNjZjMzNDI4ZmZlMDU2Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsdWdp
bnMvc25hcHNob3R0aW5nL2RldGVybWluZS1wcmltYXJ5LXNuYXBzaG90dGVkLXBsdWdpbi1jcmFz
aC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVRoaXMgdGVzdHMg
ZGV0ZXJtaW5pbmcgdGhlIHByaW1hcnkgc25hcHNob3R0ZWQgcGx1Z2luIGRvZXMgbm90IGhpdCBh
biBhc3NlcnRpb24uCi0KLVBBU1MKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGx1Z2lucy9z
bmFwc2hvdHRpbmcvZGV0ZXJtaW5lLXByaW1hcnktc25hcHNob3R0ZWQtcGx1Z2luLWNyYXNoLmh0
bWwgYi9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9kZXRlcm1pbmUtcHJpbWFyeS1z
bmFwc2hvdHRlZC1wbHVnaW4tY3Jhc2guaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYWZlNTJlMjRlN2FjYjBiNzJiNDE2OWRiYWVkNDNhYTY3NjdiZjA5ZS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbHVnaW5zL3Nu
YXBzaG90dGluZy9kZXRlcm1pbmUtcHJpbWFyeS1zbmFwc2hvdHRlZC1wbHVnaW4tY3Jhc2guaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08Ym9keT4KLTxwPlRoaXMgdGVzdHMgZGV0ZXJtaW5pbmcgdGhlIHByaW1hcnkgc25hcHNob3R0
ZWQgcGx1Z2luIGRvZXMgbm90IGhpdCBhbiBhc3NlcnRpb24uPC9wPgotPGRpdiBpZD0icmVzdWx0
Ij5GQUlMPC9kaXY+Ci08ZW1iZWQgaWQ9InRlc3RQbHVnaW4iIHNyYz0id2Via2l0LXRlc3QtbmV0
c2NhcGUiIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiPjwvZW1iZWQ+
Ci08c2NyaXB0PgotaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKLSAgICByZXN1bHQudGV4dENvbnRl
bnQgPSAnVGhpcyB0ZXN0IHJlcXVpcmVzIFdlYktpdFRlc3RSdW5uZXIuJzsKLWVsc2UgewotICAg
IGludGVybmFscy5zZXR0aW5ncy5zZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKHRydWUpOwot
ICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRNYXhpbXVtUGx1Z0luU25hcHNob3RBdHRlbXB0cygw
KTsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKLSAgICBzZXRUaW1lb3V0KCgpID0+IHsKLSAgICAgICAgY29uc3QgdGVzdFBsdWdp
biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0UGx1Z2luIik7Ci0gICAgICAgIGlmIChp
bnRlcm5hbHMuaXNQbHVnaW5TbmFwc2hvdHRlZCh0ZXN0UGx1Z2luKSkKLSAgICAgICAgICAgIHJl
c3VsdC50ZXh0Q29udGVudCA9ICdQQVNTJzsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVz
dWx0LnRleHRDb250ZW50ID0gJ0ZBSUwgLSBub3Qgc25hcHNob3QnOwotICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCA1MDApOwotfQotCi08L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL3BsdWdpbi1yZWNlaXZlcy1jbGlj
ay1ldmVudC5odG1sIGIvTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvcGx1Z2luLXJl
Y2VpdmVzLWNsaWNrLWV2ZW50Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMy
M2I0YjRhZWQ2NDkyMzM4YTJlMWQ2ZWI3ZWU5OTg1NmE0NGFmYWQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hv
dHRpbmcvcGx1Z2luLXJlY2VpdmVzLWNsaWNrLWV2ZW50Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwyNiArMCwwIEBACi08ZW1iZWQgaWQ9InBsdWdpbiIgc3JjPSIuLi9yZXNvdXJjZXMvb3Jhbmdl
Lm1vdiI+PC9lbWJlZD4KLTxkaXYgaWQ9InJlc3VsdCI+RkFJTCwgcGx1Z2luIGRpZCBub3QgcmVj
ZWl2ZSBtb3VzZSBjbGljayBldmVudC48L2Rpdj4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFBsdWdJblNuYXBzaG90
dGluZ0VuYWJsZWQodHJ1ZSk7Ci0gICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRNYXhp
bXVtUGx1Z0luU25hcHNob3RBdHRlbXB0cygwKTsKLQl2YXIgZW1iZWQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicGx1Z2luIik7Ci0JdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQiKTsKLQllbWJlZC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCkg
ewotCQlkaXYuaW5uZXJIVE1MID0gIlBBU1MsIHBsdWdpbiBkaWQgcmVjZWl2ZSBtb3VzZSBjbGlj
ayBldmVudC4iOwotCQl0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLQkJfSk7Ci0JdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7Ci0gICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAg
dmFyIGVtYmVkID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZW1iZWQiKTsKLSAgICAgICAgdmFy
IHJlY3QgPSBlbWJlZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKLSAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8ocmVjdC5sZWZ0ICsgMTAsIHJlY3QudG9wICsgMTApOwotICAgICAgICBl
dmVudFNlbmRlci5tb3VzZURvd24oKTsKLSAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwot
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Ci0gICAgICAgIH0sIDUwMCk7Ci0gICAgfSwgNTAwKTsKLQl0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKLX0KLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGx1
Z2lucy9zbmFwc2hvdHRpbmcvcHJpbnQtc25hcHNob3R0ZWQtcGx1Z2luLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL3ByaW50LXNuYXBzaG90dGVkLXBsdWdp
bi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3NTU3ZWQzYTdk
MjkzYWFhZDI5NTNjZDljMTk3MGEwOTc4ZTIxNWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvcHJp
bnQtc25hcHNob3R0ZWQtcGx1Z2luLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xICsw
LDAgQEAKLVRoaXMgdGVzdCBjaGVja3MgdGhhdCBwcmludGluZyBhIHNuYXBzaG90dGVkIHBsdWdp
biB3aXRoIHRleHQgY2hpbGRyZW4gZG9lcyBub3QgY3Jhc2ggb3IgY2F1c2UgYXNzZXJ0aW9uIGZh
aWx1cmVzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvcHJp
bnQtc25hcHNob3R0ZWQtcGx1Z2luLmh0bWwgYi9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90
dGluZy9wcmludC1zbmFwc2hvdHRlZC1wbHVnaW4uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYjYxZmE5NWU2NjUzOTFjYTAyMjFiZTdhZDFmZGQwOTdiMmZiNmYwMC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbHVn
aW5zL3NuYXBzaG90dGluZy9wcmludC1zbmFwc2hvdHRlZC1wbHVnaW4uaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDI5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPHNjcmlwdD4KLWlmICh3aW5k
b3cudGVzdFJ1bm5lcikgewotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRQbHVnSW5TbmFwc2hv
dHRpbmdFbmFibGVkKHRydWUpOwotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRNYXhpbXVtUGx1
Z0luU25hcHNob3RBdHRlbXB0cygwKTsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
LSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLX0gICAgIAotPC9zY3JpcHQ+Ci0KLVRoaXMg
dGVzdCBjaGVja3MgdGhhdCBwcmludGluZyBhIHNuYXBzaG90dGVkIHBsdWdpbiB3aXRoIHRleHQg
Y2hpbGRyZW4KLWRvZXMgbm90IGNyYXNoIG9yIGNhdXNlIGFzc2VydGlvbiBmYWlsdXJlcy4KLQot
PG9iamVjdCAgaWQ9ImZvbyIgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giIGRh
dGE9Ii4uL3Jlc291cmNlcy9saW5lcy5zd2YiPgotIDwvb2JqZWN0PgotCi08c2NyaXB0PgotZnVu
Y3Rpb24gYm9vbSgpCi17Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgIHRl
c3RSdW5uZXIuc2V0UHJpbnRpbmcoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgd2luZG93LnByaW50KCk7Ci0gICAgfQotfQotc2V0VGlt
ZW91dChib29tLCAzMDAwKTsKLTwvc2NyaXB0PgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bHVnaW5zL3NuYXBzaG90dGluZy9xdWlja3RpbWUtcGx1Z2luLXNuYXBzaG90dGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9xdWlja3RpbWUtcGx1Z2luLXNuYXBzaG90
dGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhNGI1NDE0MjJlODgxZWEy
ZjdiYTBmZGJjYjVlZjk2YWViMmQ2MGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvcXVpY2t0aW1l
LXBsdWdpbi1zbmFwc2hvdHRlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAot
PHA+VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBxdWlja3RpbWUgcGx1Z2lucyBjYW4gYWxzbyBiZSBz
bmFwc2hvdHRlZC4gCi1XZSBtYWtlIHRoZSBwbHVnaW4gaGVyZSB0b28gc21hbGwgdG8gYmUgdGhl
IHByaW1hcnkgcGx1Z2luLCB0aHVzIGl0IHNob3VsZCBnZXQgc25hcHNob3R0ZWQuPC9wPgotPGRp
diBpZD0icmVzdWx0Ij5GQUlMPC9kaXY+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7Ci0gICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQo
dHJ1ZSk7Ci0gICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldE1heGltdW1QbHVnSW5TbmFwc2hvdEF0
dGVtcHRzKDApOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewotICAgICAgICB2
YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOwotICAgICAgICB2
YXIgZW1iZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGx1Z2luIik7Ci0gICAgICAgIGlm
IChpbnRlcm5hbHMuaXNQbHVnaW5TbmFwc2hvdHRlZChlbWJlZCkpCi0gICAgICAgICAgICByZXN1
bHQuaW5uZXJIVE1MID0gIlBBU1MiOwotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LSAgICB9LCA1MDApOwotfQotPC9zY3JpcHQ+Ci08ZW1iZWQgaWQ9InBsdWdpbiIgc3JjPSIuLi9y
ZXNvdXJjZXMvb3JhbmdlLm1vdiIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiPjwvZW1iZWQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9yZXN0YXJ0Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9yZXN0YXJ0Lmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyYjY1OTczY2MxM2JjOTA0Njc5ODQxMDM5YzBiNmVkZmM5
ZDU3OWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvcmVzdGFydC5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMjUgKzAsMCBAQAotPHA+VGhpcyB0ZXN0IGZvcmNlcyBhIHBsdWdpbiB0byBzbmFwc2hv
dCBpbW1lZGlhdGVseSwgdGhlbiB0cmllcyB0byByZXN0YXJ0IGl0LjwvcD4KLTxkaXYgaWQ9InJl
c3VsdCI+RkFJTDwvZGl2PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAg
IGludGVybmFscy5zZXR0aW5ncy5zZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKHRydWUpOwot
ICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRNYXhpbXVtUGx1Z0luU25hcHNob3RBdHRlbXB0cygw
KTsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKLSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKLSAgICAgICAgdmFyIGVtYmVk
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBsdWdpbiIpOwotICAgICAgICB2YXIgcmVjdCA9
IGVtYmVkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhyZWN0LmxlZnQgKyAxMCwgcmVjdC50b3AgKyAxMCk7Ci0gICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlRG93bigpOwotICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Ci0gICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKLSAgICAgICAgICAgIHZhciBlbWJlZCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJwbHVnaW4iKTsKLSAgICAgICAgICAgIGlmICghaW50ZXJu
YWxzLmlzUGx1Z2luU25hcHNob3R0ZWQoZW1iZWQpKQotICAgICAgICAgICAgICAgIHJlc3VsdC5p
bm5lckhUTUwgPSAiUEFTUyI7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LSAgICAgICAgfSwgMTAwMCk7Ci0gICAgfSwgMTAwMCk7Ci19Ci08L3NjcmlwdD4KLTxlbWJlZCBp
ZD0icGx1Z2luIiBzcmM9Ii4uL3Jlc291cmNlcy9vcmFuZ2UubW92Ij48L2VtYmVkPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvc2V0LXBsdWdpbi1zaXplLXRv
LXRpbnkuaHRtbCBiL0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL3NldC1wbHVnaW4t
c2l6ZS10by10aW55Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxM2ZkYjI0
M2I1MmIwMTU5M2U0NGU1M2E5NTIxZDkwZDM3MzZjNDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcv
c2V0LXBsdWdpbi1zaXplLXRvLXRpbnkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAg
QEAKLTxwPlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgaWYgd2UgaGF2ZSBzZXQgYSBwbHVnaW4gdG8g
YmUgdG9vIHNtYWxsIGFmdGVyIHRoZSBpbml0aWFsIGxvYWQgdGhhdCBpdCBzdGlsbCBnZXRzIHBs
YXllZC48L3A+Ci08cD5BbHNvIGVuc3VyZSB0aGF0IHRoZSBwbHVnaW4gcmVtYWlucyBzbmFwc2hv
dHRlZCBpZiB0aGUgc2l6ZSB3YXMgaW5pdGlhbGx5IHNwZWNpZmllZCBidXQgbWFkZSB0b28gc21h
bGwgYWZ0ZXJ3YXJkcy48L3A+Ci08ZGl2IGlkPSJyZXN1bHQiPkZBSUw8L2Rpdj4KLTxzY3JpcHQ+
Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0UGx1
Z0luU25hcHNob3R0aW5nRW5hYmxlZCh0cnVlKTsKLSAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0
TWF4aW11bVBsdWdJblNuYXBzaG90QXR0ZW1wdHMoMCk7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgc2V0VGltZW91dChm
dW5jdGlvbiAoKSB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVzdWx0Iik7Ci0gICAgICAgIHZhciBlbWJlZDEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicGx1Z2luMSIpOwotICAgICAgICBlbWJlZDEuc3R5bGUud2lkdGggPSA0MDsKLSAgICAgICAg
ZW1iZWQxLnN0eWxlLmhlaWdodCA9IDQwOwotICAgICAgICB2YXIgZW1iZWQyID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInBsdWdpbjIiKTsKLSAgICAgICAgZW1iZWQyLnN0eWxlLndpZHRoID0g
NDA7Ci0gICAgICAgIGVtYmVkMi5zdHlsZS5oZWlnaHQgPSA0MDsKLSAgICAgICAgaWYgKCFpbnRl
cm5hbHMuaXNQbHVnaW5TbmFwc2hvdHRlZChlbWJlZDEpICYmIGludGVybmFscy5pc1BsdWdpblNu
YXBzaG90dGVkKGVtYmVkMikpCi0gICAgICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0gIlBBU1Mi
OwotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCAxMDAwKTsKLX0KLTwv
c2NyaXB0PgotPGVtYmVkIGlkPSJwbHVnaW4xIiBzcmM9Ii4uL3Jlc291cmNlcy9vcmFuZ2UubW92
Ij48L2VtYmVkPgotPGVtYmVkIGlkPSJwbHVnaW4yIiBzcmM9Ii4uL3Jlc291cmNlcy9vcmFuZ2Uu
bW92IiBzdHlsZT0id2lkdGg6NTBweDsgaGVpZ2h0OjUwcHgiPjwvZW1iZWQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9zaW1wbGUuaHRtbCBiL0xheW91dFRl
c3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL3NpbXBsZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5OGU5OGQ2MzM4YmNjNjRkMjhjY2IwMDM5ZDI2NmRiNjZlNzAxMWI0Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3Bs
dWdpbnMvc25hcHNob3R0aW5nL3NpbXBsZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAs
MCBAQAotPHA+VGhpcyB0ZXN0IGZvcmNlcyBhIHBsdWdpbiB0byBzbmFwc2hvdCBpbW1lZGlhdGVs
eTwvcD4KLTxkaXYgaWQ9InJlc3VsdCI+RkFJTDwvZGl2PgotPHNjcmlwdD4KLWlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgewotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRQbHVnSW5TbmFwc2hvdHRp
bmdFbmFibGVkKHRydWUpOwotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRNYXhpbXVtUGx1Z0lu
U25hcHNob3RBdHRlbXB0cygwKTsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsK
LSAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsK
LSAgICAgICAgdmFyIGVtYmVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBsdWdpbiIpOwot
ICAgICAgICBpZiAoaW50ZXJuYWxzLmlzUGx1Z2luU25hcHNob3R0ZWQoZW1iZWQpKQotICAgICAg
ICAgICAgcmVzdWx0LmlubmVySFRNTCA9ICJQQVNTIjsKLSAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci0gICAgfSwgMTAwMCk7Ci19Ci08L3NjcmlwdD4KLTxlbWJlZCBpZD0icGx1Z2lu
IiBzcmM9Ii4uL3Jlc291cmNlcy9vcmFuZ2UubW92Ij48L2VtYmVkPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvc25hcHNob3QtcGx1Z2luLW5vdC1xdWl0ZS1i
bG9ja2VkLWJ5LWltYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9z
bmFwc2hvdC1wbHVnaW4tbm90LXF1aXRlLWJsb2NrZWQtYnktaW1hZ2UuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYmEyMDYxNzhiNDVkYWE3ODBhODgzZjkzZjM0ZjYxZjkzMmE4
MDA5MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9zbmFwc2hvdC1wbHVnaW4tbm90LXF1aXRlLWJs
b2NrZWQtYnktaW1hZ2UuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLTxwIHN0
eWxlID0gIndoaXRlLXNwYWNlOiBub3dyYXA7Ij5UaGlzIHRlc3RzIHRoYXQgYSBwbHVnaW4gc2hv
dWxkIGJlIHNuYXBzaG90dGVkIGlmIGl0IGlzIHBhcnRpYWxseSBjb3ZlcmVkIGJ5IGFuIGltYWdl
IGJ1dCBub3QgZW5vdWdoIHRvIGJlIGNvbnNpZGVyZWQgYmxvY2tpbmcuPC9wPgotPHA+IEl0IGFk
ZGl0aW9uYWxseSB0ZXN0cyB0aGF0IHdlIHRha2UgdHJhbnNmb3JtcyBpbnRvIGFjY291bnQuIDwv
cD4KLTxkaXYgaWQ9InJlc3VsdCI+RkFJTDwvZGl2PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVz
dFJ1bm5lcikgewotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRQbHVnSW5TbmFwc2hvdHRpbmdF
bmFibGVkKHRydWUpOwotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRNYXhpbXVtUGx1Z0luU25h
cHNob3RBdHRlbXB0cygwKTsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKLSAg
ICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKLSAg
ICAgICAgdmFyIGVtYmVkMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwbHVnaW4xIik7Ci0g
ICAgICAgIHZhciBlbWJlZDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGx1Z2luMiIpOwot
ICAgICAgICBpZiAoaW50ZXJuYWxzLmlzUGx1Z2luU25hcHNob3R0ZWQoZW1iZWQxKSAmJiBpbnRl
cm5hbHMuaXNQbHVnaW5TbmFwc2hvdHRlZChlbWJlZDIpKQotICAgICAgICAgICAgcmVzdWx0Lmlu
bmVySFRNTCA9ICJQQVNTIjsKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAg
fSwgMTUwMCk7Ci19Ci08L3NjcmlwdD4KLTxlbWJlZCBpZD0icGx1Z2luMSIgc3JjPSIuLi9yZXNv
dXJjZXMvb3JhbmdlLm1vdiIgd2lkdGg9IjYwMCIgaGVpZ2h0PSI2MDAiPjwvZW1iZWQ+Ci08aW1n
IHNyYz0iLi4vcmVzb3VyY2VzL2FwcGxlLmdpZiIgd2lkdGg9IjYwMCIgaGVpZ2h0PSI2MDAiIHN0
eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjI1cHg7IGxlZnQ6MHB4Ij4KLTxicj4KLTxlbWJl
ZCBpZD0icGx1Z2luMiIgc3JjPSIuLi9yZXNvdXJjZXMvb3JhbmdlLm1vdiIgd2lkdGg9IjYwMCIg
aGVpZ2h0PSI2MDAiPjwvZW1iZWQ+Ci08aW1nIHNyYz0iLi4vcmVzb3VyY2VzL2FwcGxlLmdpZiIg
d2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiIHN0eWxlPSItd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xh
dGUoMjAwcHgsLTUwMHB4KSI+Cg==
</data>
<flag name="commit-queue"
          id="430651"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413943</attachid>
            <date>2020-11-12 09:29:23 -0800</date>
            <delta_ts>2020-11-12 12:03:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218835-20201112092922.patch</filename>
            <type>text/plain</type>
            <size>279625</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg2YjY2ODRjYzJlOTQ3NzI5Njc2MTEx
MmFlZDRhYWFhYTE2ODEyYzguLjdjN2IxNmMxNTAyZGIyMzgwZDFhY2FjNjk3M2NjMzI1ZDk1YTRi
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMTEtMTEgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQgYWR2YW5jZWQgcGx1Zy1pbiBmZWF0
dXJlczogc25hcHNob3R0aW5nIGFuZCBwbHVnLWluIGxvYWQgcG9saWN5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4MzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMv
V2ViUHJlZmVyZW5jZXMueWFtbDogUmVtb3ZlZAorICAgICAgICBBdXRvc3RhcnRPcmlnaW5QbHVn
SW5TbmFwc2hvdHRpbmdFbmFibGVkLCBQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkLAorICAgICAg
ICBQcmltYXJ5UGx1Z0luU25hcHNob3REZXRlY3Rpb25FbmFibGVkLCBhbmQgU25hcHNob3RBbGxQ
bHVnSW5zLgorCiAyMDIwLTExLTEyICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgU2hvdyBsZWdhY3kgbGluZSBsYXlvdXQgdmlzdWFsIGNvdmVyYWdlIGluc3RlYWQg
b2YgInNpbXBsZSBsaW5lIiBsYXlvdXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODEzMmRiZmYzOTI0MDQxOWMy
YTZlOWI5MDg5YzE4ZGRhY2UxNjQ5MS4uNzNjZDZjYzRkMGJhMTk2MmU3YjdkODYzMDgyYjk5ZWMy
YTZkYTU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNiBAQAorMjAyMC0xMS0xMSAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBhZHZhbmNl
ZCBwbHVnLWluIGZlYXR1cmVzOiBzbmFwc2hvdHRpbmcgYW5kIHBsdWctaW4gbG9hZCBwb2xpY3kK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODgzNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGVhZGVy
cy5jbWFrZTogUmVtb3ZlZCBzb21lIGhlYWRlcnMuCisgICAgICAgICogU291cmNlcy50eHQ6IFJl
bW92ZWQgc29tZSBzb3VyY2UgZmlsZXMuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOiBEaXR0by4KKworICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZU1h
cHBpbmdzLmg6IFJlbW92ZWQgU25hcHNob3R0ZWRQbHVnaW5PdmVybGF5UGFydC4KKyAgICAgICAg
KiBjc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbjogUmVtb3ZlZCBzbmFwc2hvdHRlZC1wbHVnaW4tb3Zl
cmxheS4KKworICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ6OkhUTUxQbHVnSW5FbGVtZW50KTogTW92ZWQgbWVt
YmVyIGluaXRpYWxpemF0aW9uIHRvCisgICAgICAgIHRoZSBjbGFzcyBkZWZpbml0aW9uLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ6OmNhblByb2Nlc3NEcmFnIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKTogUmVtb3ZlZCBzbmFwc2hvdC1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ6OnN3YXBSZW5kZXJlclRpbWVyRmlyZWQpOiBSZW1vdmVk
IGNvZGUgdG8gaGFuZGxlCisgICAgICAgIERpc3BsYXlpbmdTbmFwc2hvdCBzdGF0ZS4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50OjpzZXREaXNwbGF5U3RhdGUpOiBEaXR0by4K
KworICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaDogUmVtb3ZlZCBXYWl0aW5nRm9y
U25hcHNob3QsIERpc3BsYXlpbmdTbmFwc2hvdCwKKyAgICAgICAgUmVzdGFydGluZyBhbmQgUmVz
dGFydGluZ1dpdGhQZW5kaW5nTW91c2VDbGljayBzdGF0ZXMsIHVwZGF0ZVNuYXBzaG90LAorICAg
ICAgICBkaXNwYXRjaFBlbmRpbmdNb3VzZUNsaWNrLCBpc1Jlc3RhcnRlZFBsdWdpbiwgYW5kIGNh
blByb2Nlc3NEcmFnLiBNYXJrZWQgc29tZQorICAgICAgICBtb3JlIGZ1bmN0aW9ucyBmaW5hbCwg
bWFkZSBhIGNvdXBsZSBub24tdmlydHVhbCwgYW5kIG1vdmVkIHNvbWUgdGhpbmdzIGZyb20KKyAg
ICAgICAgcHVibGljIHRvIHByb3RlY3RlZCBhbmQgcHJvdGVjdGVkIHRvIHByaXZhdGUuCisKKyAg
ICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6dGl0bGVUZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnN1YnRpdGxlVGV4dCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50KTogUmVtb3ZlZCBhIGZldyBkYXRhCisgICAgICAgIG1lbWJlcnMu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzZXREaXNwbGF5U3Rh
dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKTogUmVtb3ZlZCBjb2RlIHRvIGhhbmRsZQorICAgICAgICB0
aGUgRGlzcGxheWluZ1NuYXBzaG90IGNhc2UuCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyIGNvbnN0KTogUmVtb3ZlZCBj
b2RlCisgICAgICAgIHRvIGhhbmRsZSBhIHNuYXBzaG90dGVkIHBsdWctaW4uCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp3aWxsUmVjYWxjU3R5bGUpOiBSZW1vdmVk
IGNoZWNrIGZvcgorICAgICAgICB0aGUgRGlzcGxheWluZ1NuYXBzaG90IGNhc2UuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVTbmFwc2hvdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpwbHVnSW5JbWFnZUVsZW1lbnRJc29sYXRlZFdvcmxkKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpZEFk
ZFVzZXJBZ2VudFNoYWRvd1Jvb3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBs
dWdJbkltYWdlRWxlbWVudDo6cGFydE9mU25hcHNob3RPdmVybGF5IGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnJlbW92ZVNuYXBzaG90
VGltZXJGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50OjpyZXN0YXJ0U2ltaWxhclBsdWdJbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXNlckRpZENsaWNrU25hcHNob3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c2V0SXNQcmltYXJ5
U25hcHNob3R0ZWRQbHVnSW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJ
bkltYWdlRWxlbWVudDo6cmVzdGFydFNuYXBzaG90dGVkUGx1Z0luKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ01vdXNl
Q2xpY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6c2ltdWxhdGVkTW91c2VDbGlja1RpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6ZG9jdW1lbnRIYWRSZWNlbnRVc2VyR2VzdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjaGVja1NpemVDaGFuZ2VGb3JTbmFwc2hv
dHRpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXMxMDBQZXJjZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzU21hbGxlclRoYW5UaW55U2l6aW5nVGhyZXNob2xkKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmlzVG9w
TGV2ZWxGdWxsUGFnZVBsdWdpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjaGVja1NuYXBzaG90U3RhdHVzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnN1YmZyYW1lTG9hZGVyV2ls
bENyZWF0ZVBsdWdJbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50OjpzdWJmcmFtZUxvYWRlckRpZENyZWF0ZVBsdWdJbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KTogRGVsZXRlZC4KKworICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oOiBS
ZW1vdmVkIHRoZSBmdW5jdGlvbnMgbWVudGlvbmVkIGFib3ZlLgorICAgICAgICBBbHNvIGxvYWRl
ZFVybCwgc25hcHNob3RJbWFnZSwgbmVlZHNDaGVja0ZvclNpemVDaGFuZ2UsIHNldE5lZWRzQ2hl
Y2tGb3JTaXplQ2hhbmdlLAorICAgICAgICBzbmFwc2hvdERlY2lzaW9uLCBpc1Jlc3RhcnRlZFBs
dWdpbiwgbV9sb2FkZWRVcmwsIG1fcGVuZGluZ0NsaWNrRXZlbnRGcm9tU25hcHNob3QsCisgICAg
ICAgIG1fc2ltdWxhdGVkTW91c2VDbGlja1RpbWVyLCBtX3JlbW92ZVNuYXBzaG90VGltZXIsIG1f
c25hcHNob3RJbWFnZSwKKyAgICAgICAgbV9jcmVhdGVkRHVyaW5nVXNlckdlc3R1cmUsIG1faXNS
ZXN0YXJ0ZWRQbHVnaW4sIG1fbmVlZHNDaGVja0ZvclNpemVDaGFuZ2UsCisgICAgICAgIG1fcGx1
Z0luV2FzQ3JlYXRlZCwgbV9kZWZlcnJlZFByb21vdGlvblRvUHJpbWFyeVBsdWdJbiwgbV9zaXpl
V2hlblNuYXBzaG90dGVkLAorICAgICAgICBtX3NuYXBzaG90RGVjaXNpb24sIGFuZCBtX3BsdWdJ
bkRpbWVuc2lvbnNTcGVjaWZpZWQuCisKKyAgICAgICAgKiBsb2FkZXIvU3ViZnJhbWVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OlN1YmZyYW1lTG9hZGVyOjpsb2Fk
UGx1Z2luKTogUmVtb3ZlZCBjYWxscyB0bworICAgICAgICBzdWJmcmFtZUxvYWRlcldpbGxDcmVh
dGVQbHVnSW4vRGlkQ3JlYXRlUGx1Z0luLgorCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y2FuUHJvY2Vzc0RyYWcp
OiBSZW1vdmVkIHNwZWNpYWwgY2FzZSBmb3IgcGx1Zy1pbnMuCisKKyAgICAgICAgKiBwYWdlL0Zy
YW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2Jq
ZWN0VG9VcGRhdGUpOiBSZW1vdmVkIGNhbGwgdG8KKyAgICAgICAgbmVlZHNDaGVja0ZvclNpemVD
aGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZUVtYmVkZGVkT2JqZWN0
KTogUmVtb3ZlZCBzcGVjaWFsIGNhc2UgZm9yCisgICAgICAgIHNuYXBzaG90dGVkIHBsdWctaW4g
YW5kIGNhbGwgdG8gbmVlZHNDaGVja0ZvclNpemVDaGFuZ2UuCisKKyAgICAgICAgKiBwYWdlL1Bh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6IFJlbW92ZWQgbV9wbHVnSW5D
bGllbnQuCisgICAgICAgICogcGFnZS9QYWdlLmg6IERpdHRvLgorICAgICAgICAqIHBhZ2UvUGFn
ZUNvbmZpZ3VyYXRpb24uY3BwOiBSZW1vdmVkIFBsdWdJbkNsaWVudC5oLgorICAgICAgICAqIHBh
Z2UvUGFnZUNvbmZpZ3VyYXRpb24uaDogUmVtb3ZlZCBwbHVnSW5DbGllbnQuCisgICAgICAgICog
cGFnZS9QbHVnSW5DbGllbnQuaDogUmVtb3ZlZC4KKworICAgICAgICAqIHBhZ2UvU2V0dGluZ3Mu
eWFtbDogUmVtb3ZlZCBNYXhpbXVtUGx1Z0luU25hcHNob3RBdHRlbXB0cy4KKworICAgICAgICAq
IHBsYXRmb3JtL1RoZW1lVHlwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6
IFJlbW92ZWQgU25hcHNob3R0ZWRQbHVnaW5PdmVybGF5UGFydC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9UaGVtZVR5cGVzLmg6IERpdHRvLgorCisgICAgICAgICogcGx1Z2lucy9QbHVnaW5WaWV3QmFz
ZS5oOiBSZW1vdmVkIGNhblByb2Nlc3NEcmFnLCBzaG91bGRBbHdheXNBdXRvU3RhcnQsCisgICAg
ICAgIGFuZCBiZWdpblNuYXBzaG90dGluZ1J1bm5pbmdQbHVnaW4uCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDogQWRkZWQgYW4gZXhwb3J0IGJlY2F1c2UgdGhl
IGxpbmtlciBmYWlsZWQuCisgICAgICAgIE5vdCBzdXJlIHdoYXQgdHJpZ2dlcmVkIHRoaXMuCisK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRDb250ZW50
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6bGF5
b3V0KTogUmVtb3ZlZCBjb2RlIHRoYXQgd2FzIG9ubHkgZm9yCisgICAgICAgIHNuYWhwc2hvdHRl
ZCBwbHVnLWlucywgZ3VhcmRlZCBib3RoIGJ5IGFuIGV4cGxpY2l0IGNoZWNrIGZvciBzbmFwc2hv
dCBzdGF0ZQorICAgICAgICBhbmQgYnkgYSBjaGVjayBvZiBjYW5IYXZlQ2hpbGRyZW4gKG5vdyBh
bHdheXMgZmFsc2UpLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OmNh
bkhhdmVDaGlsZHJlbiBjb25zdCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRW1iZWRkZWRPYmplY3QuaDogTWFya2VkIHRoZSBjbGFzcyBmaW5hbCwgbWFkZSBldmVyeXRo
aW5nCisgICAgICAgIHByaXZhdGUgdGhhdCB3YXMgcHJvdGVjdGVkLCByZW1vdmVkIGZ1bmN0aW9u
cyBtZW50aW9uZWQgYWJvdmUsIGFuZCB2aXJ0dWFsCisgICAgICAgIGNhbkhhdmVXaWRnZXQgZnVu
Y3Rpb24uCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmlzUmVzdGFydGVkUGx1Z2luKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6aXNTaW1wbGVDb250YWluZXJDb21wb3NpdGluZ0xh
eWVyIGNvbnN0KToKKyAgICAgICAgUmVtb3ZlZCBjYWxsIHRvIGlzUmVzdGFydGVkUGx1Z2luLgor
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOiBSZW1vdmVkIGlzU25hcHNob3R0
ZWRQbHVnSW4uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4u
aDogUmVtb3ZlZC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnQpOiBSZW1vdmVkIFNuYXBzaG90dGVkUGx1
Z2luT3ZlcmxheVBhcnQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmg6IFJlbW92
ZWQgcGFpbnRTbmFwc2hvdHRlZFBsdWdpbk92ZXJsYXkuCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lTWFjLmg6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFNuYXBzaG90dGVk
UGx1Z2luT3ZlcmxheSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzUGx1Z2luU25hcHNob3R0ZWQpOiBB
bHdheXMgcmV0dXJuIGZhbHNlLgorCiAyMDIwLTExLTEyICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIFVzZSBpbmxpbmUgaXRlcmF0b3IgaW4g
VmlzaWJsZVBvc2l0aW9uOjpsZWZ0L3JpZ2h0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCA4NDI0Yzk2NjRiN2M0YzY0MWYxZWUyNjJjNzM5NGZlZjdhMzJjN2MxLi5jNjlkNTZi
ZmFjNzFkNzdiYWY5NjUxZjNlMDNmNWY3OGEwMWE4MTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
NSBAQAorMjAyMC0xMS0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVtb3ZlIHVudXNlZCBhZHZhbmNlZCBwbHVnLWluIGZlYXR1cmVzOiBzbmFwc2hvdHRpbmcg
YW5kIHBsdWctaW4gbG9hZCBwb2xpY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxODgzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6bXV0ZUF1ZGlvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2Vzcyk6CisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzQXR0cmlidXRlcy5oOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAq
IFNoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAg
ICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAg
ICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBT
aGFyZWQvV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAq
IFNvdXJjZXMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgor
ICAgICAgICAoV0tDb250ZXh0Q29weVBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyk6IERlbGV0
ZWQuCisgICAgICAgIChXS0NvbnRleHRTZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMpOiBE
ZWxldGVkLgorICAgICAgICAoV0tDb250ZXh0U2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luc0ZpbHRl
cmluZ091dEVudHJpZXNBZGRlZEFmdGVyVGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXS0NvbnRl
eHRTZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5zKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xp
ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHA6CisgICAg
ICAgIChXS1ByZWZlcmVuY2VzU2V0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCk6CisgICAgICAg
IChXS1ByZWZlcmVuY2VzR2V0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCk6CisgICAgICAgIChX
S1ByZWZlcmVuY2VzU2V0U25hcHNob3RBbGxQbHVnSW5zKToKKyAgICAgICAgKFdLUHJlZmVyZW5j
ZXNHZXRTbmFwc2hvdEFsbFBsdWdJbnMpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldEF1dG9z
dGFydE9yaWdpblBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQpOgorICAgICAgICAoV0tQcmVmZXJl
bmNlc0dldEF1dG9zdGFydE9yaWdpblBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQpOgorICAgICAg
ICAoV0tQcmVmZXJlbmNlc1NldFByaW1hcnlQbHVnSW5TbmFwc2hvdERldGVjdGlvbkVuYWJsZWQp
OgorICAgICAgICAoV0tQcmVmZXJlbmNlc0dldFByaW1hcnlQbHVnSW5TbmFwc2hvdERldGVjdGlv
bkVuYWJsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0
ZU1hYy5tbToKKyAgICAgICAgKFdLQ29udGV4dElzUGx1Z0luVXBkYXRlQXZhaWxhYmxlKToKKyAg
ICAgICAgKFdLQ29udGV4dFNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kpOgorICAgICAgICAoV0tD
b250ZXh0Q2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIF9zZXRQ
bHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkOl0pOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIF9w
bHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9yZXNldFBsdWdp
bkxvYWRDbGllbnRQb2xpY2llczpdKToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfcGx1Z2lu
TG9hZENsaWVudFBvbGljaWVzXSk6CisgICAgICAgICh0b1BsdWdpbkxvYWRDbGllbnRQb2xpY2ll
c0hhc2hNYXApOiBEZWxldGVkLgorICAgICAgICAocG9saWNpZXNIYXNoTWFwVG9EaWN0aW9uYXJ5
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAg
KFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWdhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZhaWxUb0lu
aXRpYWxpemVQbHVnSW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3Rh
dGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6cGx1Z2luTW9kdWxlTG9hZFBvbGljeSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OndrUGx1Z2luTW9kdWxlTG9hZFBvbGljeSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRl
UG9saWN5Rm9yUGx1Z2luTG9hZCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdp
bnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmg6IFJlbW92ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6cGx1Z2luUHJvY2Vzc1Rva2VuKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6OmZldGNoV2Vic2l0ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6ZGVsZXRlV2Vic2l0ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6ZGVsZXRlV2Vic2l0ZURhdGFG
b3JIb3N0TmFtZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NN
YW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVu
Y2hpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpbmRQbHVnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp3ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2ViUHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbHVnSW5BdXRvU3RhcnRPcmlnaW5I
YXNoZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
c2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OnNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2lu
c0ZpbHRlcmluZ091dEVudHJpZXNBZGRlZEFmdGVyVGltZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc2V0UGx1Z2luTG9hZENsaWVu
dFBvbGljaWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNs
ZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmFkZFBsdWdJbkF1dG9TdGFydE9y
aWdpbkhhc2gpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnBs
dWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlVUlDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFj
L1BsdWdpblByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6cGx1Z2lu
TGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW46OnNob3VsZEFsd2F5c0F1dG9TdGFydCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpQbHVnaW5Q
cm94eSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
cmVjcmVhdGVBbmRJbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6aW5p
dGlhbGl6ZVBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmRpZEZhaWxUb0lu
aXRpYWxpemVQbHVnaW4pOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpkaWRJbml0aWFs
aXplUGx1Z2luKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGFpbnQpOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpoYW5kbGVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblZpZXc6OnNob3VsZE5vdEFkZExheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luVmlldzo6aW52YWxpZGF0ZVJlY3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojpp
c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6aXNBbG1v
c3RTb2xpZENvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGx1
Z2luU25hcHNob3RUaW1lckZpcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6YmVnaW5TbmFwc2hvdHRpbmdSdW5uaW5nUGx1Z2luKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luVmlldzo6c2hvdWxkQWx3YXlzQXV0b1N0YXJ0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGx1Z2luRGlkUmVjZWl2ZVVzZXJJbnRl
cmFjdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpwb3B1bGF0ZVBs
dWdpbkNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpzZXRQ
bHVnaW5Mb2FkQ2xpZW50UG9saWN5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGx1
Z2luSW5mb1Byb3ZpZGVyOjpjbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpwbHVnaW5Mb2FkQ2xpZW50UG9s
aWN5Rm9ySG9zdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbklu
Zm9Qcm92aWRlcjo6bG9uZ2VzdE1hdGNoZWRXaWxkY2FyZEhvc3RGb3JIb3N0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpyZXBsYWNlSG9z
dFdpdGhNYXRjaGVkV2lsZGNhcmRIb3N0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50Lmg6IFJlbW92ZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjptX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpj
bG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFkZFBsdWdpblZpZXcpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpyZW1vdmVQbHVnaW5WaWV3KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Y2FuUGx1Z2luSGFuZGxlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkRmluaXNo
TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRldGVybWluZVByaW1hcnlTbmFwc2hv
dHRlZFBsdWdJblRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpkZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW4pOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpyZXNldFByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1hdGNoZXNQcmltYXJ5UGx1Z0luIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGx1Z0luSW50ZXJzZWN0c1NlYXJj
aFJlY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbHVnSW5Jc1ByaW1h
cnlTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6c2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0
OjphZGRDYXNlRm9sZGVkQ2hhcmFjdGVycyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Omhh
c2hGb3JQbHVnSW5PcmlnaW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Ojppc1BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpzaG91bGRQbHVnSW5BdXRvU3RhcnRGcm9tT3JpZ2luKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2luKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGlkQWRkUGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJl
c2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6cGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZXNldFBsdWdpbkxvYWRD
bGllbnRQb2xpY2llcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNs
ZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bjoKKwogMjAyMC0xMS0xMiAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtHVEtdIFVucmV2aWV3ZWQsIG5vbi11bmlmaWVkIGJ1aWxkIGZpeC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlMzE3NzA3YzI5NTkxNTQ4ZmY2YTJjZjg2N2FiZDBm
NjNkMTUwY2Q0Li5kZDYzNTlmOGY5ZmFkNmVhZWI4NDg5MjU0NGQ3NTZlOWU5MjA2ZTY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMTEtMTEgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQgYWR2
YW5jZWQgcGx1Zy1pbiBmZWF0dXJlczogc25hcHNob3R0aW5nIGFuZCBwbHVnLWluIGxvYWQgcG9s
aWN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4
MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHBsdWdJ
blNuYXBzaG90dGluZ0VuYWJsZWRdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgc2V0UGx1
Z0luU25hcHNob3R0aW5nRW5hYmxlZDpdKToKKwogMjAyMC0xMS0xMiAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFNob3cgbGVnYWN5IGxpbmUgbGF5b3V0IHZpc3Vh
bCBjb3ZlcmFnZSBpbnN0ZWFkIG9mICJzaW1wbGUgbGluZSIgbGF5b3V0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3Vy
Y2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCA4ZmZj
MTU3Y2QzNzM0Y2UxNTRhMjUzNWE1OTQyNGU2ZmY3MDdmNTFiLi5hOWNiZWJhYzY5ZjJkNDE5YWE3
OWJhNTc3NjM4Y2UxMjQwNzBiNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJl
ZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJl
ZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtMzA1LDE2ICszMDUsNiBAQCBBdXRob3JB
bmRVc2VyU3R5bGVzRW5hYmxlZDoKICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDogdHJ1ZQog
Ci1BdXRvc3RhcnRPcmlnaW5QbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkOgotICB0eXBlOiBib29s
Ci0gIGRlZmF1bHRWYWx1ZToKLSAgICBXZWJLaXRMZWdhY3k6Ci0gICAgICBkZWZhdWx0OiB0cnVl
Ci0gICAgV2ViS2l0OgotICAgICAgZGVmYXVsdDogdHJ1ZQotICAgIFdlYkNvcmU6Ci0gICAgICBk
ZWZhdWx0OiB0cnVlCi0KIEJhY2tGb3J3YXJkQ2FjaGVTdXBwb3J0c1BsdWdpbnM6CiAgIHR5cGU6
IGJvb2wKICAgd2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleTogV2ViS2l0UGFnZUNhY2hlU3VwcG9y
dHNQbHVnaW5zUHJlZmVyZW5jZUtleQpAQCAtMTYwNSwxNiArMTU5NSw2IEBAIFBpY3R1cmVJblBp
Y3R1cmVBUElFbmFibGVkOgogICAgIFdlYkNvcmU6CiAgICAgICBkZWZhdWx0OiB0cnVlCiAKLVBs
dWdJblNuYXBzaG90dGluZ0VuYWJsZWQ6Ci0gIHR5cGU6IGJvb2wKLSAgZGVmYXVsdFZhbHVlOgot
ICAgIFdlYktpdExlZ2FjeToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0gICAgV2ViS2l0OgotICAg
ICAgZGVmYXVsdDogZmFsc2UKLSAgICBXZWJDb3JlOgotICAgICAgZGVmYXVsdDogZmFsc2UKLQog
UGx1Z2luc0VuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgd2ViY29yZUdldHRlcjogYXJlUGx1Z2lu
c0VuYWJsZWQKQEAgLTE2MjcsMTYgKzE2MDcsNiBAQCBQbHVnaW5zRW5hYmxlZDoKICAgICBXZWJD
b3JlOgogICAgICAgZGVmYXVsdDogZmFsc2UKIAotUHJpbWFyeVBsdWdJblNuYXBzaG90RGV0ZWN0
aW9uRW5hYmxlZDoKLSAgdHlwZTogYm9vbAotICBkZWZhdWx0VmFsdWU6Ci0gICAgV2ViS2l0TGVn
YWN5OgotICAgICAgZGVmYXVsdDogdHJ1ZQotICAgIFdlYktpdDoKLSAgICAgIGRlZmF1bHQ6IHRy
dWUKLSAgICBXZWJDb3JlOgotICAgICAgZGVmYXVsdDogdHJ1ZQotCiBQdW5jaE91dFdoaXRlQmFj
a2dyb3VuZHNJbkRhcmtNb2RlOgogICB0eXBlOiBib29sCiAgIHdlYmNvcmVPbkNoYW5nZTogc2V0
TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzCkBAIC0xOTk3LDE2ICsxOTY3LDYgQEAgU21hcnRJ
bnNlcnREZWxldGVFbmFibGVkOgogICAgIFdlYkNvcmU6CiAgICAgICBkZWZhdWx0OiB0cnVlCiAK
LVNuYXBzaG90QWxsUGx1Z0luczoKLSAgdHlwZTogYm9vbAotICBkZWZhdWx0VmFsdWU6Ci0gICAg
V2ViS2l0TGVnYWN5OgotICAgICAgZGVmYXVsdDogZmFsc2UKLSAgICBXZWJLaXQ6Ci0gICAgICBk
ZWZhdWx0OiBmYWxzZQotICAgIFdlYkNvcmU6Ci0gICAgICBkZWZhdWx0OiBmYWxzZQotCiBTb3Vy
Y2VCdWZmZXJDaGFuZ2VUeXBlRW5hYmxlZDoKICAgdHlwZTogYm9vbAogICBjb25kaXRpb246IEVO
QUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA2NDUzNGNlMDI1MDc4YTli
NTQ2NThlMGU2YTU5MzdiNzg4ZjYwOWFhLi5iZWIwMDYwYmFlYTQzOTRhMDUwNGNjZWQyNjdlNjI2
MDBhMzk2Yjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTg2OSw3ICs4NjksNiBAQCBzZXQoV2Vi
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGFnZS9QYWdlT3ZlcmxheUNvbnRy
b2xsZXIuaAogICAgIHBhZ2UvUGVyZm9ybWFuY2VMb2dnaW5nLmgKICAgICBwYWdlL1BlcmZvcm1h
bmNlTG9nZ2luZ0NsaWVudC5oCi0gICAgcGFnZS9QbHVnSW5DbGllbnQuaAogICAgIHBhZ2UvUG9p
bnRlckNhcHR1cmVDb250cm9sbGVyLmgKICAgICBwYWdlL1BvaW50ZXJDaGFyYWN0ZXJpc3RpY3Mu
aAogICAgIHBhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmgKQEAgLTE0NTAsNyArMTQ0OSw2IEBA
IHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICByZW5kZXJpbmcvUmVu
ZGVyUHRyLmgKICAgICByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAogICAgIHJlbmRlcmluZy9S
ZW5kZXJTZWxlY3Rpb25JbmZvLmgKLSAgICByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVn
SW4uaAogICAgIHJlbmRlcmluZy9SZW5kZXJUZXh0LmgKICAgICByZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2wuaAogICAgIHJlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKaW5kZXggNWVmMWJmNmE2NjRmZjAxY2U5MTc5OGVhYzU1MzNhZTVmOWFkMDIzZS4uNzc4ZDJj
MGMwYTNkOTc4ZTM5YTlhOWE0ODExYWUzZWNiMWUwN2EwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIy
MjgsNyArMjIyOCw2IEBAIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKIHJlbmRl
cmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKIHJlbmRlcmluZy9SZW5kZXJTZWxlY3Rpb25JbmZv
LmNwcAogcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKLXJlbmRlcmluZy9SZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbi5jcHAKIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKIHJlbmRlcmluZy9SZW5k
ZXJUYWJsZUNhcHRpb24uY3BwCiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVj
ZTFiZjllNTExYjZiMDJjNjg2MmJlYzUyMDA3MzVmYTcyNTRmYTIuLmEyZGExNDRhYWFjOGE0ZDhj
ODU5YzAwMWNlNWQxNTJlNGI2MDBmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkyNyw3ICs5MjcsNiBAQAogCQkzMTg0MzZE
RTIxQjlEQUFGMDBFRDM4M0UgLyogV2ViR1BVTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxODQzNkRCMjFCOURBQTAwMEVEMzgzRSAvKiBXZWJH
UFVMYXllci5oICovOyB9OwogCQkzMTg4OTE2MTFBQjdFRUExMDBFQTYyN0IgLyogbWlzc2luZ0lt
YWdlQDN4LnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RGNDE5OTkxQUIwREExNDAwNEU2NEUxIC8qIG1pc3NpbmdJbWFnZUAzeC5wbmcgKi87IH07
CiAJCTMxOEVBRDREMUZBOTEzODAwMDhDRUY4NiAvKiBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRl
eHRTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzE4RUFENEExRkE5MTE1NzAwOENFRjg2IC8qIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4
dFNldHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKLQkJMzE5NTVBODgxNjBEMTk5MjAwODU4MDI1IC8qIFJlbmRlclNuYXBzaG90dGVkUGx1Z0lu
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUU4RDhC
QjE2MEJDOTRDMDA0Q0U4RjUgLyogUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMTk4NDgwMTFBMUQ4MTdC
MDBBMTMzMTggLyogQW5pbWF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxOTg0N0ZGMUExRDgxNjcwMEExMzMxOCAvKiBBbmltYXRpb25F
dmVudC5oICovOyB9OwogCQkzMTk4NDgwQzFBMUU2Q0U4MDBBMTMzMTggLyogSlNBbmltYXRpb25F
dmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE5
ODQ4MDQxQTFFNkI1RDAwQTEzMzE4IC8qIEpTQW5pbWF0aW9uRXZlbnQuaCAqLzsgfTsKIAkJMzE5
QTcyODgyM0MyNjdGRTAwODUzNTNDIC8qIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE5QTcyODcy
M0MyNjdFNzAwODUzNTNDIC8qIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05NTcsNyArOTU2
LDYgQEAKIAkJMzFDMEZGMjUwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdFRyYW5zaXRpb25FdmVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFDMEZG
MUYwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdFRyYW5zaXRpb25FdmVudC5oICovOyB9OwogCQkz
MUMwRkYzRTBFNENFRkFDMDA3RDZGRTUgLyogSlNXZWJLaXRBbmltYXRpb25FdmVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFDMEZGM0EwRTRDRUZB
QzAwN0Q2RkU1IC8qIEpTV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCAqLzsgfTsKIAkJMzFDMEZGNDAw
RTRDRUZBQzAwN0Q2RkU1IC8qIEpTV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUMwRkYzQzBFNENFRkFDMDA3RDZG
RTUgLyogSlNXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCAqLzsgfTsKLQkJMzFENTkxQjMxNjY5N0E2
QzAwRTZCRjAyIC8qIFBsdWdJbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzFENTkxQjExNjY5N0E2QzAwRTZCRjAyIC8qIFBsdWdJbkNsaWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMx
RENERjQ0MURBMUM0NTQwMEVBNUI5MyAvKiBFeHRlbmRlZENvbG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMURDREY0MjFEQTFDNDU0MDBFQTVCOTMg
LyogRXh0ZW5kZWRDb2xvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTMxREVBNDU2MUIzOUY0RDkwMEY3NzE3OCAvKiBXZWJTeXN0ZW1CYWNrZHJv
cExheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MURFQTQ1NDFCMzlGNEQ5MDBGNzcxNzggLyogV2ViU3lzdGVtQmFja2Ryb3BMYXllci5oICovOyB9
OwogCQkzMUVBRjk3RTEyMTQzNUE0MDBFN0MxQkYgLyogRGV2aWNlTW90aW9uQ2xpZW50SU9TLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUVBRjk3QzEy
MTQzNUE0MDBFN0MxQkYgLyogRGV2aWNlTW90aW9uQ2xpZW50SU9TLmggKi87IH07CkBAIC00NjU5
LDcgKzQ2NTcsNiBAQAogCQlERTVGODY1OTFGQTJBRjI0MDA2REI2M0EgLyogVW5pZmllZFNvdXJj
ZTYwLW1tLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REU1Rjg2M0ExRkEyQUYwNzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U2MC1tbS5tbSAqLzsgfTsK
IAkJREU1Rjg2NTkxRkEyQUYyNDAwNkRCNjNCIC8qIFVuaWZpZWRTb3VyY2U2MS1tbS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFNUY4NjNBMUZBMkFG
MDcwMDZEQjYzQiAvKiBVbmlmaWVkU291cmNlNjEtbW0ubW0gKi87IH07CiAJCURFNzcxMDg2MUZB
MkYwRDYwMDQ2MDAxNiAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTc2M0YzQzFFMjA1MjM0MDAxRDU4REUg
LyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tICovOyB9OwotCQlERUJDQ0REMjE2NjQ2RTgyMDBB
NDUyRTEgLyogUmVuZGVyTWVkaWFDb250cm9scy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gREU0OUIzMDgxNjVGMkZFMTAwMTAzMzhEIC8qIFJlbmRlck1l
ZGlhQ29udHJvbHMuaCAqLzsgfTsKIAkJREVDQTdEOTMxRjlFNjdCNTAwRTNCNjYxIC8qIFVuaWZp
ZWRTb3VyY2UxMzEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gREVDQTdENkQxRjlFNjFDRjAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UxMzEuY3BwICov
OyB9OwogCQlERUNBN0Q5NDFGOUU2N0I1MDBFM0I2NjEgLyogVW5pZmllZFNvdXJjZTEzMi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERUNBN0Q3RTFG
OUU2MUUzMDBFM0I2NjEgLyogVW5pZmllZFNvdXJjZTEzMi5jcHAgKi87IH07CiAJCURFQ0E3RDk1
MUY5RTY3QjUwMEUzQjY2MSAvKiBVbmlmaWVkU291cmNlMTMzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFQ0E3RDgwMUY5RTYxRTUwMEUzQjY2MSAv
KiBVbmlmaWVkU291cmNlMTMzLmNwcCAqLzsgfTsKQEAgLTczNzUsMTIgKzczNzIsOSBAQAogCQkz
MUQyNkJDNDFGODZEMjY2MDA4RkYyNTUgLyogSlNJbWFnZUJpdG1hcE9wdGlvbnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbWFnZUJpdG1hcE9wdGlvbnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUQyNkJDNTFGODZEMjY4MDA4RkYyNTUg
LyogSlNJbWFnZUJpdG1hcE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNJbWFnZUJpdG1hcE9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzFEMjZCQzYxRjg2RDI2OTAwOEZGMjU1IC8qIEpTSW1hZ2VCaXRtYXAuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbWFnZUJpdG1hcC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTMxRDU5MUIxMTY2OTdBNkMwMEU2QkYwMiAvKiBQbHVnSW5DbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGx1Z0luQ2xpZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxRENERjQyMURBMUM0NTQwMEVBNUI5MyAvKiBF
eHRlbmRlZENvbG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVuZGVk
Q29sb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFERUE0NTMxQjM5RjREOTAw
Rjc3MTc4IC8qIFdlYlN5c3RlbUJhY2tkcm9wTGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTeXN0ZW1CYWNrZHJvcExheWVyLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzMURFQTQ1NDFCMzlGNEQ5MDBGNzcxNzggLyogV2ViU3lzdGVt
QmFja2Ryb3BMYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTeXN0
ZW1CYWNrZHJvcExheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxRThEOEJB
MTYwQkM5NEIwMDRDRThGNSAvKiBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxRThEOEJCMTYwQkM5NEMwMDRDRThGNSAv
KiBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzMUVBRjk3QzEyMTQzNUE0MDBFN0MxQkYgLyogRGV2aWNlTW90aW9uQ2xpZW50SU9TLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERldmljZU1vdGlvbkNsaWVudElPUy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUVBRjk3RDEyMTQzNUE0MDBFN0MxQkYg
LyogRGV2aWNlTW90aW9uQ2xpZW50SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gRGV2aWNlTW90aW9uQ2xpZW50SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzMUVCNTRERDFFN0RDNzQ0MDBDMTYyM0IgLyogUlRDUnRwVHJhbnNjZWl2ZXJE
aXJlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwVHJhbnNj
ZWl2ZXJEaXJlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MTY3LDgg
KzE1MTYxLDYgQEAKIAkJREJGQ0IwRUJGRjVDRDc3RUJFQjM1OTVGIC8qIFJlbmRlck1hdGhNTFBh
ZGRlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNYXRo
TUxQYWRkZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERDA1RkUwQjBCOEJB
M0M2MDA5QUNERkUgLyogV2ViQ29yZU9iakNFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkNvcmVPYmpDRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCURENzYzQkIxMDk5MkMyQzkwMDc0MEI4RSAvKiBsaWJ4bWwyLmR5bGliICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gt
by5keWxpYiI7IG5hbWUgPSBsaWJ4bWwyLmR5bGliOyBwYXRoID0gL3Vzci9saWIvbGlieG1sMi5k
eWxpYjsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKLQkJREU0OUIzMDcxNjVGMkZFMTAw
MTAzMzhEIC8qIFJlbmRlck1lZGlhQ29udHJvbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVuZGVyTWVkaWFDb250cm9scy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCURFNDlCMzA4MTY1RjJGRTEwMDEwMzM4RCAvKiBSZW5kZXJNZWRpYUNvbnRy
b2xzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1lZGlhQ29udHJv
bHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREU1RjgzQjIxRkExODY3NjAwNkRC
NjNBIC8qIFVuaWZpZWRTb3VyY2UzMDEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gVW5pZmllZFNvdXJjZTMwMS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTMwMS5jcHAiOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlERTVGODNCMzFGQTE4Njc3MDA2REI2M0EgLyogVW5p
ZmllZFNvdXJjZTM1NS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBV
bmlmaWVkU291cmNlMzU1LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9XZWJDb3JlL3VuaWZp
ZWQtc291cmNlcy9VbmlmaWVkU291cmNlMzU1LmNwcCI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCURFNUY4M0I0MUZBMTg2NzgwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNl
Mzc4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3Vy
Y2UzNzguY3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL1dlYkNvcmUvdW5pZmllZC1zb3VyY2Vz
L1VuaWZpZWRTb3VyY2UzNzguY3BwIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKQEAgLTIxODkwLDcgKzIxODgyLDYgQEAKIAkJCQk4QUY0RTU1QTExREM1QTYzMDAwRUQzREUg
LyogUGVyZm9ybWFuY2VUaW1pbmcuaWRsICovLAogCQkJCUE1NTRCNUYwMUUzODM5MzYwMDFENEUw
MyAvKiBQZXJmb3JtYW5jZVVzZXJUaW1pbmcuY3BwICovLAogCQkJCUE1NTRCNUYxMUUzODM5MzYw
MDFENEUwMyAvKiBQZXJmb3JtYW5jZVVzZXJUaW1pbmcuaCAqLywKLQkJCQkzMUQ1OTFCMTE2Njk3
QTZDMDBFNkJGMDIgLyogUGx1Z0luQ2xpZW50LmggKi8sCiAJCQkJNzFCNUFCMjUyMUYxRDlFMzAw
Mzc2RTVDIC8qIFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJNzFCNUFCMjQy
MUYxRDlFMjAwMzc2RTVDIC8qIFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5oICovLAogCQkJCTk1
REY5RDIzMjUyQkVEOTkwMDBEN0Y0NiAvKiBQb2ludGVyQ2hhcmFjdGVyaXN0aWNzLmggKi8sCkBA
IC0yOTQyNSw4ICsyOTQxNiw2IEBACiAJCQkJMEY1NjAyOEQwRTRCNzY1ODAwNjVCMDM4IC8qIFJl
bmRlck1hcnF1ZWUuaCAqLywKIAkJCQlFNEMyNzk1NjBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVy
TWVkaWEuY3BwICovLAogCQkJCUU0QzI3OTU3MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRp
YS5oICovLAotCQkJCURFNDlCMzA3MTY1RjJGRTEwMDEwMzM4RCAvKiBSZW5kZXJNZWRpYUNvbnRy
b2xzLmNwcCAqLywKLQkJCQlERTQ5QjMwODE2NUYyRkUxMDAxMDMzOEQgLyogUmVuZGVyTWVkaWFD
b250cm9scy5oICovLAogCQkJCUFCRERGRTczMEE1QzZFNkYwMEEzRTExRCAvKiBSZW5kZXJNZW51
TGlzdC5jcHAgKi8sCiAJCQkJQUJEREZFNzQwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlck1lbnVM
aXN0LmggKi8sCiAJCQkJQTQ1NDQyNEMxMTlCMzY4NzAwOUJFOTEyIC8qIFJlbmRlck1ldGVyLmNw
cCAqLywKQEAgLTI5NDcwLDggKzI5NDU5LDYgQEAKIAkJCQkwRjExQTU0RTBGMzkyMzMxMDBDMzc4
ODQgLyogUmVuZGVyU2VsZWN0aW9uSW5mby5oICovLAogCQkJCUFCMjQ3QTZBMEFGRDYzODMwMDNG
QTVGRCAvKiBSZW5kZXJTbGlkZXIuY3BwICovLAogCQkJCUFCMjQ3QTZCMEFGRDYzODMwMDNGQTVG
RCAvKiBSZW5kZXJTbGlkZXIuaCAqLywKLQkJCQkzMUU4RDhCQTE2MEJDOTRCMDA0Q0U4RjUgLyog
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwICovLAotCQkJCTMxRThEOEJCMTYwQkM5NEMwMDRD
RThGNSAvKiBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oICovLAogCQkJCUE4REY0QUUyMDk4MEM0
MkMwMDUyOTgxQiAvKiBSZW5kZXJUYWJsZS5jcHAgKi8sCiAJCQkJQThERjRBRTEwOTgwQzQyQzAw
NTI5ODFCIC8qIFJlbmRlclRhYmxlLmggKi8sCiAJCQkJNkVEODc4QzIxNDc0OTNGNDAwNEMzNTk3
IC8qIFJlbmRlclRhYmxlQ2FwdGlvbi5jcHAgKi8sCkBAIC0zMzY5Nyw3ICszMzY4NCw2IEBACiAJ
CQkJQ0RBMjlBMEYxQ0JEOUNGRTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDZEQzY0ODI0QTI5REFCMDA2MUYzOTAgLyog
UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFGRkM0NTkxRDVFODY2MTAwMjY3QTY2IC8qIFBsdWdpbkJsb2NrbGlzdC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMzFENTkxQjMxNjY5N0E2QzAwRTZCRjAyIC8qIFBsdWdJbkNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTlDNkU0RjQwRDc0NUU0ODAwNjQ0MkU5IC8qIFBsdWdpbkRhdGEu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk3MjA1QUJDMTIzOTI5MjcwMEIxNzM4MCAvKiBQbHVnaW5E
b2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwOEZFREQxRDU5MkI4QjAwOEJBOENCIC8q
IFBsdWdpbkluZm9Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzg4NSw3ICszMzg3MSw2
IEBACiAJCQkJNDM5MDQ2RUMxMkRBMjVFODAwQUY4MEE5IC8qIFJlbmRlck1hdGhNTFRva2VuLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MzkwNDZFQTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0
aE1MVW5kZXJPdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEMyNzk1OTBDRjk3NDE5MDBFOTdC
OTggLyogUmVuZGVyTWVkaWEuaCBpbiBIZWFkZXJzICovLAotCQkJCURFQkNDREQyMTY2NDZFODIw
MEE0NTJFMSAvKiBSZW5kZXJNZWRpYUNvbnRyb2xzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQkRE
RkU3QTBBNUM2RTcwMDBBM0UxMUQgLyogUmVuZGVyTWVudUxpc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE0NTQ0MjRGMTE5QjM2ODcwMDlCRTkxMiAvKiBSZW5kZXJNZXRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUEzNTg2RTAxNTI2NEM0NTAwMjJBNjU5IC8qIFJlbmRlck11bHRpQ29sdW1uRmxv
dy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzkwOSw3ICszMzg5NCw2IEBACiAJCQkJNDU4RkU0MEEx
NTg5REYwQjAwNTYwOUU2IC8qIFJlbmRlclNlYXJjaEZpZWxkLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjExQTU0RjBGMzkyMzMxMDBDMzc4ODQgLyogUmVuZGVyU2VsZWN0aW9uSW5mby5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQUIyNDdBNkQwQUZENjM4MzAwM0ZBNUZEIC8qIFJlbmRlclNsaWRlci5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMzE5NTVBODgxNjBEMTk5MjAwODU4MDI1IC8qIFJlbmRlclNu
YXBzaG90dGVkUGx1Z0luLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhDOEZBRTBERENEMzFCMDBC
NTkyRjQgLyogUmVuZGVyU3R5bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNjY4MEU4MUNC
NzEwMEIyNTk2NSAvKiBSZW5kZXJTdHlsZUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDM2NzA4QzExMkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR0Jsb2NrLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBp
bmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCmlu
ZGV4IGJiMDM5ZjkwZjk0YzViOWY4NTkzNjg4NjAwMDAyZWQzNWU3NzQ2YzYuLjM1MThmOWFiYTc3
ZmUxNTc5ZDgyOGQ4NDliMDcxODQ3YzE2NGY0NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaApAQCAtNTg3LDkgKzU4Nyw2IEBAIHRlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShDb250cm9sUGFy
dCBlKQogICAgIGNhc2UgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25QYXJ0OgogICAgICAgICBtX3Zh
bHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVNlYXJjaGZpZWxkQ2FuY2VsQnV0dG9uOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheVBhcnQ6Ci0gICAgICAgIG1f
dmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlU25hcHNob3R0ZWRQbHVnaW5PdmVybGF5OwotICAgICAg
ICBicmVhazsKICAgICBjYXNlIFRleHRGaWVsZFBhcnQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlVGV4dGZpZWxkOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlS2V5d29yZHMuaW4KaW5kZXggNGEzMjE4MWFkMThiN2UxZWYyYmJhODAxNDQyYjQ1ZmY2
YzExZGZkOS4uNjljMThmMTM1ZjRlNDVhM2IxMWM5OTUyNzNmMjMwMTM4ZmRkNjVlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KQEAgLTg1Miw3ICs4NTIsNiBAQCBzZWFy
Y2hmaWVsZC1kZWNvcmF0aW9uCiBzZWFyY2hmaWVsZC1yZXN1bHRzLWRlY29yYXRpb24KIHNlYXJj
aGZpZWxkLXJlc3VsdHMtYnV0dG9uCiBzZWFyY2hmaWVsZC1jYW5jZWwtYnV0dG9uCi1zbmFwc2hv
dHRlZC1wbHVnaW4tb3ZlcmxheQogdGV4dGZpZWxkCiByZWxldmFuY3ktbGV2ZWwtaW5kaWNhdG9y
CiBjb250aW51b3VzLWNhcGFjaXR5LWxldmVsLWluZGljYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQbHVnSW5FbGVtZW50LmNwcAppbmRleCA5NWJkNDUzNDExYjAzNzhiYjhjMWYxNTU0Mzc5
NmI1NDYzNTdlM2E0Li45ZTZiM2IyYTFhZmYzNDFmOTdhYzYxYTMwNzc3OTlhN2U0ODA2ZTdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcApAQCAtNDEsNyArNDEs
NiBAQAogI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyRW1iZWRk
ZWRPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgotI2luY2x1ZGUgIlJlbmRlclNu
YXBzaG90dGVkUGx1Z0luLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJl
bmRlcldpZGdldC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKQEAgLTY4LDEwICs2
Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEhUTUxQbHVnSW5FbGVtZW50OjpI
VE1MUGx1Z0luRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZG9jdW1lbnQpCiAgICAgOiBIVE1MRnJhbWVPd25lckVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
Ci0gICAgLCBtX2luQmVmb3JlTG9hZEV2ZW50SGFuZGxlcihmYWxzZSkKICAgICAsIG1fc3dhcFJl
bmRlcmVyVGltZXIoKnRoaXMsICZIVE1MUGx1Z0luRWxlbWVudDo6c3dhcFJlbmRlcmVyVGltZXJG
aXJlZCkKLSAgICAsIG1faXNDYXB0dXJpbmdNb3VzZUV2ZW50cyhmYWxzZSkKLSAgICAsIG1fZGlz
cGxheVN0YXRlKFBsYXlpbmcpCiB7CiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJh
Y2tzKCk7CiB9CkBAIC04MSwxMiArNzcsNiBAQCBIVE1MUGx1Z0luRWxlbWVudDo6fkhUTUxQbHVn
SW5FbGVtZW50KCkKICAgICBBU1NFUlQoIW1faW5zdGFuY2UpOyAvLyBjbGVhcmVkIGluIGRldGFj
aCgpCiB9CiAKLWJvb2wgSFRNTFBsdWdJbkVsZW1lbnQ6OmNhblByb2Nlc3NEcmFnKCkgY29uc3QK
LXsKLSAgICBjb25zdCBQbHVnaW5WaWV3QmFzZSogcGx1Z2luID0gaXM8UGx1Z2luVmlld0Jhc2U+
KHBsdWdpbldpZGdldCgpKSA/IGRvd25jYXN0PFBsdWdpblZpZXdCYXNlPihwbHVnaW5XaWRnZXQo
KSkgOiBudWxscHRyOwotICAgIHJldHVybiBwbHVnaW4gPyBwbHVnaW4tPmNhblByb2Nlc3NEcmFn
KCkgOiBmYWxzZTsKLX0KLQogYm9vbCBIVE1MUGx1Z0luRWxlbWVudDo6d2lsbFJlc3BvbmRUb01v
dXNlQ2xpY2tFdmVudHMoKQogewogICAgIGlmIChpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKQEAg
LTIwNiwyMSArMTk2LDggQEAgdm9pZCBIVE1MUGx1Z0luRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCYgZXZlbnQpCiAgICAgaWYgKCFpczxSZW5kZXJXaWRnZXQ+KHJlbmRlcmVyKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzPFJlbmRlckVtYmVkZGVkT2JqZWN0PigqcmVu
ZGVyZXIpKSB7Ci0gICAgICAgIGlmIChkb3duY2FzdDxSZW5kZXJFbWJlZGRlZE9iamVjdD4oKnJl
bmRlcmVyKS5pc1BsdWdpblVuYXZhaWxhYmxlKCkpIHsKLSAgICAgICAgICAgIGRvd25jYXN0PFJl
bmRlckVtYmVkZGVkT2JqZWN0PigqcmVuZGVyZXIpLmhhbmRsZVVuYXZhaWxhYmxlUGx1Z2luSW5k
aWNhdG9yRXZlbnQoJmV2ZW50KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChpczxSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbj4oKnJlbmRlcmVyKSAmJiBkaXNw
bGF5U3RhdGUoKSA8IFJlc3RhcnRpbmcpIHsKLSAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlclNu
YXBzaG90dGVkUGx1Z0luPigqcmVuZGVyZXIpLmhhbmRsZUV2ZW50KGV2ZW50KTsKLSAgICAgICAg
ICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZGlzcGxheVN0YXRl
KCkgPCBQbGF5aW5nKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoaXM8UmVu
ZGVyRW1iZWRkZWRPYmplY3Q+KCpyZW5kZXJlcikgJiYgZG93bmNhc3Q8UmVuZGVyRW1iZWRkZWRP
YmplY3Q+KCpyZW5kZXJlcikuaXNQbHVnaW5VbmF2YWlsYWJsZSgpKQorICAgICAgICBkb3duY2Fz
dDxSZW5kZXJFbWJlZGRlZE9iamVjdD4oKnJlbmRlcmVyKS5oYW5kbGVVbmF2YWlsYWJsZVBsdWdp
bkluZGljYXRvckV2ZW50KCZldmVudCk7CiAKICAgICAvLyBEb24ndCBrZWVwIHRoZSB3aWRnZXQg
YWxpdmUgb3ZlciB0aGUgZGVmYXVsdEV2ZW50SGFuZGxlciBjYWxsLCBzaW5jZSB0aGF0IGNhbiBk
byB0aGluZ3MgbGlrZSBuYXZpZ2F0ZS4KICAgICB7CkBAIC0yODksNyArMjY2LDcgQEAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxQbHVnSW5FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJgogCiB2b2lkIEhUTUxQbHVnSW5FbGVtZW50Ojpzd2FwUmVuZGVyZXJU
aW1lckZpcmVkKCkKIHsKLSAgICBBU1NFUlQoZGlzcGxheVN0YXRlKCkgPT0gUHJlcGFyaW5nUGx1
Z2luUmVwbGFjZW1lbnQgfHwgZGlzcGxheVN0YXRlKCkgPT0gRGlzcGxheWluZ1NuYXBzaG90KTsK
KyAgICBBU1NFUlQoZGlzcGxheVN0YXRlKCkgPT0gUHJlcGFyaW5nUGx1Z2luUmVwbGFjZW1lbnQp
OwogICAgIGlmICh1c2VyQWdlbnRTaGFkb3dSb290KCkpCiAgICAgICAgIHJldHVybjsKICAgICAK
QEAgLTMwNCw5ICsyODEsOSBAQCB2b2lkIEhUTUxQbHVnSW5FbGVtZW50OjpzZXREaXNwbGF5U3Rh
dGUoRGlzcGxheVN0YXRlIHN0YXRlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2Rpc3BsYXlT
dGF0ZSA9IHN0YXRlOwotICAgIAorCiAgICAgbV9zd2FwUmVuZGVyZXJUaW1lci5zdG9wKCk7Ci0g
ICAgaWYgKHN0YXRlID09IERpc3BsYXlpbmdTbmFwc2hvdCB8fCBkaXNwbGF5U3RhdGUoKSA9PSBQ
cmVwYXJpbmdQbHVnaW5SZXBsYWNlbWVudCkKKyAgICBpZiAoZGlzcGxheVN0YXRlKCkgPT0gUHJl
cGFyaW5nUGx1Z2luUmVwbGFjZW1lbnQpCiAgICAgICAgIG1fc3dhcFJlbmRlcmVyVGltZXIuc3Rh
cnRPbmVTaG90KDBfcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQu
aAppbmRleCA3MjI1YmI0NWRmNjYyNTBhMzY3YTczNjZmMzQ4YTY4ZjY4MzYwZDg1Li42ZjgwNzRk
MGU5OWYzOTRjYTIzMTk4ZWNlZmNmY2ViMTdlNDgwOWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luRWxlbWVudC5oCkBAIC01MSwzNSArNTEsMjQgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIFdpZGdldCogcGx1Z2luV2lkZ2V0KFBsdWdpbkxvYWRpbmdQb2xpY3kgPSBQbHVn
aW5Mb2FkaW5nUG9saWN5OjpMb2FkKSBjb25zdDsKIAogICAgIGVudW0gRGlzcGxheVN0YXRlIHsK
LSAgICAgICAgV2FpdGluZ0ZvclNuYXBzaG90LAotICAgICAgICBEaXNwbGF5aW5nU25hcHNob3Qs
Ci0gICAgICAgIFJlc3RhcnRpbmcsCi0gICAgICAgIFJlc3RhcnRpbmdXaXRoUGVuZGluZ01vdXNl
Q2xpY2ssCiAgICAgICAgIFBsYXlpbmcsCiAgICAgICAgIFByZXBhcmluZ1BsdWdpblJlcGxhY2Vt
ZW50LAogICAgICAgICBEaXNwbGF5aW5nUGx1Z2luUmVwbGFjZW1lbnQsCiAgICAgfTsKICAgICBE
aXNwbGF5U3RhdGUgZGlzcGxheVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5U3RhdGU7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGlzcGxheVN0YXRlKERpc3BsYXlTdGF0ZSk7Ci0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVNuYXBzaG90KEltYWdlKikgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoUGVuZGluZ01vdXNlQ2xpY2soKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSZXN0
YXJ0ZWRQbHVnaW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0RGlzcGxh
eVN0YXRlKERpc3BsYXlTdGF0ZSk7CiAKICAgICBKU0M6OkpTT2JqZWN0KiBzY3JpcHRPYmplY3RG
b3JQbHVnaW5SZXBsYWNlbWVudCgpOwogCiAgICAgYm9vbCBpc0NhcHR1cmluZ01vdXNlRXZlbnRz
KCkgY29uc3QgeyByZXR1cm4gbV9pc0NhcHR1cmluZ01vdXNlRXZlbnRzOyB9CiAgICAgdm9pZCBz
ZXRJc0NhcHR1cmluZ01vdXNlRXZlbnRzKGJvb2wgY2FwdHVyaW5nKSB7IG1faXNDYXB0dXJpbmdN
b3VzZUV2ZW50cyA9IGNhcHR1cmluZzsgfQogCi0gICAgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQ
b2ludCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICBib29sIGNhblBy
b2Nlc3NEcmFnKCkgY29uc3Q7Ci0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGJvb2wg
d2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50cygpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkgZmluYWwgeyByZXR1cm4g
ZmFsc2U7IH0KICNlbmRpZgotICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMo
KSBvdmVycmlkZTsKKyAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgZmlu
YWw7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNQbHVnSW5JbWFnZUVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1BsdWdJbkltYWdlRWxlbWVudCgpIGNv
bnN0ID0gMDsKIAogICAgIGJvb2wgaXNVc2VyT2JzZXJ2YWJsZSgpIGNvbnN0OwogCkBAIC05Mywy
MyArODIsMjIgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEhUTUxQbHVnSW5FbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CiAKKyAgICBib29sIGNhbkNv
bnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2b2lkIHdpbGxEZXRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKICAgICBib29sIGlzUHJlc2Vu
dGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBvdmVy
cmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCB1c2VGYWxsYmFja0NvbnRlbnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCi0gICAgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Jikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50JikgZmluYWw7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgcmVxdWVzdE9iamVjdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hh
ZG93Um9vdCYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChT
aGFkb3dSb290JikgZmluYWw7CiAKICAgICAvLyBTdWJjbGFzc2VzIHNob3VsZCB1c2UgZ3VhcmRl
ZERpc3BhdGNoQmVmb3JlTG9hZEV2ZW50IGluc3RlYWQgb2YgY2FsbGluZyBkaXNwYXRjaEJlZm9y
ZUxvYWRFdmVudCBkaXJlY3RseS4KICAgICBib29sIGd1YXJkZWREaXNwYXRjaEJlZm9yZUxvYWRF
dmVudChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CiAKLSAgICBib29sIG1faW5CZWZvcmVMb2Fk
RXZlbnRIYW5kbGVyOwotICAgIAogICAgIC8vIFRoaXMgd2lsbCBsb2FkIHRoZSBwbHVnaW4gaWYg
bmVjZXNzYXJ5LgogICAgIHZpcnR1YWwgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXRMb2FkaW5n
UGx1Z2luKCkgY29uc3Q7CiAKQEAgLTExOSwxOCArMTA3LDE4IEBAIHByaXZhdGU6CiAKICAgICBi
b29sIGRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSA9IGRl
bGV0ZTsgLy8gR2VuZXJhdGUgYSBjb21waWxlIGVycm9yIGlmIHNvbWVvbmUgY2FsbHMgdGhpcyBi
eSBtaXN0YWtlLgogCi0gICAgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3QgZmluYWw7CiAKLSAgICBib29sIGlzS2V5Ym9h
cmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNL
ZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBp
c1BsdWdpbkVsZW1lbnQoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGNhbkxvYWRTY3JpcHRVUkwo
Y29uc3QgVVJMJikgY29uc3QgZmluYWw7CiAKICAgICBSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5z
dGFuY2U+IG1faW5zdGFuY2U7CiAgICAgVGltZXIgbV9zd2FwUmVuZGVyZXJUaW1lcjsKICAgICBS
ZWZQdHI8UGx1Z2luUmVwbGFjZW1lbnQ+IG1fcGx1Z2luUmVwbGFjZW1lbnQ7Ci0gICAgYm9vbCBt
X2lzQ2FwdHVyaW5nTW91c2VFdmVudHM7Ci0KLSAgICBEaXNwbGF5U3RhdGUgbV9kaXNwbGF5U3Rh
dGU7CisgICAgYm9vbCBtX2lzQ2FwdHVyaW5nTW91c2VFdmVudHMgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9pbkJlZm9yZUxvYWRFdmVudEhhbmRsZXIgeyBmYWxzZSB9OworICAgIERpc3BsYXlTdGF0
ZSBtX2Rpc3BsYXlTdGF0ZSB7IFBsYXlpbmcgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmlu
ZGV4IGQyYWY4NTA2NjEzMTE2ODNkOGY4NWE2NGIyYjdhYTMxNTc4YTA5MTYuLjJlMWJlNjdlNjA1
ZDI2NDI3NjFiMTE1Y2U3OTdiZTUwY2E1MWIxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtMzksMTAgKzM5LDggQEAKICNpbmNsdWRl
ICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91
c2VFdmVudC5oIgotI2luY2x1ZGUgIlBsdWdJbkNsaWVudC5oIgogI2luY2x1ZGUgIlBsdWdpblZp
ZXdCYXNlLmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKLSNpbmNsdWRlICJSZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbi5oIgogI2luY2x1ZGUgIlJlbmRlclRyZWVVcGRhdGVyLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC02
MCw1NiArNTgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KTsKIAotc3RhdGljIGNvbnN0IGludCBzaXpp
bmdUaW55RGltZW5zaW9uVGhyZXNob2xkID0gNDA7Ci1zdGF0aWMgY29uc3QgZmxvYXQgc2l6aW5n
RnVsbFBhZ2VBcmVhUmF0aW9UaHJlc2hvbGQgPSAwLjk2Owotc3RhdGljIGNvbnN0IFNlY29uZHMg
YXV0b3N0YXJ0U29vbkFmdGVyVXNlckdlc3R1cmVUaHJlc2hvbGQgPSA1X3M7Ci0KLS8vIFRoaXMg
ZGVsYXkgc2hvdWxkIG5vdCBleGNlZWQgdGhlIHNuYXBzaG90IGRlbGF5IGluIFBsdWdpblZpZXcu
Y3BwCi1zdGF0aWMgY29uc3QgU2Vjb25kcyBzaW11bGF0ZWRNb3VzZUNsaWNrVGltZXJEZWxheSB7
IDc1MF9tcyB9OwotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi1zdGF0aWMgY29uc3QgU2Vjb25kcyBy
ZW1vdmVTbmFwc2hvdFRpbWVyRGVsYXkgeyAxNTAwX21zIH07Ci0jZW5kaWYKLQotc3RhdGljIGNv
bnN0IFN0cmluZyB0aXRsZVRleHQoUGFnZSYgcGFnZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
LXsKLSAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gc25hcHNob3R0
ZWRQbHVnSW5MYWJlbFRpdGxlKCk7Ci0KLSAgICAvLyBGSVhNRTogSXQncyBub3QgY29uc2lzdGVu
dCB0byBnZXQgYSBzdHJpbmcgZnJvbSB0aGUgcGFnZSdzIGNocm9tZSBjbGllbnQsIGJ1dCB0aGVu
IGNhY2hlIGl0IGdsb2JhbGx5LgotICAgIC8vIElmIGl0J3MgZ2xvYmFsLCBpdCBzaG91bGQgY29t
ZSBmcm9tIGVsc2V3aGVyZS4gSWYgaXQncyBwZXItcGFnZSB0aGVuIGl0IHNob3VsZCBiZSBjYWNo
ZWQgcGVyIHBhZ2UuCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+PiBtaW1lVHlwZVRvTGFiZWxUaXRsZU1hcDsKLSAgICByZXR1cm4gbWltZVR5cGVUb0xh
YmVsVGl0bGVNYXAuZ2V0KCkuZW5zdXJlKG1pbWVUeXBlLCBbJl0gewotICAgICAgICBhdXRvIHRp
dGxlID0gcGFnZS5jaHJvbWUoKS5jbGllbnQoKS5wbHVnSW5TdGFydExhYmVsVGl0bGUobWltZVR5
cGUpOwotICAgICAgICBpZiAoIXRpdGxlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiB0
aXRsZTsKLSAgICAgICAgcmV0dXJuIHNuYXBzaG90dGVkUGx1Z0luTGFiZWxUaXRsZSgpOwotICAg
IH0pLml0ZXJhdG9yLT52YWx1ZTsKLX07Ci0KLXN0YXRpYyBjb25zdCBTdHJpbmcgc3VidGl0bGVU
ZXh0KFBhZ2UmIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCi17Ci0gICAgaWYgKG1pbWVU
eXBlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHNuYXBzaG90dGVkUGx1Z0luTGFiZWxTdWJ0
aXRsZSgpOwotCi0gICAgLy8gRklYTUU6IEl0J3Mgbm90IGNvbnNpc3RlbnQgdG8gZ2V0IGEgc3Ry
aW5nIGZyb20gdGhlIHBhZ2UncyBjaHJvbWUgY2xpZW50LCBidXQgdGhlbiBjYWNoZSBpdCBnbG9i
YWxseS4KLSAgICAvLyBJZiBpdCdzIGdsb2JhbCwgaXQgc2hvdWxkIGNvbWUgZnJvbSBlbHNld2hl
cmUuIElmIGl0J3MgcGVyLXBhZ2UgdGhlbiBpdCBzaG91bGQgYmUgY2FjaGVkIHBlciBwYWdlLgot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFN0cmluZywgU3RyaW5nPj4gbWltZVR5
cGVUb0xhYmVsU3VidGl0bGVNYXA7Ci0gICAgcmV0dXJuIG1pbWVUeXBlVG9MYWJlbFN1YnRpdGxl
TWFwLmdldCgpLmVuc3VyZShtaW1lVHlwZSwgWyZdIHsKLSAgICAgICAgYXV0byBzdWJ0aXRsZSA9
IHBhZ2UuY2hyb21lKCkuY2xpZW50KCkucGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKG1pbWVUeXBl
KTsKLSAgICAgICAgaWYgKCFzdWJ0aXRsZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4g
c3VidGl0bGU7Ci0gICAgICAgIHJldHVybiBzbmFwc2hvdHRlZFBsdWdJbkxhYmVsU3VidGl0bGUo
KTsKLSAgICB9KS5pdGVyYXRvci0+dmFsdWU7Ci19OwotCiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
OjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50JiBkb2N1bWVudCkKICAgICA6IEhUTUxQbHVnSW5FbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KQotICAgICwgbV9zaW11bGF0ZWRNb3VzZUNsaWNrVGltZXIoKnRoaXMsICZIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50OjpzaW11bGF0ZWRNb3VzZUNsaWNrVGltZXJGaXJlZCwgc2ltdWxhdGVkTW91
c2VDbGlja1RpbWVyRGVsYXkpCi0gICAgLCBtX3JlbW92ZVNuYXBzaG90VGltZXIoKnRoaXMsICZI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZW1vdmVTbmFwc2hvdFRpbWVyRmlyZWQpCi0gICAgLCBt
X2NyZWF0ZWREdXJpbmdVc2VyR2VzdHVyZShVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKCkpCiB7Ci0gICAgc2V0SGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tz
KCk7CiB9CiAKIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZmluaXNoQ3JlYXRpbmcoKQpA
QCAtMTIzLDIxICs3NCw2IEBAIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6On5IVE1MUGx1Z0luSW1h
Z2VFbGVtZW50KCkKICAgICAgICAgZG9jdW1lbnQoKS51bnJlZ2lzdGVyRm9yRG9jdW1lbnRTdXNw
ZW5zaW9uQ2FsbGJhY2tzKCp0aGlzKTsKIH0KIAotdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
OjpzZXREaXNwbGF5U3RhdGUoRGlzcGxheVN0YXRlIHN0YXRlKQotewotI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIGlmIChzdGF0ZSA9PSBSZXN0YXJ0aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrIHx8
IHN0YXRlID09IFJlc3RhcnRpbmcpIHsKLSAgICAgICAgbV9pc1Jlc3RhcnRlZFBsdWdpbiA9IHRy
dWU7Ci0gICAgICAgIG1fc25hcHNob3REZWNpc2lvbiA9IE5ldmVyU25hcHNob3Q7Ci0gICAgICAg
IGludmFsaWRhdGVTdHlsZUFuZExheWVyQ29tcG9zaXRpb24oKTsKLSAgICAgICAgaWYgKGRpc3Bs
YXlTdGF0ZSgpID09IERpc3BsYXlpbmdTbmFwc2hvdCkKLSAgICAgICAgICAgIG1fcmVtb3ZlU25h
cHNob3RUaW1lci5zdGFydE9uZVNob3QocmVtb3ZlU25hcHNob3RUaW1lckRlbGF5KTsKLSAgICB9
Ci0jZW5kaWYKLQotICAgIEhUTUxQbHVnSW5FbGVtZW50OjpzZXREaXNwbGF5U3RhdGUoc3RhdGUp
OwotfQotCiBSZW5kZXJFbWJlZGRlZE9iamVjdCogSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cmVu
ZGVyRW1iZWRkZWRPYmplY3QoKSBjb25zdAogewogICAgIC8vIEhUTUxPYmplY3RFbGVtZW50IGFu
ZCBIVE1MRW1iZWRFbGVtZW50IG1heSByZXR1cm4gYXJiaXRyYXJ5IHJlbmRlcmVycyB3aGVuIHVz
aW5nIGZhbGxiYWNrIGNvbnRlbnQuCkBAIC0xOTcsMTIgKzEzMyw2IEBAIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVuZGVyU3R5CiAgICAgICAgIGRvY3VtZW50KCkucmVnaXN0ZXJGb3JEb2N1bWVudFN1c3BlbnNp
b25DYWxsYmFja3MoKnRoaXMpOwogICAgIH0KIAotICAgIGlmIChkaXNwbGF5U3RhdGUoKSA9PSBE
aXNwbGF5aW5nU25hcHNob3QpIHsKLSAgICAgICAgYXV0byByZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
biA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNuYXBzaG90dGVkUGx1Z0luPigqdGhpcywgV1RGTW92
ZShzdHlsZSkpOwotICAgICAgICByZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi0+dXBkYXRlU25hcHNo
b3QobV9zbmFwc2hvdEltYWdlLmdldCgpKTsKLSAgICAgICAgcmV0dXJuIHJlbmRlclNuYXBzaG90
dGVkUGx1Z0luOwotICAgIH0KLQogICAgIGlmICh1c2VGYWxsYmFja0NvbnRlbnQoKSkKICAgICAg
ICAgcmV0dXJuIFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcigqdGhpcywgV1RGTW92ZShzdHlsZSkp
OwogCkBAIC0yMTQsOSArMTQ0LDYgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHkKIAogYm9vbCBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5v
ZGUmIGNoaWxkKSBjb25zdAogewotICAgIGlmIChpczxSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbj4o
cmVuZGVyZXIoKSkgJiYgIWhhc1NoYWRvd1Jvb3RQYXJlbnQoY2hpbGQpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KICAgICByZXR1cm4gSFRNTFBsdWdJbkVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3Jl
YXRlUmVuZGVyZXIoY2hpbGQpOwogfQogCkBAIC0yMjgsNyArMTU1LDcgQEAgdm9pZCBIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50Ojp3aWxsUmVjYWxjU3R5bGUoU3R5bGU6OkNoYW5nZSBjaGFuZ2UpCiAK
ICAgICAvLyBGSVhNRTogVGhlcmUgc2hvdWRuJ3QgYmUgbmVlZCB0byBmb3JjZSByZW5kZXIgdHJl
ZSByZWNvbnN0cnVjdGlvbiBoZXJlLgogICAgIC8vIEl0IGlzIG9ubHkgZG9uZSBiZWNhdXNlIGxv
YWRpbmcgYW5kIGxvYWQgZXZlbnQgZGlzcGF0Y2hpbmcgaXMgdGllZCB0byByZW5kZXIgdHJlZSBj
b25zdHJ1Y3Rpb24uCi0gICAgaWYgKCF1c2VGYWxsYmFja0NvbnRlbnQoKSAmJiBuZWVkc1dpZGdl
dFVwZGF0ZSgpICYmIHJlbmRlcmVyKCkgJiYgIWlzSW1hZ2VUeXBlKCkgJiYgZGlzcGxheVN0YXRl
KCkgIT0gRGlzcGxheWluZ1NuYXBzaG90KQorICAgIGlmICghdXNlRmFsbGJhY2tDb250ZW50KCkg
JiYgbmVlZHNXaWRnZXRVcGRhdGUoKSAmJiByZW5kZXJlcigpICYmICFpc0ltYWdlVHlwZSgpKQog
ICAgICAgICBpbnZhbGlkYXRlU3R5bGVBbmRSZW5kZXJlcnNGb3JTdWJ0cmVlKCk7CiB9CiAKQEAg
LTM0MSw0MzUgKzI2OCw2IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cmVzdW1lRnJv
bURvY3VtZW50U3VzcGVuc2lvbigpCiAgICAgSFRNTFBsdWdJbkVsZW1lbnQ6OnJlc3VtZUZyb21E
b2N1bWVudFN1c3BlbnNpb24oKTsKIH0KIAotdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1
cGRhdGVTbmFwc2hvdChJbWFnZSogaW1hZ2UpCi17Ci0gICAgaWYgKGRpc3BsYXlTdGF0ZSgpID4g
RGlzcGxheWluZ1NuYXBzaG90KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3NuYXBzaG90SW1h
Z2UgPSBpbWFnZTsKLQotICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKLSAg
ICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoaXM8UmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4+KCpyZW5kZXJlcikpIHsKLSAgICAgICAgZG93bmNhc3Q8UmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4+KCpyZW5kZXJlcikudXBkYXRlU25hcHNob3QoaW1hZ2UpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGlzPFJlbmRlckVtYmVkZGVkT2JqZWN0PigqcmVu
ZGVyZXIpKQotICAgICAgICByZW5kZXJlci0+cmVwYWludCgpOwotfQotCi1zdGF0aWMgRE9NV3Jh
cHBlcldvcmxkJiBwbHVnSW5JbWFnZUVsZW1lbnRJc29sYXRlZFdvcmxkKCkKLXsKLSAgICBzdGF0
aWMgYXV0byYgaXNvbGF0ZWRXb3JsZCA9IERPTVdyYXBwZXJXb3JsZDo6Y3JlYXRlKGNvbW1vblZN
KCksIERPTVdyYXBwZXJXb3JsZDo6VHlwZTo6SW50ZXJuYWwsICJQbHVnaW4iX3MpLmxlYWtSZWYo
KTsKLSAgICByZXR1cm4gaXNvbGF0ZWRXb3JsZDsKLX0KLQotdm9pZCBIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QmIHJvb3QpCi17Ci0g
ICAgSFRNTFBsdWdJbkVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3Qocm9vdCk7Ci0g
ICAgaWYgKGRpc3BsYXlTdGF0ZSgpID49IFByZXBhcmluZ1BsdWdpblJlcGxhY2VtZW50KQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCk7Ci0gICAg
aWYgKCFwYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBSZXNldCBhbnkgYXV0aG9yIHN0
eWxlcyB0aGF0IG1heSBhcHBseSBhcyB3ZSBvbmx5IHdhbnQgZXhwbGljaXQKLSAgICAvLyBzdHls
ZXMgZGVmaW5lZCBpbiB0aGUgaW5qZWN0ZWQgdXNlciBhZ2VudHMgc3R5bGVzaGVldHMgdG8gc3Bl
Y2lmeQotICAgIC8vIHRoZSBsb29rLWFuZC1mZWVsIG9mIHRoZSBzbmFwc2hvdHRlZCBwbHVnLWlu
IG92ZXJsYXkuIAotICAgIHJvb3Quc2V0UmVzZXRTdHlsZUluaGVyaXRhbmNlKHRydWUpOwotICAg
IAotICAgIFN0cmluZyBtaW1lVHlwZSA9IHNlcnZpY2VUeXBlKCk7Ci0KLSAgICBhdXRvJiBpc29s
YXRlZFdvcmxkID0gcGx1Z0luSW1hZ2VFbGVtZW50SXNvbGF0ZWRXb3JsZCgpOwotICAgIGRvY3Vt
ZW50KCkuZW5zdXJlUGx1Z0luc0luamVjdGVkU2NyaXB0KGlzb2xhdGVkV29ybGQpOwotCi0gICAg
YXV0byYgc2NyaXB0Q29udHJvbGxlciA9IGRvY3VtZW50KCkuZnJhbWUoKS0+c2NyaXB0KCk7Ci0g
ICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
c2NyaXB0Q29udHJvbGxlci5nbG9iYWxPYmplY3QoaXNvbGF0ZWRXb3JsZCkpOwotCi0gICAgYXV0
byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHZt
KTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0gICAgYXV0byYg
bGV4aWNhbEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdDsKLQotICAgIEpTQzo6TWFya2VkQXJn
dW1lbnRCdWZmZXIgYXJnTGlzdDsKLSAgICBhcmdMaXN0LmFwcGVuZCh0b0pTPElETEludGVyZmFj
ZTxTaGFkb3dSb290Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCByb290KSk7
Ci0gICAgYXJnTGlzdC5hcHBlbmQodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRpdGxlVGV4dCgqcGFnZSwgbWltZVR5cGUpKSk7Ci0gICAgYXJnTGlzdC5hcHBlbmQodG9K
UzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHN1YnRpdGxlVGV4dCgqcGFnZSwg
bWltZVR5cGUpKSk7Ci0gICAgCi0gICAgLy8gVGhpcyBwYXJhbWV0ZXIgZGV0ZXJtaW5lcyB3aGV0
aGVyIG9yIG5vdCB0aGUgc25hcHNob3Qgb3ZlcmxheSBzaG91bGQgYWx3YXlzIGJlIHZpc2libGUg
b3ZlciB0aGUgcGx1Z2luIHNuYXBzaG90LgotICAgIC8vIElmIG5vIHNuYXBzaG90IHdhcyBmb3Vu
ZCB0aGVuIHdlIHdhbnQgdGhlIG92ZXJsYXkgdG8gYmUgdmlzaWJsZS4KLSAgICBhcmdMaXN0LmFw
cGVuZCh0b0pTPElETEJvb2xlYW4+KCFtX3NuYXBzaG90SW1hZ2UpKTsKLSAgICBBU1NFUlQoIWFy
Z0xpc3QuaGFzT3ZlcmZsb3dlZCgpKTsKLQotICAgIC8vIEl0IGlzIGV4cGVjdGVkIHRoZSBKUyBm
aWxlIHByb3ZpZGVzIGEgY3JlYXRlT3ZlcmxheShzaGFkb3dSb290LCB0aXRsZSwgc3VidGl0bGUp
IGZ1bmN0aW9uLgotICAgIGF1dG8qIG92ZXJsYXkgPSBnbG9iYWxPYmplY3QuZ2V0KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjcmVhdGVPdmVy
bGF5IikpLnRvT2JqZWN0KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBBU1NFUlQoIW92ZXJs
YXkgPT0gISFzY29wZS5leGNlcHRpb24oKSk7Ci0gICAgaWYgKCFvdmVybGF5KSB7Ci0gICAgICAg
IHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXV0
byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIG92ZXJsYXkpOwotICAgIGlmIChjYWxs
RGF0YS50eXBlID09IEpTQzo6Q2FsbERhdGE6OlR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIG92ZXJsYXksIGNhbGxEYXRhLCAmZ2xv
YmFsT2JqZWN0LCBhcmdMaXN0KTsKLSAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwotfQotCi1i
b29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnBhcnRPZlNuYXBzaG90T3ZlcmxheShjb25zdCBF
dmVudFRhcmdldCogdGFyZ2V0KSBjb25zdAotewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc2VsZWN0b3IoIi5zbmFwc2hvdC1vdmVybGF5Iiwg
QXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGF1dG8gc2hhZG93ID0gdXNl
ckFnZW50U2hhZG93Um9vdCgpOwotICAgIGlmICghc2hhZG93KQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKCFpczxOb2RlPih0YXJnZXQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgYXV0byBxdWVyeVJlc3VsdCA9IHNoYWRvdy0+cXVlcnlTZWxlY3RvcihzZWxlY3Rvci5nZXQo
KSk7Ci0gICAgaWYgKHF1ZXJ5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgYXV0byBzbmFwc2hvdExhYmVsID0gbWFrZVJlZlB0cihxdWVyeVJlc3VsdC5y
ZWxlYXNlUmV0dXJuVmFsdWUoKSk7Ci0gICAgcmV0dXJuIHNuYXBzaG90TGFiZWwgJiYgc25hcHNo
b3RMYWJlbC0+Y29udGFpbnMoZG93bmNhc3Q8Tm9kZT4odGFyZ2V0KSk7Ci19Ci0KLXZvaWQgSFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6cmVtb3ZlU25hcHNob3RUaW1lckZpcmVkKCkKLXsKLSAgICBt
X3NuYXBzaG90SW1hZ2UgPSBudWxscHRyOwotICAgIG1faXNSZXN0YXJ0ZWRQbHVnaW4gPSBmYWxz
ZTsKLSAgICBpbnZhbGlkYXRlU3R5bGVBbmRMYXllckNvbXBvc2l0aW9uKCk7Ci0gICAgaWYgKHJl
bmRlcmVyKCkpCi0gICAgICAgIHJlbmRlcmVyKCktPnJlcGFpbnQoKTsKLX0KLQotdm9pZCBIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50OjpyZXN0YXJ0U2ltaWxhclBsdWdJbnMoKQotewotICAgIC8vIFJl
c3RhcnQgYW55IG90aGVyIHNuYXBzaG90dGVkIHBsdWdpbnMgaW4gdGhlIHBhZ2Ugd2l0aCB0aGUg
c2FtZSBvcmlnaW4uIE5vdGUgdGhhdCB0aGV5Ci0gICAgLy8gbWF5IGJlIGluIGRpZmZlcmVudCBm
cmFtZXMsIHNvIHRyYXZlcnNlIGZyb20gdGhlIHRvcCBvZiB0aGUgZG9jdW1lbnQuCi0KLSAgICBh
dXRvIHBsdWdJbk9yaWdpbiA9IG1fbG9hZGVkVXJsLmhvc3QoKTsKLSAgICBTdHJpbmcgbWltZVR5
cGUgPSBzZXJ2aWNlVHlwZSgpOwotICAgIFZlY3RvcjxSZWY8SFRNTFBsdWdJbkltYWdlRWxlbWVu
dD4+IHNpbWlsYXJQbHVnaW5zOwotCi0gICAgaWYgKCFkb2N1bWVudCgpLnBhZ2UoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZm9yIChSZWZQdHI8RnJhbWU+IGZyYW1lID0gJmRvY3VtZW50KCku
cGFnZSgpLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJz
ZU5leHQoKSkgewotICAgICAgICBpZiAoIWZyYW1lLT5sb2FkZXIoKS5zdWJmcmFtZUxvYWRlcigp
LmNvbnRhaW5zUGx1Z2lucygpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAotICAg
ICAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTFBsdWdJbklt
YWdlRWxlbWVudD4oKmZyYW1lLT5kb2N1bWVudCgpKSkgewotICAgICAgICAgICAgaWYgKHBsdWdJ
bk9yaWdpbiA9PSBlbGVtZW50LmxvYWRlZFVybCgpLmhvc3QoKSAmJiBtaW1lVHlwZSA9PSBlbGVt
ZW50LnNlcnZpY2VUeXBlKCkpCi0gICAgICAgICAgICAgICAgc2ltaWxhclBsdWdpbnMuYXBwZW5k
KGVsZW1lbnQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZm9yIChhdXRvJiBwbHVnSW5Ub1Jl
c3RhcnQgOiBzaW1pbGFyUGx1Z2lucykgewotICAgICAgICBpZiAocGx1Z0luVG9SZXN0YXJ0LT5k
aXNwbGF5U3RhdGUoKSA8PSBIVE1MUGx1Z0luRWxlbWVudDo6RGlzcGxheWluZ1NuYXBzaG90KSB7
Ci0gICAgICAgICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gbG9va3Mgc2ltaWxhciB0byBh
IHJlc3RhcnRlZCBwbHVnLWluLiBSZXN0YXJ0LiIsIHBsdWdJblRvUmVzdGFydC5wdHIoKSk7Ci0g
ICAgICAgICAgICBwbHVnSW5Ub1Jlc3RhcnQtPnJlc3RhcnRTbmFwc2hvdHRlZFBsdWdJbigpOwot
ICAgICAgICB9Ci0gICAgICAgIHBsdWdJblRvUmVzdGFydC0+bV9zbmFwc2hvdERlY2lzaW9uID0g
TmV2ZXJTbmFwc2hvdDsKLSAgICB9Ci19Ci0KLXZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6
dXNlckRpZENsaWNrU25hcHNob3QoTW91c2VFdmVudCYgZXZlbnQsIGJvb2wgZm9yd2FyZEV2ZW50
KQotewotICAgIGlmIChmb3J3YXJkRXZlbnQpCi0gICAgICAgIG1fcGVuZGluZ0NsaWNrRXZlbnRG
cm9tU25hcHNob3QgPSAmZXZlbnQ7Ci0KLSAgICBhdXRvIHBsdWdJbk9yaWdpbiA9IG1fbG9hZGVk
VXJsLmhvc3QoKTsKLSAgICBpZiAoZG9jdW1lbnQoKS5wYWdlKCkgJiYgIUxlZ2FjeVNjaGVtZVJl
Z2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwoZG9jdW1lbnQoKS5wYWdlKCktPm1h
aW5GcmFtZSgpLmRvY3VtZW50KCktPmJhc2VVUkwoKS5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91
dENvcHlpbmcoKSkgJiYgZG9jdW1lbnQoKS5wYWdlKCktPnNldHRpbmdzKCkuYXV0b3N0YXJ0T3Jp
Z2luUGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCgpKQotICAgICAgICBkb2N1bWVudCgpLnBhZ2Uo
KS0+cGx1Z0luQ2xpZW50KCktPmRpZFN0YXJ0RnJvbU9yaWdpbihkb2N1bWVudCgpLnBhZ2UoKS0+
bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+YmFzZVVSTCgpLmhvc3QoKS50b1N0cmluZygpLCBwbHVn
SW5PcmlnaW4udG9TdHJpbmcoKSwgc2VydmljZVR5cGUoKSk7Ci0KLSAgICBMT0coUGx1Z2lucywg
IiVwIFVzZXIgY2xpY2tlZCBvbiBzbmFwc2hvdHRlZCBwbHVnLWluLiBSZXN0YXJ0LiIsIHRoaXMp
OwotICAgIHJlc3RhcnRTbmFwc2hvdHRlZFBsdWdJbigpOwotICAgIGlmIChmb3J3YXJkRXZlbnQp
Ci0gICAgICAgIHNldERpc3BsYXlTdGF0ZShSZXN0YXJ0aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNr
KTsKLSAgICByZXN0YXJ0U2ltaWxhclBsdWdJbnMoKTsKLX0KLQotdm9pZCBIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50OjpzZXRJc1ByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbihib29sIGlzUHJpbWFyeVNu
YXBzaG90dGVkUGx1Z0luKQotewotICAgIGlmICghZG9jdW1lbnQoKS5wYWdlKCkgfHwgIWRvY3Vt
ZW50KCkucGFnZSgpLT5zZXR0aW5ncygpLnByaW1hcnlQbHVnSW5TbmFwc2hvdERldGVjdGlvbkVu
YWJsZWQoKSB8fCBkb2N1bWVudCgpLnBhZ2UoKS0+c2V0dGluZ3MoKS5zbmFwc2hvdEFsbFBsdWdJ
bnMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGlzUHJpbWFyeVNuYXBzaG90dGVkUGx1
Z0luKSB7Ci0gICAgICAgIGlmIChtX3BsdWdJbldhc0NyZWF0ZWQpIHsKLSAgICAgICAgICAgIExP
RyhQbHVnaW5zLCAiJXAgUGx1Zy1pbiB3YXMgZGV0ZWN0ZWQgYXMgdGhlIHByaW1hcnkgZWxlbWVu
dCBpbiB0aGUgcGFnZS4gUmVzdGFydC4iLCB0aGlzKTsKLSAgICAgICAgICAgIHJlc3RhcnRTbmFw
c2hvdHRlZFBsdWdJbigpOwotICAgICAgICAgICAgcmVzdGFydFNpbWlsYXJQbHVnSW5zKCk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gd2Fz
IGRldGVjdGVkIGFzIHRoZSBwcmltYXJ5IGVsZW1lbnQgaW4gdGhlIHBhZ2UsIGJ1dCBpcyBub3Qg
eWV0IGNyZWF0ZWQuIFdpbGwgcmVzdGFydCBsYXRlci4iLCB0aGlzKTsKLSAgICAgICAgICAgIG1f
ZGVmZXJyZWRQcm9tb3Rpb25Ub1ByaW1hcnlQbHVnSW4gPSB0cnVlOwotICAgICAgICB9Ci0gICAg
fQotfQotCi12b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnJlc3RhcnRTbmFwc2hvdHRlZFBs
dWdJbigpCi17Ci0gICAgaWYgKGRpc3BsYXlTdGF0ZSgpID49IFJlc3RhcnRpbmdXaXRoUGVuZGlu
Z01vdXNlQ2xpY2spCi0gICAgICAgIHJldHVybjsKLQotICAgIHNldERpc3BsYXlTdGF0ZShSZXN0
YXJ0aW5nKTsKLSAgICBpbnZhbGlkYXRlU3R5bGVBbmRSZW5kZXJlcnNGb3JTdWJ0cmVlKCk7Ci19
Ci0KLXZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nTW91c2VDbGlj
aygpCi17Ci0gICAgQVNTRVJUKCFtX3NpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lci5pc0FjdGl2ZSgp
KTsKLSAgICBtX3NpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lci5yZXN0YXJ0KCk7Ci19Ci0KLXZvaWQg
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c2ltdWxhdGVkTW91c2VDbGlja1RpbWVyRmlyZWQoKQot
ewotICAgIEFTU0VSVChkaXNwbGF5U3RhdGUoKSA9PSBSZXN0YXJ0aW5nV2l0aFBlbmRpbmdNb3Vz
ZUNsaWNrKTsKLSAgICBBU1NFUlQobV9wZW5kaW5nQ2xpY2tFdmVudEZyb21TbmFwc2hvdCk7Ci0K
LSAgICBzZXREaXNwbGF5U3RhdGUoUGxheWluZyk7Ci0gICAgZGlzcGF0Y2hTaW11bGF0ZWRDbGlj
ayhtX3BlbmRpbmdDbGlja0V2ZW50RnJvbVNuYXBzaG90LmdldCgpLCBTZW5kTW91c2VPdmVyVXBE
b3duRXZlbnRzLCBEb05vdFNob3dQcmVzc2VkTG9vayk7Ci0KLSAgICBtX3BlbmRpbmdDbGlja0V2
ZW50RnJvbVNuYXBzaG90ID0gbnVsbHB0cjsKLX0KLQotc3RhdGljIGJvb2wgZG9jdW1lbnRIYWRS
ZWNlbnRVc2VyR2VzdHVyZShEb2N1bWVudCYgZG9jdW1lbnQpCi17Ci0gICAgTW9ub3RvbmljVGlt
ZSBsYXN0S25vd25Vc2VyR2VzdHVyZVRpbWVzdGFtcCA9IGRvY3VtZW50Lmxhc3RIYW5kbGVkVXNl
ckdlc3R1cmVUaW1lc3RhbXAoKTsKLSAgICBpZiAoZG9jdW1lbnQuZnJhbWUoKSAhPSAmZG9jdW1l
bnQucGFnZSgpLT5tYWluRnJhbWUoKSAmJiBkb2N1bWVudC5wYWdlKCktPm1haW5GcmFtZSgpLmRv
Y3VtZW50KCkpCi0gICAgICAgIGxhc3RLbm93blVzZXJHZXN0dXJlVGltZXN0YW1wID0gc3RkOjpt
YXgobGFzdEtub3duVXNlckdlc3R1cmVUaW1lc3RhbXAsIGRvY3VtZW50LnBhZ2UoKS0+bWFpbkZy
YW1lKCkuZG9jdW1lbnQoKS0+bGFzdEhhbmRsZWRVc2VyR2VzdHVyZVRpbWVzdGFtcCgpKTsKLQot
ICAgIHJldHVybiBNb25vdG9uaWNUaW1lOjpub3coKSAtIGxhc3RLbm93blVzZXJHZXN0dXJlVGlt
ZXN0YW1wIDwgYXV0b3N0YXJ0U29vbkFmdGVyVXNlckdlc3R1cmVUaHJlc2hvbGQ7Ci19Ci0KLXZv
aWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y2hlY2tTaXplQ2hhbmdlRm9yU25hcHNob3R0aW5n
KCkKLXsKLSAgICBpZiAoIW1fbmVlZHNDaGVja0ZvclNpemVDaGFuZ2UgfHwgbV9zbmFwc2hvdERl
Y2lzaW9uICE9IE1heVNuYXBzaG90V2hlblJlc2l6ZWQgfHwgZG9jdW1lbnRIYWRSZWNlbnRVc2Vy
R2VzdHVyZShkb2N1bWVudCgpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9uZWVkc0NoZWNr
Rm9yU2l6ZUNoYW5nZSA9IGZhbHNlOwotCi0gICAgYXV0byBjb250ZW50Qm94UmVjdCA9IGRvd25j
YXN0PFJlbmRlckJveD4oKnJlbmRlcmVyKCkpLmNvbnRlbnRCb3hSZWN0KCk7Ci0gICAgaW50IGNv
bnRlbnRXaWR0aCA9IGNvbnRlbnRCb3hSZWN0LndpZHRoKCk7Ci0gICAgaW50IGNvbnRlbnRIZWln
aHQgPSBjb250ZW50Qm94UmVjdC5oZWlnaHQoKTsKLQotICAgIGlmIChjb250ZW50V2lkdGggPD0g
c2l6aW5nVGlueURpbWVuc2lvblRocmVzaG9sZCB8fCBjb250ZW50SGVpZ2h0IDw9IHNpemluZ1Rp
bnlEaW1lbnNpb25UaHJlc2hvbGQpCi0gICAgICAgIHJldHVybjsKLQotICAgIExPRyhQbHVnaW5z
LCAiJXAgUGx1Zy1pbiBvcmlnaW5hbGx5IGF2b2lkZWQgc25hcHNob3R0aW5nIGJlY2F1c2UgaXQg
d2FzIHNpemVkICVkeCVkLiBOb3cgaXQgaXMgJWR4JWQuIFRlbGwgaXQgdG8gc25hcHNob3QuXG4i
LCB0aGlzLCBtX3NpemVXaGVuU25hcHNob3R0ZWQud2lkdGgoKSwgbV9zaXplV2hlblNuYXBzaG90
dGVkLmhlaWdodCgpLCBjb250ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHQpOwotICAgIHNldERpc3Bs
YXlTdGF0ZShXYWl0aW5nRm9yU25hcHNob3QpOwotICAgIG1fc25hcHNob3REZWNpc2lvbiA9IFNu
YXBzaG90dGVkOwotICAgIGF1dG8gd2lkZ2V0ID0gbWFrZVJlZlB0cihwbHVnaW5XaWRnZXQoKSk7
Ci0gICAgaWYgKGlzPFBsdWdpblZpZXdCYXNlPih3aWRnZXQpKQotICAgICAgICBkb3duY2FzdDxQ
bHVnaW5WaWV3QmFzZT4oKndpZGdldCkuYmVnaW5TbmFwc2hvdHRpbmdSdW5uaW5nUGx1Z2luKCk7
Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpczEwMFBlcmNlbnQoTGVuZ3RoIGxlbmd0aCkKLXsK
LSAgICByZXR1cm4gbGVuZ3RoLmlzUGVyY2VudCgpICYmIGxlbmd0aC5wZXJjZW50KCkgPT0gMTAw
OwotfQotICAgIAotc3RhdGljIGlubGluZSBib29sIGlzU21hbGxlclRoYW5UaW55U2l6aW5nVGhy
ZXNob2xkKGNvbnN0IFJlbmRlckVtYmVkZGVkT2JqZWN0JiByZW5kZXJlcikKLXsKLSAgICBhdXRv
IGNvbnRlbnRSZWN0ID0gcmVuZGVyZXIuY29udGVudEJveFJlY3QoKTsKLSAgICByZXR1cm4gY29u
dGVudFJlY3Qud2lkdGgoKSA8PSBzaXppbmdUaW55RGltZW5zaW9uVGhyZXNob2xkIHx8IGNvbnRl
bnRSZWN0LmhlaWdodCgpIDw9IHNpemluZ1RpbnlEaW1lbnNpb25UaHJlc2hvbGQ7Ci19Ci0gICAg
Ci1ib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmlzVG9wTGV2ZWxGdWxsUGFnZVBsdWdpbihj
b25zdCBSZW5kZXJFbWJlZGRlZE9iamVjdCYgcmVuZGVyZXIpIGNvbnN0Ci17Ci0gICAgQVNTRVJU
KGRvY3VtZW50KCkuZnJhbWUoKSk7Ci0gICAgYXV0byYgZnJhbWUgPSAqZG9jdW1lbnQoKS5mcmFt
ZSgpOwotICAgIGlmICghZnJhbWUuaXNNYWluRnJhbWUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIAotICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXIuc3R5bGUoKTsKLSAgICBhdXRvIHZp
c2libGVTaXplID0gZnJhbWUudmlldygpLT52aXNpYmxlU2l6ZSgpOwotICAgIGF1dG8gY29udGVu
dFJlY3QgPSByZW5kZXJlci5jb250ZW50Qm94UmVjdCgpOwotICAgIGZsb2F0IGNvbnRlbnRXaWR0
aCA9IGNvbnRlbnRSZWN0LndpZHRoKCk7Ci0gICAgZmxvYXQgY29udGVudEhlaWdodCA9IGNvbnRl
bnRSZWN0LmhlaWdodCgpOwotICAgIHJldHVybiBpczEwMFBlcmNlbnQoc3R5bGUud2lkdGgoKSkg
JiYgaXMxMDBQZXJjZW50KHN0eWxlLmhlaWdodCgpKSAmJiBjb250ZW50V2lkdGggKiBjb250ZW50
SGVpZ2h0ID4gdmlzaWJsZVNpemUuYXJlYSgpLnVuc2FmZUdldCgpICogc2l6aW5nRnVsbFBhZ2VB
cmVhUmF0aW9UaHJlc2hvbGQ7Ci19Ci0KLXZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y2hl
Y2tTbmFwc2hvdFN0YXR1cygpCi17Ci0gICAgaWYgKCFpczxSZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bj4oKnJlbmRlcmVyKCkpKSB7Ci0gICAgICAgIGlmIChkaXNwbGF5U3RhdGUoKSA9PSBQbGF5aW5n
KQotICAgICAgICAgICAgY2hlY2tTaXplQ2hhbmdlRm9yU25hcHNob3R0aW5nKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgLy8gSWYgd2lkdGggYW5kIGhlaWdodCBzdHlsZXMg
d2VyZSBwcmV2aW91c2x5IG5vdCBzZXQgYW5kIHdlJ3ZlIHNuYXBzaG90dGVkIHRoZSBwbHVnaW4g
d2UgbWF5IG5lZWQgdG8gcmVzdGFydCB0aGUgcGx1Z2luIHNvIHRoYXQgaXRzIHN0YXRlIGNhbiBi
ZSB1cGRhdGVkIGFwcHJvcHJpYXRlbHkuCi0gICAgaWYgKCFkb2N1bWVudCgpLnBhZ2UoKS0+c2V0
dGluZ3MoKS5zbmFwc2hvdEFsbFBsdWdJbnMoKSAmJiBkaXNwbGF5U3RhdGUoKSA8PSBEaXNwbGF5
aW5nU25hcHNob3QgJiYgIW1fcGx1Z0luRGltZW5zaW9uc1NwZWNpZmllZCkgewotICAgICAgICBh
dXRvJiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclNuYXBzaG90dGVkUGx1Z0luPigqdGhpcy0+
cmVuZGVyZXIoKSk7Ci0gICAgICAgIGlmICghcmVuZGVyZXIuc3R5bGUoKS5sb2dpY2FsV2lkdGgo
KS5pc1NwZWNpZmllZCgpICYmICFyZW5kZXJlci5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc1Nw
ZWNpZmllZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgbV9wbHVn
SW5EaW1lbnNpb25zU3BlY2lmaWVkID0gdHJ1ZTsKLSAgICAgICAgaWYgKGlzVG9wTGV2ZWxGdWxs
UGFnZVBsdWdpbihyZW5kZXJlcikpIHsKLSAgICAgICAgICAgIG1fc25hcHNob3REZWNpc2lvbiA9
IE5ldmVyU25hcHNob3Q7Ci0gICAgICAgICAgICByZXN0YXJ0U25hcHNob3R0ZWRQbHVnSW4oKTsK
LSAgICAgICAgfSBlbHNlIGlmIChpc1NtYWxsZXJUaGFuVGlueVNpemluZ1RocmVzaG9sZChyZW5k
ZXJlcikpIHsKLSAgICAgICAgICAgIG1fc25hcHNob3REZWNpc2lvbiA9IE1heVNuYXBzaG90V2hl
blJlc2l6ZWQ7Ci0gICAgICAgICAgICByZXN0YXJ0U25hcHNob3R0ZWRQbHVnSW4oKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIC8vIE5vdGlmeSB0aGUgc2hh
ZG93IHJvb3QgdGhhdCB0aGUgc2l6ZSBjaGFuZ2VkIHNvIHRoYXQgd2UgbWF5IHVwZGF0ZSB0aGUg
b3ZlcmxheSBsYXlvdXQuCi0gICAgZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpLmRpc3BhdGNo
RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVzaXplRXZlbnQsIEV2ZW50OjpDYW5C
dWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKLX0KLSAgICAKLXZvaWQgSFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKGNvbnN0
IFVSTCYgdXJsKQotewotICAgIExPRyhQbHVnaW5zLCAiJXAgUGx1Zy1pbiBVUkw6ICVzIiwgdGhp
cywgbV91cmwudXRmOCgpLmRhdGEoKSk7Ci0gICAgTE9HKFBsdWdpbnMsICIgICBBY3R1YWwgVVJM
OiAlcyIsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBMT0coUGx1Z2lucywgIiAg
IE1JTUUgdHlwZTogJXMiLCBzZXJ2aWNlVHlwZSgpLnV0ZjgoKS5kYXRhKCkpOwotCi0gICAgbV9s
b2FkZWRVcmwgPSB1cmw7Ci0gICAgbV9wbHVnSW5XYXNDcmVhdGVkID0gZmFsc2U7Ci0gICAgbV9k
ZWZlcnJlZFByb21vdGlvblRvUHJpbWFyeVBsdWdJbiA9IGZhbHNlOwotCi0gICAgaWYgKCFkb2N1
bWVudCgpLnBhZ2UoKSB8fCAhZG9jdW1lbnQoKS5wYWdlKCktPnNldHRpbmdzKCkucGx1Z0luU25h
cHNob3R0aW5nRW5hYmxlZCgpKSB7Ci0gICAgICAgIG1fc25hcHNob3REZWNpc2lvbiA9IE5ldmVy
U25hcHNob3Q7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoZGlzcGxheVN0YXRl
KCkgPT0gUmVzdGFydGluZykgewotICAgICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gaXMg
ZXhwbGljaXRseSByZXN0YXJ0aW5nIiwgdGhpcyk7Ci0gICAgICAgIG1fc25hcHNob3REZWNpc2lv
biA9IE5ldmVyU25hcHNob3Q7Ci0gICAgICAgIHNldERpc3BsYXlTdGF0ZShQbGF5aW5nKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChkaXNwbGF5U3RhdGUoKSA9PSBSZXN0YXJ0
aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrKSB7Ci0gICAgICAgIExPRyhQbHVnaW5zLCAiJXAgUGx1
Zy1pbiBpcyBleHBsaWNpdGx5IHJlc3RhcnRpbmcgYnV0IGFsc28gd2FpdGluZyBmb3IgYSBjbGlj
ayIsIHRoaXMpOwotICAgICAgICBtX3NuYXBzaG90RGVjaXNpb24gPSBOZXZlclNuYXBzaG90Owot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG1fc25hcHNob3REZWNpc2lvbiA9PSBO
ZXZlclNuYXBzaG90KSB7Ci0gICAgICAgIExPRyhQbHVnaW5zLCAiJXAgUGx1Zy1pbiBpcyBibGVz
c2VkLCBhbGxvdyBpdCB0byBzdGFydCIsIHRoaXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgYm9vbCBpbk1haW5GcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKS0+aXNNYWluRnJhbWUo
KTsKLQotICAgIGlmIChkb2N1bWVudCgpLmlzUGx1Z2luRG9jdW1lbnQoKSAmJiBpbk1haW5GcmFt
ZSkgewotICAgICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gZG9jdW1lbnQgaW4gbWFpbiBm
cmFtZSIsIHRoaXMpOwotICAgICAgICBtX3NuYXBzaG90RGVjaXNpb24gPSBOZXZlclNuYXBzaG90
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFVzZXJHZXN0dXJlSW5kaWNhdG9y
Ojpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkgewotICAgICAgICBMT0coUGx1Z2lucywgIiVwIFNj
cmlwdCBpcyBjdXJyZW50bHkgcHJvY2Vzc2luZyB1c2VyIGdlc3R1cmUsIHNldCB0byBwbGF5Iiwg
dGhpcyk7Ci0gICAgICAgIG1fc25hcHNob3REZWNpc2lvbiA9IE5ldmVyU25hcHNob3Q7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobV9jcmVhdGVkRHVyaW5nVXNlckdlc3R1cmUp
IHsKLSAgICAgICAgTE9HKFBsdWdpbnMsICIlcCBQbHVnLWluIHdhcyBjcmVhdGVkIHdoZW4gcHJv
Y2Vzc2luZyB1c2VyIGdlc3R1cmUsIHNldCB0byBwbGF5IiwgdGhpcyk7Ci0gICAgICAgIG1fc25h
cHNob3REZWNpc2lvbiA9IE5ldmVyU25hcHNob3Q7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoZG9jdW1lbnRIYWRSZWNlbnRVc2VyR2VzdHVyZShkb2N1bWVudCgpKSkgewotICAg
ICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gd2FzIGNyZWF0ZWQgc2hvcnRseSBhZnRlciBh
IHVzZXIgZ2VzdHVyZSwgc2V0IHRvIHBsYXkiLCB0aGlzKTsKLSAgICAgICAgbV9zbmFwc2hvdERl
Y2lzaW9uID0gTmV2ZXJTbmFwc2hvdDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChkb2N1bWVudCgpLnBhZ2UoKS0+c2V0dGluZ3MoKS5zbmFwc2hvdEFsbFBsdWdJbnMoKSkgewot
ICAgICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gZm9yY2VkIHRvIHNuYXBzaG90IGJ5IHVz
ZXIgcHJlZmVyZW5jZSIsIHRoaXMpOwotICAgICAgICBtX3NuYXBzaG90RGVjaXNpb24gPSBTbmFw
c2hvdHRlZDsKLSAgICAgICAgc2V0RGlzcGxheVN0YXRlKFdhaXRpbmdGb3JTbmFwc2hvdCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoZG9jdW1lbnQoKS5wYWdlKCktPnNldHRp
bmdzKCkuYXV0b3N0YXJ0T3JpZ2luUGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCgpICYmIGRvY3Vt
ZW50KCkucGFnZSgpLT5wbHVnSW5DbGllbnQoKSAmJiBkb2N1bWVudCgpLnBhZ2UoKS0+cGx1Z0lu
Q2xpZW50KCktPnNob3VsZEF1dG9TdGFydEZyb21PcmlnaW4oZG9jdW1lbnQoKS5wYWdlKCktPm1h
aW5GcmFtZSgpLmRvY3VtZW50KCktPmJhc2VVUkwoKS5ob3N0KCkudG9TdHJpbmcoKSwgdXJsLmhv
c3QoKS50b1N0cmluZygpLCBzZXJ2aWNlVHlwZSgpKSkgewotICAgICAgICBMT0coUGx1Z2lucywg
IiVwIFBsdWctaW4gZnJvbSAoJXMsICVzKSBpcyBtYXJrZWQgdG8gYXV0by1zdGFydCwgc2V0IHRv
IHBsYXkiLCB0aGlzLCBkb2N1bWVudCgpLnBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+
YmFzZVVSTCgpLmhvc3QoKS51dGY4KCkuZGF0YSgpLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkp
OwotICAgICAgICBtX3NuYXBzaG90RGVjaXNpb24gPSBOZXZlclNuYXBzaG90OwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG1fbG9hZGVkVXJsLmlzRW1wdHkoKSAmJiAhc2Vydmlj
ZVR5cGUoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgTE9HKFBsdWdpbnMsICIlcCBQbHVnLWluIGhh
cyBubyBzcmMgVVJMIGJ1dCBkb2VzIGhhdmUgYSB2YWxpZCBtaW1lIHR5cGUgJXMsIHNldCB0byBw
bGF5IiwgdGhpcywgc2VydmljZVR5cGUoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgbV9zbmFw
c2hvdERlY2lzaW9uID0gTWF5U25hcHNob3RXaGVuQ29udGVudElzU2V0OwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKCFMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRV
UkxTY2hlbWVBc0xvY2FsKG1fbG9hZGVkVXJsLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29w
eWluZygpKSAmJiAhbV9sb2FkZWRVcmwuaG9zdCgpLmlzRW1wdHkoKSAmJiBtX2xvYWRlZFVybC5o
b3N0KCkgPT0gZG9jdW1lbnQoKS5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmJhc2VV
UkwoKS5ob3N0KCkpIHsKLSAgICAgICAgTE9HKFBsdWdpbnMsICIlcCBQbHVnLWluIGlzIHNlcnZl
ZCBmcm9tIHBhZ2UncyBkb21haW4sIHNldCB0byBwbGF5IiwgdGhpcyk7Ci0gICAgICAgIG1fc25h
cHNob3REZWNpc2lvbiA9IE5ldmVyU25hcHNob3Q7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgCi0gICAgYXV0byYgcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJFbWJlZGRlZE9iamVjdD4o
KnRoaXMtPnJlbmRlcmVyKCkpOwotICAgIGF1dG8gY29udGVudFJlY3QgPSByZW5kZXJlci5jb250
ZW50Qm94UmVjdCgpOwotICAgIGludCBjb250ZW50V2lkdGggPSBjb250ZW50UmVjdC53aWR0aCgp
OwotICAgIGludCBjb250ZW50SGVpZ2h0ID0gY29udGVudFJlY3QuaGVpZ2h0KCk7Ci0gICAgCi0g
ICAgbV9wbHVnSW5EaW1lbnNpb25zU3BlY2lmaWVkID0gcmVuZGVyZXIuc3R5bGUoKS5sb2dpY2Fs
V2lkdGgoKS5pc1NwZWNpZmllZCgpIHx8IHJlbmRlcmVyLnN0eWxlKCkubG9naWNhbEhlaWdodCgp
LmlzU3BlY2lmaWVkKCk7Ci0gICAgCi0gICAgaWYgKGlzVG9wTGV2ZWxGdWxsUGFnZVBsdWdpbihy
ZW5kZXJlcikpIHsKLSAgICAgICAgTE9HKFBsdWdpbnMsICIlcCBQbHVnLWluIGlzIHRvcCBsZXZl
bCBmdWxsIHBhZ2UsIHNldCB0byBwbGF5IiwgdGhpcyk7Ci0gICAgICAgIG1fc25hcHNob3REZWNp
c2lvbiA9IE5ldmVyU25hcHNob3Q7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
aXNTbWFsbGVyVGhhblRpbnlTaXppbmdUaHJlc2hvbGQocmVuZGVyZXIpKSB7Ci0gICAgICAgIExP
RyhQbHVnaW5zLCAiJXAgUGx1Zy1pbiBpcyB2ZXJ5IHNtYWxsICVkeCVkLCBzZXQgdG8gcGxheSIs
IHRoaXMsIGNvbnRlbnRXaWR0aCwgY29udGVudEhlaWdodCk7Ci0gICAgICAgIG1fc2l6ZVdoZW5T
bmFwc2hvdHRlZCA9IEludFNpemUoY29udGVudFdpZHRoLCBjb250ZW50SGVpZ2h0KTsKLSAgICAg
ICAgbV9zbmFwc2hvdERlY2lzaW9uID0gTWF5U25hcHNob3RXaGVuUmVzaXplZDsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmICghZG9jdW1lbnQoKS5wYWdlKCktPnBsdWdJbkNsaWVu
dCgpKSB7Ci0gICAgICAgIExPRyhQbHVnaW5zLCAiJXAgVGhlcmUgaXMgbm8gcGx1Zy1pbiBjbGll
bnQuIFNldCB0byB3YWl0IGZvciBzbmFwc2hvdCIsIHRoaXMpOwotICAgICAgICBtX3NuYXBzaG90
RGVjaXNpb24gPSBOZXZlclNuYXBzaG90OwotICAgICAgICBzZXREaXNwbGF5U3RhdGUoV2FpdGlu
Z0ZvclNuYXBzaG90KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIExPRyhQbHVnaW5z
LCAiJXAgUGx1Zy1pbiBmcm9tICglcywgJXMpIGlzIG5vdCBhdXRvLXN0YXJ0LCBzaXplZCBhdCAl
ZHglZCwgc2V0IHRvIHdhaXQgZm9yIHNuYXBzaG90IiwgdGhpcywgZG9jdW1lbnQoKS50b3BEb2N1
bWVudCgpLmJhc2VVUkwoKS5ob3N0KCkudXRmOCgpLmRhdGEoKSwgdXJsLmhvc3QoKS51dGY4KCku
ZGF0YSgpLCBjb250ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHQpOwotICAgIG1fc25hcHNob3REZWNp
c2lvbiA9IFNuYXBzaG90dGVkOwotICAgIHNldERpc3BsYXlTdGF0ZShXYWl0aW5nRm9yU25hcHNo
b3QpOwotfQotCi12b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnN1YmZyYW1lTG9hZGVyRGlk
Q3JlYXRlUGx1Z0luKGNvbnN0IFdpZGdldCYgd2lkZ2V0KQotewotICAgIG1fcGx1Z0luV2FzQ3Jl
YXRlZCA9IHRydWU7Ci0KLSAgICBpZiAoaXM8UGx1Z2luVmlld0Jhc2U+KHdpZGdldCkgJiYgZG93
bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KHdpZGdldCkuc2hvdWxkQWx3YXlzQXV0b1N0YXJ0KCkpIHsK
LSAgICAgICAgTE9HKFBsdWdpbnMsICIlcCBQbHVnLWluIHNob3VsZCBhdXRvLXN0YXJ0LCBzZXQg
dG8gcGxheSIsIHRoaXMpOwotICAgICAgICBtX3NuYXBzaG90RGVjaXNpb24gPSBOZXZlclNuYXBz
aG90OwotICAgICAgICBzZXREaXNwbGF5U3RhdGUoUGxheWluZyk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAobV9kZWZlcnJlZFByb21vdGlvblRvUHJpbWFyeVBsdWdJbikgewot
ICAgICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gd2FzIGNyZWF0ZWQsIHByZXZpb3VzbHkg
ZGVmZXJyZWQgcHJvbW90aW9uIHRvIHByaW1hcnkuIFdpbGwgcHJvbW90ZSIsIHRoaXMpOwotICAg
ICAgICBzZXRJc1ByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbih0cnVlKTsKLSAgICAgICAgbV9kZWZl
cnJlZFByb21vdGlvblRvUHJpbWFyeVBsdWdJbiA9IGZhbHNlOwotICAgIH0KLX0KLQotdm9pZCBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50JiBldmVudCkK
LXsKLSAgICBpZiAoaXM8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KHJlbmRlcmVyKCkpICYmIGRpc3Bs
YXlTdGF0ZSgpID09IFdhaXRpbmdGb3JTbmFwc2hvdCAmJiBpczxNb3VzZUV2ZW50PihldmVudCkg
JiYgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAgIGF1
dG8mIG1vdXNlRXZlbnQgPSBkb3duY2FzdDxNb3VzZUV2ZW50PihldmVudCk7Ci0gICAgICAgIGlm
IChtb3VzZUV2ZW50LmJ1dHRvbigpID09IExlZnRCdXR0b24pIHsKLSAgICAgICAgICAgIHVzZXJE
aWRDbGlja1NuYXBzaG90KG1vdXNlRXZlbnQsIHRydWUpOwotICAgICAgICAgICAgbW91c2VFdmVu
dC5zZXREZWZhdWx0SGFuZGxlZCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgfQotICAgIEhUTUxQbHVnSW5FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsK
LX0KLQogYm9vbCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjYW5Mb2FkUGx1Z0luQ29udGVudChj
b25zdCBTdHJpbmcmIHJlbGF0aXZlVVJMLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAog
ewogICAgIC8vIEVsZW1lbnRzIGluIHVzZXIgYWdlbnQgc2hvdyB0cmVlIHNob3VsZCBsb2FkIHdo
YXRldmVyIHRoZSBlbWJlZGRpbmcgZG9jdW1lbnQgcG9saWN5IGlzLgpAQCAtODA3LDcgKzMwNSw3
IEBAIGJvb2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cmVxdWVzdE9iamVjdChjb25zdCBTdHJp
bmcmIHJlbGF0aXZlVVJMLCBjb25zdCBTdHJpCiAKICAgICBpZiAoSFRNTFBsdWdJbkVsZW1lbnQ6
OnJlcXVlc3RPYmplY3QocmVsYXRpdmVVUkwsIG1pbWVUeXBlLCBwYXJhbU5hbWVzLCBwYXJhbVZh
bHVlcykpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIAorCiAgICAgcmV0dXJuIGRvY3VtZW50
KCkuZnJhbWUoKS0+bG9hZGVyKCkuc3ViZnJhbWVMb2FkZXIoKS5yZXF1ZXN0T2JqZWN0KCp0aGlz
LCByZWxhdGl2ZVVSTCwgZ2V0TmFtZUF0dHJpYnV0ZSgpLCBtaW1lVHlwZSwgcGFyYW1OYW1lcywg
cGFyYW1WYWx1ZXMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdl
RWxlbWVudC5oCmluZGV4IDgyZTkyODY0OWJmYzM2MGM5YWFiNTJlZGEzYWRjNmYyNDJhZGIwODgu
Ljk2NDJhYmMwMjRhYWUyZDU4MmZlNjRhZWMyMDZkNTU1MGE5NzVlODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCkBAIC0yNSwxMSArMjUsMTEgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTEltYWdlTG9hZGVyOwotY2xhc3MgTW91
c2VFdmVudDsKIAogZW51bSBjbGFzcyBDcmVhdGVQbHVnaW5zIHsgTm8sIFllcyB9OwogCiAvLyBC
YXNlIGNsYXNzIGZvciBIVE1MRW1iZWRFbGVtZW50IGFuZCBIVE1MT2JqZWN0RWxlbWVudC4KKy8v
IEZJWE1FOiBUaGlzIGlzIHRoZSBvbmx5IGNsYXNzIHRoYXQgZGVyaXZlcyBmcm9tIEhUTUxQbHVn
SW5FbGVtZW50LCBzbyB3ZSBjb3VsZCBtZXJnZSB0aGUgdHdvIGNsYXNzZXMuCiBjbGFzcyBIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50IDogcHVibGljIEhUTUxQbHVnSW5FbGVtZW50IHsKICAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQpOwogcHVibGljOgpAQCAt
NDEsMzcgKzQxLDEwIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VUeXBlOyB9CiAgICAgY29uc3QgU3RyaW5nJiB1cmwo
KSBjb25zdCB7IHJldHVybiBtX3VybDsgfQotICAgIGNvbnN0IFVSTCYgbG9hZGVkVXJsKCkgY29u
c3QgeyByZXR1cm4gbV9sb2FkZWRVcmw7IH0KIAotICAgIC8vIFB1YmxpYyBmb3IgRnJhbWVWaWV3
OjphZGRXaWRnZXRUb1VwZGF0ZSgpCiAgICAgYm9vbCBuZWVkc1dpZGdldFVwZGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbmVlZHNXaWRnZXRVcGRhdGU7IH0KICAgICB2b2lkIHNldE5lZWRzV2lkZ2V0
VXBkYXRlKGJvb2wgbmVlZHNXaWRnZXRVcGRhdGUpIHsgbV9uZWVkc1dpZGdldFVwZGF0ZSA9IG5l
ZWRzV2lkZ2V0VXBkYXRlOyB9CiAgICAgCi0gICAgdm9pZCB1c2VyRGlkQ2xpY2tTbmFwc2hvdChN
b3VzZUV2ZW50JiwgYm9vbCBmb3J3YXJkRXZlbnQpOwotICAgIHZvaWQgY2hlY2tTbmFwc2hvdFN0
YXR1cygpOwotICAgIEltYWdlKiBzbmFwc2hvdEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9zbmFw
c2hvdEltYWdlLmdldCgpOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0YXJ0U25hcHNo
b3R0ZWRQbHVnSW4oKTsKLQotICAgIC8vIFBsdWctaW4gVVJMIG1pZ2h0IG5vdCBiZSB0aGUgc2Ft
ZSBhcyB1cmwoKSB3aXRoIG92ZXJyaWRpbmcgcGFyYW1ldGVycy4KLSAgICB2b2lkIHN1YmZyYW1l
TG9hZGVyV2lsbENyZWF0ZVBsdWdJbihjb25zdCBVUkwmIHBsdWdJblVSTCk7Ci0gICAgdm9pZCBz
dWJmcmFtZUxvYWRlckRpZENyZWF0ZVBsdWdJbihjb25zdCBXaWRnZXQmKTsKLQotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0SXNQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW4oYm9vbCk7Ci0gICAg
Ym9vbCBwYXJ0T2ZTbmFwc2hvdE92ZXJsYXkoY29uc3QgRXZlbnRUYXJnZXQqKSBjb25zdDsKLQot
ICAgIGJvb2wgbmVlZHNDaGVja0ZvclNpemVDaGFuZ2UoKSBjb25zdCB7IHJldHVybiBtX25lZWRz
Q2hlY2tGb3JTaXplQ2hhbmdlOyB9Ci0gICAgdm9pZCBzZXROZWVkc0NoZWNrRm9yU2l6ZUNoYW5n
ZSgpIHsgbV9uZWVkc0NoZWNrRm9yU2l6ZUNoYW5nZSA9IHRydWU7IH0KLSAgICB2b2lkIGNoZWNr
U2l6ZUNoYW5nZUZvclNuYXBzaG90dGluZygpOwotCi0gICAgZW51bSBTbmFwc2hvdERlY2lzaW9u
IHsKLSAgICAgICAgU25hcHNob3ROb3RZZXREZWNpZGVkLAotICAgICAgICBOZXZlclNuYXBzaG90
LAotICAgICAgICBTbmFwc2hvdHRlZCwKLSAgICAgICAgTWF5U25hcHNob3RXaGVuUmVzaXplZCwK
LSAgICAgICAgTWF5U25hcHNob3RXaGVuQ29udGVudElzU2V0Ci0gICAgfTsKLSAgICBTbmFwc2hv
dERlY2lzaW9uIHNuYXBzaG90RGVjaXNpb24oKSBjb25zdCB7IHJldHVybiBtX3NuYXBzaG90RGVj
aXNpb247IH0KLQogcHJvdGVjdGVkOgogICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKICAgICB2b2lkIGZpbmlzaENyZWF0
aW5nKCk7CkBAIC05NCwxMyArNjcsMTAgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIGJv
b2wgaXNQbHVnSW5JbWFnZUVsZW1lbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgYm9vbCBpc1Jlc3RhcnRlZFBsdWdpbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNSZXN0
YXJ0ZWRQbHVnaW47IH0KIAogICAgIGJvb2wgY2FuTG9hZFBsdWdJbkNvbnRlbnQoY29uc3QgU3Ry
aW5nJiByZWxhdGl2ZVVSTCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Q7CiAgICAgYm9v
bCBjYW5Mb2FkVVJMKGNvbnN0IFVSTCYpIGNvbnN0OwogCi0gICAgdm9pZCBkaWRBZGRVc2VyQWdl
bnRTaGFkb3dSb290KFNoYWRvd1Jvb3QmKSBmaW5hbDsKLQogICAgIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRl
cmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxSZWNhbGNTdHls
ZShTdHlsZTo6Q2hhbmdlKSBmaW5hbDsKQEAgLTExMSwzNiArODEsMTAgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHByZXBhcmVGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBmaW5hbDsKICAgICB2b2lkIHJl
c3VtZUZyb21Eb2N1bWVudFN1c3BlbnNpb24oKSBmaW5hbDsKIAotICAgIHZvaWQgZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCYpIGZpbmFsOwotICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5nTW91c2VD
bGljaygpIGZpbmFsOwotCi0gICAgdm9pZCB1cGRhdGVTbmFwc2hvdChJbWFnZSopIGZpbmFsOwot
CiAgICAgdm9pZCB1cGRhdGVBZnRlclN0eWxlUmVzb2x1dGlvbigpOwogCi0gICAgdm9pZCBzaW11
bGF0ZWRNb3VzZUNsaWNrVGltZXJGaXJlZCgpOwotCi0gICAgdm9pZCByZXN0YXJ0U2ltaWxhclBs
dWdJbnMoKTsKLSAgICB2b2lkIHJlbW92ZVNuYXBzaG90VGltZXJGaXJlZCgpOwotICAgIGJvb2wg
aXNUb3BMZXZlbEZ1bGxQYWdlUGx1Z2luKGNvbnN0IFJlbmRlckVtYmVkZGVkT2JqZWN0JikgY29u
c3Q7Ci0KLSAgICB2b2lkIHNldERpc3BsYXlTdGF0ZShEaXNwbGF5U3RhdGUpIGZpbmFsOwotCi0g
ICAgVVJMIG1fbG9hZGVkVXJsOwogICAgIGJvb2wgbV9uZWVkc1dpZGdldFVwZGF0ZSB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX25lZWRzRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzIHsgZmFsc2Ug
fTsKLSAgICBSZWZQdHI8TW91c2VFdmVudD4gbV9wZW5kaW5nQ2xpY2tFdmVudEZyb21TbmFwc2hv
dDsKLSAgICBEZWZlcnJhYmxlT25lU2hvdFRpbWVyIG1fc2ltdWxhdGVkTW91c2VDbGlja1RpbWVy
OwotICAgIFRpbWVyIG1fcmVtb3ZlU25hcHNob3RUaW1lcjsKLSAgICBSZWZQdHI8SW1hZ2U+IG1f
c25hcHNob3RJbWFnZTsKLSAgICBib29sIG1fY3JlYXRlZER1cmluZ1VzZXJHZXN0dXJlIHsgZmFs
c2UgfTsKLSAgICBib29sIG1faXNSZXN0YXJ0ZWRQbHVnaW4geyBmYWxzZSB9OwotICAgIGJvb2wg
bV9uZWVkc0NoZWNrRm9yU2l6ZUNoYW5nZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3BsdWdJbldh
c0NyZWF0ZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9kZWZlcnJlZFByb21vdGlvblRvUHJpbWFy
eVBsdWdJbiB7IGZhbHNlIH07Ci0gICAgSW50U2l6ZSBtX3NpemVXaGVuU25hcHNob3R0ZWQ7Ci0g
ICAgU25hcHNob3REZWNpc2lvbiBtX3NuYXBzaG90RGVjaXNpb24geyBTbmFwc2hvdE5vdFlldERl
Y2lkZWQgfTsKLSAgICBib29sIG1fcGx1Z0luRGltZW5zaW9uc1NwZWNpZmllZCB7IGZhbHNlIH07
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEhUTUxJbWFnZUxvYWRlcj4gbV9pbWFnZUxvYWRlcjsKICAg
ICBib29sIG1fbmVlZHNJbWFnZVJlbG9hZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1VwZGF0
ZVNjaGVkdWxlZEZvckFmdGVyU3R5bGVSZXNvbHV0aW9uIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCmluZGV4IDIxY2YwNjJkOTBjODM3ZTkxNmRmMDNh
MzM1YTQ5ZDYyMDZjODlmYWEuLjFiMWNlNjIwYzAyOTQwMzIxMDljMGNhMDMwMTA1MmQ1NWQ2Mjdi
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcApAQCAtMzUzLDgg
KzM1Myw2IEBAIGJvb2wgRnJhbWVMb2FkZXI6OlN1YmZyYW1lTG9hZGVyOjpsb2FkUGx1Z2luKEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBsdWdpbkVsZW1lCiAgICAgaWYgKCFyZW5kZXJlcikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcGx1Z2luRWxlbWVudC5zdWJmcmFtZUxvYWRlcldp
bGxDcmVhdGVQbHVnSW4odXJsKTsKLQogICAgIEludFNpemUgY29udGVudFNpemUgPSByb3VuZGVk
SW50U2l6ZShMYXlvdXRTaXplKHJlbmRlcmVyLT5jb250ZW50V2lkdGgoKSwgcmVuZGVyZXItPmNv
bnRlbnRIZWlnaHQoKSkpOwogICAgIGJvb2wgbG9hZE1hbnVhbGx5ID0gaXM8UGx1Z2luRG9jdW1l
bnQ+KGRvY3VtZW50KSAmJiAhbV9jb250YWluc1BsdWdpbnMgJiYgZG93bmNhc3Q8UGx1Z2luRG9j
dW1lbnQ+KGRvY3VtZW50KS5zaG91bGRMb2FkUGx1Z2luTWFudWFsbHkoKTsKIApAQCAtMzc4LDcg
KzM3Niw2IEBAIGJvb2wgRnJhbWVMb2FkZXI6OlN1YmZyYW1lTG9hZGVyOjpsb2FkUGx1Z2luKEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBsdWdpbkVsZW1lCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBwbHVnaW5FbGVtZW50LnN1YmZyYW1lTG9hZGVyRGlkQ3JlYXRlUGx1Z0lu
KCp3aWRnZXQpOwogICAgIHJlbmRlcmVyLT5zZXRXaWRnZXQoV1RGTW92ZSh3aWRnZXQpKTsKICAg
ICBtX2NvbnRhaW5zUGx1Z2lucyA9IHRydWU7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGE3Y2FiMTQwMzgyY2NjZDgxMjg3OGQ2ZGFm
YzZiMDdkNTlkMzJjMjQuLjlmY2VmZDZlOWYzMzMyNGIxYzZlMjkwM2ZkNjE3ZjQwN2QzNWZjZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC02ODQsMTAgKzY4NCw3
IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNhblByb2Nlc3NEcmFnKGNvbnN0IERyYWdEYXRhJiBk
cmFnRGF0YSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIAotICAgIGlmIChpczxIVE1M
UGx1Z0luRWxlbWVudD4oKmRyYWdOb2RlKSkgewotICAgICAgICBpZiAoIWRvd25jYXN0PEhUTUxQ
bHVnSW5FbGVtZW50PigqZHJhZ05vZGUpLmNhblByb2Nlc3NEcmFnKCkgJiYgIWRyYWdOb2RlLT5o
YXNFZGl0YWJsZVN0eWxlKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSBlbHNl
IGlmICghZHJhZ05vZGUtPmhhc0VkaXRhYmxlU3R5bGUoKSkKKyAgICBpZiAoIWRyYWdOb2RlLT5o
YXNFZGl0YWJsZVN0eWxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX2Rp
ZEluaXRpYXRlRHJhZyAmJiBtX2RvY3VtZW50VW5kZXJNb3VzZSA9PSBtX2RyYWdJbml0aWF0b3Ig
JiYgcmVzdWx0LmlzU2VsZWN0ZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA0
N2QwMzEwN2YwNGEyOTQ4ZGZlOTc4MmIzMzAwNTlhODhkMWM1MzJhLi5iMWNjMjI3ZWQ0OGExMDBl
YjkzYjlhYTM4OWRjODQ1MjdmMWQ2YWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBA
IC0xMzQ1LDEzICsxMzQ1LDkgQEAgdm9pZCBGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2JqZWN0VG9V
cGRhdGUoUmVuZGVyRW1iZWRkZWRPYmplY3QmIGVtYmVkZGVkT2JqZWN0KQogICAgIGlmICghbV9l
bWJlZGRlZE9iamVjdHNUb1VwZGF0ZSkKICAgICAgICAgbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0
ZSA9IG1ha2VVbmlxdWU8TGlzdEhhc2hTZXQ8UmVuZGVyRW1iZWRkZWRPYmplY3QqPj4oKTsKIAot
ICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCYgZWxlbWVudCA9IGVtYmVkZGVkT2JqZWN0LmZyYW1l
T3duZXJFbGVtZW50KCk7Ci0gICAgaWYgKGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KSB8
fCBpczxIVE1MRW1iZWRFbGVtZW50PihlbGVtZW50KSkgewotICAgICAgICAvLyBUZWxsIHRoZSBE
T00gZWxlbWVudCB0aGF0IGl0IG5lZWRzIGEgd2lkZ2V0IHVwZGF0ZS4KLSAgICAgICAgSFRNTFBs
dWdJbkltYWdlRWxlbWVudCYgcGx1Z2luRWxlbWVudCA9IGRvd25jYXN0PEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ+KGVsZW1lbnQpOwotICAgICAgICBpZiAoIXBsdWdpbkVsZW1lbnQubmVlZHNDaGVj
a0ZvclNpemVDaGFuZ2UoKSkKLSAgICAgICAgICAgIHBsdWdpbkVsZW1lbnQuc2V0TmVlZHNXaWRn
ZXRVcGRhdGUodHJ1ZSk7Ci0gICAgfQorICAgIGF1dG8mIGVsZW1lbnQgPSBlbWJlZGRlZE9iamVj
dC5mcmFtZU93bmVyRWxlbWVudCgpOworICAgIGlmIChpczxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
PihlbGVtZW50KSkKKyAgICAgICAgZG93bmNhc3Q8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4oZWxl
bWVudCkuc2V0TmVlZHNXaWRnZXRVcGRhdGUodHJ1ZSk7CiAKICAgICBtX2VtYmVkZGVkT2JqZWN0
c1RvVXBkYXRlLT5hZGQoJmVtYmVkZGVkT2JqZWN0KTsKIH0KQEAgLTMyMzgsMjYgKzMyMzQsMTIg
QEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUVtYmVkZGVkT2JqZWN0KFJlbmRlckVtYmVkZGVkT2Jq
ZWN0JiBlbWJlZGRlZE9iamVjdCkKICAgICBpZiAoZW1iZWRkZWRPYmplY3QuaXNQbHVnaW5VbmF2
YWlsYWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQm
IGVsZW1lbnQgPSBlbWJlZGRlZE9iamVjdC5mcmFtZU93bmVyRWxlbWVudCgpOwotCi0gICAgaWYg
KGVtYmVkZGVkT2JqZWN0LmlzU25hcHNob3R0ZWRQbHVnSW4oKSkgewotICAgICAgICBpZiAoaXM8
SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxFbWJlZEVsZW1lbnQ+KGVsZW1l
bnQpKSB7Ci0gICAgICAgICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBwbHVnaW5FbGVtZW50
ID0gZG93bmNhc3Q8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4oZWxlbWVudCk7Ci0gICAgICAgICAg
ICBwbHVnaW5FbGVtZW50LmNoZWNrU25hcHNob3RTdGF0dXMoKTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm47Ci0gICAgfQorICAgIGF1dG8mIGVsZW1lbnQgPSBlbWJlZGRlZE9iamVjdC5mcmFt
ZU93bmVyRWxlbWVudCgpOwogCiAgICAgYXV0byB3ZWFrUmVuZGVyZXIgPSBtYWtlV2Vha1B0cihl
bWJlZGRlZE9iamVjdCk7CiAKLSAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCB0dXJuIGludG8gYSBy
ZWFsIHZpcnR1YWwgZGlzcGF0Y2ggaWYgd2UgZGVmaW5lZAotICAgIC8vIHVwZGF0ZVdpZGdldChQ
bHVnaW5DcmVhdGlvbk9wdGlvbikgb24gSFRNTEVsZW1lbnQuCiAgICAgaWYgKGlzPEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQ+KGVsZW1lbnQpKSB7Ci0gICAgICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1l
bnQmIHBsdWdpbkVsZW1lbnQgPSBkb3duY2FzdDxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PihlbGVt
ZW50KTsKLSAgICAgICAgaWYgKHBsdWdpbkVsZW1lbnQubmVlZHNDaGVja0ZvclNpemVDaGFuZ2Uo
KSkgewotICAgICAgICAgICAgcGx1Z2luRWxlbWVudC5jaGVja1NuYXBzaG90U3RhdHVzKCk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgYXV0byYgcGx1Z2luRWxlbWVu
dCA9IGRvd25jYXN0PEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+KGVsZW1lbnQpOwogICAgICAgICBp
ZiAocGx1Z2luRWxlbWVudC5uZWVkc1dpZGdldFVwZGF0ZSgpKQogICAgICAgICAgICAgcGx1Z2lu
RWxlbWVudC51cGRhdGVXaWRnZXQoQ3JlYXRlUGx1Z2luczo6WWVzKTsKICAgICB9IGVsc2UKQEAg
LTMyODQsNyArMzI2Niw3IEBAIGJvb2wgRnJhbWVWaWV3Ojp1cGRhdGVFbWJlZGRlZE9iamVjdHMo
KQogICAgIG1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGUtPmFkZChudWxscHRyKTsKIAogICAgIHdo
aWxlICghbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZS0+aXNFbXB0eSgpKSB7Ci0gICAgICAgIFJl
bmRlckVtYmVkZGVkT2JqZWN0KiBlbWJlZGRlZE9iamVjdCA9IG1fZW1iZWRkZWRPYmplY3RzVG9V
cGRhdGUtPnRha2VGaXJzdCgpOworICAgICAgICBhdXRvIGVtYmVkZGVkT2JqZWN0ID0gbV9lbWJl
ZGRlZE9iamVjdHNUb1VwZGF0ZS0+dGFrZUZpcnN0KCk7CiAgICAgICAgIGlmICghZW1iZWRkZWRP
YmplY3QpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgdXBkYXRlRW1iZWRkZWRPYmplY3Qo
KmVtYmVkZGVkT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGY5NDJiNGI0ZTcwMjI1OTFm
MTI1MTlmODlhYjcyZTc0ODRjMWU1NTkuLjViMWQ5ZTY1NWY0MmJhOWQyNWQ0MjhiMDU4NTQwMDY2
YjU3NWQ1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtOTEsNyArOTEsNiBAQAogI2luY2x1ZGUg
IlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVu
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0jaW5jbHVkZSAiUGx1Z0luQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YS5oIgogI2luY2x1ZGUgIlBsdWdpbkluZm9Qcm92
aWRlci5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNlLmgiCkBAIC0yNDMsNyArMjQyLDYgQEAg
UGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQogICAgICwg
bV9iYWNrRm9yd2FyZENvbnRyb2xsZXIobWFrZVVuaXF1ZTxCYWNrRm9yd2FyZENvbnRyb2xsZXI+
KCp0aGlzLCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmJhY2tGb3J3YXJkQ2xpZW50KSkpCiAg
ICAgLCBtX21haW5GcmFtZShGcmFtZTo6Y3JlYXRlKHRoaXMsIG51bGxwdHIsIFdURk1vdmUocGFn
ZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lKSkpCiAgICAgLCBtX2VkaXRv
ckNsaWVudChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmVkaXRvckNsaWVudCkpCi0gICAgLCBt
X3BsdWdJbkNsaWVudChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLnBsdWdJbkNsaWVudCkpCiAg
ICAgLCBtX3ZhbGlkYXRpb25NZXNzYWdlQ2xpZW50KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24u
dmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQpKQogICAgICwgbV9kaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KSkKICAg
ICAsIG1fcGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24u
cGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggMTAzNmFmYThjYjk4
ZDY3OGNjNjA3NDQ2Yzg5NTZiMzliYTZkMjNlZi4uOTE1MjE0YTcxMjAxOWM3OTk1MWU2OTVlMzk3
NzJiZTZkNzRhMTUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTEyMiw3ICsxMjIsNiBAQCBjbGFzcyBQ
YXltZW50Q29vcmRpbmF0b3I7CiBjbGFzcyBQZXJmb3JtYW5jZUxvZ2dpbmc7CiBjbGFzcyBQZXJm
b3JtYW5jZUxvZ2dpbmdDbGllbnQ7CiBjbGFzcyBQZXJmb3JtYW5jZU1vbml0b3I7Ci1jbGFzcyBQ
bHVnSW5DbGllbnQ7CiBjbGFzcyBQbHVnaW5EYXRhOwogY2xhc3MgUGx1Z2luSW5mb1Byb3ZpZGVy
OwogY2xhc3MgUGx1Z2luVmlld0Jhc2U7CkBAIC0yNTcsNyArMjU2LDYgQEAgcHVibGljOgogICAg
IGJvb2wgY2FuU3RhcnRNZWRpYSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuU3RhcnRNZWRpYTsgfQog
CiAgICAgRWRpdG9yQ2xpZW50JiBlZGl0b3JDbGllbnQoKSB7IHJldHVybiBtX2VkaXRvckNsaWVu
dC5nZXQoKTsgfQotICAgIFBsdWdJbkNsaWVudCogcGx1Z0luQ2xpZW50KCkgY29uc3QgeyByZXR1
cm4gbV9wbHVnSW5DbGllbnQuZ2V0KCk7IH0KIAogICAgIEZyYW1lJiBtYWluRnJhbWUoKSB7IHJl
dHVybiBtX21haW5GcmFtZS5nZXQoKTsgfQogICAgIGNvbnN0IEZyYW1lJiBtYWluRnJhbWUoKSBj
b25zdCB7IHJldHVybiBtX21haW5GcmFtZS5nZXQoKTsgfQpAQCAtOTAwLDcgKzg5OCw2IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPFBsdWdpbkRhdGE+IG1fcGx1Z2luRGF0YTsKIAogICAgIFVuaXF1
ZVJlZjxFZGl0b3JDbGllbnQ+IG1fZWRpdG9yQ2xpZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
bHVnSW5DbGllbnQ+IG1fcGx1Z0luQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxWYWxpZGF0
aW9uTWVzc2FnZUNsaWVudD4gbV92YWxpZGF0aW9uTWVzc2FnZUNsaWVudDsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+IG1fZGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudD4gbV9wZXJm
b3JtYW5jZUxvZ2dpbmdDbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRp
b24uY3BwCmluZGV4IDRhMDViZTI0YzdmYzk2NmVjMDAwMjc4YmU3ZWJlMWJlZTYzYzRlODIuLjk1
YTk4NGFjYjU1OGJlM2I5ZDg1MjE4ZWUyODkxZmI3N2NkNGRhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAi
TGliV2ViUlRDUHJvdmlkZXIuaCIKICNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJvdmlkZXIuaCIK
ICNpbmNsdWRlICJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuaCIKLSNpbmNsdWRlICJQbHVnSW5D
bGllbnQuaCIKICNpbmNsdWRlICJQbHVnaW5JbmZvUHJvdmlkZXIuaCIKICNpbmNsdWRlICJQcm9n
cmVzc1RyYWNrZXJDbGllbnQuaCIKICNpbmNsdWRlICJTb2NrZXRQcm92aWRlci5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCmluZGV4IDljNDczMzEwOTVhODg5YjgwMDM0
OGEzYWE0MGEyYjFhMTViYzAzNTIuLmYwNTRmY2IzNjc1MWJiZWFlZjRiZjhiMTJjNDdmMjBmNTMw
YzEzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgKQEAgLTU4LDcg
KzU4LDYgQEAgY2xhc3MgTGliV2ViUlRDUHJvdmlkZXI7CiBjbGFzcyBNZWRpYVJlY29yZGVyUHJv
dmlkZXI7CiBjbGFzcyBQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ7CiBjbGFzcyBQZXJmb3JtYW5j
ZUxvZ2dpbmdDbGllbnQ7Ci1jbGFzcyBQbHVnSW5DbGllbnQ7CiBjbGFzcyBQbHVnaW5JbmZvUHJv
dmlkZXI7CiBjbGFzcyBQcm9ncmVzc1RyYWNrZXJDbGllbnQ7CiBjbGFzcyBTb2NrZXRQcm92aWRl
cjsKQEAgLTEwMiw3ICsxMDEsNiBAQCBwdWJsaWM6CiAKICAgICBVbmlxdWVSZWY8TGliV2ViUlRD
UHJvdmlkZXI+IGxpYldlYlJUQ1Byb3ZpZGVyOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFBsdWdJ
bkNsaWVudD4gcGx1Z0luQ2xpZW50OwogICAgIFVuaXF1ZVJlZjxQcm9ncmVzc1RyYWNrZXJDbGll
bnQ+IHByb2dyZXNzVHJhY2tlckNsaWVudDsKICAgICBSZWY8QmFja0ZvcndhcmRDbGllbnQ+IGJh
Y2tGb3J3YXJkQ2xpZW50OwogICAgIFJlZjxDb29raWVKYXI+IGNvb2tpZUphcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z0luQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BsdWdJbkNsaWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWQwMDc4
NTg2NmY3NjM3N2MxZDc3NWE3MTViNWJhNjMzNjVkMDBmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z0luQ2xpZW50
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIFBsdWdJbkNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+UGx1Z0luQ2xpZW50
KCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBdXRvU3RhcnRGcm9tT3JpZ2lu
KGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRGcm9t
T3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5Pcmln
aW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAppbmRleCA3ZGZiYmY3NmQ5MThmZjU2ZjAy
Y2I2MmMxZDcxYjYxNDdhM2I3Njg4Li45ZDY4YTMwY2E5YjcwNDNjNDQ3NmZlMTE3MWYyZWNhMzE4
MjFhZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCkBAIC0zNzksMTIgKzM3OSw2IEBA
IE1heGltdW1IVE1MUGFyc2VyRE9NVHJlZURlcHRoOgogICAgIFdlYkNvcmU6CiAgICAgICBkZWZh
dWx0OiBkZWZhdWx0TWF4aW11bUhUTUxQYXJzZXJET01UcmVlRGVwdGgKIAotTWF4aW11bVBsdWdJ
blNuYXBzaG90QXR0ZW1wdHM6Ci0gIHR5cGU6IHVpbnQzMl90Ci0gIGRlZmF1bHRWYWx1ZToKLSAg
ICBXZWJDb3JlOgotICAgICAgZGVmYXVsdDogMjAKLQogTWF4aW11bVNvdXJjZUJ1ZmZlclNpemU6
CiAgIGNvbW1lbnQ6ID4tCiAgICAgQWxsb3cgU291cmNlQnVmZmVycyB0byBzdG9yZSB1cCB0byAz
MDRNQiBlYWNoLCBlbm91Z2ggZm9yIGFwcHJveGltYXRlbHkgZml2ZSBtaW51dGVzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuY3BwCmluZGV4IDRkNDZkOTg0Y2RlYzQzMzViMmE1Nzg4
ZWQ3Mjg3ZTU4ZmIzNDBjYTguLmNkYjJiMTJiYjkzZTZlYTZkYmFiMDE4MGQ4ODEwZDAzNjk3MzM0
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuY3BwCkBAIC04NSw3ICs4NSw2
IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIENvbnRyb2xQYXJ0IGNv
bnRyb2xQYXJ0KQogICAgIGNhc2UgU2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQ6IHRz
IDw8ICJzZWFyY2gtZmllbGQtcmVzdWx0cy1kZWNvcmF0aW9uLXBhcnQiOyBicmVhazsKICAgICBj
YXNlIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblBhcnQ6IHRzIDw8ICJzZWFyY2gtZmllbGQtcmVz
dWx0cy1idXR0b24tcGFydCI7IGJyZWFrOwogICAgIGNhc2UgU2VhcmNoRmllbGRDYW5jZWxCdXR0
b25QYXJ0OiB0cyA8PCAic2VhcmNoLWZpZWxkLWNhbmNlbC1idXR0b24tcGFydCI7IGJyZWFrOwot
ICAgIGNhc2UgU25hcHNob3R0ZWRQbHVnaW5PdmVybGF5UGFydDogdHMgPDwgInNuYXBzaG90dGVk
LXBsdWdpbi1vdmVybGF5LXBhcnQiOyBicmVhazsKICAgICBjYXNlIFRleHRGaWVsZFBhcnQ6IHRz
IDw8ICJ0ZXh0LWZpZWxkLXBhcnQiOyBicmVhazsKICAgICBjYXNlIFJlbGV2YW5jeUxldmVsSW5k
aWNhdG9yUGFydDogdHMgPDwgInJlbGV2YW5jeS1sZXZlbC1pbmRpY2F0b3ItcGFydCI7IGJyZWFr
OwogICAgIGNhc2UgQ29udGludW91c0NhcGFjaXR5TGV2ZWxJbmRpY2F0b3JQYXJ0OiB0cyA8PCAi
Y29udGludW91cy1jYXBhY2l0eS1sZXZlbC1pbmRpY2F0b3ItcGFydCI7IGJyZWFrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWVUeXBlcy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVGhlbWVUeXBlcy5oCmluZGV4IDNkNWEyYjMxNDk1OTRjYTM5ZWY5MDMyODcz
Y2Q5Y2I1MzhhZGMxM2IuLmMyODc1ZTNiNGFmYmNkODMzOTJmMzA0NjZlMDdiYjI2OWI2ODRjOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmgKQEAgLTg1LDcgKzg1LDYgQEAgZW51
bSBDb250cm9sUGFydCB7CiAgICAgU2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQsCiAg
ICAgU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uUGFydCwKICAgICBTZWFyY2hGaWVsZENhbmNlbEJ1
dHRvblBhcnQsCi0gICAgU25hcHNob3R0ZWRQbHVnaW5PdmVybGF5UGFydCwKICAgICBUZXh0Rmll
bGRQYXJ0LAogICAgIFJlbGV2YW5jeUxldmVsSW5kaWNhdG9yUGFydCwKICAgICBDb250aW51b3Vz
Q2FwYWNpdHlMZXZlbEluZGljYXRvclBhcnQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpblZpZXdCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZp
ZXdCYXNlLmgKaW5kZXggMWIyMWYwNDQ3Zjc3YjI0OTEwOGMyOTBiNzU0NjRkODgwMGE5ZGY1Yi4u
ZTY0ODNiMDgzOTZhMTU2NzVlYzNjZmViMjBiMWJmMjQ2MTk0Mzk1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaApAQCAtNjksMTAgKzY5LDYgQEAgcHVibGljOgogICAg
IC8vIEZJWE1FOiBUaGlzIGlzIGEgaGFjayB0aGF0IHdvcmtzIGFyb3VuZCB0aGUgZmFjdCB0aGF0
IHRoZSBXZWJLaXQyIFBsdWdpblZpZXcgaXNuJ3QgYSBTY3JvbGxhYmxlQXJlYS4KICAgICB2aXJ0
dWFsIGJvb2wgd2FudHNXaGVlbEV2ZW50cygpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBib29sIHN1cHBvcnRzS2V5Ym9hcmRGb2N1cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGNhblByb2Nlc3NEcmFnKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBbHdheXNBdXRvU3RhcnQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBiZWdpblNuYXBzaG90dGluZ1J1bm5pbmdQbHVn
aW4oKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBbGxvd05hdmlnYXRpb25Gcm9tRHJh
Z3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IDBkODdiMmFjNWUzYmRkYmRhZmNjZjhj
ODgwNjUwNjI4NmFkZGRjMjEuLjRlNWFiYTZkMDQ3MzUyMjNlY2M2YzYzMjBmNjU3NzVlMzdmNjVj
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5oCkBAIC0yOTcsNyArMjk3LDcgQEAgcHVibGljOgogICAgIENvbnRpbnVhdGlvbkNoYWluTm9k
ZSogY29udGludWF0aW9uQ2hhaW5Ob2RlKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICBMYXlv
dXRVbml0IGNvbXB1dGVkQ1NTUGFkZGluZyhjb25zdCBMZW5ndGgmKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBMYXlvdXRVbml0IGNvbXB1dGVkQ1NTUGFkZGluZyhjb25zdCBMZW5ndGgmKSBj
b25zdDsKICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkc0lnbm9yaW5nQ29udGludWF0aW9u
KGNvbnN0IEZsb2F0UmVjdCYsIFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogLyp3YXNGaXhlZCov
KSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdm9pZCBjb2xsZWN0QWJzb2x1
dGVRdWFkc0ZvckNvbnRpbnVhdGlvbihWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdh
c0ZpeGVkKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVtYmVkZGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bWJlZGRlZE9iamVjdC5jcHAKaW5kZXggMDI4N2MxZTQ4ZDg1Y2JhZTU4M2NlMWExMzIxZGU0MDUx
OThiZmFlZi4uZTFjZDAyNDlhZDcwYzZiZjRiNjBmODBmZjEyYWMyYzU1N2RmZWM1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCkBA
IC0xNzcsNDcgKzE3Nyw2IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnNldFVuYXZhaWxh
YmxlUGx1Z2luSW5kaWNhdG9ySXNQcmVzc2VkKGJvb2wgcHJlc3NlZCkKICAgICByZXBhaW50KCk7
CiB9CiAKLXZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZShQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBJbWFnZSYg
aW1hZ2UpCi17Ci0gICAgTGF5b3V0VW5pdCBjV2lkdGggPSBjb250ZW50V2lkdGgoKTsKLSAgICBM
YXlvdXRVbml0IGNIZWlnaHQgPSBjb250ZW50SGVpZ2h0KCk7Ci0gICAgaWYgKCFjV2lkdGggfHwg
IWNIZWlnaHQpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCA9IHBhaW50SW5mby5jb250ZXh0KCk7Ci0gICAgTGF5b3V0U2l6ZSBjb250ZW50U2l6ZShjV2lk
dGgsIGNIZWlnaHQpOwotICAgIExheW91dFBvaW50IGNvbnRlbnRMb2NhdGlvbiA9IGxvY2F0aW9u
KCkgKyBwYWludE9mZnNldDsKLSAgICBjb250ZW50TG9jYXRpb24ubW92ZShib3JkZXJMZWZ0KCkg
KyBwYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSk7Ci0KLSAgICBMYXlv
dXRSZWN0IHJlY3QoY29udGVudExvY2F0aW9uLCBjb250ZW50U2l6ZSk7Ci0gICAgSW50UmVjdCBh
bGlnbmVkUmVjdCA9IHNuYXBwZWRJbnRSZWN0KHJlY3QpOwotICAgIGlmIChhbGlnbmVkUmVjdC53
aWR0aCgpIDw9IDAgfHwgYWxpZ25lZFJlY3QuaGVpZ2h0KCkgPD0gMCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVy
cG9sYXRpb25RdWFsaXR5KGNvbnRleHQsIGltYWdlLCAmaW1hZ2UsIGFsaWduZWRSZWN0LnNpemUo
KSk7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIGFsaWduZWRSZWN0LCB7IGltYWdlT3Jp
ZW50YXRpb24oKSwgaW50ZXJwb2xhdGlvbiB9KTsKLX0KLQotdm9pZCBSZW5kZXJFbWJlZGRlZE9i
amVjdDo6cGFpbnRDb250ZW50cyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2Zmc2V0KQotewotICAgIGlmICghaXM8SFRNTFBsdWdJbkVsZW1lbnQ+KGZyYW1l
T3duZXJFbGVtZW50KCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBIVE1MUGx1Z0luRWxlbWVu
dCYgcGx1Z0luRWxlbWVudCA9IGRvd25jYXN0PEhUTUxQbHVnSW5FbGVtZW50PihmcmFtZU93bmVy
RWxlbWVudCgpKTsKLQotICAgIGlmIChwbHVnSW5FbGVtZW50LmRpc3BsYXlTdGF0ZSgpID4gSFRN
TFBsdWdJbkVsZW1lbnQ6OkRpc3BsYXlpbmdTbmFwc2hvdCkgewotICAgICAgICBSZW5kZXJXaWRn
ZXQ6OnBhaW50Q29udGVudHMocGFpbnRJbmZvLCBwYWludE9mZnNldCk7Ci0gICAgICAgIGlmICgh
cGx1Z0luRWxlbWVudC5pc1Jlc3RhcnRlZFBsdWdpbigpKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmICghaXM8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4ocGx1Z0luRWxlbWVu
dCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChJbWFnZSogc25hcHNob3QgPSBkb3duY2Fz
dDxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PihwbHVnSW5FbGVtZW50KS5zbmFwc2hvdEltYWdlKCkp
Ci0gICAgICAgIHBhaW50U25hcHNob3RJbWFnZShwYWludEluZm8sIHBhaW50T2Zmc2V0LCAqc25h
cHNob3QpOwotfQotCiB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewogICAgIC8vIFRo
ZSByZWxldmFudCByZXBhaW50ZWQgb2JqZWN0IGhldXJpc3RpYyBpcyBub3QgdHVuZWQgZm9yIHBs
dWdpbiBkb2N1bWVudHMuCkBAIC0zODAsOCArMzM5LDYgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9i
amVjdDo6bGF5b3V0KCkKICAgICBTdGFja1N0YXRzOjpMYXlvdXRDaGVja1BvaW50IGxheW91dENo
ZWNrUG9pbnQ7CiAgICAgQVNTRVJUKG5lZWRzTGF5b3V0KCkpOwogCi0gICAgTGF5b3V0U2l6ZSBv
bGRTaXplID0gY29udGVudEJveFJlY3QoKS5zaXplKCk7Ci0KICAgICB1cGRhdGVMb2dpY2FsV2lk
dGgoKTsKICAgICB1cGRhdGVMb2dpY2FsSGVpZ2h0KCk7CiAKQEAgLTM5Miw1MiArMzQ5LDEwIEBA
IHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OmxheW91dCgpCiAKICAgICB1cGRhdGVMYXllclRy
YW5zZm9ybSgpOwogCi0gICAgYm9vbCB3YXNNaXNzaW5nV2lkZ2V0ID0gZmFsc2U7Ci0gICAgaWYg
KCF3aWRnZXQoKSAmJiBjYW5IYXZlV2lkZ2V0KCkpIHsKLSAgICAgICAgd2FzTWlzc2luZ1dpZGdl
dCA9IHRydWU7CisgICAgaWYgKCF3aWRnZXQoKSkKICAgICAgICAgdmlldygpLmZyYW1lVmlldygp
LmFkZEVtYmVkZGVkT2JqZWN0VG9VcGRhdGUoKnRoaXMpOwotICAgIH0KIAogICAgIGNsZWFyTmVl
ZHNMYXlvdXQoKTsKLQotICAgIExheW91dFNpemUgbmV3U2l6ZSA9IGNvbnRlbnRCb3hSZWN0KCku
c2l6ZSgpOwotCi0gICAgaWYgKCF3YXNNaXNzaW5nV2lkZ2V0ICYmIG5ld1NpemUud2lkdGgoKSA+
PSBvbGRTaXplLndpZHRoKCkgJiYgbmV3U2l6ZS5oZWlnaHQoKSA+PSBvbGRTaXplLmhlaWdodCgp
KSB7Ci0gICAgICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCYgZWxlbWVudCA9IGZyYW1lT3duZXJF
bGVtZW50KCk7Ci0gICAgICAgIGlmIChpczxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PihlbGVtZW50
KSkgewotICAgICAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgcGx1Z0luSW1hZ2VFbGVt
ZW50ID0gZG93bmNhc3Q8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4oZWxlbWVudCk7Ci0gICAgICAg
ICAgICBpZiAocGx1Z0luSW1hZ2VFbGVtZW50LmRpc3BsYXlTdGF0ZSgpID4gSFRNTFBsdWdJbkVs
ZW1lbnQ6OkRpc3BsYXlpbmdTbmFwc2hvdCAmJiBwbHVnSW5JbWFnZUVsZW1lbnQuc25hcHNob3RE
ZWNpc2lvbigpID09IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6Ok1heVNuYXBzaG90V2hlblJlc2l6
ZWQpIHsKLSAgICAgICAgICAgICAgICBwbHVnSW5JbWFnZUVsZW1lbnQuc2V0TmVlZHNDaGVja0Zv
clNpemVDaGFuZ2UoKTsKLSAgICAgICAgICAgICAgICB2aWV3KCkuZnJhbWVWaWV3KCkuYWRkRW1i
ZWRkZWRPYmplY3RUb1VwZGF0ZSgqdGhpcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBpZiAoIWNhbkhhdmVDaGlsZHJlbigpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICAvLyBUaGlzIGNvZGUgY29waWVkIGZyb20gUmVuZGVyTWVkaWE6OmxheW91dCgpLgotICAgIFJl
bmRlck9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7Ci0KLSAgICBpZiAoIWNoaWxkKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBjaGlsZEJveCA9IGRvd25jYXN0PFJlbmRlckJveD4o
KmNoaWxkKTsKLQotICAgIGlmIChuZXdTaXplID09IG9sZFNpemUgJiYgIWNoaWxkQm94Lm5lZWRz
TGF5b3V0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICAvLyBXaGVuIGNhbGxpbmcgbGF5
b3V0KCkgb24gYSBjaGlsZCBub2RlLCBhIHBhcmVudCBtdXN0IGVpdGhlciBwdXNoIGEgTGF5b3V0
U3RhdGVNYWludGFpbnRlciwgb3IKLSAgICAvLyBpbnN0YW50aWF0ZSBMYXlvdXRTdGF0ZURpc2Fi
bGVyLiBTaW5jZSB1c2luZyBhIExheW91dFN0YXRlTWFpbnRhaW5lciBpcyBzbGlnaHRseSBtb3Jl
IGVmZmljaWVudCwKLSAgICAvLyBhbmQgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgbWFueSB0
aW1lcyBwZXIgc2Vjb25kIGR1cmluZyBwbGF5YmFjaywgdXNlIGEgTGF5b3V0U3RhdGVNYWludGFp
bmVyOgotICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1c2hlcigqdGhpcywgbG9jYXRp
b25PZmZzZXQoKSwgaGFzVHJhbnNmb3JtKCkgfHwgaGFzUmVmbGVjdGlvbigpIHx8IHN0eWxlKCku
aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSk7Ci0gICAgCi0gICAgY2hpbGRCb3guc2V0TG9j
YXRpb24oTGF5b3V0UG9pbnQoYm9yZGVyTGVmdCgpLCBib3JkZXJUb3AoKSkgKyBMYXlvdXRTaXpl
KHBhZGRpbmdMZWZ0KCksIHBhZGRpbmdUb3AoKSkpOwotICAgIGNoaWxkQm94Lm11dGFibGVTdHls
ZSgpLnNldEhlaWdodChMZW5ndGgobmV3U2l6ZS5oZWlnaHQoKSwgRml4ZWQpKTsKLSAgICBjaGls
ZEJveC5tdXRhYmxlU3R5bGUoKS5zZXRXaWR0aChMZW5ndGgobmV3U2l6ZS53aWR0aCgpLCBGaXhl
ZCkpOwotICAgIGNoaWxkQm94LnNldE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7Ci0gICAgY2hp
bGRCb3gubGF5b3V0KCk7Ci0gICAgY2xlYXJDaGlsZE5lZWRzTGF5b3V0KCk7CiB9CiAKIGJvb2wg
UmVuZGVyRW1iZWRkZWRPYmplY3Q6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiBy
ZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9j
YXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBI
aXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCkBAIC00ODIsNyArMzk3LDYgQEAgYm9vbCBSZW5k
ZXJFbWJlZGRlZE9iamVjdDo6bG9naWNhbFNjcm9sbChTY3JvbGxMb2dpY2FsRGlyZWN0aW9uIGRp
cmVjdGlvbiwgU2Nyb2wKICAgICByZXR1cm4gc2Nyb2xsKGxvZ2ljYWxUb1BoeXNpY2FsKGRpcmVj
dGlvbiwgdHJ1ZSwgZmFsc2UpLCBncmFudWxhcml0eSwgbXVsdGlwbGllciwgc3RvcEVsZW1lbnQp
OwogfQogCi0KIGJvb2wgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OmlzSW5VbmF2YWlsYWJsZVBsdWdp
bkluZGljYXRvcihjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICByZXR1cm4g
Z2V0UmVwbGFjZW1lbnRUZXh0R2VvbWV0cnkoTGF5b3V0UG9pbnQoKSkuY29udGFpbnMoTGF5b3V0
UG9pbnQocG9pbnQpKTsKQEAgLTU0MywxMiArNDU3LDQgQEAgQ3Vyc29yRGlyZWN0aXZlIFJlbmRl
ckVtYmVkZGVkT2JqZWN0OjpnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBDdXJz
b3IKICAgICByZXR1cm4gUmVuZGVyV2lkZ2V0OjpnZXRDdXJzb3IocG9pbnQsIGN1cnNvcik7CiB9
CiAKLWJvb2wgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OmNhbkhhdmVDaGlsZHJlbigpIGNvbnN0Ci17
Ci0gICAgaWYgKGlzU25hcHNob3R0ZWRQbHVnSW4oKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKaW5kZXggOWEwMWM0OTQ3MThmNWYzZDVjM2RhNDkxM2U2
YWYzNDI5OWE4ZWVjNC4uZWI2YmQ0MzYyMWRiMmUwNmMxY2FkYWFkNzM2Y2NiZTM2Yjg5NGFiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgK
QEAgLTMxLDcgKzMxLDcgQEAgY2xhc3MgVGV4dFJ1bjsKIAogLy8gUmVuZGVyZXIgZm9yIGVtYmVk
cyBhbmQgb2JqZWN0cywgb2Z0ZW4sIGJ1dCBub3QgYWx3YXlzLCByZW5kZXJlZCB2aWEgcGx1Zy1p
bnMuCiAvLyBGb3IgZXhhbXBsZSwgPGVtYmVkIHNyYz0iZm9vLmh0bWwiPiBkb2VzIG5vdCBpbnZv
a2UgYSBwbHVnLWluLgotY2xhc3MgUmVuZGVyRW1iZWRkZWRPYmplY3QgOiBwdWJsaWMgUmVuZGVy
V2lkZ2V0IHsKK2NsYXNzIFJlbmRlckVtYmVkZGVkT2JqZWN0IGZpbmFsIDogcHVibGljIFJlbmRl
cldpZGdldCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChSZW5kZXJFbWJlZGRlZE9iamVj
dCk7CiBwdWJsaWM6CiAgICAgUmVuZGVyRW1iZWRkZWRPYmplY3QoSFRNTEZyYW1lT3duZXJFbGVt
ZW50JiwgUmVuZGVyU3R5bGUmJik7CkBAIC02MSwyMyArNjEsMTkgQEAgcHVibGljOgogCiAgICAg
Y29uc3QgU3RyaW5nJiBwbHVnaW5SZXBsYWNlbWVudFRleHRJZlVuYXZhaWxhYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV91bmF2YWlsYWJsZVBsdWdpblJlcGxhY2VtZW50VGV4dDsgfQogCi1wcm90ZWN0
ZWQ6Citwcml2YXRlOgogICAgIHZvaWQgcGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYpIGZpbmFsOwotICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5
b3V0UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExh
eW91dFBvaW50JikgZmluYWw7CiAKLSAgICBDdXJzb3JEaXJlY3RpdmUgZ2V0Q3Vyc29yKGNvbnN0
IExheW91dFBvaW50JiwgQ3Vyc29yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgQ3Vyc29yRGlyZWN0
aXZlIGdldEN1cnNvcihjb25zdCBMYXlvdXRQb2ludCYsIEN1cnNvciYpIGNvbnN0IGZpbmFsOwog
Ci1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKLSAgICB2b2lkIHdpbGxC
ZURlc3Ryb3llZCgpIG92ZXJyaWRlOworICAgIHZvaWQgbGF5b3V0KCkgZmluYWw7CisgICAgdm9p
ZCB3aWxsQmVEZXN0cm95ZWQoKSBmaW5hbDsKIAotcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckVtYmVkZGVkT2JqZWN0
IjsgfQorICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAi
UmVuZGVyRW1iZWRkZWRPYmplY3QiOyB9CiAgICAgYm9vbCBpc0VtYmVkZGVkT2JqZWN0KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBzaG93c1VuYXZhaWxhYmxlUGx1
Z2luSW5kaWNhdG9yKCkgY29uc3QgeyByZXR1cm4gaXNQbHVnaW5VbmF2YWlsYWJsZSgpICYmIG1f
aXNVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvclN0YXRlICE9IFVuYXZhaWxhYmxlUGx1Z2luSW5k
aWNhdG9yU3RhdGU6OkhpZGRlbjsgfQotICAgIHZvaWQgcGFpbnRTbmFwc2hvdEltYWdlKFBhaW50
SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgSW1hZ2UmKTsKLSAgICB2b2lkIHBhaW50Q29udGVu
dHMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBmaW5hbDsKIAogICAgIGJvb2wgcmVx
dWlyZXNMYXllcigpIGNvbnN0IGZpbmFsOwogCkBAIC05Miw5ICs4OCw2IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBnZXRSZXBsYWNlbWVudFRleHRHZW9tZXRyeShjb25zdCBMYXlvdXRQb2ludCYgYWNj
dW11bGF0ZWRPZmZzZXQsIEZsb2F0UmVjdCYgY29udGVudFJlY3QsIEZsb2F0UmVjdCYgaW5kaWNh
dG9yUmVjdCwgRmxvYXRSZWN0JiByZXBsYWNlbWVudFRleHRSZWN0LCBGbG9hdFJlY3QmIGFycm93
UmVjdCwgRm9udENhc2NhZGUmLCBUZXh0UnVuJiwgZmxvYXQmIHRleHRXaWR0aCkgY29uc3Q7CiAg
ICAgTGF5b3V0UmVjdCBnZXRSZXBsYWNlbWVudFRleHRHZW9tZXRyeShjb25zdCBMYXlvdXRQb2lu
dCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OwogCi0gICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4o
KSBjb25zdCBmaW5hbDsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZVdpZGdldCgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KLQogICAgIGJvb2wgbV9pc1BsdWdpblVuYXZhaWxhYmxlOwogICAgIGVu
dW0gY2xhc3MgVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3JTdGF0ZSB7IFVuaW5pdGlhbGl6ZWQs
IEhpZGRlbiwgVmlzaWJsZSB9OwogICAgIFVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yU3RhdGUg
bV9pc1VuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yU3RhdGUgeyBVbmF2YWlsYWJsZVBsdWdpbklu
ZGljYXRvclN0YXRlOjpVbmluaXRpYWxpemVkIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDNmMGI3OTU4ZTZjYWEyMzhkMzE1MjNk
NmQ0YWI3MWE1NTQ0OGY0ZGUuLjM2MTc4ZmNmMTg2ODJjZWQxZjg1MWE0MWIzNGRjMTc1YmRhY2Qw
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCkBAIC0yNjM4LDE4ICsyNjM4LDYgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50
c0NvbnRlbnQoUmVuZGVyTGF5ZXI6OlBhaW50ZWRDb250ZW50UmVxdWVzdCYgcmVxdWUKICAgICBy
ZXR1cm4gcGFpbnRzQ29udGVudDsKIH0KIAotc3RhdGljIGJvb2wgaXNSZXN0YXJ0ZWRQbHVnaW4o
UmVuZGVyT2JqZWN0JiByZW5kZXJlcikKLXsKLSAgICBpZiAoIWlzPFJlbmRlckVtYmVkZGVkT2Jq
ZWN0PihyZW5kZXJlcikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8mIGVsZW1l
bnQgPSBkb3duY2FzdDxSZW5kZXJFbWJlZGRlZE9iamVjdD4ocmVuZGVyZXIpLmZyYW1lT3duZXJF
bGVtZW50KCk7Ci0gICAgaWYgKCFpczxIVE1MUGx1Z0luRWxlbWVudD4oZWxlbWVudCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBkb3duY2FzdDxIVE1MUGx1Z0luRWxlbWVu
dD4oZWxlbWVudCkuaXNSZXN0YXJ0ZWRQbHVnaW4oKTsKLX0KLQogc3RhdGljIGJvb2wgaXNDb21w
b3NpdGVkUGx1Z2luKFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCiB7CiAgICAgcmV0dXJuIGlzPFJl
bmRlckVtYmVkZGVkT2JqZWN0PihyZW5kZXJlcikgJiYgZG93bmNhc3Q8UmVuZGVyRW1iZWRkZWRP
YmplY3Q+KHJlbmRlcmVyKS5hbGxvd3NBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCk7CkBAIC0yNjY2
LDcgKzI2NTQsNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6aXNTaW1wbGVDb250YWluZXJD
b21wb3NpdGluZ0xheWVyKFBhaW50ZWRDb250ZW50c0luZm8mCiAgICAgaWYgKGhhc0JhY2tpbmdT
aGFyaW5nTGF5ZXJzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChyZW5kZXJl
cigpLmlzUmVuZGVyUmVwbGFjZWQoKSAmJiAoIWlzQ29tcG9zaXRlZFBsdWdpbihyZW5kZXJlcigp
KSB8fCBpc1Jlc3RhcnRlZFBsdWdpbihyZW5kZXJlcigpKSkpCisgICAgaWYgKHJlbmRlcmVyKCku
aXNSZW5kZXJSZXBsYWNlZCgpICYmICFpc0NvbXBvc2l0ZWRQbHVnaW4ocmVuZGVyZXIoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChyZW5kZXJlcigpLmlzVGV4dENvbnRyb2wo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCA5NTMzN2E0Y2Ew
MTY0MDZiNzYxMzhkMDc1ODcyMWM4ZGNjNGNhOTc5Li5iOTE1OTIyYjIxZTk4ODMyY2NlYjUwOGEz
Y2Q5NzQ0OGFmNjI3YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
CkBAIC0yMTcsNyArMjE3LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzTWV0ZXIoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1NuYXBzaG90dGVkUGx1Z0luKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNQcm9ncmVzcygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyQnV0dG9uKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJJRnJhbWUo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDRmZTg1ODYyNWM5MjlkODBiZWNhZmVhNjZmMDY0ZTM0MjE4MTI1Y2UuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5
MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaCIKLQotI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgi
Ci0jaW5jbHVkZSAiQ3Vyc29yLmgiCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUg
IkZpbHRlci5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGll
bnQuaCIKLSNpbmNsdWRlICJGcmFtZVZpZXcuaCIKLSNpbmNsdWRlICJHcmFkaWVudC5oIgotI2lu
Y2x1ZGUgIkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlci5o
IgotI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAi
UGFpbnRJbmZvLmgiCi0jaW5jbHVkZSAiUGF0aC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VF
dmVudC5oIgotI2luY2x1ZGUgIlJlbmRlckltYWdlUmVzb3VyY2UuaCIKLSNpbmNsdWRlICJSZW5k
ZXJJdGVyYXRvci5oIgotI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKLSNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9TdGFja1N0YXRzLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJlbmRlclNuYXBzaG90
dGVkUGx1Z0luKTsKLQotUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OlJlbmRlclNuYXBzaG90dGVk
UGx1Z0luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5
bGUpCi0gICAgOiBSZW5kZXJFbWJlZGRlZE9iamVjdChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkK
LSAgICAsIG1fc25hcHNob3RSZXNvdXJjZShtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+
KCkpCi17Ci0gICAgbV9zbmFwc2hvdFJlc291cmNlLT5pbml0aWFsaXplKCp0aGlzKTsKLX0KLQot
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46On5SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbigpCi17Ci0g
ICAgLy8gRG8gbm90IGFkZCBhbnkgY29kZSBoZXJlLiBBZGQgaXQgdG8gd2lsbEJlRGVzdHJveWVk
KCkgaW5zdGVhZC4KLX0KLQotdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6d2lsbEJlRGVz
dHJveWVkKCkKLXsKLSAgICBBU1NFUlQobV9zbmFwc2hvdFJlc291cmNlKTsKLSAgICBtX3NuYXBz
aG90UmVzb3VyY2UtPnNodXRkb3duKCk7Ci0KLSAgICBSZW5kZXJFbWJlZGRlZE9iamVjdDo6d2ls
bEJlRGVzdHJveWVkKCk7Ci19Ci0KLUhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIFJlbmRlclNuYXBz
aG90dGVkUGx1Z0luOjpwbHVnSW5JbWFnZUVsZW1lbnQoKSBjb25zdAotewotICAgIHJldHVybiBk
b3duY2FzdDxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PihSZW5kZXJFbWJlZGRlZE9iamVjdDo6ZnJh
bWVPd25lckVsZW1lbnQoKSk7Ci19Ci0KLXZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46Omxh
eW91dCgpCi17Ci0gICAgU3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQb2ludCBsYXlvdXRDaGVja1Bv
aW50OwotICAgIExheW91dFNpemUgb2xkU2l6ZSA9IGNvbnRlbnRCb3hSZWN0KCkuc2l6ZSgpOwot
Ci0gICAgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OmxheW91dCgpOwotCi0gICAgTGF5b3V0U2l6ZSBu
ZXdTaXplID0gY29udGVudEJveFJlY3QoKS5zaXplKCk7Ci0gICAgaWYgKG5ld1NpemUgPT0gb2xk
U2l6ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdmlldygpLmZyYW1lVmlldygpLmFkZEVtYmVk
ZGVkT2JqZWN0VG9VcGRhdGUoKnRoaXMpOwotfQotCi12b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1
Z0luOjp1cGRhdGVTbmFwc2hvdChJbWFnZSogaW1hZ2UpCi17Ci0gICAgLy8gWmVyby1zaXplIHBs
dWdpbnMgd2lsbCBoYXZlIG5vIGltYWdlLgotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIG1fc25hcHNob3RSZXNvdXJjZS0+c2V0Q2FjaGVkSW1hZ2UobmV3IENhY2hlZElt
YWdlKGltYWdlLCBwYWdlKCkuc2Vzc2lvbklEKCksICZwYWdlKCkuY29va2llSmFyKCkpKTsKLSAg
ICByZXBhaW50KCk7Ci19Ci0KLXZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCi17Ci0g
ICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpGb3JlZ3JvdW5kICYmIHBsdWdJ
bkltYWdlRWxlbWVudCgpLmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlJlc3Rh
cnRpbmcpIHsKLSAgICAgICAgcGFpbnRTbmFwc2hvdChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsK
LSAgICB9Ci0KLSAgICBQYWludFBoYXNlIG5ld1BoYXNlID0gKHBhaW50SW5mby5waGFzZSA9PSBQ
YWludFBoYXNlOjpDaGlsZE91dGxpbmVzKSA/IFBhaW50UGhhc2U6Ok91dGxpbmUgOiBwYWludElu
Zm8ucGhhc2U7Ci0gICAgbmV3UGhhc2UgPSAobmV3UGhhc2UgPT0gUGFpbnRQaGFzZTo6Q2hpbGRC
bG9ja0JhY2tncm91bmRzKSA/IFBhaW50UGhhc2U6OkNoaWxkQmxvY2tCYWNrZ3JvdW5kIDogbmV3
UGhhc2U7Ci0KLSAgICBQYWludEluZm8gcGFpbnRJbmZvRm9yQ2hpbGQocGFpbnRJbmZvKTsKLSAg
ICBwYWludEluZm9Gb3JDaGlsZC5waGFzZSA9IG5ld1BoYXNlOwotICAgIHBhaW50SW5mb0ZvckNo
aWxkLnVwZGF0ZVN1YnRyZWVQYWludFJvb3RGb3JDaGlsZHJlbih0aGlzKTsKLQotICAgIGZvciAo
YXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxSZW5kZXJCb3g+KCp0aGlzKSkgewotICAgICAg
ICBMYXlvdXRQb2ludCBjaGlsZFBvaW50ID0gZmxpcEZvcldyaXRpbmdNb2RlRm9yQ2hpbGQoJmNo
aWxkLCBwYWludE9mZnNldCk7Ci0gICAgICAgIGlmICghY2hpbGQuaGFzU2VsZlBhaW50aW5nTGF5
ZXIoKSAmJiAhY2hpbGQuaXNGbG9hdGluZygpKQotICAgICAgICAgICAgY2hpbGQucGFpbnQocGFp
bnRJbmZvRm9yQ2hpbGQsIGNoaWxkUG9pbnQpOwotICAgIH0KLQotICAgIFJlbmRlckVtYmVkZGVk
T2JqZWN0OjpwYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKLX0KLQotdm9pZCBSZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdChQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQotewotICAgIEltYWdlKiBpbWFnZSA9IG1fc25h
cHNob3RSZXNvdXJjZS0+aW1hZ2UoKS5nZXQoKTsKLSAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5p
c051bGwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTGF5b3V0VW5pdCBjV2lkdGggPSBjb250
ZW50V2lkdGgoKTsKLSAgICBMYXlvdXRVbml0IGNIZWlnaHQgPSBjb250ZW50SGVpZ2h0KCk7Ci0g
ICAgaWYgKCFjV2lkdGggfHwgIWNIZWlnaHQpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7Ci0KLSAgICBMYXlvdXRT
aXplIGNvbnRlbnRTaXplKGNXaWR0aCwgY0hlaWdodCk7Ci0gICAgTGF5b3V0UG9pbnQgY29udGVu
dExvY2F0aW9uID0gbG9jYXRpb24oKSArIHBhaW50T2Zmc2V0OwotICAgIGNvbnRlbnRMb2NhdGlv
bi5tb3ZlKGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCksIGJvcmRlclRvcCgpICsgcGFkZGlu
Z1RvcCgpKTsKLQotICAgIExheW91dFJlY3QgcmVjdChjb250ZW50TG9jYXRpb24sIGNvbnRlbnRT
aXplKTsKLSAgICBJbnRSZWN0IGFsaWduZWRSZWN0ID0gc25hcHBlZEludFJlY3QocmVjdCk7Ci0g
ICAgaWYgKGFsaWduZWRSZWN0LndpZHRoKCkgPD0gMCB8fCBhbGlnbmVkUmVjdC5oZWlnaHQoKSA8
PSAwKQotICAgICAgICByZXR1cm47Ci0KLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBv
bGF0aW9uID0gY2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgKmltYWdlLCBpbWFn
ZSwgYWxpZ25lZFJlY3Quc2l6ZSgpKTsKLSAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGFs
aWduZWRSZWN0LCB7IGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xhdGlvbiB9KTsKLX0KLQot
Q3Vyc29yRGlyZWN0aXZlIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpnZXRDdXJzb3IoY29uc3Qg
TGF5b3V0UG9pbnQmIHBvaW50LCBDdXJzb3ImIG92ZXJyaWRlQ3Vyc29yKSBjb25zdAotewotICAg
IGlmIChwbHVnSW5JbWFnZUVsZW1lbnQoKS5kaXNwbGF5U3RhdGUoKSA8IEhUTUxQbHVnSW5FbGVt
ZW50OjpSZXN0YXJ0aW5nKSB7Ci0gICAgICAgIG92ZXJyaWRlQ3Vyc29yID0gaGFuZEN1cnNvcigp
OwotICAgICAgICByZXR1cm4gU2V0Q3Vyc29yOwotICAgIH0KLSAgICByZXR1cm4gUmVuZGVyRW1i
ZWRkZWRPYmplY3Q6OmdldEN1cnNvcihwb2ludCwgb3ZlcnJpZGVDdXJzb3IpOwotfQotCi12b2lk
IFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpoYW5kbGVFdmVudChFdmVudCYgZXZlbnQpCi17Ci0g
ICAgaWYgKCFpczxNb3VzZUV2ZW50PihldmVudCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1
dG8mIG1vdXNlRXZlbnQgPSBkb3duY2FzdDxNb3VzZUV2ZW50PihldmVudCk7Ci0KLSAgICAvLyBJ
ZiB3ZSdyZSBhIHNuYXBzaG90dGVkIHBsdWdpbiwgd2Ugd2FudCB0byBtYWtlIHN1cmUgd2UgYWN0
aXZhdGUgb24KLSAgICAvLyBjbGlja3MgZXZlbiBpZiB0aGUgcGFnZSBpcyBwcmV2ZW50aW5nIG91
ciBkZWZhdWx0IGJlaGF2aW91ci4gT3RoZXJ3aXNlCi0gICAgLy8gd2UgY2FuIG5ldmVyIHJlc3Rh
cnQuIE9uZSB3ZSBkbyByZXN0YXJ0LCB0aGVuIHRoZSBwYWdlIHdpbGwgaGFwcGlseQotICAgIC8v
IGJsb2NrIHRoZSBuZXcgcGx1Z2luIGluIHRoZSBub3JtYWwgcmVuZGVyZXIuIEFsbCB0aGlzIG1l
YW5zIHdlIGhhdmUgdG8KLSAgICAvLyBiZSBvbiB0aGUgbG9va291dCBmb3IgYSBtb3VzZXVwIGV2
ZW50IHRoYXQgY29tZXMgYWZ0ZXIgYSBtb3VzZWRvd24KLSAgICAvLyBldmVudC4gVGhlIGNvZGUg
YmVsb3cgaXMgbm90IGNvbXBsZXRlbHkgZm9vbHByb29mLCBidXQgdGhlIHdvcnN0IHRoYXQKLSAg
ICAvLyBjb3VsZCBoYXBwZW4gaXMgdGhhdCBhIHNuYXBzaG90dGVkIHBsdWdpbiByZXN0YXJ0cy4K
LQotICAgIGlmIChtb3VzZUV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdXRFdmVu
dCkKLSAgICAgICAgbV9pc1BvdGVudGlhbE1vdXNlQWN0aXZhdGlvbiA9IGZhbHNlOwotCi0gICAg
aWYgKG1vdXNlRXZlbnQuYnV0dG9uKCkgIT0gTGVmdEJ1dHRvbikKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKG1vdXNlRXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50IHx8
IChtX2lzUG90ZW50aWFsTW91c2VBY3RpdmF0aW9uICYmIG1vdXNlRXZlbnQudHlwZSgpID09IGV2
ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpKSB7Ci0gICAgICAgIG1faXNQb3RlbnRpYWxNb3VzZUFj
dGl2YXRpb24gPSBmYWxzZTsKLSAgICAgICAgYm9vbCBjbGlja1dhc09uT3ZlcmxheSA9IHBsdWdJ
bkltYWdlRWxlbWVudCgpLnBhcnRPZlNuYXBzaG90T3ZlcmxheShtb3VzZUV2ZW50LnRhcmdldCgp
KTsKLSAgICAgICAgcGx1Z0luSW1hZ2VFbGVtZW50KCkudXNlckRpZENsaWNrU25hcHNob3QobW91
c2VFdmVudCwgIWNsaWNrV2FzT25PdmVybGF5KTsKLSAgICAgICAgbW91c2VFdmVudC5zZXREZWZh
dWx0SGFuZGxlZCgpOwotICAgIH0gZWxzZSBpZiAobW91c2VFdmVudC50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLm1vdXNlZG93bkV2ZW50KSB7Ci0gICAgICAgIG1faXNQb3RlbnRpYWxNb3VzZUFjdGl2
YXRpb24gPSB0cnVlOwotICAgICAgICBtb3VzZUV2ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7Ci0g
ICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBhNDVhMzFhNTcwYjJlZmNiNDVhNmUxMGViNDY3YjhlYWIwZGM0MWYwLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oCisrKyAvZGV2L251bGwKQEAgLTEs
NjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJS
ZW5kZXJFbWJlZGRlZE9iamVjdC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ7Ci1jbGFzcyBSZW5kZXJJbWFnZVJlc291cmNlOwotCi1jbGFz
cyBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbiBmaW5hbCA6IHB1YmxpYyBSZW5kZXJFbWJlZGRlZE9i
amVjdCB7Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChSZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bik7Ci1wdWJsaWM6Ci0gICAgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oSFRNTFBsdWdJbkltYWdl
RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwotICAgIHZpcnR1YWwgflJlbmRlclNuYXBzaG90dGVk
UGx1Z0luKCk7Ci0KLSAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBwbHVnSW5JbWFnZUVsZW1l
bnQoKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZVNuYXBzaG90KEltYWdlKik7Ci0gICAgdm9pZCBo
YW5kbGVFdmVudChFdmVudCYpOwotCi1wcml2YXRlOgotICAgIHZvaWQgd2lsbEJlRGVzdHJveWVk
KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmcmFtZU93bmVyRWxlbWVudCgpIGNvbnN0ID0gZGVsZXRl
OwotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4iOyB9Ci0gICAgQ3Vyc29yRGlyZWN0aXZlIGdldEN1cnNvcihj
b25zdCBMYXlvdXRQb2ludCYsIEN1cnNvciYpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgaXNTbmFw
c2hvdHRlZFBsdWdJbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHBh
aW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgZmluYWw7Ci0gICAgYm9vbCBjYW5I
YXZlV2lkZ2V0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2b2lkIHBhaW50
U25hcHNob3QoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKLSAgICB2b2lkIGxheW91
dCgpIGZpbmFsOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckltYWdlUmVzb3VyY2U+IG1f
c25hcHNob3RSZXNvdXJjZTsKLSAgICBib29sIG1faXNQb3RlbnRpYWxNb3VzZUFjdGl2YXRpb24g
eyBmYWxzZSB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1TUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4sIGlzU25hcHNo
b3R0ZWRQbHVnSW4oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmlu
ZGV4IGI4OWFjMGQxZjI4ZWE4NmFlMjAxMzQ3NWU1ZGE0OWQ1NDU2ZDNlZGIuLjA0YTkzMGM4MGE3
Yzc4ZGMwMTA4MDUyOTE1MDMyOWYzYWEzYTEzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lLmNwcApAQCAtNDEzLDggKzQxMyw2IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBh
aW50KGNvbnN0IFJlbmRlckJveCYgYm94LCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzLCBj
b25zCiAgICAgICAgIHJldHVybiBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0
KGJveCwgcGFpbnRJbmZvLCBpbnRlZ3JhbFNuYXBwZWRSZWN0KTsKICAgICBjYXNlIFNlYXJjaEZp
ZWxkUmVzdWx0c0J1dHRvblBhcnQ6CiAgICAgICAgIHJldHVybiBwYWludFNlYXJjaEZpZWxkUmVz
dWx0c0J1dHRvbihib3gsIHBhaW50SW5mbywgaW50ZWdyYWxTbmFwcGVkUmVjdCk7Ci0gICAgY2Fz
ZSBTbmFwc2hvdHRlZFBsdWdpbk92ZXJsYXlQYXJ0OgotICAgICAgICByZXR1cm4gcGFpbnRTbmFw
c2hvdHRlZFBsdWdpbk92ZXJsYXkoYm94LCBwYWludEluZm8sIGludGVncmFsU25hcHBlZFJlY3Qp
OwogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAgIGNhc2UgSW1hZ2VDb250cm9sc0J1
dHRvblBhcnQ6CiAgICAgICAgIHJldHVybiBwYWludEltYWdlQ29udHJvbHNCdXR0b24oYm94LCBw
YWludEluZm8sIGludGVncmFsU25hcHBlZFJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuaAppbmRleCA3MWIzYjQwZThlODVjMzI4ZDBlMmQ0MTkyYWZmYjAzYTE4NWY0YzNj
Li5iZTE5OTAzZDVhYjY0NmZhZTk0MmNjMjI5ZDQxYzE0OGU4ZDRlN2Y1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaApAQCAtMzg2LDggKzM4Niw2IEBAIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYUZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXJUcmFjayhj
b25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhRnVsbFNjcmVlblZvbHVt
ZVNsaWRlclRodW1iKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0
IEludFJlY3QmKSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbmFw
c2hvdHRlZFBsdWdpbk92ZXJsYXkoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KLQogI2lmIEVOQUJMRShTRVJWSUNF
X0NPTlRST0xTKQogICAgIHZpcnR1YWwgYm9vbCBwYWludEltYWdlQ29udHJvbHNCdXR0b24oY29u
c3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0
dXJuIHRydWU7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWMuaAppbmRleCAyZGM1ZjJiMzE3OTA1OGUyZmI2M2EzYzFiNGQ5NGU3MDkyZmUyMzc2Li40ZjU3
OTY1OTM2OWVjNGI2ZTkwMzRmNzkwY2ZmMmUwMjliNWM0ZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaApAQCAtMTU2LDggKzE1Niw2IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBzdXBwb3J0c0Nsb3NlZENhcHRpb25pbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAjZW5kaWYKIAotICAgIGJvb2wgcGFpbnRTbmFwc2hvdHRlZFBsdWdpbk92ZXJsYXko
Y29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIGZp
bmFsOwotCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBMYXlvdXRTaXplIGF0
dGFjaG1lbnRJbnRyaW5zaWNTaXplKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmKSBjb25zdCBmaW5h
bDsKICAgICBpbnQgYXR0YWNobWVudEJhc2VsaW5lKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmKSBj
b25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpp
bmRleCA0ZDIwZDE3Njc4YTdlMjBkN2I3NTI0N2Q1ZWVhZDY3YTQ5Y2RmZTBiLi43NjkxYjYzM2Zj
MGY1NzQ5YTdhN2FlYWE3ZWFmNThhNzE5YjBhMTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC01OCw3ICs1OCw2IEBACiAjaW1wb3J0ICJSZW5kZXJN
ZXRlci5oIgogI2ltcG9ydCAiUmVuZGVyUHJvZ3Jlc3MuaCIKICNpbXBvcnQgIlJlbmRlclNsaWRl
ci5oIgotI2ltcG9ydCAiUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaCIKICNpbXBvcnQgIlJlbmRl
clZpZXcuaCIKICNpbXBvcnQgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIlNo
YXJlZEJ1ZmZlci5oIgpAQCAtMjEzOCw4MSArMjEzNyw2IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6
OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25z
dCBQCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNu
YXBzaG90dGVkUGx1Z2luT3ZlcmxheShjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25z
dCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYpCi17Ci0gICAgaWYgKHBhaW50
SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpCbG9ja0JhY2tncm91bmQpCi0gICAgICAgIHJldHVy
biB0cnVlOwotCi0gICAgaWYgKCFpczxSZW5kZXJCbG9jaz4ocmVuZGVyZXIpKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQotICAgIGNvbnN0IFJlbmRlckJsb2NrJiByZW5kZXJCbG9jayA9IGRvd25j
YXN0PFJlbmRlckJsb2NrPihyZW5kZXJlcik7Ci0KLSAgICBMYXlvdXRVbml0IGNvbnRlbnRXaWR0
aCA9IHJlbmRlckJsb2NrLmNvbnRlbnRXaWR0aCgpOwotICAgIExheW91dFVuaXQgY29udGVudEhl
aWdodCA9IHJlbmRlckJsb2NrLmNvbnRlbnRIZWlnaHQoKTsKLSAgICBpZiAoIWNvbnRlbnRXaWR0
aCB8fCAhY29udGVudEhlaWdodCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwotCi0gICAgTGF5b3V0U2l6
ZSBjb250ZW50U2l6ZShjb250ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHQpOwotICAgIExheW91dFBv
aW50IGNvbnRlbnRMb2NhdGlvbiA9IHJlbmRlckJsb2NrLmxvY2F0aW9uKCk7Ci0gICAgY29udGVu
dExvY2F0aW9uLm1vdmUocmVuZGVyQmxvY2suYm9yZGVyTGVmdCgpICsgcmVuZGVyQmxvY2sucGFk
ZGluZ0xlZnQoKSwgcmVuZGVyQmxvY2suYm9yZGVyVG9wKCkgKyByZW5kZXJCbG9jay5wYWRkaW5n
VG9wKCkpOwotCi0gICAgTGF5b3V0UmVjdCByZWN0KGNvbnRlbnRMb2NhdGlvbiwgY29udGVudFNp
emUpOwotICAgIEludFJlY3QgYWxpZ25lZFJlY3QgPSBzbmFwcGVkSW50UmVjdChyZWN0KTsKLSAg
ICBpZiAoYWxpZ25lZFJlY3Qud2lkdGgoKSA8PSAwIHx8IGFsaWduZWRSZWN0LmhlaWdodCgpIDw9
IDApCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gV2UgbmVlZCB0byBnZXQgdGhlIHNu
YXBzaG90IGltYWdlIGZyb20gdGhlIHBsdWdpbiBlbGVtZW50LCB3aGljaCBzaG91bGQgYmUgYXZh
aWxhYmxlCi0gICAgLy8gZnJvbSBvdXIgbm9kZS4gQXNzdW1pbmcgdGhpcyBub2RlIGlzIHRoZSBw
bHVnaW4gb3ZlcmxheSBlbGVtZW50LCB3ZSBzaG91bGQgZ2V0IHRvIHRoZQotICAgIC8vIHBsdWdp
biBpdHNlbGYgYnkgYXNraW5nIGZvciB0aGUgc2hhZG93IHJvb3QgcGFyZW50LCBhbmQgdGhlbiBp
dHMgcGFyZW50LgotCi0gICAgaWYgKCFpczxIVE1MRWxlbWVudD4oKnJlbmRlckJsb2NrLmVsZW1l
bnQoKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgSFRNTEVsZW1lbnQmIHBsdWdJbk92
ZXJsYXkgPSBkb3duY2FzdDxIVE1MRWxlbWVudD4oKnJlbmRlckJsb2NrLmVsZW1lbnQoKSk7Ci0g
ICAgRWxlbWVudCogcGFyZW50ID0gcGx1Z0luT3ZlcmxheS5wYXJlbnRPclNoYWRvd0hvc3RFbGVt
ZW50KCk7Ci0gICAgd2hpbGUgKHBhcmVudCAmJiAhaXM8SFRNTFBsdWdJbkVsZW1lbnQ+KCpwYXJl
bnQpKQotICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQo
KTsKLQotICAgIGlmICghcGFyZW50KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIEhUTUxQ
bHVnSW5FbGVtZW50JiBwbHVnSW5FbGVtZW50ID0gZG93bmNhc3Q8SFRNTFBsdWdJbkVsZW1lbnQ+
KCpwYXJlbnQpOwotICAgIGlmICghaXM8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4ocGx1Z0luRWxl
bWVudCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgSFRNTFBsdWdJbkltYWdlRWxlbWVu
dCYgcGx1Z0luSW1hZ2VFbGVtZW50ID0gZG93bmNhc3Q8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4o
cGx1Z0luRWxlbWVudCk7Ci0KLSAgICBJbWFnZSogc25hcHNob3QgPSBwbHVnSW5JbWFnZUVsZW1l
bnQuc25hcHNob3RJbWFnZSgpOwotICAgIGlmICghc25hcHNob3QpCi0gICAgICAgIHJldHVybiB0
cnVlOwotCi0gICAgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4mIHBsdWdJblJlbmRlcmVyID0gZG93
bmNhc3Q8UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4+KCpwbHVnSW5JbWFnZUVsZW1lbnQucmVuZGVy
ZXIoKSk7Ci0gICAgRmxvYXRQb2ludCBzbmFwc2hvdEFic1BvcyA9IHBsdWdJblJlbmRlcmVyLmxv
Y2FsVG9BYnNvbHV0ZSgpOwotICAgIHNuYXBzaG90QWJzUG9zLm1vdmUocGx1Z0luUmVuZGVyZXIu
Ym9yZGVyTGVmdCgpICsgcGx1Z0luUmVuZGVyZXIucGFkZGluZ0xlZnQoKSwgcGx1Z0luUmVuZGVy
ZXIuYm9yZGVyVG9wKCkgKyBwbHVnSW5SZW5kZXJlci5wYWRkaW5nVG9wKCkpOwotCi0gICAgLy8g
V2UgY291bGQgZHJhdyB0aGUgc25hcHNob3Qgd2l0aCB0aGF0IGNvb3JkaW5hdGVzLCBidXQgd2Ug
bmVlZCB0byBtYWtlIHN1cmUgdGhlcmUKLSAgICAvLyBpc24ndCBhIGNvbXBvc2l0ZWQgbGF5ZXIg
YmV0d2VlbiB1cyBhbmQgdGhlIHBsdWdJblJlbmRlcmVyLgotICAgIGZvciAoYXV0byogcmVuZGVy
Qm94ID0gJmRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIpOyByZW5kZXJCb3ggIT0gJnBsdWdJ
blJlbmRlcmVyOyByZW5kZXJCb3ggPSByZW5kZXJCb3gtPnBhcmVudEJveCgpKSB7Ci0gICAgICAg
IGlmIChyZW5kZXJCb3gtPmlzQ29tcG9zaXRlZCgpKSB7Ci0gICAgICAgICAgICBzbmFwc2hvdEFi
c1BvcyA9IC1yZW5kZXJCb3gtPmxvY2F0aW9uKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIExheW91dFNpemUgcGx1Z2luU2l6ZShwbHVnSW5SZW5kZXJlci5j
b250ZW50V2lkdGgoKSwgcGx1Z0luUmVuZGVyZXIuY29udGVudEhlaWdodCgpKTsKLSAgICBMYXlv
dXRSZWN0IHBsdWdpblJlY3Qoc25hcHNob3RBYnNQb3MsIHBsdWdpblNpemUpOwotICAgIEludFJl
Y3QgYWxpZ25lZFBsdWdpblJlY3QgPSBzbmFwcGVkSW50UmVjdChwbHVnaW5SZWN0KTsKLQotICAg
IGlmIChhbGlnbmVkUGx1Z2luUmVjdC53aWR0aCgpIDw9IDAgfHwgYWxpZ25lZFBsdWdpblJlY3Qu
aGVpZ2h0KCkgPD0gMCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBjb250ZXh0LmRyYXdJ
bWFnZSgqc25hcHNob3QsIGFsaWduZWRQbHVnaW5SZWN0KTsKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKIEludFNpemUgUmVuZGVyVGhlbWVNYWM6
OnNsaWRlclRpY2tTaXplKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAppbmRleCAwZmZiYWFlM2FhMjA4ZDYxNzU4OGZjYmM0ZjAzZTc0MTRjZDE1Nzg5Li4xY2ZhMTNh
MzE2MzY5NjI0MWI5YWY5NDYwOTBlOTY1YWQzYTg1OTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCkBAIC00MDQ0LDkgKzQwNDQsOSBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IElu
dGVybmFsczo6dW5hdmFpbGFibGVQbHVnaW5SZXBsYWNlbWVudFRleHQoRWxlbWVudCYgZWxlbWVu
dAogICAgIHJldHVybiBTdHJpbmcgeyBkb3duY2FzdDxSZW5kZXJFbWJlZGRlZE9iamVjdD4oKnJl
bmRlcmVyKS5wbHVnaW5SZXBsYWNlbWVudFRleHRJZlVuYXZhaWxhYmxlKCkgfTsKIH0KIAotYm9v
bCBJbnRlcm5hbHM6OmlzUGx1Z2luU25hcHNob3R0ZWQoRWxlbWVudCYgZWxlbWVudCkKK2Jvb2wg
SW50ZXJuYWxzOjppc1BsdWdpblNuYXBzaG90dGVkKEVsZW1lbnQmKQogewotICAgIHJldHVybiBp
czxIVE1MUGx1Z0luRWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTFBsdWdJbkVsZW1l
bnQ+KGVsZW1lbnQpLmRpc3BsYXlTdGF0ZSgpIDw9IEhUTUxQbHVnSW5FbGVtZW50OjpEaXNwbGF5
aW5nU25hcHNob3Q7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIEludGVybmFsczo6cGx1
Z2luSXNCZWxvd1NpemVUaHJlc2hvbGQoRWxlbWVudCYgZWxlbWVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQppbmRleCBmNWUy
NDMyMGVmNzA4MzVlNzFiOTFmNzAxMjY3NDk0YTVkYjMxNDVlLi4zMWU5Y2Y5MmYwMmVlMGNjZjEw
N2FmZmU1NmMwNTM0OGZiYzVjNGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Q
cm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCkBAIC0zNzMsMTkgKzM3Myw5IEBAIGJvb2wg
UGx1Z2luUHJvY2Vzczo6b3BlbkZpbGUoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgdm9pZCBtdXRlQXVkaW8odm9pZCkKLXsKLSAgICBBdWRp
b09iamVjdFByb3BlcnR5QWRkcmVzcyBwcm9wZXJ0eUFkZHJlc3MgPSB7IGtBdWRpb0hhcmR3YXJl
UHJvcGVydHlQcm9jZXNzSXNBdWRpYmxlLCBrQXVkaW9PYmplY3RQcm9wZXJ0eVNjb3BlR2xvYmFs
LCBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXIgfTsKLSAgICBVSW50MzIgcHJvcGVy
dHlEYXRhID0gMDsKLSAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb09iamVjdFNldFByb3BlcnR5
RGF0YShrQXVkaW9PYmplY3RTeXN0ZW1PYmplY3QsICZwcm9wZXJ0eUFkZHJlc3MsIDAsIDAsIHNp
emVvZihVSW50MzIpLCAmcHJvcGVydHlEYXRhKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0ID09IG5vRXJyKTsKLX0KLQogdm9pZCBQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRp
YWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzKQogewogICAgIG1fY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0ID0gV1RGTW92ZShw
YXJhbWV0ZXJzLmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdQb3J0KTsKLSAgICBpZiAocGFyYW1ldGVy
cy5wcm9jZXNzVHlwZSA9PSBQbHVnaW5Qcm9jZXNzVHlwZTo6U25hcHNob3QpCi0gICAgICAgIG11
dGVBdWRpbygpOwogCiAgICAgW05TVVJMQ2FjaGUgc2V0U2hhcmVkVVJMQ2FjaGU6YWRvcHROUyhb
W05TVVJMQ2FjaGUgYWxsb2NdCiAgICAgICAgIGluaXRXaXRoTWVtb3J5Q2FwYWNpdHk6cGx1Z2lu
TWVtb3J5Q2FjaGVTaXplCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpp
bmRleCBkZjFkOTZmYTEwMjY2OWU2NDgyYmVjNTQ5ZDY4ZWYzZjMzNWYxNjc2Li45NzA4NzY0OTVm
YjFhY2M5MDRjMWVhMjUwNjkwOTNiMjAwZWIyNTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkKQEAgLTI1MSw3ICsyNTEsNiBAQCBkZWYgdHlwZXNfdGhhdF9jYW5u
b3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViS2l0OjpNZWRpYVJlY29yZGVy
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlBERlBsdWdpbklkZW50aWZpZXInLAogICAg
ICAgICAnV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcicsCi0gICAgICAg
ICdXZWJLaXQ6OlBsdWdpblByb2Nlc3NUeXBlJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlQXVk
aW9EZXN0aW5hdGlvbklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVBdWRpb1Nl
c3Npb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSWRlbnRpZmllcics
CkBAIC02ODIsNyArNjgxLDYgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAg
ICdXZWJLaXQ6OlBhZ2VTdGF0ZSc6IFsnIlNlc3Npb25TdGF0ZS5oIiddLAogICAgICAgICAnV2Vi
S2l0OjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uJzogWyciUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbldlYktpdC5oIiddLAogICAgICAgICAnV2ViS2l0OjpQYXltZW50U2V0dXBGZWF0dXJlcyc6
IFsnIkFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXNXZWJLaXQuaCInXSwKLSAgICAgICAgJ1dl
YktpdDo6UGx1Z2luUHJvY2Vzc1R5cGUnOiBbJyJQbHVnaW5Qcm9jZXNzQXR0cmlidXRlcy5oIidd
LAogICAgICAgICAnV2ViS2l0OjpSZXNwZWN0U2VsZWN0aW9uQW5jaG9yJzogWyciR2VzdHVyZVR5
cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzJzogWyciR2VzdHVyZVR5
cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlNlbGVjdGlvblRvdWNoJzogWyciR2VzdHVyZVR5
cGVzLmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL1BsdWdp
blByb2Nlc3NBdHRyaWJ1dGVzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL1BsdWdp
blByb2Nlc3NBdHRyaWJ1dGVzLmgKaW5kZXggMjFjOTUyYTY2M2I5YzY0NmIzMDMxNjljYjZmOGJk
ZDc4OGEyNDA2ZS4uNDE4N2FhZmMzNzM0NGE2Mjg3N2JhMTFhZGY5ZDhkYTM1ZjIwNzlkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQXR0cmli
dXRlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0F0
dHJpYnV0ZXMuaApAQCAtMzAsMTEgKzMwLDYgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWVu
dW0gY2xhc3MgUGx1Z2luUHJvY2Vzc1R5cGUgOiBib29sIHsKLSAgICBOb3JtYWwsCi0gICAgU25h
cHNob3QsCi19OwotCiBlbnVtIGNsYXNzIFBsdWdpblByb2Nlc3NTYW5kYm94UG9saWN5IDogYm9v
bCB7CiAgICAgTm9ybWFsLAogICAgIFVuc2FuZGJveGVkLApAQCAtNDIsNyArMzcsNiBAQCBlbnVt
IGNsYXNzIFBsdWdpblByb2Nlc3NTYW5kYm94UG9saWN5IDogYm9vbCB7CiAKIHN0cnVjdCBQbHVn
aW5Qcm9jZXNzQXR0cmlidXRlcyB7CiAgICAgUGx1Z2luTW9kdWxlSW5mbyBtb2R1bGVJbmZvOwot
ICAgIFBsdWdpblByb2Nlc3NUeXBlIHByb2Nlc3NUeXBlOwogICAgIFBsdWdpblByb2Nlc3NTYW5k
Ym94UG9saWN5IHNhbmRib3hQb2xpY3k7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAppbmRleCAzODE2NWRlNGExMGVmYTZiMTU5MWU3MzBkZDIxNGZiNWIwZjNlNmNkLi4xZDM2
ZmU5M2FkNGI3MWEwMjE3ODk5OTY5MjZmMTVmZDI1YTVjN2IyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHAKQEAgLTQxLDcgKzQxLDYgQEAgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVyczo6UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycygpCiAKIHZvaWQgUGx1Z2lu
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IHByb2Nlc3NUeXBlOwogICAgIGVuY29kZXIgPDwgc3Vw
cG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbjsKICAgICBlbmNvZGVyIDw8IG1p
bmltdW1MaWZldGltZTsKICAgICBlbmNvZGVyIDw8IHRlcm1pbmF0aW9uVGltZW91dDsKQEAgLTUz
LDggKzUyLDYgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiBib29sIFBsdWdpblByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFBsdWdpblByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMmIHJlc3VsdCkKIHsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5wcm9jZXNzVHlwZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9u
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
Lm1pbmltdW1MaWZldGltZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVn
aW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDIxNTkx
NTg4ZTZmZWNlYzJjNTIxODBjZTNmNDViZTFlM2JmYWFiZDEuLmJmODQyZjBhNTRiOTljNTQ1ODVm
ZGIyZTc2ZmNlZDY5YTlmMDI2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC00
Nyw3ICs0Nyw2IEBAIHN0cnVjdCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAg
ICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIFBsdWdpblByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmKTsKIAotICAgIFBsdWdpblByb2Nlc3NUeXBlIHByb2Nlc3NUeXBlOwogICAg
IGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbjsKIAogICAgIFNl
Y29uZHMgbWluaW11bUxpZmV0aW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCAxZGEwMDZmZWI1ZjMyNDZjNzk3
NTYzM2E3NTFjMGJjNTlhMWNhYzhkLi5jNWVmNDQ5YmViYWVmMTU1MWVjNTU0N2ZlM2MzYjAyYTFh
OTNjYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTEyLDcgKzExMiw2IEBAIHZvaWQgV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAg
ICBlbmNvZGVyIDw8IG5vdGlmaWNhdGlvblBlcm1pc3Npb25zOwogI2VuZGlmCiAKLSAgICBlbmNv
ZGVyIDw8IHBsdWdJbkF1dG9TdGFydE9yaWdpbnM7CiAgICAgZW5jb2RlciA8PCBtZW1vcnlDYWNo
ZURpc2FibGVkOwogICAgIGVuY29kZXIgPDwgYXR0clN0eWxlRW5hYmxlZDsKIApAQCAtMTIyLDEw
ICsxMjEsNiBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBoYXNSaWNoQ29udGVudFNl
cnZpY2VzOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBl
bmNvZGVyIDw8IHBsdWdpbkxvYWRDbGllbnRQb2xpY2llczsKLSNlbmRpZgotCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgbmV0d29ya0FUU0NvbnRleHQuZ2V0
KCkpOwogI2VuZGlmCkBAIC0zNTEsOCArMzQ2LDYgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3JlYXQK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMucGx1Z0luQXV0b1N0YXJ0T3JpZ2lucykpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubWVtb3J5Q2FjaGVEaXNhYmxl
ZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMuYXR0clN0eWxlRW5hYmxlZCkpCkBAIC0zNjcsMTEgKzM2MCw2IEBAIGJvb2wgV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2Vi
UHJvY2Vzc0NyZWF0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCi0jaWYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
LnBsdWdpbkxvYWRDbGllbnRQb2xpY2llcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRp
ZgotCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBw
YXJhbWV0ZXJzLm5ldHdvcmtBVFNDb250ZXh0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
CmluZGV4IDg4YjNkNmMxMzZkZDM4YzVmYmQ3YmEzZjM1Y2E0ODBjMzU1OGFhODYuLmZjODdhMzdh
ODc0NDNkMTBmYTNmY2EyYjAxNTE1YWY3NTRhY2ZlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTE1OSw4ICsxNTks
NiBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgSGFzaE1hcDxT
dHJpbmcsIGJvb2w+IG5vdGlmaWNhdGlvblBlcm1pc3Npb25zOwogI2VuZGlmCiAKLSAgICBWZWN0
b3I8U3RyaW5nPiBwbHVnSW5BdXRvU3RhcnRPcmlnaW5zOwotCiAjaWYgRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCiAgICAgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFw
PFN0cmluZywgV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeT4+PiBwbHVnaW5Mb2FkQ2xp
ZW50UG9saWNpZXM7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
cm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oCmluZGV4IGU2MjYzNDI0NGU4MWE5ZWM1ZTc2N2Ni
NzJhZjA3MWVkZTM1ZGY5NTMuLjllYTE1ZTk5OWJjZWRmZjhhM2VjMTJmMjM2OGM4M2FhMDdhYWRj
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQ
YXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0RhdGFTdG9y
ZVBhcmFtZXRlcnMuaApAQCAtNDUsNyArNDUsNiBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0RhdGFTdG9y
ZVBhcmFtZXRlcnMgewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBtZWRpYUtleVN0b3Jh
Z2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgU3RyaW5nIGphdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBqYXZhU2NyaXB0
Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKLSAgICBIYXNoTWFwPHVuc2ln
bmVkLCBXYWxsVGltZT4gcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzOwogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHsgV2ViQ29yZTo6VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsIH07CiAgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4gZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb247CkBAIC03MSw3ICs3MCw2
IEBAIHZvaWQgV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlOwogICAgIGVuY29kZXIgPDwgamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJl
Y3Rvcnk7CiAgICAgZW5jb2RlciA8PCBqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZTsKLSAgICBlbmNvZGVyIDw8IHBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hl
czsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGVuY29kZXIgPDwg
dGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKICAgICBlbmNvZGVyIDw8IGRvbWFpbnNXaXRo
VXNlckludGVyYWN0aW9uOwpAQCAtMTM2LDExICsxMzQsNiBAQCBPcHRpb25hbDxXZWJQcm9jZXNz
RGF0YVN0b3JlUGFyYW1ldGVycz4gV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29k
ZShEZQogICAgIGlmICghamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIAotICAgIE9wdGlv
bmFsPEhhc2hNYXA8dW5zaWduZWQsIFdhbGxUaW1lPj4gcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFz
aGVzOwotICAgIGRlY29kZXIgPj4gcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzOwotICAgIGlm
ICghcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBPcHRpb25h
bDxXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlPiB0aGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlOwogICAgIGRlY29kZXIgPj4gdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZTsKQEAgLTE3MCw3ICsxNjMsNiBAQCBPcHRpb25hbDxXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1l
dGVycz4gV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZShEZQogICAgICAgICBX
VEZNb3ZlKCptZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpLAogICAgICAg
ICBXVEZNb3ZlKGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KSwKICAgICAgICAgV1RG
TW92ZSgqamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpLAot
ICAgICAgICBXVEZNb3ZlKCpwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMpLAogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgICp0aGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlLAogICAgICAgICBXVEZNb3ZlKCpkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbiks
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dAppbmRleCAwNDgxYmNjMzQyY2FjZGNlYTE4OWI5ODAwOThmOWY1YzgwNWMyMDg0
Li41MTg0MGFhOTA3NWZkYWMwN2E0ZTkxYTIzMDViZDgxYjZkYmYyM2FiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQK
QEAgLTQ1NCw3ICs0NTQsNiBAQCBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b24uY3BwCiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkuY3BwCiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5j
cHAKIAotVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuY3BwCiBVSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzTWFuYWdlci5jcHAKIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94
eS5jcHAKQEAgLTY1Niw3ICs2NTUsNiBAQCBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcAogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJOb3RpZmljYXRpb25DbGllbnQuY3BwCiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBl
cmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5jcHAKIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcAotV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVn
SW5DbGllbnQuY3BwCiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAK
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmNwcAog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCmluZGV4IDdjZjU3NzI0
ZjJhYjkzMzkwMDhkMWIyZTFkYmQyZTdhMzRkZjE5NzkuLjNhMDgzY2E0ODY0NDNiZDg4MDYzM2E1
YzI2MDc0ZTI2MmQxMTM0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0LmNwcApAQCAtNTEzLDMwICs1MTMsMjEgQEAgdm9pZCBXS0NvbnRleHRTZXRKYXZhU2Ny
aXB0R2FyYmFnZUNvbGxlY3RvclRpbWVyRW5hYmxlZChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwK
ICAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+c2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xs
ZWN0b3JUaW1lckVuYWJsZWQoZW5hYmxlKTsKIH0KIAotV0tEaWN0aW9uYXJ5UmVmIFdLQ29udGV4
dENvcHlQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYp
CitXS0RpY3Rpb25hcnlSZWYgV0tDb250ZXh0Q29weVBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hl
cyhXS0NvbnRleHRSZWYpCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6dG9J
bXBsKGNvbnRleHRSZWYpLT5wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoKS5sZWFrUmVmKCkp
OworICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFdLQ29udGV4dFNldFBsdWdJbkF1dG9T
dGFydE9yaWdpbkhhc2hlcyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tEaWN0aW9uYXJ5UmVm
IGRpY3Rpb25hcnlSZWYpCit2b2lkIFdLQ29udGV4dFNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkhh
c2hlcyhXS0NvbnRleHRSZWYsIFdLRGljdGlvbmFyeVJlZikKIHsKLSAgICBpZiAoIWRpY3Rpb25h
cnlSZWYpCi0gICAgICAgIHJldHVybjsKLSAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+
c2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKCpXZWJLaXQ6OnRvSW1wbChkaWN0aW9uYXJ5
UmVmKSk7CiB9CiAKLXZvaWQgV0tDb250ZXh0U2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luc0ZpbHRl
cmluZ091dEVudHJpZXNBZGRlZEFmdGVyVGltZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tE
aWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnlSZWYsIGRvdWJsZSB0aW1lKQordm9pZCBXS0NvbnRleHRT
ZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5zRmlsdGVyaW5nT3V0RW50cmllc0FkZGVkQWZ0ZXJUaW1l
KFdLQ29udGV4dFJlZiwgV0tEaWN0aW9uYXJ5UmVmLCBkb3VibGUpCiB7Ci0gICAgaWYgKCFkaWN0
aW9uYXJ5UmVmKQotICAgICAgICByZXR1cm47Ci0gICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJl
ZiktPnNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnNGaWx0ZXJpbmdPdXRFbnRyaWVzQWRkZWRBZnRl
clRpbWUoKldlYktpdDo6dG9JbXBsKGRpY3Rpb25hcnlSZWYpLCBXYWxsVGltZTo6ZnJvbVJhd1Nl
Y29uZHModGltZSkpOwogfQogCi12b2lkIFdLQ29udGV4dFNldFBsdWdJbkF1dG9TdGFydE9yaWdp
bnMoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLQXJyYXlSZWYgYXJyYXlSZWYpCit2b2lkIFdL
Q29udGV4dFNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnMoV0tDb250ZXh0UmVmLCBXS0FycmF5UmVm
KQogewotICAgIGlmICghYXJyYXlSZWYpCi0gICAgICAgIHJldHVybjsKLSAgICBXZWJLaXQ6OnRv
SW1wbChjb250ZXh0UmVmKS0+c2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2lucygqV2ViS2l0Ojp0b0lt
cGwoYXJyYXlSZWYpKTsKIH0KIAogdm9pZCBXS0NvbnRleHRTZXRJbnZhbGlkTWVzc2FnZUZ1bmN0
aW9uKFdLQ29udGV4dEludmFsaWRNZXNzYWdlRnVuY3Rpb24gaW52YWxpZE1lc3NhZ2VGdW5jdGlv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGU3NmUwMDc4
MGE0MTQ2NjIwNWVhMjlmNjEyMDU1M2I2YjNhNmU0NDkuLmFmNjJhY2FlOWE0ZGFmZmEwMmIyOGRk
YWM0NGY2NGI0OGQwZDNiMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcApAQCAtMjI5OCwyNCArMjI5OCw2IEBAIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25D
bGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZU5hdmlnYXRpb25DbGllCiAgICAg
ICAgICAgICBpZiAoIWFwaU5vdGlmaWNhdGlvbnMuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAg
IG1fY2xpZW50LmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbih0b0FQSSgmcGFnZSksIHRvVVJM
UmVmKHVybC5zdHJpbmcoKS5pbXBsKCkpLCB0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92
ZShhcGlMaXN0SWRlbnRpZmllcnMpKS5wdHIoKSksIHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShX
VEZNb3ZlKGFwaU5vdGlmaWNhdGlvbnMpKS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CiAgICAgICAgIH0KLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICAgICAg
dm9pZCBkZWNpZGVQb2xpY3lGb3JQbHVnaW5Mb2FkKFdlYlBhZ2VQcm94eSYgcGFnZSwgUGx1Z2lu
TW9kdWxlTG9hZFBvbGljeSBjdXJyZW50UGx1Z2luTG9hZFBvbGljeSwgQVBJOjpEaWN0aW9uYXJ5
JiBwbHVnaW5JbmZvcm1hdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQbHVnaW5Nb2R1bGVM
b2FkUG9saWN5LCBjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUK
LSAgICAgICAgewotICAgICAgICAgICAgV0tTdHJpbmdSZWYgdW5hdmFpbGFiaWxpdHlEZXNjcmlw
dGlvbk91dCA9IDA7Ci0gICAgICAgICAgICBQbHVnaW5Nb2R1bGVMb2FkUG9saWN5IGxvYWRQb2xp
Y3kgPSBjdXJyZW50UGx1Z2luTG9hZFBvbGljeTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
aWYgKG1fY2xpZW50LmRlY2lkZVBvbGljeUZvclBsdWdpbkxvYWQpCi0gICAgICAgICAgICAgICAg
bG9hZFBvbGljeSA9IHRvUGx1Z2luTW9kdWxlTG9hZFBvbGljeShtX2NsaWVudC5kZWNpZGVQb2xp
Y3lGb3JQbHVnaW5Mb2FkKHRvQVBJKCZwYWdlKSwgdG9XS1BsdWdpbkxvYWRQb2xpY3koY3VycmVu
dFBsdWdpbkxvYWRQb2xpY3kpLCB0b0FQSSgmcGx1Z2luSW5mb3JtYXRpb24pLCAmdW5hdmFpbGFi
aWxpdHlEZXNjcmlwdGlvbk91dCwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIFN0cmluZyB1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uOwotICAg
ICAgICAgICAgaWYgKHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb25PdXQpIHsKLSAgICAgICAgICAg
ICAgICBSZWZQdHI8QVBJOjpTdHJpbmc+IHdlYlVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24gPSBh
ZG9wdFJlZih0b0ltcGwodW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbk91dCkpOwotICAgICAgICAg
ICAgICAgIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24gPSB3ZWJVbmF2YWlsYWJpbGl0eURlc2Ny
aXB0aW9uLT5zdHJpbmcoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobG9hZFBvbGljeSwgdW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlv
bik7Ci0gICAgICAgIH0KLSNlbmRpZgogICAgIH07CiAKICAgICBXZWJQYWdlUHJveHkqIHdlYlBh
Z2VQcm94eSA9IHRvSW1wbChwYWdlUmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKaW5kZXggOTM2OWYwNTM4Y2U0M2MxODcwZGViNzI3ZGVj
ZDUyODRhN2RlODg4ZS4uMjEwMzVhMTNlNmNiYzRmMWFlZjdlOTdkMWVkNmIwZTY4OTZkMmI4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAK
QEAgLTEwNjYsMTQgKzEwNjYsMTMgQEAgYm9vbCBXS1ByZWZlcmVuY2VzR2V0U2Nyb2xsaW5nUGVy
Zm9ybWFuY2VMb2dnaW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmUKICAgICByZXR1
cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5h
YmxlZCgpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFi
bGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCkKK3ZvaWQg
V0tQcmVmZXJlbmNlc1NldFBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQoV0tQcmVmZXJlbmNlc1Jl
ZiwgYm9vbCkKIHsKLSAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRQbHVnSW5TbmFwc2hv
dHRpbmdFbmFibGVkKGVuYWJsZWQpOwogfQogCiBib29sIFdLUHJlZmVyZW5jZXNHZXRQbHVnSW5T
bmFwc2hvdHRpbmdFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpCiB7Ci0g
ICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnBsdWdJblNuYXBzaG90dGluZ0VuYWJs
ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgV0tQcmVmZXJlbmNlc1NldFBsdWdp
blNhbmRib3hQcm9maWxlc0VuYWJsZWRGb3JBbGxQbHVnaW5zKFdLUHJlZmVyZW5jZXNSZWYgcHJl
ZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCkKQEAgLTEwODksMzQgKzEwODgsMzEgQEAgYm9vbCBX
S1ByZWZlcmVuY2VzR2V0UGx1Z2luU2FuZGJveFByb2ZpbGVzRW5hYmxlZEZvckFsbFBsdWdpbnMo
V0tQcmVmZXJlbmNlc1JlZgogICAgIHJldHVybiB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5leHBl
cmltZW50YWxQbHVnSW5TYW5kYm94UHJvZmlsZXNFbmFibGVkKCk7CiB9CiAKLXZvaWQgV0tQcmVm
ZXJlbmNlc1NldFNuYXBzaG90QWxsUGx1Z0lucyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2Vz
UmVmLCBib29sIGVuYWJsZWQpCit2b2lkIFdLUHJlZmVyZW5jZXNTZXRTbmFwc2hvdEFsbFBsdWdJ
bnMoV0tQcmVmZXJlbmNlc1JlZiwgYm9vbCkKIHsKLSAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYp
LT5zZXRTbmFwc2hvdEFsbFBsdWdJbnMoZW5hYmxlZCk7CiB9CiAKLWJvb2wgV0tQcmVmZXJlbmNl
c0dldFNuYXBzaG90QWxsUGx1Z0lucyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQor
Ym9vbCBXS1ByZWZlcmVuY2VzR2V0U25hcHNob3RBbGxQbHVnSW5zKFdLUHJlZmVyZW5jZXNSZWYp
CiB7Ci0gICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNuYXBzaG90QWxsUGx1Z0lu
cygpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0QXV0b3N0
YXJ0T3JpZ2luUGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZl
cmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCit2b2lkIFdLUHJlZmVyZW5jZXNTZXRBdXRvc3RhcnRP
cmlnaW5QbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYsIGJvb2wpCiB7
Ci0gICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0QXV0b3N0YXJ0T3JpZ2luUGx1Z0luU25h
cHNob3R0aW5nRW5hYmxlZChlbmFibGVkKTsKIH0KIAogYm9vbCBXS1ByZWZlcmVuY2VzR2V0QXV0
b3N0YXJ0T3JpZ2luUGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHBy
ZWZlcmVuY2VzUmVmKQogewotICAgIHJldHVybiB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5hdXRv
c3RhcnRPcmlnaW5QbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKCk7CisgICAgcmV0dXJuIGZhbHNl
OwogfQogCiB2b2lkIFdLUHJlZmVyZW5jZXNTZXRQcmltYXJ5UGx1Z0luU25hcHNob3REZXRlY3Rp
b25FbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCkK
IHsKLSAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRQcmltYXJ5UGx1Z0luU25hcHNob3RE
ZXRlY3Rpb25FbmFibGVkKGVuYWJsZWQpOwogfQogCiBib29sIFdLUHJlZmVyZW5jZXNHZXRQcmlt
YXJ5UGx1Z0luU25hcHNob3REZXRlY3Rpb25FbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVy
ZW5jZXNSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnByaW1hcnlQ
bHVnSW5TbmFwc2hvdERldGVjdGlvbkVuYWJsZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAK
IHZvaWQgV0tQcmVmZXJlbmNlc1NldFBERlBsdWdpbkVuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBw
cmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQppbmRleCBkM2EwNzE3
YTZiZjJkYzk3NGM2ZTM5MDljYjEzODBmZjBmNmVlOTYyLi5hZTJhMTg4MjQ2NDA1MGVmMWUxNzk5
Mzc1NGIyMmIzNDMxMDgzNjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQpAQCAtNDIsMjcgKzQyLDE3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkdMQmxvY2tsaXN0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAKLWJvb2wgV0tDb250ZXh0SXNQbHVnSW5VcGRhdGVBdmFpbGFibGUoV0tDb250ZXh0
UmVmIGNvbnRleHRSZWYsIFdLU3RyaW5nUmVmIHBsdWdJbkJ1bmRsZUlkZW50aWZpZXJSZWYpCiti
b29sIFdLQ29udGV4dElzUGx1Z0luVXBkYXRlQXZhaWxhYmxlKFdLQ29udGV4dFJlZiwgV0tTdHJp
bmdSZWYpCiB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gZmFsc2U7Ci0j
ZWxzZQotICAgIHJldHVybiBXZWJDb3JlOjpQbHVnaW5CbG9ja2xpc3Q6OmlzUGx1Z2luVXBkYXRl
QXZhaWxhYmxlKChfX2JyaWRnZSBOU1N0cmluZyAqKWFkb3B0Q0YoV0tTdHJpbmdDb3B5Q0ZTdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGx1Z0luQnVuZGxlSWRlbnRpZmllclJlZikpLmdldCgp
KTsKLSNlbmRpZgogfQogCi12b2lkIFdLQ29udGV4dFNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3ko
V0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGx1Z2luTG9hZENsaWVudFBvbGljeSBwb2xpY3ks
IFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGJ1bmRsZUlkZW50aWZpZXIsIFdLU3RyaW5n
UmVmIHZlcnNpb25TdHJpbmcpCit2b2lkIFdLQ29udGV4dFNldFBsdWdpbkxvYWRDbGllbnRQb2xp
Y3koV0tDb250ZXh0UmVmLCBXS1BsdWdpbkxvYWRDbGllbnRQb2xpY3ksIFdLU3RyaW5nUmVmLCBX
S1N0cmluZ1JlZiwgV0tTdHJpbmdSZWYpCiB7Ci0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCi0gICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldFBsdWdpbkxvYWRDbGllbnRQ
b2xpY3koV2ViS2l0Ojp0b1BsdWdpbkxvYWRDbGllbnRQb2xpY3kocG9saWN5KSwgV2ViS2l0Ojp0
b1dURlN0cmluZyhob3N0KSwgV2ViS2l0Ojp0b1dURlN0cmluZyhidW5kbGVJZGVudGlmaWVyKSwg
V2ViS2l0Ojp0b1dURlN0cmluZyh2ZXJzaW9uU3RyaW5nKSk7Ci0jZW5kaWYKIH0KIAotdm9pZCBX
S0NvbnRleHRDbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKFdLQ29udGV4dFJlZiBjb250ZXh0UmVm
KQordm9pZCBXS0NvbnRleHRDbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKFdLQ29udGV4dFJlZikK
IHsKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBXZWJLaXQ6OnRvSW1wbChj
b250ZXh0UmVmKS0+Y2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpOwotI2VuZGlmCiB9CiAKIFdL
RGljdGlvbmFyeVJlZiBXS0NvbnRleHRDb3B5UGx1Z0luSW5mb0ZvckJ1bmRsZUlkZW50aWZpZXIo
V0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLU3RyaW5nUmVmIHBsdWdJbkJ1bmRsZUlkZW50aWZp
ZXJSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZl
cmVuY2VzLm1tCmluZGV4IDMyMDVlMjg3Mzc3NGQ5NzkxZTVjY2E3N2IyYjA2M2JjMzcxZGE3ZjUu
Ljk5YzQ0YzViMTk1ZGZiMGUxYWJiMDA1MjlmNTQyNGI4NzA4YTBmNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCkBAIC0xMTA0
LDEyICsxMTA0LDExIEBAIC0gKEJPT0wpX2Nvb2tpZUVuYWJsZWQKIAogLSAodm9pZClfc2V0UGx1
Z0luU25hcHNob3R0aW5nRW5hYmxlZDooQk9PTCllbmFibGVkCiB7Ci0gICAgX3ByZWZlcmVuY2Vz
LT5zZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKGVuYWJsZWQpOwogfQogCiAtIChCT09MKV9w
bHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkCiB7Ci0gICAgcmV0dXJuIF9wcmVmZXJlbmNlcy0+cGx1
Z0luU25hcHNob3R0aW5nRW5hYmxlZCgpOworICAgIHJldHVybiBOTzsKIH0KIAogLSAodm9pZClf
c2V0Vmlld0dlc3R1cmVEZWJ1Z2dpbmdFbmFibGVkOihCT09MKWVuYWJsZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggMDM1
OTFlOGE4ZmE5MDQyMTIwOWI5MzkwZDRmM2Q4ZTA3NjgwZGY2MS4uNGYzNmUyMzI2NDM3MTAyM2Qz
OGYyODM4MTA3NTFiY2JhOTk4NTlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTI0OSw5NiArMjQ5LDE2IEBAIC0gKHZv
aWQpX3NldE9iamVjdHNGb3JCdW5kbGVQYXJhbWV0ZXJzV2l0aERpY3Rpb25hcnk6KE5TRGljdGlv
bmFyeSAqKWRpY3Rpb25hcnkKIAogI2lmICFUQVJHRVRfT1NfSVBIT05FCiAKLSNpZiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKLQotc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0
cmluZywgSGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+Pj4g
dG9QbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXNIYXNoTWFwKE5TRGljdGlvbmFyeSogZGljdGlvbmFy
eSkKLXsKLSAgICBfX2Jsb2NrIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgSGFzaE1h
cDxTdHJpbmcsIFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+Pj4gcGx1Z2luTG9hZENs
aWVudFBvbGljaWVzOwotICAgIFtkaWN0aW9uYXJ5IGVudW1lcmF0ZUtleXNBbmRPYmplY3RzVXNp
bmdCbG9jazpeKGlkIG5zSG9zdCwgaWQgbnNQb2xpY2llc0Zvckhvc3QsIEJPT0wgKnN0b3ApIHsK
LSAgICAgICAgaWYgKCFbbnNIb3N0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsK
LSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBsdWdpbnMsICJfcmVzZXRQbHVnaW5Mb2Fk
Q2xpZW50UG9saWNpZXMgd2FzIGNhbGxlZCB3aXRoIGRpY3Rpb25hcnkgaW4gd3JvbmcgZm9ybWF0
Iik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFbbnNQb2xp
Y2llc0Zvckhvc3QgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pIHsKLSAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBsdWdpbnMsICJfcmVzZXRQbHVnaW5Mb2FkQ2xpZW50
UG9saWNpZXMgd2FzIGNhbGxlZCB3aXRoIGRpY3Rpb25hcnkgaW4gd3JvbmcgZm9ybWF0Iik7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBTdHJpbmcgaG9zdCA9IChO
U1N0cmluZyAqKW5zSG9zdDsKLSAgICAgICAgX19ibG9jayBIYXNoTWFwPFN0cmluZywgSGFzaE1h
cDxTdHJpbmcsIFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+PiBwb2xpY2llc0Zvckhv
c3Q7Ci0gICAgICAgIFtuc1BvbGljaWVzRm9ySG9zdCBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1Vz
aW5nQmxvY2s6XihpZCBuc0lkZW50aWZpZXIsIGlkIG5zVmVyc2lvbnNUb1BvbGljaWVzLCBCT09M
ICpzdG9wKSB7Ci0gICAgICAgICAgICBpZiAoIVtuc0lkZW50aWZpZXIgaXNLaW5kT2ZDbGFzczpb
TlNTdHJpbmcgY2xhc3NdXSkgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBs
dWdpbnMsICJfcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMgd2FzIGNhbGxlZCB3aXRoIGRp
Y3Rpb25hcnkgaW4gd3JvbmcgZm9ybWF0Iik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFbbnNWZXJzaW9uc1RvUG9saWNpZXMgaXNLaW5k
T2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihQbHVnaW5zLCAiX3Jlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzIHdhcyBj
YWxsZWQgd2l0aCBkaWN0aW9uYXJ5IGluIHdyb25nIGZvcm1hdCIpOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgU3RyaW5nIGJ1bmRsZUlkZW50
aWZpZXIgPSAoTlNTdHJpbmcgKiluc0lkZW50aWZpZXI7Ci0gICAgICAgICAgICBfX2Jsb2NrIEhh
c2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5PiB2ZXJzaW9uc1Rv
UG9saWNpZXM7Ci0gICAgICAgICAgICBbbnNWZXJzaW9uc1RvUG9saWNpZXMgZW51bWVyYXRlS2V5
c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oaWQgbnNWZXJzaW9uLCBpZCBuc1BvbGljeSwgQk9PTCAq
c3RvcCkgewotICAgICAgICAgICAgICAgIGlmICghW25zVmVyc2lvbiBpc0tpbmRPZkNsYXNzOltO
U1N0cmluZyBjbGFzc11dKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KFBsdWdpbnMsICJfcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMgd2FzIGNhbGxlZCB3aXRo
IGRpY3Rpb25hcnkgaW4gd3JvbmcgZm9ybWF0Iik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCFbbnNQb2xpY3kgaXNL
aW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkgewotICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihQbHVnaW5zLCAiX3Jlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzIHdh
cyBjYWxsZWQgd2l0aCBkaWN0aW9uYXJ5IGluIHdyb25nIGZvcm1hdCIpOwotICAgICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHVuc2ln
bmVkIHBvbGljeSA9ICgoTlNOdW1iZXIgKiluc1BvbGljeSkudW5zaWduZWRJbnRWYWx1ZTsKLSAg
ICAgICAgICAgICAgICBpZiAoIVdURjo6aXNWYWxpZEVudW08V2ViQ29yZTo6UGx1Z2luTG9hZENs
aWVudFBvbGljeT4ocG9saWN5KSkgewotICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihQbHVnaW5zLCAiX3Jlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzIHdhcyBjYWxsZWQg
d2l0aCBkaWN0aW9uYXJ5IGluIHdyb25nIGZvcm1hdCIpOwotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFN0cmluZyB2ZXJzaW9u
ID0gKE5TU3RyaW5nICopbnNWZXJzaW9uOwotICAgICAgICAgICAgICAgIHZlcnNpb25zVG9Qb2xp
Y2llcy5hZGQodmVyc2lvbiwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBv
bGljeT4ocG9saWN5KSk7Ci0gICAgICAgICAgICB9XTsKLSAgICAgICAgICAgIGlmICghdmVyc2lv
bnNUb1BvbGljaWVzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBwb2xpY2llc0Zvckhvc3Qu
YWRkKGJ1bmRsZUlkZW50aWZpZXIsIFdURk1vdmUodmVyc2lvbnNUb1BvbGljaWVzKSk7Ci0gICAg
ICAgIH1dOwotICAgICAgICBpZiAoIXBvbGljaWVzRm9ySG9zdC5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICBwbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMuYWRkKGhvc3QsIFdURk1vdmUocG9saWNpZXNG
b3JIb3N0KSk7Ci0gICAgfV07Ci0gICAgcmV0dXJuIHBsdWdpbkxvYWRDbGllbnRQb2xpY2llczsK
LX0KLQotc3RhdGljIE5TRGljdGlvbmFyeSAqcG9saWNpZXNIYXNoTWFwVG9EaWN0aW9uYXJ5KGNv
bnN0IEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIFdlYkNv
cmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+Pj4mIG1hcCkKLXsKLSAgICBhdXRvIHBvbGljaWVz
ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6
bWFwLnNpemUoKV0pOwotICAgIGZvciAoYXV0byYgaG9zdFBhaXIgOiBtYXApIHsKLSAgICAgICAg
TlNTdHJpbmcgKmhvc3QgPSBob3N0UGFpci5rZXk7Ci0gICAgICAgIHBvbGljaWVzLmdldCgpW2hv
c3RdID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNp
dHk6aG9zdFBhaXIudmFsdWUuc2l6ZSgpXSkuZ2V0KCk7Ci0gICAgICAgIGZvciAoYXV0byYgYnVu
ZGxlSWRlbnRpZmllclBhaXIgOiBob3N0UGFpci52YWx1ZSkgewotICAgICAgICAgICAgTlNTdHJp
bmcgKmJ1bmRsZXJJZGVudGlmaWVyID0gYnVuZGxlSWRlbnRpZmllclBhaXIua2V5OwotICAgICAg
ICAgICAgcG9saWNpZXMuZ2V0KClbaG9zdF1bYnVuZGxlcklkZW50aWZpZXJdID0gYWRvcHROUyhb
W05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6YnVuZGxlSWRlbnRp
ZmllclBhaXIudmFsdWUuc2l6ZSgpXSkuZ2V0KCk7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHZl
cnNpb25QYWlyIDogYnVuZGxlSWRlbnRpZmllclBhaXIudmFsdWUpIHsKLSAgICAgICAgICAgICAg
ICBOU1N0cmluZyAqdmVyc2lvbiA9IHZlcnNpb25QYWlyLmtleTsKLSAgICAgICAgICAgICAgICBh
dXRvIHBvbGljeVZhbHVlID0gc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxXZWJD
b3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5Pj4odmVyc2lvblBhaXIudmFsdWUpOwotICAgICAg
ICAgICAgICAgIHBvbGljaWVzLmdldCgpW2hvc3RdW2J1bmRsZXJJZGVudGlmaWVyXVt2ZXJzaW9u
XSA9IGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhVbnNpZ25lZEludDpwb2xpY3lW
YWx1ZV0pLmdldCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVy
biBwb2xpY2llcy5hdXRvcmVsZWFzZSgpOwotfQotCi0jZW5kaWYKLQogLSAodm9pZClfcmVzZXRQ
bHVnaW5Mb2FkQ2xpZW50UG9saWNpZXM6KE5TRGljdGlvbmFyeSAqKXBvbGljaWVzCiB7Ci0jaWYg
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgX3Byb2Nlc3NQb29sLT5yZXNldFBsdWdp
bkxvYWRDbGllbnRQb2xpY2llcyh0b1BsdWdpbkxvYWRDbGllbnRQb2xpY2llc0hhc2hNYXAocG9s
aWNpZXMpKTsKLSNlbmRpZgogfQogCiAtKE5TRGljdGlvbmFyeSAqKV9wbHVnaW5Mb2FkQ2xpZW50
UG9saWNpZXMKIHsKLSAgICBhdXRvJiBtYXAgPSBfcHJvY2Vzc1Bvb2wtPnBsdWdpbkxvYWRDbGll
bnRQb2xpY2llcygpOwotICAgIHJldHVybiBwb2xpY2llc0hhc2hNYXBUb0RpY3Rpb25hcnkobWFw
KTsKKyAgICByZXR1cm4gQHsgfTsKIH0KLSNlbmRpZgogCisjZW5kaWYKIAogLSAoaWQgPF9XS0Rv
d25sb2FkRGVsZWdhdGU+KV9kb3dubG9hZERlbGVnYXRlCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCmluZGV4IDU3NGMzNDJmMzNkY2YwNmNj
YWRhMTFmMGJkMmQwOTdlYzVhOTU3YTMuLjA0MmU3ODg1NDExZDQxNzdmY2U5YzY3NWVkOGQ0OGYx
MmJiM2Q0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5oCkBAIC0xMzQsOSArMTM0LDYgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShNQUMp
CiAgICAgICAgIHZvaWQgd2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJikgY29u
c3QgZmluYWw7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJQYWdlUHJv
eHkmLCBjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9h
ZFBvbGljeSk+JiYpIGNvbnN0IGZpbmFsOwotICAgICAgICBib29sIGRpZEZhaWxUb0luaXRpYWxp
emVQbHVnSW4oV2ViUGFnZVByb3h5JiwgQVBJOjpEaWN0aW9uYXJ5JikgZmluYWw7Ci0gICAgICAg
IGJvb2wgZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpE
aWN0aW9uYXJ5JikgZmluYWw7Ci0gICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUGx1Z2luTG9h
ZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6UGx1Z2luTW9kdWxlTG9hZFBvbGljeSwg
QVBJOjpEaWN0aW9uYXJ5JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OlBsdWdpbk1v
ZHVsZUxvYWRQb2xpY3ksIGNvbnN0IFdURjo6U3RyaW5nJik+JiYpIGZpbmFsOwogICAgICAgICBi
b29sIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChXZWJQYWdlUHJveHkmLCBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtKiwgY29uc3QgVmVjdG9yPFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4mKSBm
aW5hbDsKICNlbmRpZgogICAgICAgICBib29sIHdpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShX
ZWJQYWdlUHJveHkmLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwgYm9vbCBpbkJhY2tGb3J3YXJk
Q2FjaGUpIGZpbmFsOwpAQCAtMjU1LDkgKzI1Miw2IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wg
d2ViVmlld1dlYkdMTG9hZFBvbGljeUZvclVSTCA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1Jl
c29sdmVXZWJHTExvYWRQb2xpY3lGb3JVUkwgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdCYWNr
Rm9yd2FyZExpc3RJdGVtQWRkZWRSZW1vdmVkIDogMTsKLSAgICAgICAgYm9vbCB3ZWJWaWV3RGlk
RmFpbFRvSW5pdGlhbGl6ZVBsdWdJbldpdGhJbmZvIDogMTsKLSAgICAgICAgYm9vbCB3ZWJWaWV3
RGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb25XaXRoSW5mbyA6IDE7Ci0gICAgICAgIGJvb2wg
d2ViVmlld0RlY2lkZVBvbGljeUZvclBsdWdpbkxvYWRXaXRoQ3VycmVudFBvbGljeVBsdWdpbklu
Zm9Db21wbGV0aW9uSGFuZGxlciA6IDE7CiAjZW5kaWYKICAgICAgICAgYm9vbCB3ZWJWaWV3V2ls
bEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtSW5CYWNrRm9yd2FyZENhY2hlIDogMTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IGM0
MTAyZmY1MmI5NWUzMjM0NTkwY2U5ZTAzMTc2NTI5NWU5NmJkYTcuLmU3Y2IwODNjNGZmMmIzMzkw
OTNkNzE5NDgzYjU5NGM4MDVmZDU0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTIwMywxMCArMjAzLDcgQEAgdm9pZCBOYXZp
Z2F0aW9uU3RhdGU6OnNldE5hdmlnYXRpb25EZWxlZ2F0ZShpZCA8V0tOYXZpZ2F0aW9uRGVsZWdh
dGU+IGRlbGVnYXRlKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld1dlYkdMTG9hZFBvbGljeUZvclVSTCA9IFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OndlYkdMTG9hZFBvbGljeUZvclVSTDpkZWNp
c2lvbkhhbmRsZXI6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdS
ZXNvbHZlV2ViR0xMb2FkUG9saWN5Rm9yVVJMID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVzb2x2ZVdlYkdMTG9hZFBvbGljeUZvclVSTDpkZWNpc2lv
bkhhbmRsZXI6KV07Ci0gICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRG
YWlsVG9Jbml0aWFsaXplUGx1Z0luV2l0aEluZm8gPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z0luV2l0aEluZm86
KV07Ci0gICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRCbG9ja0luc2Vj
dXJlUGx1Z2luVmVyc2lvbldpdGhJbmZvID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoX3dlYlZpZXc6ZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb25XaXRoSW5mbzop
XTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0JhY2tGb3J3YXJkTGlz
dEl0ZW1BZGRlZFJlbW92ZWQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihfd2ViVmlldzpiYWNrRm9yd2FyZExpc3RJdGVtQWRkZWQ6cmVtb3ZlZDopXTsKLSAgICBtX25h
dmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RlY2lkZVBvbGljeUZvclBsdWdpbkxvYWRX
aXRoQ3VycmVudFBvbGljeVBsdWdpbkluZm9Db21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRlY2lkZVBvbGljeUZvclBsdWdp
bkxvYWRXaXRoQ3VycmVudFBvbGljeTpwbHVnaW5JbmZvOmNvbXBsZXRpb25IYW5kbGVyOildOwog
I2VuZGlmCiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdXaWxsR29Ub0Jh
Y2tGb3J3YXJkTGlzdEl0ZW1JbkJhY2tGb3J3YXJkQ2FjaGUgPSBbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06
aW5QYWdlQ2FjaGU6KV07CiAjaWYgSEFWRShBUFBfU1NPKQpAQCAtMzI1LDg2ICszMjIsNiBAQCBO
YXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6On5OYXZpZ2F0aW9uQ2xpZW50KCkKIH0K
IAogI2lmIFBMQVRGT1JNKE1BQykKLWJvb2wgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjpkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z0luKFdlYlBhZ2VQcm94eSYsIEFQSTo6RGljdGlv
bmFyeSYgaW5mbykKLXsKLSAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRl
bGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdJbldpdGhJbmZvKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUg
PSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKLSAgICBpZiAo
IW5hdmlnYXRpb25EZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIFso
aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJW
aWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z0lu
V2l0aEluZm86d3JhcHBlcihpbmZvKV07Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgTmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRCbG9ja0luc2VjdXJlUGx1Z2luVmVy
c2lvbihXZWJQYWdlUHJveHkmLCBBUEk6OkRpY3Rpb25hcnkmIGluZm8pCi17Ci0gICAgaWYgKCFt
X25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEJs
b2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uV2l0aEluZm8pCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZp
Z2F0aW9uRGVsZWdhdGUuZ2V0KCk7Ci0gICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIFsoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0
ZT4pbmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmll
dyBkaWRCbG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbldpdGhJbmZvOndyYXBwZXIoaW5mbyldOwot
ICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgV2ViS2l0OjpQbHVnaW5Nb2R1bGVMb2FkUG9s
aWN5IHBsdWdpbk1vZHVsZUxvYWRQb2xpY3koX1dLUGx1Z2luTW9kdWxlTG9hZFBvbGljeSBwb2xp
Y3kpCi17Ci0gICAgc3dpdGNoIChwb2xpY3kpIHsKLSAgICBjYXNlIF9XS1BsdWdpbk1vZHVsZUxv
YWRQb2xpY3lMb2FkTm9ybWFsbHk6Ci0gICAgICAgIHJldHVybiBXZWJLaXQ6OlBsdWdpbk1vZHVs
ZUxvYWROb3JtYWxseTsKLSAgICBjYXNlIF9XS1BsdWdpbk1vZHVsZUxvYWRQb2xpY3lMb2FkVW5z
YW5kYm94ZWQ6Ci0gICAgICAgIHJldHVybiBXZWJLaXQ6OlBsdWdpbk1vZHVsZUxvYWRVbnNhbmRi
b3hlZDsKLSAgICBjYXNlIF9XS1BsdWdpbk1vZHVsZUxvYWRQb2xpY3lCbG9ja2VkRm9yU2VjdXJp
dHk6Ci0gICAgICAgIHJldHVybiBXZWJLaXQ6OlBsdWdpbk1vZHVsZUJsb2NrZWRGb3JTZWN1cml0
eTsKLSAgICBjYXNlIF9XS1BsdWdpbk1vZHVsZUxvYWRQb2xpY3lCbG9ja2VkRm9yQ29tcGF0aWJp
bGl0eToKLSAgICAgICAgcmV0dXJuIFdlYktpdDo6UGx1Z2luTW9kdWxlQmxvY2tlZEZvckNvbXBh
dGliaWxpdHk7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBX
ZWJLaXQ6OlBsdWdpbk1vZHVsZUxvYWROb3JtYWxseTsKLX0KLQotc3RhdGljIF9XS1BsdWdpbk1v
ZHVsZUxvYWRQb2xpY3kgd2tQbHVnaW5Nb2R1bGVMb2FkUG9saWN5KFdlYktpdDo6UGx1Z2luTW9k
dWxlTG9hZFBvbGljeSBwb2xpY3kpCi17Ci0gICAgc3dpdGNoIChwb2xpY3kpIHsKLSAgICBjYXNl
IFdlYktpdDo6UGx1Z2luTW9kdWxlTG9hZE5vcm1hbGx5OgotICAgICAgICByZXR1cm4gX1dLUGx1
Z2luTW9kdWxlTG9hZFBvbGljeUxvYWROb3JtYWxseTsKLSAgICBjYXNlIFdlYktpdDo6UGx1Z2lu
TW9kdWxlTG9hZFVuc2FuZGJveGVkOgotICAgICAgICByZXR1cm4gX1dLUGx1Z2luTW9kdWxlTG9h
ZFBvbGljeUxvYWRVbnNhbmRib3hlZDsKLSAgICBjYXNlIFdlYktpdDo6UGx1Z2luTW9kdWxlQmxv
Y2tlZEZvclNlY3VyaXR5OgotICAgICAgICByZXR1cm4gX1dLUGx1Z2luTW9kdWxlTG9hZFBvbGlj
eUJsb2NrZWRGb3JTZWN1cml0eTsKLSAgICBjYXNlIFdlYktpdDo6UGx1Z2luTW9kdWxlQmxvY2tl
ZEZvckNvbXBhdGliaWxpdHk6Ci0gICAgICAgIHJldHVybiBfV0tQbHVnaW5Nb2R1bGVMb2FkUG9s
aWN5QmxvY2tlZEZvckNvbXBhdGliaWxpdHk7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBfV0tQbHVnaW5Nb2R1bGVMb2FkUG9saWN5TG9hZE5vcm1hbGx5Owot
fQotCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5
Rm9yUGx1Z2luTG9hZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6UGx1Z2luTW9kdWxl
TG9hZFBvbGljeSBjdXJyZW50UGx1Z2luTG9hZFBvbGljeSwgQVBJOjpEaWN0aW9uYXJ5JiBwbHVn
aW5JbmZvcm1hdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OlBsdWdpbk1vZHVs
ZUxvYWRQb2xpY3ksIGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAg
IGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZp
ZXdEZWNpZGVQb2xpY3lGb3JQbHVnaW5Mb2FkV2l0aEN1cnJlbnRQb2xpY3lQbHVnaW5JbmZvQ29t
cGxldGlvbkhhbmRsZXIpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY3VycmVudFBsdWdp
bkxvYWRQb2xpY3ksIHsgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0
byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxl
Z2F0ZS5nZXQoKTsKLSAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkgewotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihjdXJyZW50UGx1Z2luTG9hZFBvbGljeSwgeyB9KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENo
ZWNrZXI6OmNyZWF0ZShuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihfd2ViVmll
dzpkZWNpZGVQb2xpY3lGb3JQbHVnaW5Mb2FkV2l0aEN1cnJlbnRQb2xpY3k6cGx1Z2luSW5mbzpj
b21wbGV0aW9uSGFuZGxlcjopKTsKLSAgICBbKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZh
dGU+KW5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZp
ZXcgZGVjaWRlUG9saWN5Rm9yUGx1Z2luTG9hZFdpdGhDdXJyZW50UG9saWN5OndrUGx1Z2luTW9k
dWxlTG9hZFBvbGljeShjdXJyZW50UGx1Z2luTG9hZFBvbGljeSkgcGx1Z2luSW5mbzp3cmFwcGVy
KHBsdWdpbkluZm9ybWF0aW9uKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZN
b3ZlKGNoZWNrZXIpXShfV0tQbHVnaW5Nb2R1bGVMb2FkUG9saWN5IHBvbGljeSwgTlNTdHJpbmcg
KnVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24pIG11dGFibGUgewotICAgICAgICBpZiAoY2hlY2tl
ci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwotICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihwbHVnaW5Nb2R1bGVMb2FkUG9saWN5KHBvbGljeSksIHVuYXZhaWxh
YmlsaXR5RGVzY3JpcHRpb24pOwotICAgIH0pLmdldCgpXTsKLX0KLQogaW5saW5lIFdlYkNvcmU6
OldlYkdMTG9hZFBvbGljeSB0b1dlYkNvcmVXZWJHTExvYWRQb2xpY3koX1dLV2ViR0xMb2FkUG9s
aWN5IHBvbGljeSkKIHsKICAgICBzd2l0Y2ggKHBvbGljeSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBjZmYwY2JhYzMxYzI3ZTIyOTgxOWY3
ZTQ1YmM3YWMyZTI1NzI2Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFBy
b3ZpZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEyLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUGx1Z0luQXV0b1N0YXJ0UHJvdmlk
ZXIuaCIKLQotI2luY2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiQVBJRGljdGlvbmFyeS5o
IgotI2luY2x1ZGUgIldlYkNvbnRleHRDbGllbnQuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzTWVz
c2FnZXMuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotI2luY2x1ZGUgPHd0Zi9XYWxs
VGltZS5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwot
Ci1zdGF0aWMgY29uc3QgU2Vjb25kcyBwbHVnSW5BdXRvU3RhcnRFeHBpcmF0aW9uVGltZVRocmVz
aG9sZCB7IDMwICogMjQgKiA2MCAqIDYwIH07Ci0KLVBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjpQ
bHVnSW5BdXRvU3RhcnRQcm92aWRlcihXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCi0gICAg
OiBtX3Byb2Nlc3NQb29sKHByb2Nlc3NQb29sKQotewotICAgIG1faGFzaFRvT3JpZ2luTWFwLmFk
ZChQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBIYXNoVG9PcmlnaW5NYXAoKSk7
Ci0gICAgbV9hdXRvU3RhcnRUYWJsZS5hZGQoUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSwgQXV0b1N0YXJ0VGFibGUoKSk7Ci19Ci0KLXN0YXRpYyBXYWxsVGltZSBleHBpcmF0aW9u
VGltZUZyb21Ob3coKQotewotICAgIHJldHVybiBXYWxsVGltZTo6bm93KCkgKyBwbHVnSW5BdXRv
U3RhcnRFeHBpcmF0aW9uVGltZVRocmVzaG9sZDsKLX0KLQotdm9pZCBQbHVnSW5BdXRvU3RhcnRQ
cm92aWRlcjo6YWRkQXV0b1N0YXJ0T3JpZ2luSGFzaChjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4s
IHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKLXsK
LSAgICBhdXRvIHNlc3Npb25JdGVyYXRvciA9IG1faGFzaFRvT3JpZ2luTWFwLmZpbmQoc2Vzc2lv
bklEKTsKLSAgICBpZiAoc2Vzc2lvbkl0ZXJhdG9yID09IG1faGFzaFRvT3JpZ2luTWFwLmVuZCgp
KSB7Ci0gICAgICAgIGlmIChtX2hhc2hUb09yaWdpbk1hcC5nZXQoUEFMOjpTZXNzaW9uSUQ6OmRl
ZmF1bHRTZXNzaW9uSUQoKSkuY29udGFpbnMocGx1Z0luT3JpZ2luSGFzaCkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIHNlc3Npb25JdGVyYXRvciA9IG1faGFzaFRvT3JpZ2luTWFwLnNl
dChzZXNzaW9uSUQsIEhhc2hUb09yaWdpbk1hcCgpKS5pdGVyYXRvcjsKLSAgICB9IGVsc2UgaWYg
KHNlc3Npb25JdGVyYXRvci0+dmFsdWUuY29udGFpbnMocGx1Z0luT3JpZ2luSGFzaCkgfHwgbV9o
YXNoVG9PcmlnaW5NYXAuZ2V0KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpLmNv
bnRhaW5zKHBsdWdJbk9yaWdpbkhhc2gpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBdXRvU3Rh
cnRUYWJsZTo6aXRlcmF0b3IgaXQgPSBtX2F1dG9TdGFydFRhYmxlLmFkZChzZXNzaW9uSUQsIEF1
dG9TdGFydFRhYmxlKCkpLml0ZXJhdG9yLT52YWx1ZS5hZGQocGFnZU9yaWdpbiwgUGx1Z0luQXV0
b1N0YXJ0T3JpZ2luTWFwKCkpLml0ZXJhdG9yOwotCi0gICAgV2FsbFRpbWUgZXhwaXJhdGlvblRp
bWUgPSBleHBpcmF0aW9uVGltZUZyb21Ob3coKTsKLSAgICBpdC0+dmFsdWUuc2V0KHBsdWdJbk9y
aWdpbkhhc2gsIGV4cGlyYXRpb25UaW1lKTsKLSAgICBzZXNzaW9uSXRlcmF0b3ItPnZhbHVlLnNl
dChwbHVnSW5PcmlnaW5IYXNoLCBwYWdlT3JpZ2luKTsKLQotICAgIG1fcHJvY2Vzc1Bvb2wtPnNl
bmRUb0FsbFByb2Nlc3Nlc0ZvclNlc3Npb24oTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRpZEFkZFBs
dWdJbkF1dG9TdGFydE9yaWdpbkhhc2gocGx1Z0luT3JpZ2luSGFzaCwgZXhwaXJhdGlvblRpbWUp
LCBzZXNzaW9uSUQpOwotCi0gICAgaWYgKCFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAg
ICAgbV9wcm9jZXNzUG9vbC0+Y2xpZW50KCkucGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzQ2hh
bmdlZChtX3Byb2Nlc3NQb29sKTsKLX0KLQotUGx1Z0luQXV0b1N0YXJ0T3JpZ2luTWFwIFBsdWdJ
bkF1dG9TdGFydFByb3ZpZGVyOjphdXRvU3RhcnRPcmlnaW5IYXNoZXNDb3B5KFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkgY29uc3QKLXsKLSAgICBQbHVnSW5BdXRvU3RhcnRPcmlnaW5NYXAgbWFw
OwotCi0gICAgYXV0byBpdCA9IG1fYXV0b1N0YXJ0VGFibGUuZmluZChzZXNzaW9uSUQpOwotICAg
IGlmIChpdCAhPSBtX2F1dG9TdGFydFRhYmxlLmVuZCgpKSB7Ci0gICAgICAgIGZvciAoY29uc3Qg
YXV0byYga2V5T3JpZ2luSGFzaCA6IGl0LT52YWx1ZSkgewotICAgICAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBvcmlnaW5IYXNoIDoga2V5T3JpZ2luSGFzaC52YWx1ZSkKLSAgICAgICAgICAgICAg
ICBtYXAuc2V0KG9yaWdpbkhhc2gua2V5LCBvcmlnaW5IYXNoLnZhbHVlKTsKLSAgICAgICAgfQot
ICAgIH0KLSAgICByZXR1cm4gbWFwOwotfQotCi1SZWY8QVBJOjpEaWN0aW9uYXJ5PiBQbHVnSW5B
dXRvU3RhcnRQcm92aWRlcjo6YXV0b1N0YXJ0T3JpZ2luc1RhYmxlQ29weSgpIGNvbnN0Ci17Ci0g
ICAgQVBJOjpEaWN0aW9uYXJ5OjpNYXBUeXBlIG1hcDsKLQotICAgIFdhbGxUaW1lIG5vdyA9IFdh
bGxUaW1lOjpub3coKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHN0cmluZ09yaWdpbkhhc2ggOiBt
X2F1dG9TdGFydFRhYmxlLmdldChQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSkg
ewotICAgICAgICBBUEk6OkRpY3Rpb25hcnk6Ok1hcFR5cGUgaGFzaE1hcDsKLSAgICAgICAgZm9y
IChjb25zdCBhdXRvJiBvcmlnaW5IYXNoIDogc3RyaW5nT3JpZ2luSGFzaC52YWx1ZSkgewotICAg
ICAgICAgICAgaWYgKG5vdyA8PSBvcmlnaW5IYXNoLnZhbHVlKQotICAgICAgICAgICAgICAgIGhh
c2hNYXAuc2V0KFN0cmluZzo6bnVtYmVyKG9yaWdpbkhhc2gua2V5KSwgQVBJOjpEb3VibGU6OmNy
ZWF0ZShvcmlnaW5IYXNoLnZhbHVlLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpKSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKGhhc2hNYXAuc2l6ZSgpKQotICAgICAgICAgICAgbWFwLnNl
dChzdHJpbmdPcmlnaW5IYXNoLmtleSwgQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZSho
YXNoTWFwKSkpOwotICAgIH0KLQotICAgIHJldHVybiBBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShX
VEZNb3ZlKG1hcCkpOwotfQotCi12b2lkIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjpzZXRBdXRv
U3RhcnRPcmlnaW5zVGFibGUoQVBJOjpEaWN0aW9uYXJ5JiB0YWJsZSkKLXsKLSAgICBzZXRBdXRv
U3RhcnRPcmlnaW5zVGFibGVXaXRoSXRlbXNQYXNzaW5nVGVzdCh0YWJsZSwgW10oV2FsbFRpbWUp
IHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgUGx1Z0luQXV0b1N0
YXJ0UHJvdmlkZXI6OnNldEF1dG9TdGFydE9yaWdpbnNGaWx0ZXJpbmdPdXRFbnRyaWVzQWRkZWRB
ZnRlclRpbWUoQVBJOjpEaWN0aW9uYXJ5JiB0YWJsZSwgV2FsbFRpbWUgdGltZSkKLXsKLSAgICBX
YWxsVGltZSBhZGp1c3RlZFRpbWVzdGFtcCA9IHRpbWUgKyBwbHVnSW5BdXRvU3RhcnRFeHBpcmF0
aW9uVGltZVRocmVzaG9sZDsKLSAgICBzZXRBdXRvU3RhcnRPcmlnaW5zVGFibGVXaXRoSXRlbXNQ
YXNzaW5nVGVzdCh0YWJsZSwgW2FkanVzdGVkVGltZXN0YW1wXShXYWxsVGltZSBleHBpcmF0aW9u
VGltZXN0YW1wKSB7Ci0gICAgICAgIHJldHVybiBhZGp1c3RlZFRpbWVzdGFtcCA+IGV4cGlyYXRp
b25UaW1lc3RhbXA7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6
OnNldEF1dG9TdGFydE9yaWdpbnNUYWJsZVdpdGhJdGVtc1Bhc3NpbmdUZXN0KEFQSTo6RGljdGlv
bmFyeSYgdGFibGUsIFdURjo6RnVuY3Rpb248Ym9vbChXYWxsVGltZSBleHBpcmF0aW9uVGltZXN0
YW1wKT4mJiBpc0V4cGlyYXRpb25UaW1lQWNjZXB0YWJsZSkKLXsKLSAgICBBU1NFUlQoaXNFeHBp
cmF0aW9uVGltZUFjY2VwdGFibGUpOwotCi0gICAgbV9oYXNoVG9PcmlnaW5NYXAuY2xlYXIoKTsK
LSAgICBtX2F1dG9TdGFydFRhYmxlLmNsZWFyKCk7Ci0gICAgSGFzaE1hcDx1bnNpZ25lZCwgV2Fs
bFRpbWU+IGhhc2hNYXA7Ci0gICAgYXV0byYgaGFzaFRvT3JpZ2luTWFwID0gbV9oYXNoVG9Pcmln
aW5NYXAuYWRkKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIEhhc2hUb09yaWdp
bk1hcCgpKS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgQXV0b1N0YXJ0VGFibGUmIGFzdCA9IG1fYXV0
b1N0YXJ0VGFibGUuYWRkKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIEF1dG9T
dGFydFRhYmxlKCkpLml0ZXJhdG9yLT52YWx1ZTsKLQotICAgIGZvciAoYXV0byYgc3RyRGljdCA6
IHRhYmxlLm1hcCgpKSB7Ci0gICAgICAgIFBsdWdJbkF1dG9TdGFydE9yaWdpbk1hcCBoYXNoZXM7
Ci0gICAgICAgIGZvciAoYXV0byYgaGFzaFRpbWUgOiBzdGF0aWNfY2FzdDxBUEk6OkRpY3Rpb25h
cnkqPihzdHJEaWN0LnZhbHVlLmdldCgpKS0+bWFwKCkpIHsKLSAgICAgICAgICAgIGJvb2wgb2s7
Ci0gICAgICAgICAgICB1bnNpZ25lZCBoYXNoID0gaGFzaFRpbWUua2V5LnRvVUludCgmb2spOwot
ICAgICAgICAgICAgaWYgKCFvaykKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAg
ICAgICAgaWYgKGhhc2hUaW1lLnZhbHVlLT50eXBlKCkgIT0gQVBJOjpEb3VibGU6OkFQSVR5cGUp
Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIFdhbGxUaW1lIGV4cGly
YXRpb25UaW1lID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRpY19jYXN0PEFQSTo6RG91
YmxlKj4oaGFzaFRpbWUudmFsdWUuZ2V0KCkpLT52YWx1ZSgpKTsKLSAgICAgICAgICAgIGlmICgh
aXNFeHBpcmF0aW9uVGltZUFjY2VwdGFibGUoZXhwaXJhdGlvblRpbWUpKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBoYXNoZXMuc2V0KGhhc2gsIGV4cGlyYXRpb25U
aW1lKTsKLSAgICAgICAgICAgIGhhc2hNYXAuc2V0KGhhc2gsIGV4cGlyYXRpb25UaW1lKTsKLSAg
ICAgICAgICAgIGhhc2hUb09yaWdpbk1hcC5zZXQoaGFzaCwgc3RyRGljdC5rZXkpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKCFoYXNoZXMuaXNFbXB0eSgpKQotICAgICAgICAgICAgYXN0LnNl
dChzdHJEaWN0LmtleSwgaGFzaGVzKTsKLSAgICB9Ci0KLSAgICBtX3Byb2Nlc3NQb29sLT5zZW5k
VG9BbGxQcm9jZXNzZXNGb3JTZXNzaW9uKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZXNldFBsdWdJ
bkF1dG9TdGFydE9yaWdpbkhhc2hlcyhoYXNoTWFwKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRT
ZXNzaW9uSUQoKSk7Ci19Ci0KLXZvaWQgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OnNldEF1dG9T
dGFydE9yaWdpbnNBcnJheShBUEk6OkFycmF5JiBvcmlnaW5MaXN0KQotewotICAgIG1fYXV0b1N0
YXJ0T3JpZ2lucy5jbGVhcigpOwotICAgIGZvciAoYXV0byBzdHJpbmcgOiBvcmlnaW5MaXN0LmVs
ZW1lbnRzT2ZUeXBlPEFQSTo6U3RyaW5nPigpKQotICAgICAgICBtX2F1dG9TdGFydE9yaWdpbnMu
YXBwZW5kKHN0cmluZy0+c3RyaW5nKCkpOwotfQotCi12b2lkIFBsdWdJbkF1dG9TdGFydFByb3Zp
ZGVyOjpkaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gs
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSAgICBhdXRvIHNlc3Npb25JdGVyYXRvciA9
IG1faGFzaFRvT3JpZ2luTWFwLmZpbmQoc2Vzc2lvbklEKTsKLSAgICBIYXNoVG9PcmlnaW5NYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0OwotICAgIGJvb2wgY29udGFpbnMgPSBmYWxzZTsKLSAgICBpZiAo
c2Vzc2lvbkl0ZXJhdG9yICE9IG1faGFzaFRvT3JpZ2luTWFwLmVuZCgpKSB7Ci0gICAgICAgIGl0
ID0gc2Vzc2lvbkl0ZXJhdG9yLT52YWx1ZS5maW5kKHBsdWdJbk9yaWdpbkhhc2gpOwotICAgICAg
ICBjb250YWlucyA9IGl0ICE9IHNlc3Npb25JdGVyYXRvci0+dmFsdWUuZW5kKCk7Ci0gICAgfQot
ICAgIGlmICghY29udGFpbnMpIHsKLSAgICAgICAgc2Vzc2lvbkl0ZXJhdG9yID0gbV9oYXNoVG9P
cmlnaW5NYXAuZmluZChQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKLSAgICAg
ICAgaXQgPSBzZXNzaW9uSXRlcmF0b3ItPnZhbHVlLmZpbmQocGx1Z0luT3JpZ2luSGFzaCk7Ci0g
ICAgICAgIGlmIChpdCA9PSBzZXNzaW9uSXRlcmF0b3ItPnZhbHVlLmVuZCgpKSB7Ci0gICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIFdhbGxUaW1lIG5ld0V4cGlyYXRpb25UaW1lID0gZXhwaXJhdGlvblRp
bWVGcm9tTm93KCk7Ci0gICAgbV9hdXRvU3RhcnRUYWJsZS5hZGQoc2Vzc2lvbklELCBBdXRvU3Rh
cnRUYWJsZSgpKS5pdGVyYXRvci0+dmFsdWUuYWRkKGl0LT52YWx1ZSwgUGx1Z0luQXV0b1N0YXJ0
T3JpZ2luTWFwKCkpLml0ZXJhdG9yLT52YWx1ZS5zZXQocGx1Z0luT3JpZ2luSGFzaCwgbmV3RXhw
aXJhdGlvblRpbWUpOwotICAgIG1fcHJvY2Vzc1Bvb2wtPnNlbmRUb0FsbFByb2Nlc3Nlc0ZvclNl
c3Npb24oTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhh
c2gocGx1Z0luT3JpZ2luSGFzaCwgbmV3RXhwaXJhdGlvblRpbWUpLCBzZXNzaW9uSUQpOwotICAg
IG1fcHJvY2Vzc1Bvb2wtPmNsaWVudCgpLnBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlc0NoYW5n
ZWQobV9wcm9jZXNzUG9vbCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRl
ci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92
aWRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDJkMTZlZGQ4ODgxYzNmYjQ5
ZWY3OWE2NmQ2NjU1ZTkwMzQzNDUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0
YXJ0UHJvdmlkZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyX2gKLSNkZWZpbmUgUGx1Z0luQXV0b1N0
YXJ0UHJvdmlkZXJfaAotCi0jaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgotI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL1dhbGxU
aW1lLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgQVBJIHsKLWNsYXNzIEFycmF5OwotY2xhc3Mg
RGljdGlvbmFyeTsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlByb2Nlc3NQ
b29sOwotCi10eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQsIFdhbGxUaW1lPiBQbHVnSW5BdXRvU3Rh
cnRPcmlnaW5NYXA7Ci10eXBlZGVmIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFBsdWdJbkF1dG9T
dGFydE9yaWdpbk1hcD4gU2Vzc2lvblBsdWdJbkF1dG9TdGFydE9yaWdpbk1hcDsKLXR5cGVkZWYg
VmVjdG9yPFN0cmluZz4gUGx1Z0luQXV0b1N0YXJ0T3JpZ2luczsKLQotY2xhc3MgUGx1Z0luQXV0
b1N0YXJ0UHJvdmlkZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBsdWdJbkF1dG9TdGFy
dFByb3ZpZGVyKTsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBQbHVnSW5BdXRvU3RhcnRQcm92aWRl
cihXZWJQcm9jZXNzUG9vbCopOwotCi0gICAgdm9pZCBhZGRBdXRvU3RhcnRPcmlnaW5IYXNoKGNv
bnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgdW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgUEFMOjpT
ZXNzaW9uSUQpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbih1bnNpZ25lZCBw
bHVnSW5PcmlnaW5IYXNoLCBQQUw6OlNlc3Npb25JRCk7Ci0KLSAgICBSZWY8QVBJOjpEaWN0aW9u
YXJ5PiBhdXRvU3RhcnRPcmlnaW5zVGFibGVDb3B5KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRBdXRv
U3RhcnRPcmlnaW5zVGFibGUoQVBJOjpEaWN0aW9uYXJ5Jik7Ci0gICAgdm9pZCBzZXRBdXRvU3Rh
cnRPcmlnaW5zRmlsdGVyaW5nT3V0RW50cmllc0FkZGVkQWZ0ZXJUaW1lKEFQSTo6RGljdGlvbmFy
eSYsIFdhbGxUaW1lKTsKLSAgICB2b2lkIHNldEF1dG9TdGFydE9yaWdpbnNBcnJheShBUEk6OkFy
cmF5Jik7Ci0KLSAgICBQbHVnSW5BdXRvU3RhcnRPcmlnaW5NYXAgYXV0b1N0YXJ0T3JpZ2luSGFz
aGVzQ29weShQQUw6OlNlc3Npb25JRCkgY29uc3Q7Ci0gICAgY29uc3QgUGx1Z0luQXV0b1N0YXJ0
T3JpZ2lucyYgYXV0b1N0YXJ0T3JpZ2lucygpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b1N0YXJ0T3Jp
Z2luczsgfQotCi0gICAgdXNpbmcgSGFzaFRvT3JpZ2luTWFwID0gSGFzaE1hcDx1bnNpZ25lZCwg
U3RyaW5nPjsKLSAgICB1c2luZyBQZXJTZXNzaW9uSGFzaFRvT3JpZ2luTWFwID0gSGFzaE1hcDxQ
QUw6OlNlc3Npb25JRCwgSGFzaFRvT3JpZ2luTWFwPjsKLSAgICB1c2luZyBBdXRvU3RhcnRUYWJs
ZSA9IEhhc2hNYXA8U3RyaW5nLCBQbHVnSW5BdXRvU3RhcnRPcmlnaW5NYXAsIEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD47Ci0KLXByaXZhdGU6Ci0gICAgV2ViUHJvY2Vzc1Bvb2wqIG1fcHJvY2Vz
c1Bvb2w7Ci0KLSAgICB2b2lkIHNldEF1dG9TdGFydE9yaWdpbnNUYWJsZVdpdGhJdGVtc1Bhc3Np
bmdUZXN0KEFQSTo6RGljdGlvbmFyeSYsIFdURjo6RnVuY3Rpb248Ym9vbChXYWxsVGltZSBleHBp
cmF0aW9uVGltZXN0YW1wKT4mJik7Ci0KLSAgICB0eXBlZGVmIEhhc2hNYXA8UEFMOjpTZXNzaW9u
SUQsIEF1dG9TdGFydFRhYmxlPiBTZXNzaW9uQXV0b1N0YXJ0VGFibGU7Ci0gICAgU2Vzc2lvbkF1
dG9TdGFydFRhYmxlIG1fYXV0b1N0YXJ0VGFibGU7Ci0KLSAgICBQZXJTZXNzaW9uSGFzaFRvT3Jp
Z2luTWFwIG1faGFzaFRvT3JpZ2luTWFwOwotCi0gICAgUGx1Z0luQXV0b1N0YXJ0T3JpZ2lucyBt
X2F1dG9TdGFydE9yaWdpbnM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8qIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAKaW5kZXggZmI3
MjJiYzVhZGZiY2UyOTYyMjhmNzA1OTJhMjJiZTkyZWM5MGRiZi4uZmNkNWUzMzA2MThmY2YzY2Zi
NDgxNjY5YmUyMzZmMWQ2YWJlY2QyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAKQEAgLTUxLDE0ICs1MSwx
MyBAQCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6UGx1Z2luUHJvY2Vzc01hbmFnZXIoKQogewogfQog
Ci11aW50NjRfdCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6cGx1Z2luUHJvY2Vzc1Rva2VuKGNvbnN0
IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbk1vZHVsZUluZm8sIFBsdWdpblByb2Nlc3NUeXBlIHBs
dWdpblByb2Nlc3NUeXBlLCBQbHVnaW5Qcm9jZXNzU2FuZGJveFBvbGljeSBwbHVnaW5Qcm9jZXNz
U2FuZGJveFBvbGljeSkKK3VpbnQ2NF90IFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpwbHVnaW5Qcm9j
ZXNzVG9rZW4oY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luTW9kdWxlSW5mbywgUGx1Z2lu
UHJvY2Vzc1NhbmRib3hQb2xpY3kgcGx1Z2luUHJvY2Vzc1NhbmRib3hQb2xpY3kpCiB7CiAgICAg
Ly8gU2VlIGlmIHdlIGtub3cgdGhpcyB0b2tlbiBhbHJlYWR5LgogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9wbHVnaW5Qcm9jZXNzVG9rZW5zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNv
bnN0IFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzID0gbV9wbHVnaW5Qcm9jZXNz
VG9rZW5zW2ldLmZpcnN0OwogCiAgICAgICAgIGlmIChhdHRyaWJ1dGVzLm1vZHVsZUluZm8ucGF0
aCA9PSBwbHVnaW5Nb2R1bGVJbmZvLnBhdGgKLSAgICAgICAgICAgICYmIGF0dHJpYnV0ZXMucHJv
Y2Vzc1R5cGUgPT0gcGx1Z2luUHJvY2Vzc1R5cGUKICAgICAgICAgICAgICYmIGF0dHJpYnV0ZXMu
c2FuZGJveFBvbGljeSA9PSBwbHVnaW5Qcm9jZXNzU2FuZGJveFBvbGljeSkKICAgICAgICAgICAg
IHJldHVybiBtX3BsdWdpblByb2Nlc3NUb2tlbnNbaV0uc2Vjb25kOwogICAgIH0KQEAgLTczLDcg
KzcyLDYgQEAgdWludDY0X3QgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnBsdWdpblByb2Nlc3NUb2tl
bihjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4KIAogICAgIFBsdWdpblByb2Nlc3NBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXM7CiAgICAgYXR0cmlidXRlcy5tb2R1bGVJbmZvID0gcGx1Z2luTW9k
dWxlSW5mbzsKLSAgICBhdHRyaWJ1dGVzLnByb2Nlc3NUeXBlID0gcGx1Z2luUHJvY2Vzc1R5cGU7
CiAgICAgYXR0cmlidXRlcy5zYW5kYm94UG9saWN5ID0gcGx1Z2luUHJvY2Vzc1NhbmRib3hQb2xp
Y3k7CiAKICAgICBtX3BsdWdpblByb2Nlc3NUb2tlbnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKFdU
Rk1vdmUoYXR0cmlidXRlcyksIHRva2VuKSk7CkBAIC0xMDUsNyArMTAzLDcgQEAgdm9pZCBQbHVn
aW5Qcm9jZXNzTWFuYWdlcjo6cmVtb3ZlUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NQ
cm94eSogcGx1Z2luUHIKIAogdm9pZCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6ZmV0Y2hXZWJzaXRl
RGF0YShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4sIE9wdGlvblNldDxXZWJzaXRlRGF0
YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMsIFdURjo6RnVuY3Rpb248dm9pZCAoVmVjdG9yPFN0
cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8gdG9rZW4gPSBwbHVnaW5Q
cm9jZXNzVG9rZW4ocGx1Z2luLCBQbHVnaW5Qcm9jZXNzVHlwZTo6Tm9ybWFsLCBQbHVnaW5Qcm9j
ZXNzU2FuZGJveFBvbGljeTo6Tm9ybWFsKTsKKyAgICBhdXRvIHRva2VuID0gcGx1Z2luUHJvY2Vz
c1Rva2VuKHBsdWdpbiwgUGx1Z2luUHJvY2Vzc1NhbmRib3hQb2xpY3k6Ok5vcm1hbCk7CiAgICAg
YXV0byBwbHVnaW5Qcm9jZXNzID0gZmV0Y2hPcHRpb25zLmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0
Y2hPcHRpb246OkRvTm90Q3JlYXRlUHJvY2Vzc2VzKSA/IGdldFBsdWdpblByb2Nlc3ModG9rZW4p
IDogZ2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKHRva2VuKTsKICAgICBpZiAoIXBsdWdpblByb2Nl
c3MpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKQEAgLTExNywxMyArMTE1LDEz
IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OmZldGNoV2Vic2l0ZURhdGEoY29uc3QgUGx1
Z2luTW9kdWxlSW5mbyYgcGx1Z2luLCBPcHRpCiAKIHZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6
OmRlbGV0ZVdlYnNpdGVEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgV2FsbFRp
bWUgbW9kaWZpZWRTaW5jZSwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2VzcyA9IGdldE9yQ3Jl
YXRlUGx1Z2luUHJvY2VzcyhwbHVnaW5Qcm9jZXNzVG9rZW4ocGx1Z2luLCBQbHVnaW5Qcm9jZXNz
VHlwZTo6Tm9ybWFsLCBQbHVnaW5Qcm9jZXNzU2FuZGJveFBvbGljeTo6Tm9ybWFsKSk7CisgICAg
UGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzID0gZ2V0T3JDcmVhdGVQbHVnaW5Qcm9j
ZXNzKHBsdWdpblByb2Nlc3NUb2tlbihwbHVnaW4sIFBsdWdpblByb2Nlc3NTYW5kYm94UG9saWN5
OjpOb3JtYWwpKTsKICAgICBwbHVnaW5Qcm9jZXNzLT5kZWxldGVXZWJzaXRlRGF0YShtb2RpZmll
ZFNpbmNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgUGx1Z2luUHJv
Y2Vzc01hbmFnZXI6OmRlbGV0ZVdlYnNpdGVEYXRhRm9ySG9zdE5hbWVzKGNvbnN0IFBsdWdpbk1v
ZHVsZUluZm8mIHBsdWdpbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3ROYW1lcyxXVEY6OkZ1
bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUGx1Z2luUHJvY2Vz
c1Byb3h5KiBwbHVnaW5Qcm9jZXNzID0gZ2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKHBsdWdpblBy
b2Nlc3NUb2tlbihwbHVnaW4sIFBsdWdpblByb2Nlc3NUeXBlOjpOb3JtYWwsIFBsdWdpblByb2Nl
c3NTYW5kYm94UG9saWN5OjpOb3JtYWwpKTsKKyAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdp
blByb2Nlc3MgPSBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MocGx1Z2luUHJvY2Vzc1Rva2VuKHBs
dWdpbiwgUGx1Z2luUHJvY2Vzc1NhbmRib3hQb2xpY3k6Ok5vcm1hbCkpOwogICAgIHBsdWdpblBy
b2Nlc3MtPmRlbGV0ZVdlYnNpdGVEYXRhRm9ySG9zdE5hbWVzKGhvc3ROYW1lcywgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgKaW5kZXggNWQ4ODVlYTE1ODgzZGNk
YjY0YTIwYTZjNzhiZDJlNTZjZWY4Y2JkNS4uMmUwZGJiMDAyZWIzZWYzMjgwNmMyZGFiYjUzMjg1
NjQyMGZiY2Y1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBQbHVnaW5Q
cm9jZXNzTWFuYWdlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBsdWdpblByb2Nlc3NNYW5hZ2Vy
JiBzaW5nbGV0b24oKTsKIAotICAgIHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbihjb25zdCBQ
bHVnaW5Nb2R1bGVJbmZvJiwgUGx1Z2luUHJvY2Vzc1R5cGUsIFBsdWdpblByb2Nlc3NTYW5kYm94
UG9saWN5KTsKKyAgICB1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4oY29uc3QgUGx1Z2luTW9k
dWxlSW5mbyYsIFBsdWdpblByb2Nlc3NTYW5kYm94UG9saWN5KTsKIAogICAgIGJvb2wgZ2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBs
eSYmKTsKICAgICB2b2lkIHJlbW92ZVBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzUHJv
eHkqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyY2NhNmQ5OGNkYThhMjlkZTJkYjU5NzlkM2VhNTQ4NmNm
MDZhNDFhLi4xYTcwZjYzMmFmYzNmNmQ1NGY1NTFhNDNiYjAwMzNlMTE4YTQyMzc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJv
eHkuY3BwCkBAIC0yMzUsMTQgKzIzNSw4IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRG
aW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0aW9uOjpJCiAgICAg
bV9jb25uZWN0aW9uLT5vcGVuKCk7CiAgICAgCiAgICAgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycyBwYXJhbWV0ZXJzOwotICAgIHBhcmFtZXRlcnMucHJvY2Vzc1R5cGUgPSBtX3BsdWdp
blByb2Nlc3NBdHRyaWJ1dGVzLnByb2Nlc3NUeXBlOwotICAgIGlmIChwYXJhbWV0ZXJzLnByb2Nl
c3NUeXBlID09IFBsdWdpblByb2Nlc3NUeXBlOjpTbmFwc2hvdCkgewotICAgICAgICBwYXJhbWV0
ZXJzLm1pbmltdW1MaWZldGltZSA9IHNuYXBzaG90dGluZ01pbmltdW1MaWZldGltZTsKLSAgICAg
ICAgcGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQgPSBzbmFwc2hvdHRpbmdTaHV0ZG93blRp
bWVvdXQ7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcGFyYW1ldGVycy5taW5pbXVtTGlmZXRpbWUg
PSBtaW5pbXVtTGlmZXRpbWU7Ci0gICAgICAgIHBhcmFtZXRlcnMudGVybWluYXRpb25UaW1lb3V0
ID0gc2h1dGRvd25UaW1lb3V0OwotICAgIH0KKyAgICBwYXJhbWV0ZXJzLm1pbmltdW1MaWZldGlt
ZSA9IG1pbmltdW1MaWZldGltZTsKKyAgICBwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCA9
IHNodXRkb3duVGltZW91dDsKIAogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3Mo
cGFyYW1ldGVycyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IGYwNTRmMmJjOGI3ZmRkZTBlNTA4ZTNkYTcwZTYxNGRiZmVmMTcwYjcuLjExYThlY2E5YTRm
MGJhYTQ0MzdhNTQwOGQ2NWZkZjljODI1ZWJiM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtMjcwNyw3ICsyNzA3LDcgQEAgV2ViUHJlZmVyZW5jZXNTdG9y
ZSBXZWJQYWdlUHJveHk6OnByZWZlcmVuY2VzU3RvcmUoKSBjb25zdAogfQogCiAjaWYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCi12b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFBsdWdpbihjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBQbHVnaW5Qcm9jZXNzVHlwZSBwcm9jZXNzVHlwZSwgY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcGFnZVVSTFN0cmluZywgYm9vbCBhbGxvd09ubHlBcHBsaWNhdGlvblBsdWdpbnMsIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmRQbHVnaW46OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQor
dm9pZCBXZWJQYWdlUHJveHk6OmZpbmRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcGFnZVVSTFN0cmluZywgYm9vbCBhbGxvd09ubHlBcHBsaWNhdGlvblBsdWdpbnMs
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmRQbHVnaW46OkRlbGF5ZWRSZXBseSYmIHJlcGx5
KQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAK
QEAgLTI3MzYsNyArMjczNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmaW5kUGx1Z2luKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIFBsdWdpblByb2Nlc3NUeXBlIHByb2Nlc3NUCiAgICAgYXV0byBw
bHVnaW5JbmZvcm1hdGlvbiA9IGNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeShwbHVn
aW4sIGZyYW1lVVJMU3RyaW5nLCBTdHJpbmcoKSwgcGFnZVVSTFN0cmluZywgU3RyaW5nKCksIFN0
cmluZygpKTsKICNlbmRpZgogCi0gICAgYXV0byBmaW5kUGx1Z2luQ29tcGxldGlvbiA9IFtwcm9j
ZXNzVHlwZSwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KSwgbmV3TWltZVR5cGUgPSBXVEZNb3ZlKG5l
d01pbWVUeXBlKSwgcGx1Z2luID0gV1RGTW92ZShwbHVnaW4pXSAodWludDMyX3QgcGx1Z2luTG9h
ZFBvbGljeSwgY29uc3QgU3RyaW5nJiB1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uKSBtdXRhYmxl
IHsKKyAgICBhdXRvIGZpbmRQbHVnaW5Db21wbGV0aW9uID0gW3JlcGx5ID0gV1RGTW92ZShyZXBs
eSksIG5ld01pbWVUeXBlID0gV1RGTW92ZShuZXdNaW1lVHlwZSksIHBsdWdpbiA9IFdURk1vdmUo
cGx1Z2luKV0gKHVpbnQzMl90IHBsdWdpbkxvYWRQb2xpY3ksIGNvbnN0IFN0cmluZyYgdW5hdmFp
bGFiaWxpdHlEZXNjcmlwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIFBsdWdpblByb2Nlc3NTYW5k
Ym94UG9saWN5IHBsdWdpblByb2Nlc3NTYW5kYm94UG9saWN5ID0gUGx1Z2luUHJvY2Vzc1NhbmRi
b3hQb2xpY3k6Ok5vcm1hbDsKICAgICAgICAgc3dpdGNoIChwbHVnaW5Mb2FkUG9saWN5KSB7CiAg
ICAgICAgIGNhc2UgUGx1Z2luTW9kdWxlTG9hZE5vcm1hbGx5OgpAQCAtMjc1Miw3ICsyNzUyLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
UGx1Z2luUHJvY2Vzc1R5cGUgcHJvY2Vzc1QKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIHJlcGx5KFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaW5nbGV0b24oKS5wbHVn
aW5Qcm9jZXNzVG9rZW4ocGx1Z2luLCBwcm9jZXNzVHlwZSwgcGx1Z2luUHJvY2Vzc1NhbmRib3hQ
b2xpY3kpLCBuZXdNaW1lVHlwZSwgcGx1Z2luTG9hZFBvbGljeSwgdW5hdmFpbGFiaWxpdHlEZXNj
cmlwdGlvbiwgZmFsc2UpOworICAgICAgICByZXBseShQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2lu
Z2xldG9uKCkucGx1Z2luUHJvY2Vzc1Rva2VuKHBsdWdpbiwgcGx1Z2luUHJvY2Vzc1NhbmRib3hQ
b2xpY3kpLCBuZXdNaW1lVHlwZSwgcGx1Z2luTG9hZFBvbGljeSwgdW5hdmFpbGFiaWxpdHlEZXNj
cmlwdGlvbiwgZmFsc2UpOwogICAgIH07CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZjJjOWFkNGYyODVlMTRmYzRmMTRhNGZm
NDgwNjMwNTFkNTg5NjBmNi4uOWZjYmQ1ODkwY2FlYjZhZDEwNTc3Y2MwNWRmODNjY2I4NTZkYTFl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTIyNDYsNyArMjI0
Niw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQotICAgIHZvaWQgZmluZFBsdWdpbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJLaXQ6OlBs
dWdpblByb2Nlc3NUeXBlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBm
cmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nLCBib29sIGFsbG93T25s
eUFwcGxpY2F0aW9uUGx1Z2lucywgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluZFBsdWdpbkRl
bGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIGZpbmRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZywgYm9vbCBhbGxvd09ubHlBcHBsaWNhdGlvblBs
dWdpbnMsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmRQbHVnaW5EZWxheWVkUmVwbHkmJik7
CiAjZW5kaWYKIAogI2lmIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGZmYTdkNjFjZWUyNTkzNzE0ZDI5
ODYyNjMyNmI0NjM5ZjNjNDY5OTAuLjNiYzY3YWI1NWQyMTk0ZTJmNDUxN2Q4ODBlNTc2YTU2YWM4
MDQ0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KQEAgLTQ0NCw3ICs0NDQsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewog
I2VuZGlmCiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBGaW5kUGx1Z2lu
KFN0cmluZyBtaW1lVHlwZSwgV2ViS2l0OjpQbHVnaW5Qcm9jZXNzVHlwZSBwcm9jZXNzVHlwZSwg
U3RyaW5nIHVybFN0cmluZywgU3RyaW5nIGZyYW1lVVJMU3RyaW5nLCBTdHJpbmcgcGFnZVVSTFN0
cmluZywgYm9vbCBhbGxvd09ubHlBcHBsaWNhdGlvblBsdWdpbnMpIC0+ICh1aW50NjRfdCBwbHVn
aW5Qcm9jZXNzVG9rZW4sIFN0cmluZyBuZXdNSU1FVHlwZSwgdWludDMyX3QgcGx1Z2luTG9hZFBv
bGljeSwgU3RyaW5nIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24sIGJvb2wgaXNVbnN1cHBvcnRl
ZCkgU3luY2hyb25vdXMKKyAgICBGaW5kUGx1Z2luKFN0cmluZyBtaW1lVHlwZSwgU3RyaW5nIHVy
bFN0cmluZywgU3RyaW5nIGZyYW1lVVJMU3RyaW5nLCBTdHJpbmcgcGFnZVVSTFN0cmluZywgYm9v
bCBhbGxvd09ubHlBcHBsaWNhdGlvblBsdWdpbnMpIC0+ICh1aW50NjRfdCBwbHVnaW5Qcm9jZXNz
VG9rZW4sIFN0cmluZyBuZXdNSU1FVHlwZSwgdWludDMyX3QgcGx1Z2luTG9hZFBvbGljeSwgU3Ry
aW5nIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24sIGJvb2wgaXNVbnN1cHBvcnRlZCkgU3luY2hy
b25vdXMKICNlbmRpZgogCiAgICAgRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNzBmZGRhZjhkZDAwNTZjYTI5
NDhlOWYxMzI1MGM5YWJhMGExYmY4Yy4uYWEyNzhlYWMyMjlmMDg3MTA0MWJhMzNmNzkwOTljZWU2
Njg2Y2VlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApA
QCAtNzQwLDggKzc0MCw2IEBAIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYlByb2Nl
c3NQb29sOjp3ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQCiAgICAgaWYgKCFqYXZh
U2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIGph
dmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICAgICAg
Ci0gICAgYXV0byBwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMgPSBtX3BsdWdJbkF1dG9TdGFy
dFByb3ZpZGVyLmF1dG9TdGFydE9yaWdpbkhhc2hlc0NvcHkod2Vic2l0ZURhdGFTdG9yZS5zZXNz
aW9uSUQoKSk7Ci0KICAgICByZXR1cm4gV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMgewog
ICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlLnNlc3Npb25JRCgpLAogICAgICAgICBXVEZNb3ZlKGFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpLApAQCAtNzU1LDcgKzc1Myw2IEBAIFdlYlByb2Nlc3NE
YXRhU3RvcmVQYXJhbWV0ZXJzIFdlYlByb2Nlc3NQb29sOjp3ZWJQcm9jZXNzRGF0YVN0b3JlUGFy
YW1ldGVycyhXZWJQCiAgICAgICAgIFdURk1vdmUobWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKSwKICAgICAgICAgV1RGTW92ZShqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRp
cmVjdG9yeSksCiAgICAgICAgIFdURk1vdmUoamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGUpLAotICAgICAgICBXVEZNb3ZlKHBsdWdJbkF1dG9TdGFydE9yaWdp
bkhhc2hlcyksCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAg
d2Vic2l0ZURhdGFTdG9yZS50aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCksCiAgICAgICAg
IG1fZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24sCkBAIC04MjEsOCArODE4LDYgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXNzLCBXZWJzaXRlRGEKICAgICBwYXJhbWV0ZXJzLm5vdGlmaWNhdGlvblBlcm1pc3Npb25z
ID0gc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPm5vdGlmaWNhdGlv
blBlcm1pc3Npb25zKCk7CiAjZW5kaWYKIAotICAgIHBhcmFtZXRlcnMucGx1Z0luQXV0b1N0YXJ0
T3JpZ2lucyA9IGNvcHlUb1ZlY3RvcihtX3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmF1dG9TdGFy
dE9yaWdpbnMoKSk7Ci0KICAgICBwYXJhbWV0ZXJzLm1lbW9yeUNhY2hlRGlzYWJsZWQgPSBtX21l
bW9yeUNhY2hlRGlzYWJsZWQ7CiAgICAgcGFyYW1ldGVycy5hdHRyU3R5bGVFbmFibGVkID0gbV9j
b25maWd1cmF0aW9uLT5hdHRyU3R5bGVFbmFibGVkKCk7CiAKQEAgLTgzNCwxMCArODI5LDYgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzLCBXZWJzaXRlRGEKICAgICBzZXJ2aWNlQ29udHJvbGxlci5yZWZyZXNoRXhp
c3RpbmdTZXJ2aWNlcygpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQ
SSkKLSAgICBwYXJhbWV0ZXJzLnBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyA9IG1fcGx1Z2luTG9h
ZENsaWVudFBvbGljaWVzOwotI2VuZGlmCi0KICNpZiBPUyhMSU5VWCkKICAgICBwYXJhbWV0ZXJz
LnNob3VsZEVuYWJsZU1lbW9yeVByZXNzdXJlUmVsaWVmTG9nZ2luZyA9IHRydWU7CiAjZW5kaWYK
QEAgLTE2NTQsNTMgKzE2NDUsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRKYXZhU2NyaXB0
R2FyYmFnZUNvbGxlY3RvclRpbWVyRW5hYmxlZChib29sIGZsYWcpCiAgICAgc2VuZFRvQWxsUHJv
Y2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRKYXZhU2NyaXB0R2FyYmFnZUNvbGxlY3Rv
clRpbWVyRW5hYmxlZChmbGFnKSk7CiB9CiAKLVJlZjxBUEk6OkRpY3Rpb25hcnk+IFdlYlByb2Nl
c3NQb29sOjpwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoKSBjb25zdAotewotICAgIHJldHVy
biBtX3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmF1dG9TdGFydE9yaWdpbnNUYWJsZUNvcHkoKTsK
LX0KLQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVz
KEFQSTo6RGljdGlvbmFyeSYgZGljdGlvbmFyeSkKLXsKLSAgICBtX3BsdWdJbkF1dG9TdGFydFBy
b3ZpZGVyLnNldEF1dG9TdGFydE9yaWdpbnNUYWJsZShkaWN0aW9uYXJ5KTsKLX0KLQotdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6c2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2lucyhBUEk6OkFycmF5JiBhcnJh
eSkKLXsKLSAgICBtX3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLnNldEF1dG9TdGFydE9yaWdpbnNB
cnJheShhcnJheSk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFBsdWdJbkF1dG9TdGFy
dE9yaWdpbnNGaWx0ZXJpbmdPdXRFbnRyaWVzQWRkZWRBZnRlclRpbWUoQVBJOjpEaWN0aW9uYXJ5
JiBkaWN0aW9uYXJ5LCBXYWxsVGltZSB0aW1lKQotewotICAgIG1fcGx1Z0luQXV0b1N0YXJ0UHJv
dmlkZXIuc2V0QXV0b1N0YXJ0T3JpZ2luc0ZpbHRlcmluZ091dEVudHJpZXNBZGRlZEFmdGVyVGlt
ZShkaWN0aW9uYXJ5LCB0aW1lKTsKLX0KLQotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShXZWJDb3Jl
OjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5IHBvbGljeSwgY29uc3QgU3RyaW5nJiBob3N0LCBjb25z
dCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZykK
LXsKLSAgICBhdXRvJiBwb2xpY2llc0Zvckhvc3QgPSBtX3BsdWdpbkxvYWRDbGllbnRQb2xpY2ll
cy5lbnN1cmUoaG9zdCwgW10gewotICAgICAgICByZXR1cm4gSGFzaE1hcDxTdHJpbmcsIEhhc2hN
YXA8U3RyaW5nLCBXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5Pj4oKTsKLSAgICB9KS5p
dGVyYXRvci0+dmFsdWU7Ci0gICAgYXV0byYgdmVyc2lvbnNUb1BvbGljaWVzID0gcG9saWNpZXNG
b3JIb3N0LmVuc3VyZShidW5kbGVJZGVudGlmaWVyLCBbXSB7Ci0gICAgICAgIHJldHVybiBIYXNo
TWFwPFN0cmluZywgV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeT4oKTsKLSAgICB9KS5p
dGVyYXRvci0+dmFsdWU7Ci0gICAgdmVyc2lvbnNUb1BvbGljaWVzLnNldCh2ZXJzaW9uU3RyaW5n
LCBwb2xpY3kpOwotCi0gICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpTZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KHBvbGljeSwgaG9zdCwgYnVuZGxlSWRlbnRpZmll
ciwgdmVyc2lvblN0cmluZykpOwotfQotCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNldFBsdWdp
bkxvYWRDbGllbnRQb2xpY2llcyhIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIEhhc2hN
YXA8U3RyaW5nLCBXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5Pj4+JiYgcGx1Z2luTG9h
ZENsaWVudFBvbGljaWVzKQotewotICAgIG1fcGx1Z2luTG9hZENsaWVudFBvbGljaWVzID0gV1RG
TW92ZShwbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMpOwotICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMobV9wbHVn
aW5Mb2FkQ2xpZW50UG9saWNpZXMpKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJQ
bHVnaW5DbGllbnRQb2xpY2llcygpCi17Ci0gICAgbV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMu
Y2xlYXIoKTsKLSAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNs
ZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBXZWJQcm9jZXNz
UG9vbDo6YWRkU3VwcG9ydGVkUGx1Z2luKFN0cmluZyYmIG1hdGNoaW5nRG9tYWluLCBTdHJpbmcm
JiBuYW1lLCBIYXNoU2V0PFN0cmluZz4mJiBtaW1lVHlwZXMsIEhhc2hTZXQ8U3RyaW5nPiBleHRl
bnNpb25zKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggYWFiNzM2YzhhOTQ0MmEwMzYzMTE4YzA0
ZGE4NjI3NDc0ZGJkNzkzNS4uNDc4NWE1NDIwNmJjZjZjMzhkYjMzYWM2NWRiYTVhNGEwNTk2NTgy
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zNCw3ICsz
NCw2IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgotI2luY2x1ZGUg
IlBsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb1N0b3JlLmgi
CiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlci5oIgogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3Rv
cmUuaCIKQEAgLTIyNSwxMSArMjI0LDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVmcmVzaFBsdWdp
bnMoKTsKIAogICAgIFBsdWdpbkluZm9TdG9yZSYgcGx1Z2luSW5mb1N0b3JlKCkgeyByZXR1cm4g
bV9wbHVnaW5JbmZvU3RvcmU7IH0KLQotICAgIHZvaWQgc2V0UGx1Z2luTG9hZENsaWVudFBvbGlj
eShXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3QsIGNv
bnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5n
KTsKLSAgICB2b2lkIHJlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzKEhhc2hNYXA8U3RyaW5n
LCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6OlBsdWdpbkxvYWRDbGll
bnRQb2xpY3k+Pj4mJik7Ci0gICAgdm9pZCBjbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCk7Ci0g
ICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywg
V2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeT4+PiYgcGx1Z2luTG9hZENsaWVudFBvbGlj
aWVzKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXM7IH0KICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJf
QkxPQ0tJTkcpCkBAIC0zNDgsMTEgKzM0Miw2IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHZvaWQg
dGV4dENoZWNrZXJTdGF0ZUNoYW5nZWQoKTsKIAotICAgIFJlZjxBUEk6OkRpY3Rpb25hcnk+IHBs
dWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcygpIGNvbnN0OwotICAgIHZvaWQgc2V0UGx1Z0luQXV0
b1N0YXJ0T3JpZ2luSGFzaGVzKEFQSTo6RGljdGlvbmFyeSYpOwotICAgIHZvaWQgc2V0UGx1Z0lu
QXV0b1N0YXJ0T3JpZ2lucyhBUEk6OkFycmF5Jik7Ci0gICAgdm9pZCBzZXRQbHVnSW5BdXRvU3Rh
cnRPcmlnaW5zRmlsdGVyaW5nT3V0RW50cmllc0FkZGVkQWZ0ZXJUaW1lKEFQSTo6RGljdGlvbmFy
eSYsIFdhbGxUaW1lKTsKLQogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICB2b2lkIGdwdVBy
b2Nlc3NDcmFzaGVkKFByb2Nlc3NJRCk7CiAKQEAgLTQ4OCw4ICs0NzcsNiBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMgd2ViUHJvY2Vzc0RhdGFTdG9y
ZVBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiwgV2Vic2l0ZURhdGFTdG9yZSYpOwogICAgIAot
ICAgIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyJiBwbHVnSW5BdXRvU3RhcnRQcm92aWRlcigpIHsg
cmV0dXJuIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI7IH0KLQogICAgIHN0YXRpYyB2b2lkIHNl
dFVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoYm9vbCk7CiAgICAgc3RhdGljIGJvb2wg
dXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcygpIHsgcmV0dXJuIHNfdXNlU2VwYXJhdGVT
ZXJ2aWNlV29ya2VyUHJvY2VzczsgfQogCkBAIC02MjEsOCArNjA4LDYgQEAgcHJpdmF0ZToKICAg
ICBSZWY8VmlzaXRlZExpbmtTdG9yZT4gbV92aXNpdGVkTGlua1N0b3JlOwogICAgIGJvb2wgbV92
aXNpdGVkTGlua3NQb3B1bGF0ZWQgeyBmYWxzZSB9OwogCi0gICAgUGx1Z0luQXV0b1N0YXJ0UHJv
dmlkZXIgbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlciB7IHRoaXMgfTsKLSAgICAgICAgCiAgICAg
SGFzaFNldDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0VtcHR5RG9jdW1lbnQ7CiAgICAg
SGFzaFNldDxTdHJpbmc+IG1fc2NoZW1lc1RvU2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZv
cjsKICAgICBIYXNoU2V0PFN0cmluZz4gbV9zY2hlbWVzVG9SZWdpc3RlckFzRGlzcGxheUlzb2xh
dGVkOwpAQCAtNzA0LDEwICs2ODksNiBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+IG1fZW5jb2RlZENvbnRlbnRFeHRlbnNpb25zOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcs
IEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5Pj4+IG1fcGx1
Z2luTG9hZENsaWVudFBvbGljaWVzOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoR0FNRVBBRCkKICAg
ICBIYXNoU2V0PFdlYlByb2Nlc3NQcm94eSo+IG1fcHJvY2Vzc2VzVXNpbmdHYW1lcGFkczsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXgg
YTlmODI4MmJlNTQwMTA4OWMyOTQyN2IwODg2MDc3YTQ4Njk0Yzc4MS4uOWJmM2VhM2VkNTY2NDQ1
NjMzOTUyZDc4ZTIxNTY0ZWFhMzIyMTA2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xNjk5LDE5ICsxNjk5LDYgQEAgUEFMOjpTZXNzaW9uSUQg
V2ViUHJvY2Vzc1Byb3h5OjpzZXNzaW9uSUQoKSBjb25zdAogICAgIHJldHVybiBtX3dlYnNpdGVE
YXRhU3RvcmUtPnNlc3Npb25JRCgpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkUGx1
Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChTdHJpbmcmJiBwYWdlT3JpZ2luLCB1aW50MzJfdCBoYXNo
KQotewotICAgIE1FU1NBR0VfQ0hFQ0soUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OkF1dG9TdGFy
dFRhYmxlOjppc1ZhbGlkS2V5KHBhZ2VPcmlnaW4pKTsKLSAgICBNRVNTQUdFX0NIRUNLKFBsdWdJ
bkF1dG9TdGFydFByb3ZpZGVyOjpIYXNoVG9PcmlnaW5NYXA6OmlzVmFsaWRLZXkoaGFzaCkpOwot
ICAgIHByb2Nlc3NQb29sKCkucGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIoKS5hZGRBdXRvU3RhcnRP
cmlnaW5IYXNoKFdURk1vdmUocGFnZU9yaWdpbiksIGhhc2gsIHNlc3Npb25JRCgpKTsKLX0KLQot
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24odWlu
dDMyX3QgaGFzaCkKLXsKLSAgICBNRVNTQUdFX0NIRUNLKFBsdWdJbkF1dG9TdGFydFByb3ZpZGVy
OjpIYXNoVG9PcmlnaW5NYXA6OmlzVmFsaWRLZXkoaGFzaCkpOwotICAgIHByb2Nlc3NQb29sKCku
cGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIoKS5kaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKGhhc2gs
IHNlc3Npb25JRCgpKTsKLX0KLQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJl
Y29nbml0aW9uU2VydmVyKFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciBpZGVudGlm
aWVyKQogewogICAgIGF1dG8gc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgPSBtX3NwZWVjaFJlY29n
bml0aW9uU2VydmVyTWFwLmFkZChpZGVudGlmaWVyLCBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggNTBiY2I5Y2FiOTA0MDYwOGUyNDc1NWRi
NzYzMGE0YWRhNmU2YThmNS4uOWUwZTVhMGQ0YWZmNWZhZDhmZmY1ZjQ3NzM1NGJkODg4ZThkYmVk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTQ0Myw4
ICs0NDMsNiBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAg
IHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rv
a2VuLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bkRlbGF5ZWRSZXBseSYmKTsKICNlbmRpZgotICAgIHZvaWQgYWRkUGx1Z0luQXV0b1N0YXJ0T3Jp
Z2luSGFzaChTdHJpbmcmJiBwYWdlT3JpZ2luLCB1aW50MzJfdCBoYXNoKTsKLSAgICB2b2lkIHBs
dWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24odWludDMyX3QgaGFzaCk7CiAgICAgCiAgICAg
dm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94
eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5JiYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggOWU4OTc2M2U4YzFhZTBlMjM4ZWJkNWVmZDViYmM2MGQ2M2QxMTU2My4uOTA2MzljMmFjZTJk
MDUxZDAzNDlmYjUyMjZhYjYxNjFhZmE4M2Y0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNzYsMTAgKzc2LDYgQEAg
bWVzc2FnZXMgLT4gV2ViUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBTdG9wRGlz
cGxheUxpbmsoV2ViS2l0OjpEaXNwbGF5TGlua09ic2VydmVySUQgb2JzZXJ2ZXJJRCwgdWludDMy
X3QgZGlzcGxheUlEKQogI2VuZGlmCiAKLSAgICAjIFBsdWctaW4gbWVzc2FnZXMuCi0gICAgdm9p
ZCBBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKFN0cmluZyBwYWdlT3JpZ2luLCB1aW50MzJf
dCBoYXNoKQotICAgIHZvaWQgUGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbih1aW50MzJf
dCBoYXNoKQotCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgU2VuZE1l
c3NhZ2VUb1dlYkNvbnRleHQoc3RydWN0IFdlYktpdDo6VXNlck1lc3NhZ2UgdXNlck1lc3NhZ2Up
CiAgICAgU2VuZE1lc3NhZ2VUb1dlYkNvbnRleHRXaXRoUmVwbHkoc3RydWN0IFdlYktpdDo6VXNl
ck1lc3NhZ2UgdXNlck1lc3NhZ2UpIC0+IChzdHJ1Y3QgV2ViS2l0OjpVc2VyTWVzc2FnZSByZXBs
eU1lc3NhZ2UpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAwZGFlMWEwOTAxZTU4OTJmYzA5NmFhOWFiMzg4MWNmOWU4MzRiMjhh
Li4zNmU1ZDBiZGM0MDI1ZTcwNjY3ZGVjODZhMmEwOWIxMGIzZWFlMjYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc5NSwxNCArNzk1
LDEyIEBACiAJCTMxQTJFQzU2MTQ4OTlDMDkwMDgxMEQ3MSAvKiBOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzFBMkVDNTMxNDg5OTgyNTAwODEwRDcxIC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0LmggKi87IH07CiAJCTMxQTJFQzc0MTQ4RDU5Q0EwMDgxMEQ3MSAvKiBXS05vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMUEyRUM3MjE0OEQ1OUJCMDA4MTBENzEgLyogV0tOb3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTMxQTUwNUZBMTY4MDAyNTUwMEE5MzBFQiAvKiBXZWJDb250ZXh0Q2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUE1MDVGODE2
ODAwMjU1MDBBOTMwRUIgLyogV2ViQ29udGV4dENsaWVudC5oICovOyB9OwotCQkzMUE2N0UwRDE2
NUIyQTk5MDA2Q0JBNjYgLyogUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTY3RTBCMTY1QjJBOTkwMDZDQkE2
NiAvKiBQbHVnSW5BdXRvU3RhcnRQcm92aWRlci5oICovOyB9OwogCQkzMUIzNjI4RjIxNDFFQTVE
MDA3QkZBNTMgLyogQVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQjM2MjhFMjE0MUVBNEQwMDdCRkE1MyAvKiBB
UElJbnRlcm5hbERlYnVnRmVhdHVyZS5oICovOyB9OwogCQkzMUIzNjI5NTIxNDFFQkNEMDA3QkZB
NTMgLyogX1dLSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQjM2Mjk0MjE0MUVCQUQwMDdCRkE1MyAvKiBfV0tJbnRl
cm5hbERlYnVnRmVhdHVyZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTMxQjM2Mjk3MjE0MUVCRDkwMDdCRkE1MyAvKiBfV0tJbnRlcm5hbERlYnVn
RmVhdHVyZUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMUIzNjI5MzIxNDFFQkFEMDA3QkZBNTMgLyogX1dLSW50ZXJuYWxEZWJ1Z0ZlYXR1
cmVJbnRlcm5hbC5oICovOyB9OwogCQkzMUIzNjI5OTIxNDFGNkU4MDA3QkZBNTMgLyogV2ViUHJl
ZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVhdHVyZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFCMzYyOTgyMTQxRjZFMDAwN0JGQTUzIC8qIFdlYlBy
ZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNwcCAqLzsgfTsKIAkJMzFCQTkyNEQxNDg4
MzEyNjAwNjJFREI1IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFCQTkyNDgx
NDg4MzA4MTAwNjJFREI1IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovOyB9OwogCQkzMUJBOTI0RTE0ODgzMTI2MDA2MkVEQjUgLyogV2ViTm90aWZpY2F0aW9u
TWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMUJBOTI0OTE0ODgzMDgxMDA2MkVEQjUgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdl
ck1lc3NhZ2VzLmggKi87IH07Ci0JCTMxRDU5MjlGMTY2RTA2MDAwMEU2QkYwMiAvKiBXZWJQbHVn
SW5DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMxRDU5MjlEMTY2RTA2MDAwMEU2QkYwMiAvKiBXZWJQbHVnSW5DbGllbnQuaCAqLzsgfTsKIAkJ
MzFENzU1QzExRDkxQjgxNTAwODQzQkQxIC8qIFdLVGV4dENoZWNrZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNDg4OEZGMUQ5MUIxMUQwMDM3NzA0
MiAvKiBXS1RleHRDaGVja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMzFGMDYwRTExNjU0MzE4NTAwRjMyODFDIC8qIE5ldHdvcmtTb2NrZXRD
aGFubmVsTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMxRjA2MEREMTY1NDMxNzUwMEYzMjgxQyAvKiBOZXR3b3JrU29ja2V0
Q2hhbm5lbE1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTMzMDkzNDQ3MTMxNUI5MjIwMDk3
QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzMDkzNDQzMTMxNUI5MjIwMDk3QTdC
QyAvKiBXZWJDb29raWVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKQEAgLTMzMTEs
OCArMzMwOSw2IEBACiAJCTMxQTJFQzc1MTQ4RDY1QkIwMDgxMEQ3MSAvKiBXS05vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMUE1MDVGNzE2ODAwMjU1MDBBOTMwRUIgLyogV2ViQ29udGV4dENsaWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb250ZXh0Q2xp
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFBNTA1RjgxNjgwMDI1NTAw
QTkzMEVCIC8qIFdlYkNvbnRleHRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViQ29udGV4dENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkz
MUE2N0UwQTE2NUIyQTk5MDA2Q0JBNjYgLyogUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGx1Z0luQXV0b1N0YXJ0UHJvdmlk
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMUE2N0UwQjE2NUIyQTk5MDA2
Q0JBNjYgLyogUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzFBQkE3OUMyMTVBRjlFMDAwQzkwRTMxIC8qIEhpZ2hQZXJmb3JtYW5jZUdQ
VU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUFCQTc5RDIxNUFGOUUwMDBDOTBFMzEgLyog
SGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEhpZ2hQ
ZXJmb3JtYW5jZUdQVU1hbmFnZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMx
QjM2MjhFMjE0MUVBNEQwMDdCRkE1MyAvKiBBUElJbnRlcm5hbERlYnVnRmVhdHVyZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBUElJbnRlcm5hbERlYnVnRmVhdHVyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMzMyMyw4ICszMzE5LDYgQEAKIAkJMzFCMzYyOTgyMTQxRjZFMDAwN0JGQTUz
IC8qIFdlYlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1
cmVzLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViUHJlZmVyZW5jZXNJbnRl
cm5hbERlYnVnRmVhdHVyZXMuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQkzMUJBOTI0ODE0ODgzMDgxMDA2MkVEQjUgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlck1l
c3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRT
b3VyY2VzL1dlYktpdDIvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHA7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTMxQkE5MjQ5MTQ4ODMwODEw
MDYyRURCNSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmg7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdl
cy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQkzMUQ1OTI5QzE2NkUw
NUZGMDBFNkJGMDIgLyogV2ViUGx1Z0luQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYlBsdWdJbkNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTMxRDU5MjlEMTY2RTA2MDAwMEU2QkYwMiAvKiBXZWJQbHVnSW5DbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGx1Z0luQ2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxRUEyNUQwMTM0Rjc4QjIwMDVCMTQ1MiAvKiBOYXRp
dmVXZWJNb3VzZUV2ZW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmF0aXZlV2ViTW91
c2VFdmVudE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFFQTI1RDMxMzRG
NzhENjAwNUIxNDUyIC8qIE5hdGl2ZVdlYk1vdXNlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTmF0aXZlV2ViTW91c2VFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzMUYwNjBERDE2NTQzMTc1MDBGMzI4MUMgLyogTmV0d29ya1NvY2tldENoYW5u
ZWxNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1NvY2tldENo
YW5uZWxNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9O
ZXR3b3JrU29ja2V0Q2hhbm5lbE1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CkBAIC02NjAxLDggKzY1OTUsNiBAQAogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkxQUVGQ0MwRDExRDAxRjQxMDA4MjE5RDMgLyogbWFj
ICovLAotCQkJCTMxQTY3RTBBMTY1QjJBOTkwMDZDQkE2NiAvKiBQbHVnSW5BdXRvU3RhcnRQcm92
aWRlci5jcHAgKi8sCi0JCQkJMzFBNjdFMEIxNjVCMkE5OTAwNkNCQTY2IC8qIFBsdWdJbkF1dG9T
dGFydFByb3ZpZGVyLmggKi8sCiAJCQkJMUFFRkNDMTExMUQwMUY5NjAwODIxOUQzIC8qIFBsdWdp
bkluZm9TdG9yZS5jcHAgKi8sCiAJCQkJMUFFRkNDMTAxMUQwMUY5NjAwODIxOUQzIC8qIFBsdWdp
bkluZm9TdG9yZS5oICovLAogCQkJCTFBMEVDNjAyMTI0QTlGMkMwMDdFRjRBNSAvKiBQbHVnaW5Q
cm9jZXNzTWFuYWdlci5jcHAgKi8sCkBAIC05MDk3LDggKzkwODksNiBAQAogCQkJCTBGODUwRkU1
MUVEN0MzOUYwMEZCNzdBNyAvKiBXZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuaCAqLywKIAkJ
CQkxQTNFNzM2MDExQ0MyNjU5MDA3QkQ1MzkgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCAq
LywKIAkJCQkxQTNFNzM1RjExQ0MyNjU5MDA3QkQ1MzkgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmggKi8sCi0JCQkJMzFENTkyOUMxNjZFMDVGRjAwRTZCRjAyIC8qIFdlYlBsdWdJbkNsaWVudC5j
cHAgKi8sCi0JCQkJMzFENTkyOUQxNjZFMDYwMDAwRTZCRjAyIC8qIFdlYlBsdWdJbkNsaWVudC5o
ICovLAogCQkJCUQzQjk0ODQyMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuY3BwICov
LAogCQkJCUQzQjk0ODQzMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuaCAqLywKIAkJ
CQkxQTFFMDkzMTE4ODYxRDM4MDBEMkRDNDkgLyogV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmNw
cCAqLywKQEAgLTExMzAzLDcgKzExMjkzLDYgQEAKIAkJCQlDREEyOUEyMDFDQkVCNUZCMDA5MDFD
Q0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlD
REEyOUEyQjFDQkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNkZCN0QzMTFFNjUxRTIwMERCMTM3MSAvKiBQ
bHVnaW4uaCBpbiBIZWFkZXJzICovLAotCQkJCTMxQTY3RTBEMTY1QjJBOTkwMDZDQkE2NiAvKiBQ
bHVnSW5BdXRvU3RhcnRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5RkJBOEQxM0ZG
MDRFNjAwREVFRDY3IC8qIFBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFBNTZGMjkxMUU5MkJDODAwNjFCODgyIC8qIFBsdWdpbkNvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBOEVGNENCMTI1MjQwMzcwMEY3MDY3RiAvKiBQbHVnaW5Db250
cm9sbGVyUHJveHkuaCBpbiBIZWFkZXJzICovLApAQCAtMTE2NjAsNyArMTE2NDksNiBAQAogCQkJ
CTFBQjFGNzk5MUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjg1MEZFNzFFRDdDMzlGMDBGQjc3QTcgLyog
V2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNFNzM2
MTExQ0MyNjU5MDA3QkQ1MzkgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggaW4gSGVhZGVycyAq
LywKLQkJCQkzMUQ1OTI5RjE2NkUwNjAwMDBFNkJGMDIgLyogV2ViUGx1Z0luQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzU3NDRGMDEyNjM4RkIzMDA2RjBGMTIgLyogV2ViUG9wdXBJdGVt
LmggaW4gSGVhZGVycyAqLywKIAkJCQlEM0I5NDg0NzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9w
dXBNZW51LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzU3NEU2MzEyNjdEMDgwMDA2RjBGMTIgLyog
V2ViUG9wdXBNZW51UHJveHkuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlVUlDbGllbnQuaAppbmRleCA2Mjc4NDRiOWE0YTZiZDU4M2NiNTNmZTc0NTZhMzc0ZGRk
MDY3ZTg1Li4xMzJlOTRhMjhjYWEwY2Q3ZDA5ZjI4MTAwNDU4NTAwYjliNzg4ZTIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaApAQCAtMjksNyArMjksNiBAQAogI2lu
Y2x1ZGUgIkFQSUluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgiCiAjaW5jbHVkZSAiV0tCdW5k
bGVQYWdlLmgiCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1JlbmRl
clNuYXBzaG90dGVkUGx1Z0luLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNw
YWNlIEFQSSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9tYWMvUGx1Z2luUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9tYWMvUGx1Z2luUHJveHlNYWMubW0KaW5kZXggMzUxM2IwMzg0NGVj
MDAwMDFjZDhmNDc1YzY0NmIwNmU5MDA0ZTM0Mi4uNzJlODFjMDk2ODg1ZTQ0ZmQ3YzIxYjA5NTVh
ODIxNTUyOTJhNTliYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvbWFjL1BsdWdpblByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9QbHVnaW5Qcm94eU1hYy5tbQpAQCAtNTMsMTYg
KzUzLDYgQEAgUGxhdGZvcm1MYXllciogUGx1Z2luUHJveHk6OnBsdWdpbkxheWVyKCkKICAgICAg
ICAgLy8gc28gdGhlIGNvb3JkaW5hdGUgc3lzdGVtIHdpbGwgbWF0Y2ggdGhlIGV2ZW50IGNvb3Jk
aW5hdGUgc3lzdGVtLgogICAgICAgICBtX3BsdWdpbkxheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIg
YWxsb2NdIGluaXRdKTsKICAgICAgICAgW21fcGx1Z2luTGF5ZXIgc2V0R2VvbWV0cnlGbGlwcGVk
OllFU107Ci0KLSAgICAgICAgaWYgKG1faXNSZXN0YXJ0ZWRQcm9jZXNzKSB7Ci0gICAgICAgICAg
ICBDQUJhc2ljQW5pbWF0aW9uICpmYWRlSW5BbmltYXRpb24gPSBbQ0FCYXNpY0FuaW1hdGlvbiBh
bmltYXRpb25XaXRoS2V5UGF0aDpAIm9wYWNpdHkiXTsKLSAgICAgICAgICAgIGZhZGVJbkFuaW1h
dGlvbi5mcm9tVmFsdWUgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OjBdOwotICAgICAgICAg
ICAgZmFkZUluQW5pbWF0aW9uLnRvVmFsdWUgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OjFd
OwotICAgICAgICAgICAgZmFkZUluQW5pbWF0aW9uLmR1cmF0aW9uID0gZmFkZUluRHVyYXRpb247
Ci0gICAgICAgICAgICBmYWRlSW5BbmltYXRpb24ucmVtb3ZlZE9uQ29tcGxldGlvbiA9IE5POwot
ICAgICAgICAgICAgW21fcGx1Z2luTGF5ZXIgYWRkQW5pbWF0aW9uOmZhZGVJbkFuaW1hdGlvbiBm
b3JLZXk6QCJyZXN0YXJ0ZWQtcGx1Z2luLWZhZGUtaW4iXTsKLSAgICAgICAgfQotCiAgICAgICAg
IG1ha2VSZW5kZXJMYXllcihtX3BsdWdpbkxheWVyLmdldCgpLCBtX3JlbW90ZUxheWVyQ2xpZW50
SUQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5oCmluZGV4IDNjNmY1MjMwNGI5NWZhYmNkYjczODEyZjc5OGY5ZTFkMzc0MjM5
NDQuLmVhNTM1OTYwMTA5ZmVlNmRjNDgwNWNmNjg5MTI3OThlZTlhYjZmMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTIzMCw3
ICsyMzAsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzaG91bGRBbGxvd1NjcmlwdGluZygpIGZp
bmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBzaG91bGRBbGxvd05hdmlnYXRpb25Gcm9t
RHJhZ3MoKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgYm9vbCBzaG91bGRBbHdheXNBdXRv
U3RhcnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICAvLyBTY3JvbGxhYmxl
QXJlYSBmdW5jdGlvbnMuCiAgICAgYm9vbCBpc1BERlBsdWdpbigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5k
ZXggYzZkNjRiZTQxMzhkYWVkNDQwNzMwZDBhNDgzNDA2Y2QxYjgzY2I4YS4uZGM1NTc5ZmQzMTk1
MjQ4Y2RlZTliMDE1NmFmNzgwOTdmOGVhYWY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luLmgKQEAgLTI4NSw4ICsyODUsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBwb2ludEluTG9jYWxDb29yZGluYXRlcykgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkQWx3YXlzQXV0b1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQogICAg
IHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgp
IGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0
TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAppbmRleCA3Mjc0ZTZmMDc0
N2I3YTM0OTdlNDBhZjIxNTBkZDIyOGQ5ZTVkZDU0Li5iZmY4MDRiMzg4NWFhNThiYTQ2YzFmMjM4
NzBhNjA5ZTMzOTM5YWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkuY3BwCkBAIC01NiwyMiArNTYsMTUgQEAgc3RhdGljIHVpbnQ2NF90IGdl
bmVyYXRlUGx1Z2luSW5zdGFuY2VJRCgpCiAgICAgcmV0dXJuICsrdW5pcXVlUGx1Z2luSW5zdGFu
Y2VJRDsKIH0KIAotUmVmPFBsdWdpblByb3h5PiBQbHVnaW5Qcm94eTo6Y3JlYXRlKHVpbnQ2NF90
IHBsdWdpblByb2Nlc3NUb2tlbiwgYm9vbCBpc1Jlc3RhcnRlZFByb2Nlc3MpCitSZWY8UGx1Z2lu
UHJveHk+IFBsdWdpblByb3h5OjpjcmVhdGUodWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuKQog
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsdWdpblByb3h5KHBsdWdpblByb2Nlc3NUb2tl
biwgaXNSZXN0YXJ0ZWRQcm9jZXNzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGx1Z2lu
UHJveHkocGx1Z2luUHJvY2Vzc1Rva2VuKSk7CiB9CiAKLVBsdWdpblByb3h5OjpQbHVnaW5Qcm94
eSh1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGJvb2wgaXNSZXN0YXJ0ZWRQcm9jZXNzKQor
UGx1Z2luUHJveHk6OlBsdWdpblByb3h5KHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbikKICAg
ICA6IFBsdWdpbihQbHVnaW5Qcm94eVR5cGUpCiAgICAgLCBtX3BsdWdpblByb2Nlc3NUb2tlbihw
bHVnaW5Qcm9jZXNzVG9rZW4pCiAgICAgLCBtX3BsdWdpbkluc3RhbmNlSUQoZ2VuZXJhdGVQbHVn
aW5JbnN0YW5jZUlEKCkpCi0gICAgLCBtX3BsdWdpbkJhY2tpbmdTdG9yZUNvbnRhaW5zVmFsaWRE
YXRhKGZhbHNlKQotICAgICwgbV9pc1N0YXJ0ZWQoZmFsc2UpCi0gICAgLCBtX3dhaXRpbmdGb3JQ
YWludEluUmVzcG9uc2VUb1VwZGF0ZShmYWxzZSkKLSAgICAsIG1fd2FudHNXaGVlbEV2ZW50cyhm
YWxzZSkKLSAgICAsIG1fcmVtb3RlTGF5ZXJDbGllbnRJRCgwKQotICAgICwgbV93YWl0aW5nT25B
c3luY2hyb25vdXNJbml0aWFsaXphdGlvbihmYWxzZSkKLSAgICAsIG1faXNSZXN0YXJ0ZWRQcm9j
ZXNzKGlzUmVzdGFydGVkUHJvY2VzcykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXggOTEzOWE5MjdkYWI3MjMxNzZjOTU0YzI2
MDU2MGQxOTMzYzU4MDA3My4uYTYzZDc0ODA1YmZlODZhMzM0YjYxZWI0ZGY0ZjVhNTY2NDc5YTI0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5o
CkBAIC01NSw3ICs1NSw3IEBAIHN0cnVjdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNs
YXNzIFBsdWdpblByb3h5IDogcHVibGljIFBsdWdpbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxQbHVnaW5Qcm94eT4gY3JlYXRlKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgYm9vbCBp
c1Jlc3RhcnRlZFByb2Nlc3MpOworICAgIHN0YXRpYyBSZWY8UGx1Z2luUHJveHk+IGNyZWF0ZSh1
aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4pOwogICAgIH5QbHVnaW5Qcm94eSgpOwogCiAgICAg
dWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luSW5zdGFu
Y2VJRDsgfQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y1BsdWdpblByb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFBs
dWdpblByb3h5KHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgYm9vbCBpc1Jlc3RhcnRlZFBy
b2Nlc3MpOworICAgIGV4cGxpY2l0IFBsdWdpblByb3h5KHVpbnQ2NF90IHBsdWdpblByb2Nlc3NU
b2tlbik7CiAKICAgICAvLyBQbHVnaW4KICAgICBib29sIGluaXRpYWxpemUoY29uc3QgUGFyYW1l
dGVycyYpIG92ZXJyaWRlOwpAQCAtMTg0LDEwICsxODQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZENyZWF0ZVBsdWdpbkludGVybmFsKGJvb2wgd2FudHNXaGVlbEV2ZW50cywgdWludDMyX3Qg
cmVtb3RlTGF5ZXJDbGllbnRJRCk7CiAgICAgdm9pZCBkaWRGYWlsVG9DcmVhdGVQbHVnaW5JbnRl
cm5hbCgpOwogCi0gICAgdWludDY0X3QgbV9wbHVnaW5Qcm9jZXNzVG9rZW47CisgICAgdWludDY0
X3QgbV9wbHVnaW5Qcm9jZXNzVG9rZW4geyAwIH07CiAKICAgICBSZWZQdHI8UGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKLSAgICB1aW50NjRfdCBtX3BsdWdpbkluc3RhbmNl
SUQ7CisgICAgdWludDY0X3QgbV9wbHVnaW5JbnN0YW5jZUlEIHsgMCB9OwogCiAgICAgV2ViQ29y
ZTo6SW50U2l6ZSBtX3BsdWdpblNpemU7CiAKQEAgLTIwNSwyNyArMjA1LDI1IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV9wbHVnaW5CYWNraW5nU3RvcmU7CiAgICAg
CiAgICAgLy8gV2hldGhlciBhbGwgb2YgdGhlIHBsdWctaW4gYmFja2luZyBzdG9yZSBjb250YWlu
cyB2YWxpZCBkYXRhLgotICAgIGJvb2wgbV9wbHVnaW5CYWNraW5nU3RvcmVDb250YWluc1ZhbGlk
RGF0YTsKKyAgICBib29sIG1fcGx1Z2luQmFja2luZ1N0b3JlQ29udGFpbnNWYWxpZERhdGEgeyBm
YWxzZSB9OwogCi0gICAgYm9vbCBtX2lzU3RhcnRlZDsKKyAgICBib29sIG1faXNTdGFydGVkIHsg
ZmFsc2UgfTsKIAogICAgIC8vIFdoZXRoZXIgd2UncmUgY2FsbGVkIGludmFsaWRhdGUgaW4gcmVz
cG9uc2UgdG8gYW4gdXBkYXRlIGNhbGwsIGFuZCBhcmUgbm93IHdhaXRpbmcgZm9yIGEgcGFpbnQg
Y2FsbC4KLSAgICBib29sIG1fd2FpdGluZ0ZvclBhaW50SW5SZXNwb25zZVRvVXBkYXRlOworICAg
IGJvb2wgbV93YWl0aW5nRm9yUGFpbnRJblJlc3BvbnNlVG9VcGRhdGUgeyBmYWxzZSB9OwogCiAg
ICAgLy8gV2hldGhlciB3ZSBzaG91bGQgc2VuZCB3aGVlbCBldmVudHMgdG8gdGhpcyBwbHVnLWlu
IG9yIG5vdC4KLSAgICBib29sIG1fd2FudHNXaGVlbEV2ZW50czsKKyAgICBib29sIG1fd2FudHNX
aGVlbEV2ZW50cyB7IGZhbHNlIH07CiAKICAgICAvLyBUaGUgY2xpZW50IElEIGZvciB0aGUgQ0Eg
bGF5ZXIgaW4gdGhlIHBsdWctaW4gcHJvY2Vzcy4gV2lsbCBiZSAwIGlmIHRoZSBwbHVnLWluIGlz
IG5vdCBhIENBIHBsdWctaW4uCi0gICAgdWludDMyX3QgbV9yZW1vdGVMYXllckNsaWVudElEOwot
ICAgIAorICAgIHVpbnQzMl90IG1fcmVtb3RlTGF5ZXJDbGllbnRJRCB7IDAgfTsKKwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM+IG1fcGVuZGluZ1BsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVyczsKLSAgICBib29sIG1fd2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlh
bGl6YXRpb247CisgICAgYm9vbCBtX3dhaXRpbmdPbkFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9u
IHsgZmFsc2UgfTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDQUxheWVy
PiBtX3BsdWdpbkxheWVyOwogI2VuZGlmCi0KLSAgICBib29sIG1faXNSZXN0YXJ0ZWRQcm9jZXNz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDkyOTc2MGUyZGY2YmUzY2IyN2QwZTVl
ZjZmZWMyMzNmZjc5ODE5ZTAuLmNjZGRkZjViOTk1ZTMxYzFiMjVhZDRkYzdmYzhjZmZjMzA4YTVj
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCkBAIC01Myw3ICs1Myw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRN
TFBsdWdJbkVsZW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBIZWFkZXJOYW1lcy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSG9zdFdpbmRvdy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5o
PgpAQCAtNzksOSArNzgsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotLy8gVGhpcyBzaW11bGF0ZWQgbW91c2Ug
Y2xpY2sgZGVsYXkgaW4gSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgc2hvdWxkIGdlbmVyYWxs
eSBiZSB0aGUgc2FtZSBvciBzaG9ydGVyIHRoYW4gdGhpcyBkZWxheS4KLXN0YXRpYyBjb25zdCBT
ZWNvbmRzIHBsdWdpblNuYXBzaG90VGltZXJEZWxheSB7IDExMDBfbXMgfTsKLQogY2xhc3MgUGx1
Z2luVmlldzo6VVJMUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFVSTFJlcXVlc3Q+IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPFBsdWdpblZpZXc6OlVSTFJlcXVlc3Q+IGNyZWF0ZSh1aW50
NjRfdCByZXF1ZXN0SUQsIEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBib29sIGFsbG93UG9w
dXBzKQpAQCAtMzA2LDcgKzMwMiw2IEBAIFBsdWdpblZpZXc6OlBsdWdpblZpZXcoSFRNTFBsdWdJ
bkVsZW1lbnQmIHBsdWdpbkVsZW1lbnQsIFJlZjxQbHVnaW4+JiYgcGx1Z2luLCBjCiAgICAgLCBt
X3dlYlBhZ2Uod2ViUGFnZShtX3BsdWdpbkVsZW1lbnQuZ2V0KCkpKQogICAgICwgbV9wYXJhbWV0
ZXJzKHBhcmFtZXRlcnMpCiAgICAgLCBtX3BlbmRpbmdVUkxSZXF1ZXN0c1RpbWVyKFJ1bkxvb3A6
Om1haW4oKSwgdGhpcywgJlBsdWdpblZpZXc6OnBlbmRpbmdVUkxSZXF1ZXN0c1RpbWVyRmlyZWQp
Ci0gICAgLCBtX3BsdWdpblNuYXBzaG90VGltZXIoKnRoaXMsICZQbHVnaW5WaWV3OjpwbHVnaW5T
bmFwc2hvdFRpbWVyRmlyZWQsIHBsdWdpblNuYXBzaG90VGltZXJEZWxheSkKIHsKICAgICBtX3dl
YlBhZ2UtPmFkZFBsdWdpblZpZXcodGhpcyk7CiB9CkBAIC0zNTgsMTEgKzM1Myw4IEBAIHZvaWQg
UGx1Z2luVmlldzo6ZGVzdHJveVBsdWdpbkFuZFJlc2V0KCkKIAogdm9pZCBQbHVnaW5WaWV3Ojpy
ZWNyZWF0ZUFuZEluaXRpYWxpemUoUmVmPFBsdWdpbj4mJiBwbHVnaW4pCiB7Ci0gICAgaWYgKG1f
cGx1Z2luKSB7Ci0gICAgICAgIGlmIChtX3BsdWdpblNuYXBzaG90VGltZXIuaXNBY3RpdmUoKSkK
LSAgICAgICAgICAgIG1fcGx1Z2luU25hcHNob3RUaW1lci5zdG9wKCk7CisgICAgaWYgKG1fcGx1
Z2luKQogICAgICAgICBkZXN0cm95UGx1Z2luQW5kUmVzZXQoKTsKLSAgICB9CiAKICAgICBtX3Bs
dWdpbiA9IFdURk1vdmUocGx1Z2luKTsKICAgICBtX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKQEAg
LTU5NywxMCArNTg5LDYgQEAgdm9pZCBQbHVnaW5WaWV3Ojppbml0aWFsaXplUGx1Z2luKCkKIAog
ICAgIG1fcGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKS5hZGRBdWRpb1Byb2R1Y2VyKCp0aGlzKTsK
IAotI2lmIEVOQUJMRShQUklNQVJZX1NOQVBTSE9UVEVEX1BMVUdJTl9IRVVSSVNUSUMpCi0gICAg
SFRNTFBsdWdJbkltYWdlRWxlbWVudCYgcGx1Z0luSW1hZ2VFbGVtZW50ID0gZG93bmNhc3Q8SFRN
TFBsdWdJbkltYWdlRWxlbWVudD4oKm1fcGx1Z2luRWxlbWVudCk7Ci0gICAgbV9kaWRQbHVnSW5T
dGFydE9mZlNjcmVlbiA9ICFtX3dlYlBhZ2UtPnBsdWdJbkludGVyc2VjdHNTZWFyY2hSZWN0KHBs
dWdJbkltYWdlRWxlbWVudCk7Ci0jZW5kaWYKICAgICBtX3BsdWdpbi0+aW5pdGlhbGl6ZSgqdGhp
cywgbV9wYXJhbWV0ZXJzKTsKICAgICAKICAgICAvLyBQbHVnLWluIGluaXRpYWxpemF0aW9uIGNv
bnRpbnVlZCBpbiBkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luKCkgb3IgZGlkSW5pdGlhbGl6ZVBs
dWdpbigpLgpAQCAtNjE0LDcgKzYwMiw3IEBAIHZvaWQgUGx1Z2luVmlldzo6ZGlkRmFpbFRvSW5p
dGlhbGl6ZVBsdWdpbigpCiAgICAgU3RyaW5nIGZyYW1lVVJMU3RyaW5nID0gZnJhbWUoKS0+bG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2VVUkwoKS5zdHJpbmcoKTsKICAgICBTdHJp
bmcgcGFnZVVSTFN0cmluZyA9IG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkubG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2VVUkwoKS5zdHJpbmcoKTsKICAgICBtX3dl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmFpbFRvSW5pdGlhbGl6ZVBs
dWdpbihtX3BhcmFtZXRlcnMubWltZVR5cGUsIGZyYW1lVVJMU3RyaW5nLCBwYWdlVVJMU3RyaW5n
KSk7Ci0jZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisjZW5kaWYKIH0KIAog
dm9pZCBQbHVnaW5WaWV3OjpkaWRJbml0aWFsaXplUGx1Z2luKCkKQEAgLTYzNCwyNSArNjIyLDEw
IEBAIHZvaWQgUGx1Z2luVmlldzo6ZGlkSW5pdGlhbGl6ZVBsdWdpbigpCiAgICAgcmVkZWxpdmVy
TWFudWFsU3RyZWFtKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBpZiAobV9wbHVnaW5F
bGVtZW50LT5kaXNwbGF5U3RhdGUoKSA8IEhUTUxQbHVnSW5FbGVtZW50OjpSZXN0YXJ0aW5nKSB7
Ci0gICAgICAgIGlmIChtX3BsdWdpbi0+cGx1Z2luTGF5ZXIoKSAmJiBmcmFtZSgpKSB7Ci0gICAg
ICAgICAgICBmcmFtZSgpLT52aWV3KCktPmVudGVyQ29tcG9zaXRpbmdNb2RlKCk7Ci0gICAgICAg
ICAgICBtX3BsdWdpbkVsZW1lbnQtPmludmFsaWRhdGVTdHlsZUFuZExheWVyQ29tcG9zaXRpb24o
KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoZnJhbWUoKSAmJiAhZnJhbWUoKS0+c2V0dGluZ3Mo
KS5tYXhpbXVtUGx1Z0luU25hcHNob3RBdHRlbXB0cygpKSB7Ci0gICAgICAgICAgICBiZWdpblNu
YXBzaG90dGluZ1J1bm5pbmdQbHVnaW4oKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgICAgICBtX3BsdWdpblNuYXBzaG90VGltZXIucmVzdGFydCgpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIGlmIChtX3BsdWdpbi0+cGx1Z2luTGF5ZXIoKSAmJiBmcmFtZSgpKSB7Ci0gICAg
ICAgICAgICBmcmFtZSgpLT52aWV3KCktPmVudGVyQ29tcG9zaXRpbmdNb2RlKCk7Ci0gICAgICAg
ICAgICBtX3BsdWdpbkVsZW1lbnQtPmludmFsaWRhdGVTdHlsZUFuZExheWVyQ29tcG9zaXRpb24o
KTsKLSAgICAgICAgfQotICAgICAgICBpZiAobV9wbHVnaW5FbGVtZW50LT5kaXNwbGF5U3RhdGUo
KSA9PSBIVE1MUGx1Z0luRWxlbWVudDo6UmVzdGFydGluZ1dpdGhQZW5kaW5nTW91c2VDbGljaykK
LSAgICAgICAgICAgIG1fcGx1Z2luRWxlbWVudC0+ZGlzcGF0Y2hQZW5kaW5nTW91c2VDbGljaygp
OworICAgIGlmIChtX3BsdWdpbi0+cGx1Z2luTGF5ZXIoKSAmJiBmcmFtZSgpKSB7CisgICAgICAg
IGZyYW1lKCktPnZpZXcoKS0+ZW50ZXJDb21wb3NpdGluZ01vZGUoKTsKKyAgICAgICAgbV9wbHVn
aW5FbGVtZW50LT5pbnZhbGlkYXRlU3R5bGVBbmRMYXllckNvbXBvc2l0aW9uKCk7CiAgICAgfQot
CiAgICAgbV9wbHVnaW4tPnZpc2liaWxpdHlEaWRDaGFuZ2UoaXNWaXNpYmxlKCkpOwogICAgIG1f
cGx1Z2luLT53aW5kb3dWaXNpYmlsaXR5Q2hhbmdlZChtX3dlYlBhZ2UtPmlzVmlzaWJsZU9yT2Nj
bHVkZWQoKSk7CiAgICAgbV9wbHVnaW4tPndpbmRvd0ZvY3VzQ2hhbmdlZChtX3dlYlBhZ2UtPndp
bmRvd0lzRm9jdXNlZCgpKTsKQEAgLTc4Myw3ICs3NTYsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnNl
dEZyYW1lUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQogCiB2b2lkIFBsdWdpblZp
ZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgLypkaXJ0
eVJlY3QqLywgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNv
bnRleHQqKQogewotICAgIGlmICghbV9wbHVnaW4gfHwgIW1faXNJbml0aWFsaXplZCB8fCBtX3Bs
dWdpbkVsZW1lbnQtPmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlJlc3RhcnRp
bmcpCisgICAgaWYgKCFtX3BsdWdpbiB8fCAhbV9pc0luaXRpYWxpemVkKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpIHsKQEAgLTkyNiwyNCAr
ODk5LDE4IEBAIHZvaWQgUGx1Z2luVmlldzo6aGFuZGxlRXZlbnQoRXZlbnQmIGV2ZW50KQogICAg
ICAgICAgICAgZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkuc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNF
bGVtZW50KG51bGxwdHIpOwogCiAgICAgICAgIGRpZEhhbmRsZUV2ZW50ID0gbV9wbHVnaW4tPmhh
bmRsZU1vdXNlRXZlbnQoc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VFdmVudCY+KCpjdXJyZW50
RXZlbnQpKTsKLSAgICAgICAgaWYgKGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkubW91c2Vt
b3ZlRXZlbnQpCi0gICAgICAgICAgICBwbHVnaW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKCk7
CiAgICAgfSBlbHNlIGlmIChldmVudE5hbWVzKCkuaXNXaGVlbEV2ZW50VHlwZShldmVudC50eXBl
KCkpCi0gICAgICAgICYmIGN1cnJlbnRFdmVudC0+dHlwZSgpID09IFdlYkV2ZW50OjpXaGVlbCAm
JiBtX3BsdWdpbi0+d2FudHNXaGVlbEV2ZW50cygpKSB7CisgICAgICAgICYmIGN1cnJlbnRFdmVu
dC0+dHlwZSgpID09IFdlYkV2ZW50OjpXaGVlbCAmJiBtX3BsdWdpbi0+d2FudHNXaGVlbEV2ZW50
cygpKQogICAgICAgICBkaWRIYW5kbGVFdmVudCA9IG1fcGx1Z2luLT5oYW5kbGVXaGVlbEV2ZW50
KHN0YXRpY19jYXN0PGNvbnN0IFdlYldoZWVsRXZlbnQmPigqY3VycmVudEV2ZW50KSk7Ci0gICAg
ICAgIHBsdWdpbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24oKTsKLSAgICB9IGVsc2UgaWYgKGV2
ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQgJiYgY3VycmVudEV2ZW50
LT50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlTW92ZSkKKyAgICBlbHNlIGlmIChldmVudC50eXBl
KCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50ICYmIGN1cnJlbnRFdmVudC0+dHlwZSgp
ID09IFdlYkV2ZW50OjpNb3VzZU1vdmUpCiAgICAgICAgIGRpZEhhbmRsZUV2ZW50ID0gbV9wbHVn
aW4tPmhhbmRsZU1vdXNlRW50ZXJFdmVudChzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50
Jj4oKmN1cnJlbnRFdmVudCkpOwogICAgIGVsc2UgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5h
bWVzKCkubW91c2VvdXRFdmVudCAmJiBjdXJyZW50RXZlbnQtPnR5cGUoKSA9PSBXZWJFdmVudDo6
TW91c2VNb3ZlKQogICAgICAgICBkaWRIYW5kbGVFdmVudCA9IG1fcGx1Z2luLT5oYW5kbGVNb3Vz
ZUxlYXZlRXZlbnQoc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VFdmVudCY+KCpjdXJyZW50RXZl
bnQpKTsKLSAgICBlbHNlIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNvbnRleHRt
ZW51RXZlbnQgJiYgY3VycmVudEV2ZW50LT50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlRG93bikg
eworICAgIGVsc2UgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY29udGV4dG1lbnVF
dmVudCAmJiBjdXJyZW50RXZlbnQtPnR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VEb3duKQogICAg
ICAgICBkaWRIYW5kbGVFdmVudCA9IG1fcGx1Z2luLT5oYW5kbGVDb250ZXh0TWVudUV2ZW50KHN0
YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQmPigqY3VycmVudEV2ZW50KSk7Ci0gICAgICAg
IHBsdWdpbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24oKTsKLSAgICB9IGVsc2UgaWYgKChldmVu
dC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBjdXJyZW50RXZlbnQtPnR5
cGUoKSA9PSBXZWJFdmVudDo6S2V5RG93bikKLSAgICAgICAgICAgICAgIHx8IChldmVudC50eXBl
KCkgPT0gZXZlbnROYW1lcygpLmtleXVwRXZlbnQgJiYgY3VycmVudEV2ZW50LT50eXBlKCkgPT0g
V2ViRXZlbnQ6OktleVVwKSkgeworICAgIGVsc2UgaWYgKChldmVudC50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLmtleWRvd25FdmVudCAmJiBjdXJyZW50RXZlbnQtPnR5cGUoKSA9PSBXZWJFdmVudDo6
S2V5RG93bikKKyAgICAgICAgfHwgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5dXBF
dmVudCAmJiBjdXJyZW50RXZlbnQtPnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5VXApKQogICAgICAg
ICBkaWRIYW5kbGVFdmVudCA9IG1fcGx1Z2luLT5oYW5kbGVLZXlib2FyZEV2ZW50KHN0YXRpY19j
YXN0PGNvbnN0IFdlYktleWJvYXJkRXZlbnQmPigqY3VycmVudEV2ZW50KSk7Ci0gICAgICAgIHBs
dWdpbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24oKTsKLSAgICB9CiAKICAgICBpZiAoZGlkSGFu
ZGxlRXZlbnQpCiAgICAgICAgIGV2ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7CkBAIC05ODMsNyAr
OTUwLDcgQEAgYm9vbCBQbHVnaW5WaWV3OjpzaG91bGRBbGxvd05hdmlnYXRpb25Gcm9tRHJhZ3Mo
KSBjb25zdAogCiBib29sIFBsdWdpblZpZXc6OnNob3VsZE5vdEFkZExheWVyKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9wbHVnaW5FbGVtZW50LT5kaXNwbGF5U3RhdGUoKSA8IEhUTUxQbHVnSW5F
bGVtZW50OjpSZXN0YXJ0aW5nICYmICFtX3BsdWdpbi0+c3VwcG9ydHNTbmFwc2hvdHRpbmcoKTsK
KyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6d2lsbERldGFjaFJlbmRl
cmVyKCkKQEAgLTEzMzAsOSArMTI5Nyw2IEBAIHZvaWQgUGx1Z2luVmlldzo6aW52YWxpZGF0ZVJl
Y3QoY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogICAgICAgICByZXR1cm47CiAjZW5kaWYKIAot
ICAgIGlmIChtX3BsdWdpbkVsZW1lbnQtPmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1l
bnQ6OlJlc3RhcnRpbmcpCi0gICAgICAgIHJldHVybjsKLQogICAgIGF1dG8qIHJlbmRlcmVyID0g
bV9wbHVnaW5FbGVtZW50LT5yZW5kZXJlcigpOwogICAgIGlmICghaXM8UmVuZGVyRW1iZWRkZWRP
YmplY3Q+KHJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTUxOSwxMyArMTQ4Myw2IEBA
IGJvb2wgUGx1Z2luVmlldzo6aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCgpCiAgICAg
aWYgKCFmcmFtZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgLy8gV2Uga25v
dyB0aGF0IHNvbWUgcGx1Zy1pbnMgY2FuIHN1cHBvcnQgc25hcHNob3R0aW5nIHdpdGhvdXQgbmVl
ZGluZwotICAgIC8vIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nLiBTaW5jZSB3ZSdyZSB0cnlpbmcg
dG8gc25hcHNob3QgdGhlbSBhbnl3YXksCi0gICAgLy8gcHV0IHRoZW0gaW50byBub3JtYWwgY29t
cG9zaXRpbmcgbW9kZS4gQSBzaWRlIGJlbmVmaXQgaXMgdGhhdCB0aGlzIG1pZ2h0Ci0gICAgLy8g
YWxsb3cgdGhlIGVudGlyZSBwYWdlIHRvIHN0YXkgaW4gdGhhdCBtb2RlLgotICAgIGlmIChtX3Bs
dWdpbkVsZW1lbnQtPmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlJlc3RhcnRp
bmcgJiYgbV9wYXJhbWV0ZXJzLm1pbWVUeXBlID09ICJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1m
bGFzaCIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIHJldHVybiBmcmFtZSgpLT5zZXR0
aW5ncygpLmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCk7CiB9CiAKQEAgLTE2ODAsMTQ5
ICsxNjM3LDYgQEAgdm9pZCBQbHVnaW5WaWV3OjpkaWRGYWlsTG9hZChXZWJGcmFtZSogd2ViRnJh
bWUsIGJvb2wgd2FzQ2FuY2VsbGVkKQogICAgIG1fcGx1Z2luLT5mcmFtZURpZEZhaWwocmVxdWVz
dC0+cmVxdWVzdElEKCksIHdhc0NhbmNlbGxlZCk7CiB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkK
LXN0YXRpYyBib29sIGlzQWxtb3N0U29saWRDb2xvcihCaXRtYXBJbWFnZSogYml0bWFwKQotewot
ICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBiaXRtYXAtPm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1h
Z2UoKS5nZXQoKTsKLSAgICBBU1NFUlQoQ0dJbWFnZUdldEJpdHNQZXJDb21wb25lbnQoaW1hZ2Up
ID09IDgpOwotCi0gICAgQ0dCaXRtYXBJbmZvIGltYWdlSW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJ
bmZvKGltYWdlKTsKLSAgICBpZiAoIShpbWFnZUluZm8gJiBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxp
dHRsZSkgfHwgKGltYWdlSW5mbyAmIGtDR0JpdG1hcEFscGhhSW5mb01hc2spICE9IGtDR0ltYWdl
QWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpIHsKLSAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIGJl
aW5nIGFibGUgdG8gaGFuZGxlIG90aGVyIHBpeGVsIGZvcm1hdHMuCi0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgc2l6ZV90
IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlKTsKLSAgICBzaXplX3QgaGVpZ2h0ID0gQ0dJ
bWFnZUdldEhlaWdodChpbWFnZSk7Ci0gICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdl
dEJ5dGVzUGVyUm93KGltYWdlKTsKLQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHByb3ZpZGVy
ID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIo
aW1hZ2UpKSk7Ci0gICAgY29uc3QgVUludDgqIGRhdGEgPSBDRkRhdGFHZXRCeXRlUHRyKHByb3Zp
ZGVyLmdldCgpKTsKLQotICAgIC8vIE92ZXJsYXkgYSBncmlkIG9mIHNhbXBsaW5nIGRvdHMgb24g
dG9wIG9mIGEgZ3JheXNjYWxlIHZlcnNpb24gb2YgdGhlIGltYWdlLgotICAgIC8vIEZvciB0aGUg
aW50ZXJpb3IgcG9pbnRzLCBjYWxjdWxhdGUgdGhlIGRpZmZlcmVuY2UgaW4gbHVtaW5hbmNlIGFt
b25nIHRoZSBzYW1wbGUgcG9pbnQKLSAgICAvLyBhbmQgaXRzIHN1cnJvdW5kcyBwb2ludHMsIHNj
YWxlZCBieSB0cmFuc3BhcmVuY3kuCi0gICAgY29uc3QgdW5zaWduZWQgc2FtcGxlUm93cyA9IDc7
Ci0gICAgY29uc3QgdW5zaWduZWQgc2FtcGxlQ29scyA9IDc7Ci0gICAgLy8gRklYTUU6IFJlZmlu
ZSB0aGUgcHJvcGVyIG51bWJlciBvZiBzYW1wbGVzLCBhbmQgYWNjb21tb2RhdGUgZGlmZmVyZW50
IGFzcGVjdCByYXRpb3MuCi0gICAgaWYgKHdpZHRoIDwgc2FtcGxlQ29scyB8fCBoZWlnaHQgPCBz
YW1wbGVSb3dzKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBFbnN1cmUgdGhhdCB0
aGUgbGFzdCByb3cvY29sdW1uIGxhbmQgb24gdGhlIGltYWdlIHBlcmltZXRlci4KLSAgICBjb25z
dCBmbG9hdCBzdHJpZGVXaWR0aCA9IHN0YXRpY19jYXN0PGZsb2F0Pih3aWR0aCAtIDEpIC8gKHNh
bXBsZUNvbHMgLSAxKTsKLSAgICBjb25zdCBmbG9hdCBzdHJpZGVIZWlnaHQgPSBzdGF0aWNfY2Fz
dDxmbG9hdD4oaGVpZ2h0IC0gMSkgLyAoc2FtcGxlUm93cyAtIDEpOwotICAgIGZsb2F0IHNhbXBs
ZXNbc2FtcGxlUm93c11bc2FtcGxlQ29sc107Ci0KLSAgICAvLyBGaW5kIHRoZSBsdW1pbmFuY2Ug
b2YgdGhlIHNhbXBsZSBwb2ludHMuCi0gICAgZmxvYXQgeSA9IDA7Ci0gICAgY29uc3QgVUludDgq
IHJvdyA9IGRhdGE7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNhbXBsZVJvd3M7ICsr
aSkgewotICAgICAgICBmbG9hdCB4ID0gMDsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsg
aiA8IHNhbXBsZUNvbHM7ICsraikgewotICAgICAgICAgICAgY29uc3QgVUludDgqIHAwID0gcm93
ICsgKHN0YXRpY19jYXN0PGludD4oeCArIC41KSkgKiA0OwotICAgICAgICAgICAgLy8gUiBHIEIg
QQotICAgICAgICAgICAgc2FtcGxlc1tpXVtqXSA9ICgwLjIxMjUgKiAqcDAgKyAwLjcxNTQgKiAq
KHAwKzEpICsgMC4wNzIxICogKihwMCsyKSkgKiAqKHAwKzMpIC8gMjU1OwotICAgICAgICAgICAg
eCArPSBzdHJpZGVXaWR0aDsKLSAgICAgICAgfQotICAgICAgICB5ICs9IHN0cmlkZUhlaWdodDsK
LSAgICAgICAgcm93ID0gZGF0YSArIChzdGF0aWNfY2FzdDxpbnQ+KHkgKyAuNSkpICogYnl0ZXNQ
ZXJSb3c7Ci0gICAgfQotCi0gICAgLy8gRGV0ZXJtaW5lIHRoZSBpbWFnZSBzY29yZS4KLSAgICBm
bG9hdCBhY2N1bVNjb3JlID0gMDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgc2FtcGxl
Um93cyAtIDE7ICsraSkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAxOyBqIDwgc2FtcGxl
Q29scyAtIDE7ICsraikgewotICAgICAgICAgICAgZmxvYXQgZGlmZiA9IHNhbXBsZXNbaSAtIDFd
W2pdICsgc2FtcGxlc1tpICsgMV1bal0gKyBzYW1wbGVzW2ldW2ogLSAxXSArIHNhbXBsZXNbaV1b
aiArIDFdIC0gNCAqIHNhbXBsZXNbaV1bal07Ci0gICAgICAgICAgICBhY2N1bVNjb3JlICs9IGRp
ZmYgKiBkaWZmOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gVGhlIHNjb3JlIGZvciBhIGdp
dmVuIHNhbXBsZSBjYW4gYmUgd2l0aGluIHRoZSByYW5nZSBvZiAwIGFuZCAyNTVeMi4KLSAgICBy
ZXR1cm4gYWNjdW1TY29yZSA8IDI1MDAgKiAoc2FtcGxlUm93cyAtIDIpICogKHNhbXBsZUNvbHMg
LSAyKTsKLX0KLSNlbmRpZgotCi12b2lkIFBsdWdpblZpZXc6OnBsdWdpblNuYXBzaG90VGltZXJG
aXJlZCgpCi17Ci0jaWYgRU5BQkxFKFBSSU1BUllfU05BUFNIT1RURURfUExVR0lOX0hFVVJJU1RJ
QykKLSAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBwbHVnSW5JbWFnZUVsZW1lbnQgPSBkb3du
Y2FzdDxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PigqbV9wbHVnaW5FbGVtZW50KTsKLSAgICBib29s
IGlzUGx1Z0luT25TY3JlZW4gPSBtX3dlYlBhZ2UtPnBsdWdJbkludGVyc2VjdHNTZWFyY2hSZWN0
KHBsdWdJbkltYWdlRWxlbWVudCk7Ci0gICAgYm9vbCBwbHVnSW5DYW1lT25TY3JlZW4gPSBpc1Bs
dWdJbk9uU2NyZWVuICYmIG1fZGlkUGx1Z0luU3RhcnRPZmZTY3JlZW47Ci0gICAgYm9vbCBzbmFw
c2hvdEZvdW5kID0gZmFsc2U7Ci0jZW5kaWYKLQotICAgIGlmIChtX3BsdWdpbiAmJiBtX3BsdWdp
bi0+c3VwcG9ydHNTbmFwc2hvdHRpbmcoKSkgewotICAgICAgICAvLyBTbmFwc2hvdCBtaWdodCBi
ZSAwIGlmIHBsdWdpbiBzaXplIGlzIDB4MC4KLSAgICAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gc25hcHNob3QgPSBtX3BsdWdpbi0+c25hcHNob3QoKTsKLSAgICAgICAgUmVmUHRyPEltYWdl
PiBzbmFwc2hvdEltYWdlOwotICAgICAgICBpZiAoc25hcHNob3QpCi0gICAgICAgICAgICBzbmFw
c2hvdEltYWdlID0gc25hcHNob3QtPmNyZWF0ZUltYWdlKCk7Ci0gICAgICAgIG1fcGx1Z2luRWxl
bWVudC0+dXBkYXRlU25hcHNob3Qoc25hcHNob3RJbWFnZS5nZXQoKSk7Ci0KLSAgICAgICAgaWYg
KHNuYXBzaG90SW1hZ2UpIHsKLSNpZiBFTkFCTEUoUFJJTUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5f
SEVVUklTVElDKQotICAgICAgICAgICAgYm9vbCBzbmFwc2hvdElzQWxtb3N0U29saWRDb2xvciA9
IGlzQWxtb3N0U29saWRDb2xvcihkb3duY2FzdDxCaXRtYXBJbWFnZT4oc25hcHNob3RJbWFnZS5n
ZXQoKSkpOwotICAgICAgICAgICAgc25hcHNob3RGb3VuZCA9ICFzbmFwc2hvdElzQWxtb3N0U29s
aWRDb2xvcjsKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgICAgICB1bnNp
Z25lZCBtYXhpbXVtU25hcHNob3RSZXRyaWVzID0gZnJhbWUoKSA/IGZyYW1lKCktPnNldHRpbmdz
KCkubWF4aW11bVBsdWdJblNuYXBzaG90QXR0ZW1wdHMoKSA6IDA7Ci0gICAgICAgICAgICBpZiAo
c25hcHNob3RJc0FsbW9zdFNvbGlkQ29sb3IgJiYgbV9jb3VudFNuYXBzaG90UmV0cmllcyA8IG1h
eGltdW1TbmFwc2hvdFJldHJpZXMgJiYgIXBsdWdJbkNhbWVPblNjcmVlbikgewotICAgICAgICAg
ICAgICAgICsrbV9jb3VudFNuYXBzaG90UmV0cmllczsKLSAgICAgICAgICAgICAgICBtX3BsdWdp
blNuYXBzaG90VGltZXIucmVzdGFydCgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLSNlbmRpZgotICAgICAgICB9Ci0gICAgfQotCi0jaWYgRU5BQkxFKFBSSU1BUllf
U05BUFNIT1RURURfUExVR0lOX0hFVVJJU1RJQykKLSAgICB1bnNpZ25lZCBjYW5kaWRhdGVBcmVh
ID0gMDsKLSAgICB1bnNpZ25lZCBtYXhpbXVtU25hcHNob3RSZXRyaWVzID0gZnJhbWUoKSA/IGZy
YW1lKCktPnNldHRpbmdzKCkubWF4aW11bVBsdWdJblNuYXBzaG90QXR0ZW1wdHMoKSA6IDA7Ci0g
ICAgYm9vbCBub1NuYXBzaG90Rm91bmRBZnRlck1heFJldHJpZXMgPSBtX2NvdW50U25hcHNob3RS
ZXRyaWVzID09IG1heGltdW1TbmFwc2hvdFJldHJpZXMgJiYgIWlzUGx1Z0luT25TY3JlZW4gJiYg
IXNuYXBzaG90Rm91bmQ7Ci0gICAgaWYgKG1fd2ViUGFnZS0+cGx1Z0luSXNQcmltYXJ5U2l6ZShw
bHVnSW5JbWFnZUVsZW1lbnQsIGNhbmRpZGF0ZUFyZWEpCi0gICAgICAgICYmIChub1NuYXBzaG90
Rm91bmRBZnRlck1heFJldHJpZXMgfHwgcGx1Z0luQ2FtZU9uU2NyZWVuKSkKLSAgICAgICAgbV9w
bHVnaW5FbGVtZW50LT5zZXREaXNwbGF5U3RhdGUoSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmcp
OwotICAgIGVsc2UKLSNlbmRpZgotICAgICAgICBtX3BsdWdpbkVsZW1lbnQtPnNldERpc3BsYXlT
dGF0ZShIVE1MUGx1Z0luRWxlbWVudDo6RGlzcGxheWluZ1NuYXBzaG90KTsKLX0KLQotdm9pZCBQ
bHVnaW5WaWV3OjpiZWdpblNuYXBzaG90dGluZ1J1bm5pbmdQbHVnaW4oKQotewotICAgIG1fcGx1
Z2luU25hcHNob3RUaW1lci5yZXN0YXJ0KCk7Ci19Ci0KLWJvb2wgUGx1Z2luVmlldzo6c2hvdWxk
QWx3YXlzQXV0b1N0YXJ0KCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcGx1Z2luKQotICAgICAgICBy
ZXR1cm4gUGx1Z2luVmlld0Jhc2U6OnNob3VsZEFsd2F5c0F1dG9TdGFydCgpOwotCi0gICAgaWYg
KE1JTUVUeXBlUmVnaXN0cnk6OmlzSmF2YUFwcGxldE1JTUVUeXBlKG1fcGFyYW1ldGVycy5taW1l
VHlwZSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIG1fcGx1Z2luLT5zaG91
bGRBbHdheXNBdXRvU3RhcnQoKTsKLX0KLQotdm9pZCBQbHVnaW5WaWV3OjpwbHVnaW5EaWRSZWNl
aXZlVXNlckludGVyYWN0aW9uKCkKLXsKLSAgICBpZiAoZnJhbWUoKSAmJiAhZnJhbWUoKS0+c2V0
dGluZ3MoKS5wbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChtX2RpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24pCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1fZGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbiA9IHRydWU7Ci0KLSAgICBIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50JiBwbHVnSW5JbWFnZUVsZW1lbnQgPSBkb3duY2FzdDxIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50PigqbV9wbHVnaW5FbGVtZW50KTsKLSAgICBTdHJpbmcgcGFnZU9yaWdpbiA9IHBs
dWdJbkltYWdlRWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQo
KS0+YmFzZVVSTCgpLmhvc3QoKS50b1N0cmluZygpOwotICAgIFN0cmluZyBwbHVnaW5PcmlnaW4g
PSBwbHVnSW5JbWFnZUVsZW1lbnQubG9hZGVkVXJsKCkuaG9zdCgpLnRvU3RyaW5nKCk7Ci0gICAg
U3RyaW5nIG1pbWVUeXBlID0gcGx1Z0luSW1hZ2VFbGVtZW50LnNlcnZpY2VUeXBlKCk7Ci0KLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9u
KHBhZ2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwgbWltZVR5cGUpOwotfQotCiBib29sIFBsdWdpblZp
ZXc6OnNob3VsZENyZWF0ZVRyYW5zaWVudFBhaW50aW5nU25hcHNob3QoKSBjb25zdAogewogICAg
IGlmICghbV9wbHVnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmgKaW5kZXggYTY1MDliNGY4YWRhNWE2ZGE3N2VhYjdmOWQ2N2E2YjczMzgxYTYyOC4u
ZmU2MWYxNTU4NDQwOTMwYmU4Mjg2YzlhNzUwY2M4OGJiZDYwMDEwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtMTQ4LDkgKzE0OCw2IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIHJlZGVsaXZlck1hbnVhbFN0cmVhbSgpOwogCi0gICAgdm9p
ZCBwbHVnaW5TbmFwc2hvdFRpbWVyRmlyZWQoKTsKLSAgICB2b2lkIHBsdWdpbkRpZFJlY2VpdmVV
c2VySW50ZXJhY3Rpb24oKTsKLQogICAgIGJvb2wgc2hvdWxkQ3JlYXRlVHJhbnNpZW50UGFpbnRp
bmdTbmFwc2hvdCgpIGNvbnN0OwogCiAgICAgLy8gV2ViQ29yZTo6UGx1Z2luVmlld0Jhc2UKQEAg
LTE2NSw4ICsxNjIsNiBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlNjcm9sbGJhciogaG9yaXpv
bnRhbFNjcm9sbGJhcigpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OlNjcm9sbGJhciogdmVydGlj
YWxTY3JvbGxiYXIoKSBvdmVycmlkZTsKICAgICBib29sIHdhbnRzV2hlZWxFdmVudHMoKSBvdmVy
cmlkZTsKLSAgICBib29sIHNob3VsZEFsd2F5c0F1dG9TdGFydCgpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZvaWQgYmVnaW5TbmFwc2hvdHRpbmdSdW5uaW5nUGx1Z2luKCkgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBzaG91bGRBbGxvd05hdmlnYXRpb25Gcm9tRHJhZ3MoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBib29sIHNob3VsZE5vdEFkZExheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxs
RGV0YWNoUmVuZGVyZXIoKSBvdmVycmlkZTsKQEAgLTI0NywxMCArMjQyLDYgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1faXNXYWl0aW5nVW50aWxNZWRpYUNhblN0YXJ0IHsgZmFsc2UgfTsKICAgICBi
b29sIG1fcGx1Z2luUHJvY2Vzc0hhc0NyYXNoZWQgeyBmYWxzZSB9OwogCi0jaWYgRU5BQkxFKFBS
SU1BUllfU05BUFNIT1RURURfUExVR0lOX0hFVVJJU1RJQykKLSAgICBib29sIG1fZGlkUGx1Z0lu
U3RhcnRPZmZTY3JlZW4geyBmYWxzZSB9OwotI2VuZGlmCi0KICAgICAvLyBQZW5kaW5nIFVSTFJl
cXVlc3RzIHRoYXQgdGhlIHBsdWctaW4gaGFzIG1hZGUuCiAgICAgRGVxdWU8UmVmUHRyPFVSTFJl
cXVlc3Q+PiBtX3BlbmRpbmdVUkxSZXF1ZXN0czsKICAgICBSdW5Mb29wOjpUaW1lcjxQbHVnaW5W
aWV3PiBtX3BlbmRpbmdVUkxSZXF1ZXN0c1RpbWVyOwpAQCAtMjc4LDEyICsyNjksNiBAQCBwcml2
YXRlOgogCiAgICAgLy8gVGhpcyBzbmFwc2hvdCBpcyB1c2VkIHRvIGF2b2lkIHNpZGUgZWZmZWN0
cyBzaG91bGQgdGhlIHBsdWdpbiBydW4gSlMgZHVyaW5nIHBhaW50aW5nLgogICAgIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IG1fdHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdDsKLSAgICAvLyBUaGlz
IHRpbWVyIGlzIHVzZWQgd2hlbiBwbHVnaW4gc25hcHNob3R0aW5nIGlzIGVuYWJsZWQsIHRvIGNh
cHR1cmUgYSBwbHVnaW4gcGxhY2Vob2xkZXIuCi0gICAgV2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNo
b3RUaW1lciBtX3BsdWdpblNuYXBzaG90VGltZXI7Ci0jaWYgRU5BQkxFKFBSSU1BUllfU05BUFNI
T1RURURfUExVR0lOX0hFVVJJU1RJQykgfHwgUExBVEZPUk0oQ09DT0EpCi0gICAgdW5zaWduZWQg
bV9jb3VudFNuYXBzaG90UmV0cmllcyB7IDAgfTsKLSNlbmRpZgotICAgIGJvb2wgbV9kaWRSZWNl
aXZlVXNlckludGVyYWN0aW9uIHsgZmFsc2UgfTsKIAogICAgIGRvdWJsZSBtX3BhZ2VTY2FsZUZh
Y3RvciB7IDEgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAKaW5kZXggODBkZTRkN2RjMmFmNjU3NDQw
Y2JlMTA0ODVhMGNhYTRhZmJjNDQzZS4uMjNjMjg1NGJkNzRhOWIxZWYyYTFhZWEzMWJmNWY3YmRk
YTJkNDIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2Vi
UGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCkBAIC02MSwzNSArNjEsNiBAQCBXZWJQbHVn
aW5JbmZvUHJvdmlkZXI6On5XZWJQbHVnaW5JbmZvUHJvdmlkZXIoKQogewogfQogCi0jaWYgUExB
VEZPUk0oTUFDKQotdm9pZCBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnNldFBsdWdpbkxvYWRDbGll
bnRQb2xpY3koV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeSBjbGllbnRQb2xpY3ksIGNv
bnN0IFN0cmluZyYgaG9zdCwgY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHZlcnNpb25TdHJpbmcpCi17Ci0gICAgU3RyaW5nIGhvc3RUb1NldCA9IGhvc3QuaXNO
dWxsKCkgfHwgIWhvc3QubGVuZ3RoKCkgPyAiKiIgOiBob3N0OwotICAgIFN0cmluZyBidW5kbGVJ
ZGVudGlmaWVyVG9TZXQgPSBidW5kbGVJZGVudGlmaWVyLmlzTnVsbCgpIHx8ICFidW5kbGVJZGVu
dGlmaWVyLmxlbmd0aCgpID8gIioiIDogYnVuZGxlSWRlbnRpZmllcjsKLSAgICBTdHJpbmcgdmVy
c2lvblN0cmluZ1RvU2V0ID0gdmVyc2lvblN0cmluZy5pc051bGwoKSB8fCAhdmVyc2lvblN0cmlu
Zy5sZW5ndGgoKSA/ICIqIiA6IHZlcnNpb25TdHJpbmc7Ci0KLSAgICBQbHVnaW5Qb2xpY3lNYXBz
QnlJZGVudGlmaWVyIHBvbGljaWVzQnlJZGVudGlmaWVyOwotICAgIGlmIChtX2hvc3RzVG9QbHVn
aW5JZGVudGlmaWVyRGF0YS5jb250YWlucyhob3N0VG9TZXQpKQotICAgICAgICBwb2xpY2llc0J5
SWRlbnRpZmllciA9IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmdldChob3N0VG9TZXQp
OwotCi0gICAgUGx1Z2luTG9hZENsaWVudFBvbGljaWVzQnlCdW5kbGVWZXJzaW9uIHZlcnNpb25z
VG9Qb2xpY2llczsKLSAgICBpZiAocG9saWNpZXNCeUlkZW50aWZpZXIuY29udGFpbnMoYnVuZGxl
SWRlbnRpZmllclRvU2V0KSkKLSAgICAgICAgdmVyc2lvbnNUb1BvbGljaWVzID0gcG9saWNpZXNC
eUlkZW50aWZpZXIuZ2V0KGJ1bmRsZUlkZW50aWZpZXJUb1NldCk7Ci0KLSAgICB2ZXJzaW9uc1Rv
UG9saWNpZXMuc2V0KHZlcnNpb25TdHJpbmdUb1NldCwgY2xpZW50UG9saWN5KTsKLSAgICBwb2xp
Y2llc0J5SWRlbnRpZmllci5zZXQoYnVuZGxlSWRlbnRpZmllclRvU2V0LCBXVEZNb3ZlKHZlcnNp
b25zVG9Qb2xpY2llcykpOwotICAgIG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLnNldCho
b3N0VG9TZXQsIHBvbGljaWVzQnlJZGVudGlmaWVyKTsKLQotICAgIGNsZWFyUGFnZXNQbHVnaW5E
YXRhKCk7Ci19Ci0KLXZvaWQgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpjbGVhclBsdWdpbkNsaWVu
dFBvbGljaWVzKCkKLXsKLSAgICBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5jbGVhcigp
OwotICAgIGNsZWFyUGFnZXNQbHVnaW5EYXRhKCk7Ci19Ci0jZW5kaWYKLQogdm9pZCBXZWJQbHVn
aW5JbmZvUHJvdmlkZXI6OnJlZnJlc2hQbHVnaW5zKCkKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVf
UExVR0lOX0FQSSkKQEAgLTE0Myw3ICsxMTQsNyBAQCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5m
bz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1Z2luSW5mbyhQYWdlJiBwYQog
fQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi12b2lkIFdlYlBsdWdpbkluZm9Q
cm92aWRlcjo6cG9wdWxhdGVQbHVnaW5DYWNoZShjb25zdCBXZWJDb3JlOjpQYWdlJiBwYWdlKQor
dm9pZCBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnBvcHVsYXRlUGx1Z2luQ2FjaGUoY29uc3QgV2Vi
Q29yZTo6UGFnZSYpCiB7CiAgICAgaWYgKCFtX3BsdWdpbkNhY2hlSXNQb3B1bGF0ZWQpIHsKICNp
ZiBQTEFURk9STShDT0NPQSkKQEAgLTE2MiwxMDEgKzEzMyw2IEBAIHZvaWQgV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyOjpwb3B1bGF0ZVBsdWdpbkNhY2hlKGNvbnN0IFdlYkNvcmU6OlBhZ2UmIHBhZ2Up
CiAgICAgICAgIG1fc2hvdWxkUmVmcmVzaFBsdWdpbnMgPSBmYWxzZTsKICAgICAgICAgbV9wbHVn
aW5DYWNoZUlzUG9wdWxhdGVkID0gdHJ1ZTsKICAgICB9Ci0KLSNpZiBQTEFURk9STShNQUMpCi0g
ICAgU3RyaW5nIHBhZ2VIb3N0ID0gcGFnZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExv
YWRlcigpLT5yZXNwb25zZVVSTCgpLmhvc3QoKS50b1N0cmluZygpOwotICAgIGlmIChwYWdlSG9z
dC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGZvciAoYXV0byYgaW5mbyA6IG1fY2Fj
aGVkUGx1Z2lucykgewotICAgICAgICBpZiAoYXV0byBjbGllbnRQb2xpY3kgPSBwbHVnaW5Mb2Fk
Q2xpZW50UG9saWN5Rm9ySG9zdChwYWdlSG9zdCwgaW5mbykpCi0gICAgICAgICAgICBpbmZvLmNs
aWVudExvYWRQb2xpY3kgPSAqY2xpZW50UG9saWN5OwotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKHBhZ2UpOwotI2VuZGlmIC8vIG5vdCBQTEFURk9STShNQUMpCi19Ci0jZW5kaWYKLQot
I2lmIFBMQVRGT1JNKE1BQykKLU9wdGlvbmFsPFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xp
Y3k+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6cGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3Qo
Y29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBXZWJDb3JlOjpQbHVnaW5JbmZvJiBpbmZvKSBjb25z
dAotewotICAgIFN0cmluZyBob3N0VG9Mb29rVXAgPSBob3N0OwotICAgIFN0cmluZyBpZGVudGlm
aWVyID0gaW5mby5idW5kbGVJZGVudGlmaWVyOwotCi0gICAgYXV0byBwb2xpY2llc0J5SWRlbnRp
Zmllckl0ZXJhdG9yID0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuZmluZChob3N0VG9M
b29rVXApOwotCi0gICAgaWYgKCFpZGVudGlmaWVyLmlzTnVsbCgpICYmIHBvbGljaWVzQnlJZGVu
dGlmaWVySXRlcmF0b3IgPT0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuZW5kKCkpIHsK
LSAgICAgICAgaWYgKCFyZXBsYWNlSG9zdFdpdGhNYXRjaGVkV2lsZGNhcmRIb3N0KGhvc3RUb0xv
b2tVcCwgaWRlbnRpZmllcikpCi0gICAgICAgICAgICBob3N0VG9Mb29rVXAgPSAiKiI7Ci0gICAg
ICAgIHBvbGljaWVzQnlJZGVudGlmaWVySXRlcmF0b3IgPSBtX2hvc3RzVG9QbHVnaW5JZGVudGlm
aWVyRGF0YS5maW5kKGhvc3RUb0xvb2tVcCk7Ci0gICAgICAgIGlmIChob3N0VG9Mb29rVXAgIT0g
IioiICYmIHBvbGljaWVzQnlJZGVudGlmaWVySXRlcmF0b3IgPT0gbV9ob3N0c1RvUGx1Z2luSWRl
bnRpZmllckRhdGEuZW5kKCkpIHsKLSAgICAgICAgICAgIGhvc3RUb0xvb2tVcCA9ICIqIjsKLSAg
ICAgICAgICAgIHBvbGljaWVzQnlJZGVudGlmaWVySXRlcmF0b3IgPSBtX2hvc3RzVG9QbHVnaW5J
ZGVudGlmaWVyRGF0YS5maW5kKGhvc3RUb0xvb2tVcCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
aWYgKHBvbGljaWVzQnlJZGVudGlmaWVySXRlcmF0b3IgPT0gbV9ob3N0c1RvUGx1Z2luSWRlbnRp
ZmllckRhdGEuZW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBhdXRv
JiBwb2xpY2llc0J5SWRlbnRpZmllciA9IHBvbGljaWVzQnlJZGVudGlmaWVySXRlcmF0b3ItPnZh
bHVlOwotCi0gICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICBpZGVudGlmaWVyID0gIioiOwot
Ci0gICAgYXV0byBpZGVudGlmaWVyUG9saWN5SXRlcmF0b3IgPSBwb2xpY2llc0J5SWRlbnRpZmll
ci5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpZGVudGlmaWVyICE9ICIqIiAmJiBpZGVudGlm
aWVyUG9saWN5SXRlcmF0b3IgPT0gcG9saWNpZXNCeUlkZW50aWZpZXIuZW5kKCkpIHsKLSAgICAg
ICAgaWRlbnRpZmllciA9ICIqIjsKLSAgICAgICAgaWRlbnRpZmllclBvbGljeUl0ZXJhdG9yID0g
cG9saWNpZXNCeUlkZW50aWZpZXIuZmluZChpZGVudGlmaWVyKTsKLSAgICB9Ci0KLSAgICBpZiAo
aWRlbnRpZmllclBvbGljeUl0ZXJhdG9yID09IHBvbGljaWVzQnlJZGVudGlmaWVyLmVuZCgpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgYXV0byYgdmVyc2lvbnNUb1BvbGlj
aWVzID0gaWRlbnRpZmllclBvbGljeUl0ZXJhdG9yLT52YWx1ZTsKLQotICAgIFN0cmluZyB2ZXJz
aW9uID0gaW5mby52ZXJzaW9uU3RyaW5nOwotICAgIGlmICghdmVyc2lvbikKLSAgICAgICAgdmVy
c2lvbiA9ICIqIjsKLSAgICBhdXRvIHBvbGljeUl0ZXJhdG9yID0gdmVyc2lvbnNUb1BvbGljaWVz
LmZpbmQodmVyc2lvbik7Ci0gICAgaWYgKHZlcnNpb24gIT0gIioiICYmIHBvbGljeUl0ZXJhdG9y
ID09IHZlcnNpb25zVG9Qb2xpY2llcy5lbmQoKSkgewotICAgICAgICB2ZXJzaW9uID0gIioiOwot
ICAgICAgICBwb2xpY3lJdGVyYXRvciA9IHZlcnNpb25zVG9Qb2xpY2llcy5maW5kKHZlcnNpb24p
OwotICAgIH0KLQotICAgIGlmIChwb2xpY3lJdGVyYXRvciA9PSB2ZXJzaW9uc1RvUG9saWNpZXMu
ZW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gcG9saWN5
SXRlcmF0b3ItPnZhbHVlOwotfQotCi1TdHJpbmcgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpsb25n
ZXN0TWF0Y2hlZFdpbGRjYXJkSG9zdEZvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KSBjb25zdAot
ewotICAgIFN0cmluZyBsb25nZXN0TWF0Y2hlZEhvc3Q7Ci0KLSAgICBmb3IgKGF1dG8mIGtleSA6
IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmtleXMoKSkgewotICAgICAgICBpZiAoa2V5
LmNvbnRhaW5zKCcqJykgJiYga2V5ICE9ICIqIiAmJiBzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJp
bmcoaG9zdCwga2V5KSkgewotICAgICAgICAgICAgaWYgKGtleS5sZW5ndGgoKSA+IGxvbmdlc3RN
YXRjaGVkSG9zdC5sZW5ndGgoKSkKLSAgICAgICAgICAgICAgICBsb25nZXN0TWF0Y2hlZEhvc3Qg
PSBrZXk7Ci0gICAgICAgICAgICBlbHNlIGlmIChrZXkubGVuZ3RoKCkgPT0gbG9uZ2VzdE1hdGNo
ZWRIb3N0Lmxlbmd0aCgpICYmIGNvZGVQb2ludENvbXBhcmVMZXNzVGhhbihrZXksIGxvbmdlc3RN
YXRjaGVkSG9zdCkpCi0gICAgICAgICAgICAgICAgbG9uZ2VzdE1hdGNoZWRIb3N0ID0ga2V5Owot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGxvbmdlc3RNYXRjaGVkSG9zdDsKLX0KLQot
Ym9vbCBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnJlcGxhY2VIb3N0V2l0aE1hdGNoZWRXaWxkY2Fy
ZEhvc3QoU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0Ci17Ci0g
ICAgU3RyaW5nIG1hdGNoZWRXaWxkY2FyZEhvc3QgPSBsb25nZXN0TWF0Y2hlZFdpbGRjYXJkSG9z
dEZvckhvc3QoaG9zdCk7Ci0KLSAgICBpZiAobWF0Y2hlZFdpbGRjYXJkSG9zdC5pc051bGwoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBwbHVnSW5JZGVudGlmaWVyRGF0YSA9
IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmZpbmQobWF0Y2hlZFdpbGRjYXJkSG9zdCk7
Ci0gICAgaWYgKHBsdWdJbklkZW50aWZpZXJEYXRhID09IG1faG9zdHNUb1BsdWdpbklkZW50aWZp
ZXJEYXRhLmVuZCgpIHx8ICFwbHVnSW5JZGVudGlmaWVyRGF0YS0+dmFsdWUuY29udGFpbnMoaWRl
bnRpZmllcikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGhvc3QgPSBtYXRjaGVkV2ls
ZGNhcmRIb3N0OwotICAgIHJldHVybiB0cnVlOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgK
aW5kZXggM2Y5YTBiOGY4YmU4OGJlZjJlMmEyYjBiZDNiNTUwNmY1MTllZWQ0MS4uNDgzODNiMzYz
ZjU5MmVhNDAwOTg2OTFlNGI4OTk4MDgxZjYwZDQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKQEAgLTM3
LDExICszNyw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyJiBz
aW5nbGV0b24oKTsKICAgICB2aXJ0dWFsIH5XZWJQbHVnaW5JbmZvUHJvdmlkZXIoKTsKIAotI2lm
IFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIHNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koV2ViQ29y
ZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeSwgY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBTdHJp
bmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZyk7Ci0gICAg
dm9pZCBjbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCk7Ci0jZW5kaWYKLQogcHJpdmF0ZToKICAg
ICBXZWJQbHVnaW5JbmZvUHJvdmlkZXIoKTsKIApAQCAtNTEsMTYgKzQ2LDYgQEAgcHJpdmF0ZToK
IAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIHZvaWQgcG9wdWxhdGVQbHVn
aW5DYWNoZShjb25zdCBXZWJDb3JlOjpQYWdlJik7Ci0jZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCi0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6
UGx1Z2luTG9hZENsaWVudFBvbGljeT4gcGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QoY29u
c3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6UGx1Z2luSW5mbyYpIGNvbnN0OwotICAgIFN0cmlu
ZyBsb25nZXN0TWF0Y2hlZFdpbGRjYXJkSG9zdEZvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KSBj
b25zdDsKLSAgICBib29sIHJlcGxhY2VIb3N0V2l0aE1hdGNoZWRXaWxkY2FyZEhvc3QoU3RyaW5n
JiBob3N0LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0OwotCi0gICAgdHlwZWRlZiBI
YXNoTWFwPFN0cmluZywgV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeT4gUGx1Z2luTG9h
ZENsaWVudFBvbGljaWVzQnlCdW5kbGVWZXJzaW9uOwotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJp
bmcsIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llc0J5QnVuZGxlVmVyc2lvbj4gUGx1Z2luUG9saWN5
TWFwc0J5SWRlbnRpZmllcjsKLSAgICBIYXNoTWFwPFN0cmluZywgUGx1Z2luUG9saWN5TWFwc0J5
SWRlbnRpZmllcj4gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGE7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODM2Nzg5ZDkzNDE0MmQyN2M1N2M0ZmYxZmE3NmZhY2I1
ZjUyMDNhNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViUGx1Z0luQ2xpZW50LmgiCi0KLSNpbmNsdWRlICJMb2dn
aW5nLmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLVdlYlBsdWdJbkNsaWVudDo6V2ViUGx1Z0luQ2xpZW50KFdlYlBhZ2UmIHdlYlBhZ2Up
Ci0gICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkKLQotewotfQotCi1XZWJQbHVnSW5DbGllbnQ6On5X
ZWJQbHVnSW5DbGllbnQoKQotewotfQotCi1ib29sIFdlYlBsdWdJbkNsaWVudDo6c2hvdWxkQXV0
b1N0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYg
cGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQotewotICAgIHJldHVybiBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRQbHVnSW5BdXRvU3RhcnRGcm9tT3JpZ2luKG1fd2Vi
UGFnZSwgcGFnZU9yaWdpbiwgcGx1Z2luT3JpZ2luLCBtaW1lVHlwZSk7Ci19Ci0KLXZvaWQgV2Vi
UGx1Z0luQ2xpZW50OjpkaWRTdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2lu
LCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKLXsK
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wbHVnSW5EaWRTdGFydEZyb21PcmlnaW4ocGFn
ZU9yaWdpbiwgcGx1Z2luT3JpZ2luLCBtaW1lVHlwZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsdWdJbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsdWdJbkNsaWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDMz
YTU4Y2QwOThkNTZhYzE2NzlkYTE2Y2RkMDc1NDJmOTRjMGJlLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlBsdWdJbkNsaWVudF9oCi0jZGVmaW5lIFdlYlBs
dWdJbkNsaWVudF9oCi0KLSNpbmNsdWRlIDxXZWJDb3JlL1BsdWdJbkNsaWVudC5oPgotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViUGFnZTsKLQotY2xhc3MgV2ViUGx1Z0luQ2xpZW50
IDogcHVibGljIFdlYkNvcmU6OlBsdWdJbkNsaWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViUGx1Z0luQ2xpZW50KFdlYlBhZ2UmKTsK
LSAgICB2aXJ0dWFsIH5XZWJQbHVnSW5DbGllbnQoKTsKLQotcHJpdmF0ZToKLSAgICBib29sIHNo
b3VsZEF1dG9TdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBT
dHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkaWRTdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25z
dCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgb3ZlcnJpZGU7
Ci0KLSAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8qIFdlYlBsdWdJbkNsaWVudCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAxOWEyMGI3NmE2YmUxNzY1NGI1NzgxZDEzYjY4
YTA5NWJjY2NiZTAwLi5hZWFlYmJmMGE0NDRiNzM3NjIwZGZkMjYyNGMxMmVmYjY5YThjNWU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTE1
LDcgKzExNSw2IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJQYXltZW50Q29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJXZWJQZXJmb3JtYW5jZUxvZ2dp
bmdDbGllbnQuaCIKLSNpbmNsdWRlICJXZWJQbHVnSW5DbGllbnQuaCIKICNpbmNsdWRlICJXZWJQ
bHVnaW5JbmZvUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnUuaCIKICNpbmNsdWRl
ICJXZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmgiCkBAIC0xODQsNyArMTgzLDYgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0hUTUxNZW51RWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE1l
bnVJdGVtRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTFBsdWdJbkVsZW1lbnQuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0hUTUxTZWxlY3RFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGlzdG9yeUNvbnRyb2xsZXIu
aD4KQEAgLTQyNSw5ICs0MjMsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgLCBtX3No
b3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyB7IHBhcmFtZXRlcnMuc2hvdWxkUGxheU1lZGlhSW5H
UFVQcm9jZXNzIH0KICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgLCBtX25lZWRz
SW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IHBhcmFtZXRlcnMubmVlZHNJbkFwcEJyb3dzZXJQ
cml2YWN5UXVpcmtzIH0KLSNlbmRpZgotI2lmIEVOQUJMRShQUklNQVJZX1NOQVBTSE9UVEVEX1BM
VUdJTl9IRVVSSVNUSUMpCi0gICAgLCBtX2RldGVybWluZVByaW1hcnlTbmFwc2hvdHRlZFBsdWdJ
blRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBhZ2U6OmRldGVybWluZVByaW1hcnlT
bmFwc2hvdHRlZFBsdWdJblRpbWVyRmlyZWQpCiAjZW5kaWYKICAgICAsIG1fbGF5ZXJIb3N0aW5n
TW9kZShwYXJhbWV0ZXJzLmxheWVySG9zdGluZ01vZGUpCiAjaWYgRU5BQkxFKFBMQVRGT1JNX0RS
SVZFTl9URVhUX0NIRUNLSU5HKQpAQCAtNTIxLDcgKzUxNiw2IEBAIFdlYlBhZ2U6OldlYlBhZ2Uo
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycykKICAgICBwYWdlQ29uZmlndXJhdGlvbi5hbHRlcm5hdGl2ZVRleHRDbGllbnQgPSBtYWtl
VW5pcXVlPFdlYkFsdGVybmF0aXZlVGV4dENsaWVudD4odGhpcyk7CiAjZW5kaWYKIAotICAgIHBh
Z2VDb25maWd1cmF0aW9uLnBsdWdJbkNsaWVudCA9IG1ha2VVbmlxdWU8V2ViUGx1Z0luQ2xpZW50
PigqdGhpcyk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQg
PSBtYWtlVW5pcXVlPFdlYkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PigqdGhpcyk7CiAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24ucGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJQ
ZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQ+KCp0aGlzKTsKIApAQCAtMTA3MiwyMSArMTA2NiwxMyBA
QCBSZWZQdHI8UGx1Z2luPiBXZWJQYWdlOjpjcmVhdGVQbHVnaW4oV2ViRnJhbWUqIGZyYW1lLCBI
VE1MUGx1Z0luRWxlbWVudCogcGx1Z2luRQogICAgIFN0cmluZyBmcmFtZVVSTFN0cmluZyA9IGZy
YW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2VVUkwo
KS5zdHJpbmcoKTsKICAgICBTdHJpbmcgcGFnZVVSTFN0cmluZyA9IG1fcGFnZS0+bWFpbkZyYW1l
KCkubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2VVUkwoKS5zdHJpbmcoKTsKIAot
I2lmIEVOQUJMRShQUklNQVJZX1NOQVBTSE9UVEVEX1BMVUdJTl9IRVVSSVNUSUMpCi0gICAgSFRN
TFBsdWdJbkltYWdlRWxlbWVudCYgcGx1Z2luSW1hZ2VFbGVtZW50ID0gZG93bmNhc3Q8SFRNTFBs
dWdJbkltYWdlRWxlbWVudD4oKnBsdWdpbkVsZW1lbnQpOwotICAgIHVuc2lnbmVkIHBsdWdpbkFy
ZWEgPSAwOwotICAgIFBsdWdpblByb2Nlc3NUeXBlIHByb2Nlc3NUeXBlID0gcGx1Z2luRWxlbWVu
dC0+ZGlzcGxheVN0YXRlKCkgPT0gSFRNTFBsdWdJbkVsZW1lbnQ6OldhaXRpbmdGb3JTbmFwc2hv
dCAmJiAhKHBsdWdJbklzUHJpbWFyeVNpemUocGx1Z2luSW1hZ2VFbGVtZW50LCBwbHVnaW5BcmVh
KSAmJiAhcGx1Z0luSW50ZXJzZWN0c1NlYXJjaFJlY3QocGx1Z2luSW1hZ2VFbGVtZW50KSkgPyBQ
bHVnaW5Qcm9jZXNzVHlwZTo6U25hcHNob3QgOiBQbHVnaW5Qcm9jZXNzVHlwZTo6Tm9ybWFsOwot
I2Vsc2UKLSAgICBQbHVnaW5Qcm9jZXNzVHlwZSBwcm9jZXNzVHlwZSA9IHBsdWdpbkVsZW1lbnQt
PmRpc3BsYXlTdGF0ZSgpID09IEhUTUxQbHVnSW5FbGVtZW50OjpXYWl0aW5nRm9yU25hcHNob3Qg
PyBQbHVnaW5Qcm9jZXNzVHlwZTo6U25hcHNob3QgOiBQbHVnaW5Qcm9jZXNzVHlwZTo6Tm9ybWFs
OwotI2VuZGlmCi0KICAgICBib29sIGFsbG93T25seUFwcGxpY2F0aW9uUGx1Z2lucyA9ICFmcmFt
ZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmFyZVBsdWdpbnNFbmFibGVkKCk7CiAKICAgICB1aW50
NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW47CiAgICAgdWludDMyX3QgcGx1Z2luTG9hZFBvbGljeTsK
ICAgICBTdHJpbmcgdW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbjsKICAgICBib29sIGlzVW5zdXBw
b3J0ZWQ7Ci0gICAgaWYgKCFzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5kUGx1
Z2luKHBhcmFtZXRlcnMubWltZVR5cGUsIHByb2Nlc3NUeXBlLCBwYXJhbWV0ZXJzLnVybC5zdHJp
bmcoKSwgZnJhbWVVUkxTdHJpbmcsIHBhZ2VVUkxTdHJpbmcsIGFsbG93T25seUFwcGxpY2F0aW9u
UGx1Z2lucyksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmRQbHVnaW46OlJlcGx5KHBsdWdp
blByb2Nlc3NUb2tlbiwgbmV3TUlNRVR5cGUsIHBsdWdpbkxvYWRQb2xpY3ksIHVuYXZhaWxhYmls
aXR5RGVzY3JpcHRpb24sIGlzVW5zdXBwb3J0ZWQpKSkKKyAgICBpZiAoIXNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkZpbmRQbHVnaW4ocGFyYW1ldGVycy5taW1lVHlwZSwgcGFyYW1l
dGVycy51cmwuc3RyaW5nKCksIGZyYW1lVVJMU3RyaW5nLCBwYWdlVVJMU3RyaW5nLCBhbGxvd09u
bHlBcHBsaWNhdGlvblBsdWdpbnMpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5kUGx1Z2lu
OjpSZXBseShwbHVnaW5Qcm9jZXNzVG9rZW4sIG5ld01JTUVUeXBlLCBwbHVnaW5Mb2FkUG9saWN5
LCB1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uLCBpc1Vuc3VwcG9ydGVkKSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgUGx1Z2luTW9kdWxlTG9hZFBvbGljeSBsb2FkUG9saWN5ID0g
c3RhdGljX2Nhc3Q8UGx1Z2luTW9kdWxlTG9hZFBvbGljeT4ocGx1Z2luTG9hZFBvbGljeSk7CkBA
IC0xMTIwLDggKzExMDYsNyBAQCBSZWZQdHI8UGx1Z2luPiBXZWJQYWdlOjpjcmVhdGVQbHVnaW4o
V2ViRnJhbWUqIGZyYW1lLCBIVE1MUGx1Z0luRWxlbWVudCogcGx1Z2luRQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBib29sIGlzUmVzdGFydGVkUHJvY2VzcyA9IChwbHVn
aW5FbGVtZW50LT5kaXNwbGF5U3RhdGUoKSA9PSBIVE1MUGx1Z0luRWxlbWVudDo6UmVzdGFydGlu
ZyB8fCBwbHVnaW5FbGVtZW50LT5kaXNwbGF5U3RhdGUoKSA9PSBIVE1MUGx1Z0luRWxlbWVudDo6
UmVzdGFydGluZ1dpdGhQZW5kaW5nTW91c2VDbGljayk7Ci0gICAgcmV0dXJuIFBsdWdpblByb3h5
OjpjcmVhdGUocGx1Z2luUHJvY2Vzc1Rva2VuLCBpc1Jlc3RhcnRlZFByb2Nlc3MpOworICAgIHJl
dHVybiBQbHVnaW5Qcm94eTo6Y3JlYXRlKHBsdWdpblByb2Nlc3NUb2tlbik7CiB9CiAjZW5kaWYg
Ly8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKQEAgLTE0ODMsMTAgKzE0NjgsNiBAQCB2
b2lkIFdlYlBhZ2U6OmNsb3NlKCkKIAogICAgIG1fc2FuZGJveEV4dGVuc2lvblRyYWNrZXIuaW52
YWxpZGF0ZSgpOwogCi0jaWYgRU5BQkxFKFBSSU1BUllfU05BUFNIT1RURURfUExVR0lOX0hFVVJJ
U1RJQykKLSAgICBtX2RldGVybWluZVByaW1hcnlTbmFwc2hvdHRlZFBsdWdJblRpbWVyLnN0b3Ao
KTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKICAgICBtX3RleHRBdXRv
U2l6aW5nQWRqdXN0bWVudFRpbWVyLnN0b3AoKTsKICNlbmRpZgpAQCAtNDY1MywxMCArNDYzNCw2
IEBAIHZvaWQgV2ViUGFnZTo6YWRkUGx1Z2luVmlldyhQbHVnaW5WaWV3KiBwbHVnaW5WaWV3KQog
CiAgICAgbV9wbHVnaW5WaWV3cy5hZGQocGx1Z2luVmlldyk7CiAgICAgbV9oYXNTZWVuUGx1Z2lu
ID0gdHJ1ZTsKLSNpZiBFTkFCTEUoUFJJTUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElD
KQotICAgIExPRyhQbHVnaW5zLCAiUHJpbWFyeSBQbHVnLUluIERldGVjdGlvbjogdHJpZ2dlcmlu
ZyBkZXRlY3Rpb24gZnJvbSBhZGRQbHVnaW5WaWV3KCVwKSIsIHBsdWdpblZpZXcpOwotICAgIG1f
ZGV0ZXJtaW5lUHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7
Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJQYWdlOjpyZW1vdmVQbHVnaW5WaWV3KFBsdWdpblZpZXcq
IHBsdWdpblZpZXcpCkBAIC00NjY0LDkgKzQ2NDEsNiBAQCB2b2lkIFdlYlBhZ2U6OnJlbW92ZVBs
dWdpblZpZXcoUGx1Z2luVmlldyogcGx1Z2luVmlldykKICAgICBBU1NFUlQobV9wbHVnaW5WaWV3
cy5jb250YWlucyhwbHVnaW5WaWV3KSk7CiAKICAgICBtX3BsdWdpblZpZXdzLnJlbW92ZShwbHVn
aW5WaWV3KTsKLSNpZiBFTkFCTEUoUFJJTUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElD
KQotICAgIExPRyhQbHVnaW5zLCAiUHJpbWFyeSBQbHVnLUluIERldGVjdGlvbjogcmVtb3ZlUGx1
Z2luVmlldyglcCkiLCBwbHVnaW5WaWV3KTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYlBhZ2U6OnNl
bmRTZXRXaW5kb3dGcmFtZShjb25zdCBGbG9hdFJlY3QmIHdpbmRvd0ZyYW1lKQpAQCAtNTQzNSw3
ICs1NDA5LDcgQEAgYm9vbCBXZWJQYWdlOjpjYW5QbHVnaW5IYW5kbGVSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBTdHJpbmcgbmV3TUlNRVR5cGU7CiAgICAg
U3RyaW5nIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb247CiAgICAgYm9vbCBpc1Vuc3VwcG9ydGVk
ID0gZmFsc2U7Ci0gICAgaWYgKCFzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5k
UGx1Z2luKHJlc3BvbnNlLm1pbWVUeXBlKCksIFBsdWdpblByb2Nlc3NUeXBlOjpOb3JtYWwsIHJl
c3BvbnNlLnVybCgpLnN0cmluZygpLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgcmVzcG9uc2Uu
dXJsKCkuc3RyaW5nKCksIGFsbG93T25seUFwcGxpY2F0aW9uUGx1Z2lucyksIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkZpbmRQbHVnaW46OlJlcGx5KHBsdWdpblByb2Nlc3NUb2tlbiwgbmV3TUlN
RVR5cGUsIHBsdWdpbkxvYWRQb2xpY3ksIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24sIGlzVW5z
dXBwb3J0ZWQpKSkKKyAgICBpZiAoIXNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZp
bmRQbHVnaW4ocmVzcG9uc2UubWltZVR5cGUoKSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIHJl
c3BvbnNlLnVybCgpLnN0cmluZygpLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgYWxsb3dPbmx5
QXBwbGljYXRpb25QbHVnaW5zKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluZFBsdWdpbjo6
UmVwbHkocGx1Z2luUHJvY2Vzc1Rva2VuLCBuZXdNSU1FVHlwZSwgcGx1Z2luTG9hZFBvbGljeSwg
dW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbiwgaXNVbnN1cHBvcnRlZCkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBBU1NFUlQoIWlzVW5zdXBwb3J0ZWQpOwpAQCAtNjEwOCwxMCArNjA4
Miw2IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ29tbWl0TG9hZChXZWJGcmFtZSogZnJhbWUpCiAgICAg
bV90ZXh0QXV0b1NpemluZ0FkanVzdG1lbnRUaW1lci5zdG9wKCk7CiAjZW5kaWYKIAotI2lmIEVO
QUJMRShQUklNQVJZX1NOQVBTSE9UVEVEX1BMVUdJTl9IRVVSSVNUSUMpCi0gICAgcmVzZXRQcmlt
YXJ5U25hcHNob3R0ZWRQbHVnSW4oKTsKLSNlbmRpZgotCiAjaWYgVVNFKE9TX1NUQVRFKQogICAg
IG1fbG9hZENvbW1pdFRpbWUgPSBXYWxsVGltZTo6bm93KCk7CiAjZW5kaWYKQEAgLTYxNDAsMTIg
KzYxMTAsNiBAQCB2b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExvYWQoV2ViRnJhbWUmIGZyYW1lKQog
CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2VuZFByZXdhcm1JbmZvcm1hdGlvbihmcmFt
ZS51cmwoKSk7CiAKLSNpZiBFTkFCTEUoUFJJTUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5fSEVVUklT
VElDKQotICAgIG1fcmVhZHlUb0ZpbmRQcmltYXJ5U25hcHNob3R0ZWRQbHVnaW4gPSB0cnVlOwot
ICAgIExPRyhQbHVnaW5zLCAiUHJpbWFyeSBQbHVnLUluIERldGVjdGlvbjogdHJpZ2dlcmluZyBk
ZXRlY3Rpb24gZnJvbSBkaWRGaW5pc2hMb2FkIChtYXJraW5nIGFzIHJlYWR5IHRvIGRldGVjdCku
Iik7Ci0gICAgbV9kZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5UaW1lci5zdGFydE9u
ZVNob3QoMF9zKTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFZJRVdQT1JUX1JFU0laSU5HKQogICAg
IHNocmlua1RvRml0Q29udGVudChab29tVG9Jbml0aWFsU2NhbGU6Olllcyk7CiAjZW5kaWYKQEAg
LTYxOTMsMTk3ICs2MTU3LDYgQEAgdm9pZCBXZWJQYWdlOjp0ZXN0UHJvY2Vzc0luY29taW5nU3lu
Y01lc3NhZ2VzV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkoTWVzc2FnZXM6OlcKICAgICByZXBseSh0
cnVlKTsKIH0KIAotI2lmIEVOQUJMRShQUklNQVJZX1NOQVBTSE9UVEVEX1BMVUdJTl9IRVVSSVNU
SUMpCi1zdGF0aWMgY29uc3QgaW50IHByaW1hcnlTbmFwc2hvdHRlZFBsdWdJblNlYXJjaExpbWl0
ID0gMzAwMDsKLXN0YXRpYyBjb25zdCBmbG9hdCBwcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5TZWFy
Y2hCdWNrZXRTaXplID0gMS4xOwotc3RhdGljIGNvbnN0IGludCBwcmltYXJ5U25hcHNob3R0ZWRQ
bHVnSW5NaW5pbXVtV2lkdGggPSA0MDA7Ci1zdGF0aWMgY29uc3QgaW50IHByaW1hcnlTbmFwc2hv
dHRlZFBsdWdJbk1pbmltdW1IZWlnaHQgPSAzMDA7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4
UHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luRGV0ZWN0aW9uQXR0ZW1wdHMgPSAyOwotc3RhdGljIGNv
bnN0IFNlY29uZHMgZGVmZXJyZWRQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5EZXRlY3Rpb25EZWxh
eSA9IDNfczsKLXN0YXRpYyBjb25zdCBmbG9hdCBvdmVybGFwcGluZ0ltYWdlQm91bmRzU2NhbGUg
PSAxLjE7Ci1zdGF0aWMgY29uc3QgZmxvYXQgbWluaW11bU92ZXJsYXBwaW5nSW1hZ2VUb1BsdWdp
bkRpbWVuc2lvblNjYWxlID0gLjk7Ci0KLSNpZiBFTkFCTEUoUFJJTUFSWV9TTkFQU0hPVFRFRF9Q
TFVHSU5fSEVVUklTVElDKQotdm9pZCBXZWJQYWdlOjpkZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0
ZWRQbHVnSW5UaW1lckZpcmVkKCkKLXsKLSAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJu
OwotICAgIAotICAgIFNldHRpbmdzJiBzZXR0aW5ncyA9IG1fcGFnZS0+c2V0dGluZ3MoKTsKLSAg
ICBpZiAoIXNldHRpbmdzLnNuYXBzaG90QWxsUGx1Z0lucygpICYmIHNldHRpbmdzLnByaW1hcnlQ
bHVnSW5TbmFwc2hvdERldGVjdGlvbkVuYWJsZWQoKSkKLSAgICAgICAgZGV0ZXJtaW5lUHJpbWFy
eVNuYXBzaG90dGVkUGx1Z0luKCk7Ci19Ci0jZW5kaWYKLQotdm9pZCBXZWJQYWdlOjpkZXRlcm1p
bmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW4oKQotewotICAgIGlmICghbV9wYWdlLT5zZXR0aW5n
cygpLnBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
TE9HKFBsdWdpbnMsICJQcmltYXJ5IFBsdWctSW4gRGV0ZWN0aW9uOiBiZWdhbi4iKTsKLQotICAg
IGlmICghbV9yZWFkeVRvRmluZFByaW1hcnlTbmFwc2hvdHRlZFBsdWdpbikgewotICAgICAgICBM
T0coUGx1Z2lucywgIlByaW1hcnkgUGx1Zy1JbiBEZXRlY3Rpb246IGV4aXRpbmcgLSBub3QgcmVh
ZHkgdG8gZmluZCBwbHVnaW5zLiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KCFtX2hhc1NlZW5QbHVnaW4pIHsKLSAgICAgICAgTE9HKFBsdWdpbnMsICJQcmltYXJ5IFBsdWct
SW4gRGV0ZWN0aW9uOiBleGl0aW5nIC0gd2UgbmV2ZXIgc2F3IGEgcGx1Zy1pbiBnZXQgYWRkZWQg
dG8gdGhlIHBhZ2UuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobV9kaWRG
aW5kUHJpbWFyeVNuYXBzaG90dGVkUGx1Z2luKSB7Ci0gICAgICAgIExPRyhQbHVnaW5zLCAiUHJp
bWFyeSBQbHVnLUluIERldGVjdGlvbjogZXhpdGluZyAtIHdlJ3ZlIGFscmVhZHkgZm91bmQgYSBw
cmltYXJ5IHBsdWctaW4uIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICArK21fbnVt
YmVyT2ZQcmltYXJ5U25hcHNob3REZXRlY3Rpb25BdHRlbXB0czsKLQotICAgIGxheW91dElmTmVl
ZGVkKCk7Ci0KLSAgICBSZWZQdHI8RnJhbWVWaWV3PiBtYWluRnJhbWVWaWV3ID0gY29yZVBhZ2Uo
KS0+bWFpbkZyYW1lKCkudmlldygpOwotICAgIGlmICghbWFpbkZyYW1lVmlldykKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgSW50UmVjdCBzZWFyY2hSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBj
b3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCktPmNvbnRlbnRzU2l6ZSgpKTsKLSAgICBzZWFy
Y2hSZWN0LmludGVyc2VjdChJbnRSZWN0KEludFBvaW50KCksIEludFNpemUocHJpbWFyeVNuYXBz
aG90dGVkUGx1Z0luU2VhcmNoTGltaXQsIHByaW1hcnlTbmFwc2hvdHRlZFBsdWdJblNlYXJjaExp
bWl0KSkpOwotCi0gICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdCh7IEhpdFRlc3RSZXF1ZXN0OjpS
ZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hp
bGRGcmFtZUNvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZywgSGl0VGVzdFJl
cXVlc3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCB9KTsKLQotICAgIFJlZlB0cjxI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50PiBjYW5kaWRhdGVQbHVnSW47Ci0gICAgdW5zaWduZWQgY2Fu
ZGlkYXRlUGx1Z0luQXJlYSA9IDA7Ci0KLSAgICBmb3IgKFJlZlB0cjxGcmFtZT4gZnJhbWUgPSAm
Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJh
dmVyc2VOZXh0UmVuZGVyZWQoKSkgewotICAgICAgICBpZiAoIWZyYW1lLT5sb2FkZXIoKS5zdWJm
cmFtZUxvYWRlcigpLmNvbnRhaW5zUGx1Z2lucygpKQotICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCkgfHwgIWZyYW1lLT52aWV3KCkpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICBWZWN0b3I8UmVmPEhUTUxQbHVnSW5JbWFnZUVsZW1l
bnQ+PiBub25QbGF5aW5nUGx1Z0luSW1hZ2VFbGVtZW50czsKLSAgICAgICAgZm9yIChhdXRvJiBw
bHVnSW5JbWFnZUVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50PigqZnJhbWUtPmRvY3VtZW50KCkpKSB7Ci0gICAgICAgICAgICBpZiAocGx1Z0luSW1hZ2VF
bGVtZW50LmRpc3BsYXlTdGF0ZSgpID09IEhUTUxQbHVnSW5FbGVtZW50OjpQbGF5aW5nKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgbm9uUGxheWluZ1BsdWdJbkltYWdl
RWxlbWVudHMuYXBwZW5kKHBsdWdJbkltYWdlRWxlbWVudCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBmb3IgKGF1dG8mIHBsdWdJbkltYWdlRWxlbWVudCA6IG5vblBsYXlpbmdQbHVnSW5JbWFnZUVs
ZW1lbnRzKSB7Ci0gICAgICAgICAgICBhdXRvIHBsdWdpblJlbmRlcmVyID0gcGx1Z0luSW1hZ2VF
bGVtZW50LT5yZW5kZXJlcigpOwotICAgICAgICAgICAgaWYgKCFwbHVnaW5SZW5kZXJlciB8fCAh
cGx1Z2luUmVuZGVyZXItPmlzQm94KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICBhdXRvJiBwbHVnaW5SZW5kZXJCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KCpwbHVn
aW5SZW5kZXJlcik7Ci0gICAgICAgICAgICBpZiAoIXBsdWdJbkludGVyc2VjdHNTZWFyY2hSZWN0
KHBsdWdJbkltYWdlRWxlbWVudC5nZXQoKSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgICAgIEludFJlY3QgcGx1Z0luUmVjdFJlbGF0aXZlVG9WaWV3ID0gcGx1Z0luSW1h
Z2VFbGVtZW50LT5jbGllbnRSZWN0KCk7Ci0gICAgICAgICAgICBTY3JvbGxQb3NpdGlvbiBzY3Jv
bGxQb3NpdGlvbiA9IG1haW5GcmFtZVZpZXctPmRvY3VtZW50U2Nyb2xsUG9zaXRpb25SZWxhdGl2
ZVRvVmlld09yaWdpbigpOwotICAgICAgICAgICAgSW50UmVjdCBwbHVnSW5SZWN0UmVsYXRpdmVU
b1RvcERvY3VtZW50KHBsdWdJblJlY3RSZWxhdGl2ZVRvVmlldy5sb2NhdGlvbigpICsgc2Nyb2xs
UG9zaXRpb24sIHBsdWdJblJlY3RSZWxhdGl2ZVRvVmlldy5zaXplKCkpOwotICAgICAgICAgICAg
SGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0KHBsdWdJblJlY3RSZWxhdGl2ZVRvVG9wRG9jdW1l
bnQuY2VudGVyKCkpOwotCi0gICAgICAgICAgICBpZiAoIW1haW5GcmFtZSgpIHx8ICFtYWluRnJh
bWUoKS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBt
YWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+aGl0VGVzdChyZXF1ZXN0LCBoaXRUZXN0UmVzdWx0KTsK
LQotICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBoaXRUZXN0UmVzdWx0LnRh
cmdldEVsZW1lbnQoKTsKLSAgICAgICAgICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLQotICAgICAgICAgICAgSW50UmVjdCBlbGVtZW50UmVjdFJlbGF0aXZlVG9W
aWV3ID0gZWxlbWVudC0+Y2xpZW50UmVjdCgpOwotICAgICAgICAgICAgSW50UmVjdCBlbGVtZW50
UmVjdFJlbGF0aXZlVG9Ub3BEb2N1bWVudChlbGVtZW50UmVjdFJlbGF0aXZlVG9WaWV3LmxvY2F0
aW9uKCkgKyBzY3JvbGxQb3NpdGlvbiwgZWxlbWVudFJlY3RSZWxhdGl2ZVRvVmlldy5zaXplKCkp
OwotICAgICAgICAgICAgTGF5b3V0UmVjdCBpbmZsYXRlZFBsdWdpblJlY3QgPSBwbHVnSW5SZWN0
UmVsYXRpdmVUb1RvcERvY3VtZW50OwotICAgICAgICAgICAgTGF5b3V0VW5pdCB4T2Zmc2V0IHsg
KGluZmxhdGVkUGx1Z2luUmVjdC53aWR0aCgpICogb3ZlcmxhcHBpbmdJbWFnZUJvdW5kc1NjYWxl
IC0gaW5mbGF0ZWRQbHVnaW5SZWN0LndpZHRoKCkpIC8gMiB9OwotICAgICAgICAgICAgTGF5b3V0
VW5pdCB5T2Zmc2V0IHsgKGluZmxhdGVkUGx1Z2luUmVjdC5oZWlnaHQoKSAqIG92ZXJsYXBwaW5n
SW1hZ2VCb3VuZHNTY2FsZSAtIGluZmxhdGVkUGx1Z2luUmVjdC5oZWlnaHQoKSkgLyAyIH07Ci0g
ICAgICAgICAgICBpbmZsYXRlZFBsdWdpblJlY3QuaW5mbGF0ZVgoeE9mZnNldCk7Ci0gICAgICAg
ICAgICBpbmZsYXRlZFBsdWdpblJlY3QuaW5mbGF0ZVkoeU9mZnNldCk7Ci0KLSAgICAgICAgICAg
IGlmIChlbGVtZW50ICE9IHBsdWdJbkltYWdlRWxlbWVudC5wdHIoKSkgewotICAgICAgICAgICAg
ICAgIGlmICghKGlzPEhUTUxJbWFnZUVsZW1lbnQ+KCplbGVtZW50KQotICAgICAgICAgICAgICAg
ICAgICAmJiBpbmZsYXRlZFBsdWdpblJlY3QuY29udGFpbnMoZWxlbWVudFJlY3RSZWxhdGl2ZVRv
VG9wRG9jdW1lbnQpCi0gICAgICAgICAgICAgICAgICAgICYmIGVsZW1lbnRSZWN0UmVsYXRpdmVU
b1RvcERvY3VtZW50LndpZHRoKCkgPiBwbHVnaW5SZW5kZXJCb3gud2lkdGgoKSAqIG1pbmltdW1P
dmVybGFwcGluZ0ltYWdlVG9QbHVnaW5EaW1lbnNpb25TY2FsZQotICAgICAgICAgICAgICAgICAg
ICAmJiBlbGVtZW50UmVjdFJlbGF0aXZlVG9Ub3BEb2N1bWVudC5oZWlnaHQoKSA+IHBsdWdpblJl
bmRlckJveC5oZWlnaHQoKSAqIG1pbmltdW1PdmVybGFwcGluZ0ltYWdlVG9QbHVnaW5EaW1lbnNp
b25TY2FsZSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAg
IExPRyhQbHVnaW5zLCAiUHJpbWFyeSBQbHVnLUluIERldGVjdGlvbjogUGx1Zy1pbiBpcyBoaWRk
ZW4gYnkgYW4gaW1hZ2UgdGhhdCBpcyByb3VnaGx5IGFsaWduZWQgd2l0aCBpdCwgYXV0b3BsYXlp
bmcgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCBpdCdzIGFjdHVhbGx5IHRoZSBwcmltYXJ5
IHBsdWctaW4uIik7Ci0gICAgICAgICAgICAgICAgcGx1Z0luSW1hZ2VFbGVtZW50LT5yZXN0YXJ0
U25hcHNob3R0ZWRQbHVnSW4oKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHBs
dWdJbklzUHJpbWFyeVNpemUocGx1Z0luSW1hZ2VFbGVtZW50LCBjYW5kaWRhdGVQbHVnSW5BcmVh
KSkKLSAgICAgICAgICAgICAgICBjYW5kaWRhdGVQbHVnSW4gPSBXVEZNb3ZlKHBsdWdJbkltYWdl
RWxlbWVudCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKCFjYW5kaWRhdGVQbHVnSW4pIHsK
LSAgICAgICAgTE9HKFBsdWdpbnMsICJQcmltYXJ5IFBsdWctSW4gRGV0ZWN0aW9uOiBmYWlsIC0g
ZGlkIG5vdCBmaW5kIGEgY2FuZGlkYXRlIHBsdWctaW4uIik7Ci0gICAgICAgIGlmIChtX251bWJl
ck9mUHJpbWFyeVNuYXBzaG90RGV0ZWN0aW9uQXR0ZW1wdHMgPCBtYXhQcmltYXJ5U25hcHNob3R0
ZWRQbHVnSW5EZXRlY3Rpb25BdHRlbXB0cykgewotICAgICAgICAgICAgTE9HKFBsdWdpbnMsICJQ
cmltYXJ5IFBsdWctSW4gRGV0ZWN0aW9uOiB3aWxsIGF0dGVtcHQgYWdhaW4gaW4gJS4xZiBzLiIs
IGRlZmVycmVkUHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luRGV0ZWN0aW9uRGVsYXkudmFsdWUoKSk7
Ci0gICAgICAgICAgICBtX2RldGVybWluZVByaW1hcnlTbmFwc2hvdHRlZFBsdWdJblRpbWVyLnN0
YXJ0T25lU2hvdChkZWZlcnJlZFByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbkRldGVjdGlvbkRlbGF5
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgTE9HKFBsdWdpbnMs
ICJQcmltYXJ5IFBsdWctSW4gRGV0ZWN0aW9uOiBzdWNjZXNzIC0gZm91bmQgYSBjYW5kaWRhdGUg
cGx1Zy1pbiAtIGluZm9ybSBpdC4iKTsKLSAgICBtX2RpZEZpbmRQcmltYXJ5U25hcHNob3R0ZWRQ
bHVnaW4gPSB0cnVlOwotICAgIG1fcHJpbWFyeVBsdWdJblBhZ2VPcmlnaW4gPSBtX3BhZ2UtPm1h
aW5GcmFtZSgpLmRvY3VtZW50KCktPmJhc2VVUkwoKS5ob3N0KCkudG9TdHJpbmcoKTsKLSAgICBt
X3ByaW1hcnlQbHVnSW5PcmlnaW4gPSBjYW5kaWRhdGVQbHVnSW4tPmxvYWRlZFVybCgpLmhvc3Qo
KS50b1N0cmluZygpOwotICAgIG1fcHJpbWFyeVBsdWdJbk1pbWVUeXBlID0gY2FuZGlkYXRlUGx1
Z0luLT5zZXJ2aWNlVHlwZSgpOwotCi0gICAgY2FuZGlkYXRlUGx1Z0luLT5zZXRJc1ByaW1hcnlT
bmFwc2hvdHRlZFBsdWdJbih0cnVlKTsKLX0KLQotdm9pZCBXZWJQYWdlOjpyZXNldFByaW1hcnlT
bmFwc2hvdHRlZFBsdWdJbigpCi17Ci0gICAgbV9yZWFkeVRvRmluZFByaW1hcnlTbmFwc2hvdHRl
ZFBsdWdpbiA9IGZhbHNlOwotICAgIG1fZGlkRmluZFByaW1hcnlTbmFwc2hvdHRlZFBsdWdpbiA9
IGZhbHNlOwotICAgIG1fbnVtYmVyT2ZQcmltYXJ5U25hcHNob3REZXRlY3Rpb25BdHRlbXB0cyA9
IDA7Ci0gICAgbV9oYXNTZWVuUGx1Z2luID0gZmFsc2U7Ci19Ci0KLWJvb2wgV2ViUGFnZTo6bWF0
Y2hlc1ByaW1hcnlQbHVnSW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcm
IHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKLXsKLSAgICBpZiAo
IW1fZGlkRmluZFByaW1hcnlTbmFwc2hvdHRlZFBsdWdpbikKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgcmV0dXJuIChwYWdlT3JpZ2luID09IG1fcHJpbWFyeVBsdWdJblBhZ2VPcmlnaW4g
JiYgcGx1Z2luT3JpZ2luID09IG1fcHJpbWFyeVBsdWdJbk9yaWdpbiAmJiBtaW1lVHlwZSA9PSBt
X3ByaW1hcnlQbHVnSW5NaW1lVHlwZSk7Ci19Ci0KLWJvb2wgV2ViUGFnZTo6cGx1Z0luSW50ZXJz
ZWN0c1NlYXJjaFJlY3QoSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgcGx1Z0luSW1hZ2VFbGVtZW50
KQotewotICAgIGF1dG8mIG1haW5GcmFtZSA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpOwotICAg
IGlmICghbWFpbkZyYW1lLnZpZXcoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgh
bWFpbkZyYW1lLnZpZXcoKS0+cmVuZGVyVmlldygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBJbnRSZWN0IHNlYXJjaFJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIGNvcmVQYWdlKCkt
Pm1haW5GcmFtZSgpLnZpZXcoKS0+Y29udGVudHNTaXplKCkpOwotICAgIHNlYXJjaFJlY3QuaW50
ZXJzZWN0KEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZShwcmltYXJ5U25hcHNob3R0ZWRQbHVn
SW5TZWFyY2hMaW1pdCwgcHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luU2VhcmNoTGltaXQpKSk7Ci0K
LSAgICBJbnRSZWN0IHBsdWdJblJlY3RSZWxhdGl2ZVRvVmlldyA9IHBsdWdJbkltYWdlRWxlbWVu
dC5jbGllbnRSZWN0KCk7Ci0gICAgaWYgKHBsdWdJblJlY3RSZWxhdGl2ZVRvVmlldy5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBTY3JvbGxQb3NpdGlvbiBzY3JvbGxQb3Np
dGlvbiA9IG1haW5GcmFtZS52aWV3KCktPmRvY3VtZW50U2Nyb2xsUG9zaXRpb25SZWxhdGl2ZVRv
Vmlld09yaWdpbigpOwotICAgIEludFJlY3QgcGx1Z0luUmVjdFJlbGF0aXZlVG9Ub3BEb2N1bWVu
dChwbHVnSW5SZWN0UmVsYXRpdmVUb1ZpZXcubG9jYXRpb24oKSArIHRvSW50U2l6ZShzY3JvbGxQ
b3NpdGlvbiksIHBsdWdJblJlY3RSZWxhdGl2ZVRvVmlldy5zaXplKCkpOwotCi0gICAgcmV0dXJu
IHBsdWdJblJlY3RSZWxhdGl2ZVRvVG9wRG9jdW1lbnQuaW50ZXJzZWN0cyhzZWFyY2hSZWN0KTsK
LX0KLQotYm9vbCBXZWJQYWdlOjpwbHVnSW5Jc1ByaW1hcnlTaXplKFdlYkNvcmU6OkhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQmIHBsdWdJbkltYWdlRWxlbWVudCwgdW5zaWduZWQmIGNhbmRpZGF0ZVBs
dWdJbkFyZWEpCi17Ci0gICAgYXV0byogcmVuZGVyZXIgPSBwbHVnSW5JbWFnZUVsZW1lbnQucmVu
ZGVyZXIoKTsKLSAgICBpZiAoIWlzPFJlbmRlckJveD4ocmVuZGVyZXIpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBhdXRvJiBib3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KCpyZW5kZXJl
cik7Ci0gICAgaWYgKGJveC5jb250ZW50V2lkdGgoKSA8IHByaW1hcnlTbmFwc2hvdHRlZFBsdWdJ
bk1pbmltdW1XaWR0aCB8fCBib3guY29udGVudEhlaWdodCgpIDwgcHJpbWFyeVNuYXBzaG90dGVk
UGx1Z0luTWluaW11bUhlaWdodCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgTGF5b3V0
VW5pdCBjb250ZW50QXJlYSA9IGJveC5jb250ZW50V2lkdGgoKSAqIGJveC5jb250ZW50SGVpZ2h0
KCk7Ci0gICAgaWYgKGNvbnRlbnRBcmVhID4gY2FuZGlkYXRlUGx1Z0luQXJlYSAqIHByaW1hcnlT
bmFwc2hvdHRlZFBsdWdJblNlYXJjaEJ1Y2tldFNpemUpIHsKLSAgICAgICAgY2FuZGlkYXRlUGx1
Z0luQXJlYSA9IGNvbnRlbnRBcmVhLnRvVW5zaWduZWQoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFBSSU1B
UllfU05BUFNIT1RURURfUExVR0lOX0hFVVJJU1RJQykKLQogT3B0aW9uYWw8U2ltcGxlUmFuZ2U+
IFdlYlBhZ2U6OmN1cnJlbnRTZWxlY3Rpb25Bc1JhbmdlKCkKIHsKICAgICBhdXRvKiBmcmFtZSA9
IGZyYW1lV2l0aFNlbGVjdGlvbihtX3BhZ2UuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDI2M2ZmN2U1NGRmNmE4MzQwOTljOWEzMDBmYmQ3
ZjU1NDhkOGRiMjQuLjZkOTExNTkwOWM0ZWY3NzBmMzNkNWZmZTI4NDBkZWFmOTE0YWY2NDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE4MCw3ICsx
ODAsNiBAQCBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgSFRNTE1lbnVFbGVtZW50Owog
Y2xhc3MgSFRNTE1lbnVJdGVtRWxlbWVudDsKIGNsYXNzIEhUTUxQbHVnSW5FbGVtZW50OwotY2xh
c3MgSFRNTFBsdWdJbkltYWdlRWxlbWVudDsKIGNsYXNzIEludFBvaW50OwogY2xhc3MgS2V5Ym9h
cmRFdmVudDsKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OwpAQCAtMTExOCwxNSAr
MTExNyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZpbmlzaENoZWNraW5nVGV4dCh1aW50NjRf
dCByZXF1ZXN0SUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+Jik7
CiAgICAgdm9pZCBkaWRDYW5jZWxDaGVja2luZ1RleHQodWludDY0X3QgcmVxdWVzdElEKTsKIAot
I2lmIEVOQUJMRShQUklNQVJZX1NOQVBTSE9UVEVEX1BMVUdJTl9IRVVSSVNUSUMpCi0gICAgdm9p
ZCBkZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW4oKTsKLSAgICB2b2lkIGRldGVybWlu
ZVByaW1hcnlTbmFwc2hvdHRlZFBsdWdJblRpbWVyRmlyZWQoKTsKLSAgICB2b2lkIHJlc2V0UHJp
bWFyeVNuYXBzaG90dGVkUGx1Z0luKCk7Ci0gICAgYm9vbCBtYXRjaGVzUHJpbWFyeVBsdWdJbihj
b25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdDsKLSAgICBib29sIHBsdWdJbkludGVyc2VjdHNTZWFy
Y2hSZWN0KFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBsdWdpbkltYWdlRWxlbWVu
dCk7Ci0gICAgYm9vbCBwbHVnSW5Jc1ByaW1hcnlTaXplKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQmIHBsdWdpbkltYWdlRWxlbWVudCwgdW5zaWduZWQgJnBsdWdpbkFyZWEpOwotI2Vu
ZGlmCi0KICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAgICAgdm9pZCBzZXREYXRhRGV0ZWN0
aW9uUmVzdWx0cyhOU0FycmF5ICopOwogICAgIHZvaWQgZGV0ZWN0RGF0YUluQWxsRnJhbWVzKHVp
bnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IERhdGFEZXRlY3Rpb25SZXN1bHQm
KT4mJik7CkBAIC0xODM1LDE1ICsxODI1LDYgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQVBQX0JP
VU5EX0RPTUFJTlMpCiAgICAgYm9vbCBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7
IGZhbHNlIH07CiAjZW5kaWYKLSNpZiBFTkFCTEUoUFJJTUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5f
SEVVUklTVElDKQotICAgIGJvb2wgbV9yZWFkeVRvRmluZFByaW1hcnlTbmFwc2hvdHRlZFBsdWdp
biB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2RpZEZpbmRQcmltYXJ5U25hcHNob3R0ZWRQbHVnaW4g
eyBmYWxzZSB9OwotICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZQcmltYXJ5U25hcHNob3REZXRlY3Rp
b25BdHRlbXB0cyB7IDAgfTsKLSAgICBTdHJpbmcgbV9wcmltYXJ5UGx1Z0luUGFnZU9yaWdpbjsK
LSAgICBTdHJpbmcgbV9wcmltYXJ5UGx1Z0luT3JpZ2luOwotICAgIFN0cmluZyBtX3ByaW1hcnlQ
bHVnSW5NaW1lVHlwZTsKLSAgICBSdW5Mb29wOjpUaW1lcjxXZWJQYWdlPiBtX2RldGVybWluZVBy
aW1hcnlTbmFwc2hvdHRlZFBsdWdJblRpbWVyOwotI2VuZGlmCiAKICAgICAvLyBUaGUgbGF5ZXIg
aG9zdGluZyBtb2RlLgogICAgIExheWVySG9zdGluZ01vZGUgbV9sYXllckhvc3RpbmdNb2RlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGI3NmYxMTk1Y2VlNjk2
Yjc1ODFiMTY1NjNiZTMzNTI2ZmFjOWRhMWMuLjA2YTI5ZDczNTg3MjExMDM3NDJiNWViZjgxNWM2
OWU5MTg2NWRjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAg
LTQ1Nyw5ICs0NTcsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogCiAgICAgc2V0VGVybWlu
YXRpb25UaW1lb3V0KHBhcmFtZXRlcnMudGVybWluYXRpb25UaW1lb3V0KTsKIAotICAgIGZvciAo
YXV0byYgb3JpZ2luIDogcGFyYW1ldGVycy5wbHVnSW5BdXRvU3RhcnRPcmlnaW5zKQotICAgICAg
ICBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbnMuYWRkKG9yaWdpbik7Ci0KICAgICBzZXRNZW1vcnlD
YWNoZURpc2FibGVkKHBhcmFtZXRlcnMubWVtb3J5Q2FjaGVEaXNhYmxlZCk7CiAKICAgICBXZWJD
b3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldEF0dHJTdHls
ZUVuYWJsZWQocGFyYW1ldGVycy5hdHRyU3R5bGVFbmFibGVkKTsKQEAgLTQ3OCwxMCArNDc1LDYg
QEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKSAmJiBQTEFURk9STShNQUMpCi0gICAgcmVzZXRQbHVnaW5Mb2Fk
Q2xpZW50UG9saWNpZXMocGFyYW1ldGVycy5wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMpOwotI2Vu
ZGlmCi0KICNpZiBFTkFCTEUoR0FNRVBBRCkKICAgICBHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRv
bigpLnNldFNoYXJlZFByb3ZpZGVyKFdlYkdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkpOwog
I2VuZGlmCkBAIC01MzIsOCArNTI1LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycyhXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyYmIHAKICAgICAK
ICNlbmRpZgogCi0gICAgcmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoV1RGTW92ZShw
YXJhbWV0ZXJzLnBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcykpOwotCiAgICAgZm9yIChhdXRv
JiBzdXBwbGVtZW50IDogbV9zdXBwbGVtZW50cy52YWx1ZXMoKSkKICAgICAgICAgc3VwcGxlbWVu
dC0+c2V0V2Vic2l0ZURhdGFTdG9yZShwYXJhbWV0ZXJzKTsKIApAQCAtODk0LDE0MyArODg1LDEx
IEBAIHZvaWQgV2ViUHJvY2Vzczo6dXNlckdlc3R1cmVUb2tlbkRlc3Ryb3llZChVc2VyR2VzdHVy
ZVRva2VuJiB0b2tlbikKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzUHJveHk6OkRpZERlc3Ryb3lVc2VyR2VzdHVyZVRva2VuKGlkZW50aWZp
ZXIpLCAwKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGFkZENhc2VGb2xkZWRDaGFyYWN0ZXJz
KFN0cmluZ0hhc2hlciYgaGFzaGVyLCBjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICBpZiAo
c3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChzdHJpbmcuaXM4Qml0
KCkpIHsKLSAgICAgICAgaGFzaGVyLmFkZENoYXJhY3RlcnM8TENoYXIsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaDo6Rm9sZENhc2U8TENoYXI+PihzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5n
Lmxlbmd0aCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBoYXNoZXIuYWRkQ2hhcmFj
dGVyczxVQ2hhciwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoOjpGb2xkQ2FzZTxVQ2hhcj4+KHN0
cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLX0KLQotc3RhdGljIHVuc2ln
bmVkIGhhc2hGb3JQbHVnSW5PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBT
dHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKLXsKLSAgICAvLyBX
ZSB3YW50IHRvIGF2b2lkIGNvbmNhdGVuYXRpbmcgdGhlIHN0cmluZ3MgYW5kIHRoZW4gdGFraW5n
IHRoZSBoYXNoLCBzaW5jZSB0aGF0IGNvdWxkIGxlYWQgdG8gYW4gZXhwZW5zaXZlIGNvbnZlcnNp
b24uCi0gICAgLy8gV2UgYWxzbyB3YW50IHRvIGF2b2lkIHVzaW5nIHRoZSBoYXNoKCkgZnVuY3Rp
b24gaW4gU3RyaW5nSW1wbCBvciBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2ggYmVjYXVzZSB0aGF0
IG1hc2tzIG91dCBiaXRzIGZvciB0aGUgdXNlIG9mIGZsYWdzLgotICAgIFN0cmluZ0hhc2hlciBo
YXNoZXI7Ci0gICAgYWRkQ2FzZUZvbGRlZENoYXJhY3RlcnMoaGFzaGVyLCBwYWdlT3JpZ2luKTsK
LSAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyKDApOwotICAgIGFkZENhc2VGb2xkZWRDaGFyYWN0ZXJz
KGhhc2hlciwgcGx1Z2luT3JpZ2luKTsKLSAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyKDApOwotICAg
IGFkZENhc2VGb2xkZWRDaGFyYWN0ZXJzKGhhc2hlciwgbWltZVR5cGUpOwotICAgIHJldHVybiBo
YXNoZXIuaGFzaCgpOwotfQotCi1ib29sIFdlYlByb2Nlc3M6OmlzUGx1Z0luQXV0b1N0YXJ0T3Jp
Z2luSGFzaCh1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoKQotewotICAgIGF1dG8gaXQgPSBtX3Bs
dWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5maW5kKHBsdWdJbk9yaWdpbkhhc2gpOwotICAgIGlm
IChpdCA9PSBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5lbmQoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIFdhbGxUaW1lOjpub3coKSA8IGl0LT52YWx1ZTsKLX0K
LQotYm9vbCBXZWJQcm9jZXNzOjpzaG91bGRQbHVnSW5BdXRvU3RhcnRGcm9tT3JpZ2luKFdlYlBh
Z2UmIHdlYlBhZ2UsIGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVn
aW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCi17Ci0gICAgaWYgKCFwbHVnaW5Pcmln
aW4uaXNFbXB0eSgpICYmIG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2lucy5jb250YWlucyhwbHVnaW5P
cmlnaW4pKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotI2lmIEVOQUJMRShQUklNQVJZX1NOQVBT
SE9UVEVEX1BMVUdJTl9IRVVSSVNUSUMpCi0gICAgLy8gVGhlIHBsdWdpbiB3YXNuJ3QgaW4gdGhl
IGdlbmVyYWwgbGlzdCwgc28gY2hlY2sgaWYgaXQgc2ltaWxhciB0byB0aGUgcHJpbWFyeSBwbHVn
aW4gZm9yIHRoZSBwYWdlIChpZiB3ZSd2ZSBmb3VuZCBvbmUpLgotICAgIGlmICh3ZWJQYWdlLm1h
dGNoZXNQcmltYXJ5UGx1Z0luKHBhZ2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwgbWltZVR5cGUpKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHdlYlBhZ2UpOwot
I2VuZGlmCi0KLSAgICAvLyBMYXN0bHkgY2hlY2sgYWdhaW5zdCB0aGUgbW9yZSBleHBsaWNpdCBo
YXNoIGxpc3QuCi0gICAgcmV0dXJuIGlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChoYXNoRm9y
UGx1Z0luT3JpZ2luKHBhZ2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwgbWltZVR5cGUpKTsKLX0KLQot
dm9pZCBXZWJQcm9jZXNzOjpwbHVnSW5EaWRTdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBw
YWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkKLXsKLSAgICBpZiAocGFnZU9yaWdpbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgTE9HKFBs
dWdpbnMsICJOb3QgYWRkaW5nIGVtcHR5IHBhZ2Ugb3JpZ2luIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICB1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoID0gaGFzaEZvclBsdWdJbk9y
aWdpbihwYWdlT3JpZ2luLCBwbHVnaW5PcmlnaW4sIG1pbWVUeXBlKTsKLSAgICBpZiAoaXNQbHVn
SW5BdXRvU3RhcnRPcmlnaW5IYXNoKHBsdWdJbk9yaWdpbkhhc2gpKSB7Ci0gICAgICAgIExPRyhQ
bHVnaW5zLCAiSGFzaCAleCBhbHJlYWR5IGV4aXN0cyBhcyBhdXRvLXN0YXJ0IG9yaWdpbiAocmVx
dWVzdCBmb3IgJXMpIiwgcGx1Z0luT3JpZ2luSGFzaCwgcGFnZU9yaWdpbi51dGY4KCkuZGF0YSgp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFdlIG1pZ2h0IGF0dGVtcHQgdG8g
c3RhcnQgYW5vdGhlciBwbHVnaW4gYmVmb3JlIHRoZSBkaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmln
aW4gbWVzc2FnZQotICAgIC8vIGNvbWVzIGJhY2sgZnJvbSB0aGUgcGFyZW50IHByb2Nlc3MuIFRl
bXBvcmFyaWx5IGFkZCB0aGlzIGhhc2ggdG8gdGhlIGxpc3Qgd2l0aCBhIHRoaXJ0eQotICAgIC8v
IHNlY29uZCB0aW1lb3V0LiBUaGF0IHdheSwgZXZlbiBpZiB0aGUgcGFyZW50IGRlY2lkZXMgbm90
IHRvIGFkZCBpdCwgd2UnbGwgb25seSBiZQotICAgIC8vIGluY29ycmVjdCBmb3IgYSBsaXR0bGUg
d2hpbGUuCi0gICAgbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuc2V0KHBsdWdJbk9yaWdp
bkhhc2gsIFdhbGxUaW1lOjpub3coKSArIDMwX3MgKiAxMDAwKTsKLQotICAgIHBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6QWRkUGx1Z0lu
QXV0b1N0YXJ0T3JpZ2luSGFzaChwYWdlT3JpZ2luLCBwbHVnSW5PcmlnaW5IYXNoKSwgMCk7Ci19
Ci0KLXZvaWQgV2ViUHJvY2Vzczo6ZGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCh1bnNp
Z25lZCBwbHVnSW5PcmlnaW5IYXNoLCBXYWxsVGltZSBleHBpcmF0aW9uVGltZSkKLXsKLSAgICAv
LyBXaGVuIGNhbGxlZCwgc29tZSB3ZWIgcHJvY2VzcyAod2hpY2ggYWxzbyBtaWdodCBiZSB0aGlz
IG9uZSkgYWRkZWQgdGhlIG9yaWdpbiBmb3IgYXV0by1zdGFydGluZywKLSAgICAvLyBvciByZWNl
aXZlZCB1c2VyIGludGVyYWN0aW9uLgotICAgIC8vIFNldCB0aGUgYml0IHRvIGF2b2lkIGhhdmlu
ZyByZWR1bmRhbnRseSBjYWxsIGludG8gdGhlIFVJIHByb2Nlc3MgdXBvbiB1c2VyIGludGVyYWN0
aW9uLgotICAgIG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLnNldChwbHVnSW5PcmlnaW5I
YXNoLCBleHBpcmF0aW9uVGltZSk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzczo6cmVzZXRQbHVnSW5B
dXRvU3RhcnRPcmlnaW5IYXNoZXMoSGFzaE1hcDx1bnNpZ25lZCwgV2FsbFRpbWU+JiYgaGFzaGVz
KQotewotICAgIG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzID0gV1RGTW92ZShoYXNoZXMp
OwotfQotCi12b2lkIFdlYlByb2Nlc3M6OnBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24o
Y29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKLXsKLSAgICBpZiAocGFnZU9yaWdpbi5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2ggPSBoYXNoRm9y
UGx1Z0luT3JpZ2luKHBhZ2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwgbWltZVR5cGUpOwotICAgIGlm
ICghcGx1Z0luT3JpZ2luSGFzaCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBpdCA9IG1f
cGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmZpbmQocGx1Z0luT3JpZ2luSGFzaCk7Ci0gICAg
aWYgKGl0ID09IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmVuZCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAoaXQtPnZhbHVlIC0gV2FsbFRpbWU6Om5vdygpID4gcGx1Z0luQXV0
b1N0YXJ0RXhwaXJhdGlvblRpbWVVcGRhdGVUaHJlc2hvbGQpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6UGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihwbHVnSW5PcmlnaW5IYXNoKSwg
MCk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzczo6c2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShXZWJD
b3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5IHBvbGljeSwgY29uc3QgU3RyaW5nJiBob3N0LCBj
b25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmlu
ZykKLXsKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkgJiYgUExBVEZPUk0oTUFDKQot
ICAgIFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6c2luZ2xldG9uKCkuc2V0UGx1Z2luTG9hZENsaWVu
dFBvbGljeShwb2xpY3ksIGhvc3QsIGJ1bmRsZUlkZW50aWZpZXIsIHZlcnNpb25TdHJpbmcpOwot
I2VuZGlmCi19Ci0KLXZvaWQgV2ViUHJvY2Vzczo6cmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNp
ZXMoY29uc3QgSGFzaE1hcDxXVEY6OlN0cmluZywgSGFzaE1hcDxXVEY6OlN0cmluZywgSGFzaE1h
cDxXVEY6OlN0cmluZywgV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeT4+PiYgcGx1Z2lu
TG9hZENsaWVudFBvbGljaWVzKQotewotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSAm
JiBQTEFURk9STShNQUMpCi0gICAgY2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpOwotCi0gICAg
Zm9yIChhdXRvJiBob3N0UGFpciA6IHBsdWdpbkxvYWRDbGllbnRQb2xpY2llcykgewotICAgICAg
ICBmb3IgKGF1dG8mIGJ1bmRsZUlkZW50aWZpZXJQYWlyIDogaG9zdFBhaXIudmFsdWUpIHsKLSAg
ICAgICAgICAgIGZvciAoYXV0byYgdmVyc2lvblBhaXIgOiBidW5kbGVJZGVudGlmaWVyUGFpci52
YWx1ZSkKLSAgICAgICAgICAgICAgICBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnNpbmdsZXRvbigp
LnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kodmVyc2lvblBhaXIudmFsdWUsIGhvc3RQYWlyLmtl
eSwgYnVuZGxlSWRlbnRpZmllclBhaXIua2V5LCB2ZXJzaW9uUGFpci5rZXkpOwotICAgICAgICB9
Ci0gICAgfQotI2VuZGlmCi19Ci0KIHZvaWQgV2ViUHJvY2Vzczo6aXNKSVRFbmFibGVkKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29t
cGxldGlvbkhhbmRsZXIoSlNDOjpPcHRpb25zOjp1c2VKSVQoKSk7CiB9CiAKLXZvaWQgV2ViUHJv
Y2Vzczo6Y2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpCi17Ci0jaWYgRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpICYmIFBMQVRGT1JNKE1BQykKLSAgICBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6
OnNpbmdsZXRvbigpLmNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKTsKLSNlbmRpZgotfQotCiB2
b2lkIFdlYlByb2Nlc3M6OnJlZnJlc2hQbHVnaW5zKCkKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVf
UExVR0lOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDRkZTI2
MTQ5NTQ0ZmRlM2Q4NmQzOTBlOGRlZmRkODIzZmQwODkyZjkuLmU5NDg2NzBlNGU1OTgzYmZkOTU2
ZGVhNmJjOGY2MjllMjBiM2ZlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aApAQCAtMjcsOSArMjcsNiBAQAogCiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgIkNhY2hlTW9kZWwuaCIKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotI2luY2x1ZGUg
Ik1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuaCIKLSNlbmRpZgogI2luY2x1ZGUgIlBsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24u
aCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUlkZW50aWZpZXIuaCIKQEAgLTU5LDYgKzU2LDEwIEBA
CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21TdHJpbmdIYXNoLmg+CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIk1l
ZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JlZW5Qcm9wZXJ0aWVzLmg+CiAjaW5jbHVkZSA8ZGlz
cGF0Y2gvZGlzcGF0Y2guaD4KQEAgLTE3OSwxMiArMTgwLDYgQEAgcHVibGljOgogICAgIGNvbnN0
IFdURjo6TWFjaFNlbmRSaWdodCYgY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0KCkgY29uc3Qg
eyByZXR1cm4gbV9jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQ7IH0KICNlbmRpZgogCi0gICAg
Ym9vbCBzaG91bGRQbHVnSW5BdXRvU3RhcnRGcm9tT3JpZ2luKFdlYlBhZ2UmLCBjb25zdCBTdHJp
bmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKTsKLSAgICB2b2lkIHBsdWdJbkRpZFN0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJp
bmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKTsKLSAgICB2b2lkIHBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24oY29u
c3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSk7Ci0gICAgdm9pZCBzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KFdl
YkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3ksIGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3Qg
U3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpOwot
ICAgIHZvaWQgcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMoY29uc3QgSGFzaE1hcDxTdHJp
bmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgV2ViQ29yZTo6UGx1Z2luTG9hZENs
aWVudFBvbGljeT4+PiYpOwotICAgIHZvaWQgY2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpOwog
ICAgIHZvaWQgcmVmcmVzaFBsdWdpbnMoKTsKIAogICAgIGJvb2wgZnVsbEtleWJvYXJkQWNjZXNz
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZDsgfQpA
QCAtNDE0LDEwICs0MDksNiBAQCBwcml2YXRlOgogICAgIHZvaWQgdXNlclByZWZlcnJlZExhbmd1
YWdlc0NoYW5nZWQoKSBjb25zdDsKICAgICB2b2lkIGZ1bGxLZXlib2FyZEFjY2Vzc01vZGVDaGFu
Z2VkKGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCk7CiAKLSAgICBib29sIGlzUGx1Z0lu
QXV0b1N0YXJ0T3JpZ2luSGFzaCh1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoKTsKLSAgICB2b2lk
IGRpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godW5zaWduZWQgcGx1Z0luT3JpZ2luSGFz
aCwgV2FsbFRpbWUgZXhwaXJhdGlvblRpbWUpOwotICAgIHZvaWQgcmVzZXRQbHVnSW5BdXRvU3Rh
cnRPcmlnaW5IYXNoZXMoSGFzaE1hcDx1bnNpZ25lZCwgV2FsbFRpbWU+JiYgaGFzaGVzKTsKLQog
ICAgIHZvaWQgcGxhdGZvcm1TZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwpOwogCiAgICAgdm9pZCBz
ZXRFbmhhbmNlZEFjY2Vzc2liaWxpdHkoYm9vbCk7CkBAIC01NjEsOSArNTUyLDYgQEAgcHJpdmF0
ZToKICNlbmRpZgogICAgIFJlZlB0cjxXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyPiBt
X3dlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXI7CiAKLSAgICBIYXNoTWFwPHVuc2lnbmVk
LCBXYWxsVGltZT4gbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXM7Ci0gICAgSGFzaFNldDxT
dHJpbmc+IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luczsKLQogICAgIGJvb2wgbV9oYXNTZXRDYWNo
ZU1vZGVsIHsgZmFsc2UgfTsKICAgICBDYWNoZU1vZGVsIG1fY2FjaGVNb2RlbCB7IENhY2hlTW9k
ZWw6OkRvY3VtZW50Vmlld2VyIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggM2U1ZTcxMTM1ZjliZTQ3ZTM5NTA2NTQxNDFlODI0
MjZlMGQwZjE3ZS4uOWQ5NjJhMjdkMDVjYWFmZDJhZGE4NTIzYmZlNTEyMjY2NzU3ODE3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAg
LTU3LDExICs1Nyw2IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm90
UmVmQ291bnRlZCB7CiAKICAgICBTZXRIYXNTdHlsdXNEZXZpY2UoYm9vbCBoYXNTdHlsdXNEZXZp
Y2UpCiAKLSAgICBEaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHVpbnQzMl90IGhhc2gs
IFdhbGxUaW1lIGV4cGlyYXRpb25UaW1lKQotICAgIFJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2lu
SGFzaGVzKEhhc2hNYXA8dWludDMyX3QsV2FsbFRpbWU+IGhhc2hlcykKLSAgICBTZXRQbHVnaW5M
b2FkQ2xpZW50UG9saWN5KFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3kgcG9saWN5LCBT
dHJpbmcgaG9zdCwgU3RyaW5nIGJ1bmRsZUlkZW50aWZpZXIsIFN0cmluZyB2ZXJzaW9uU3RyaW5n
KQotICAgIFJlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzKEhhc2hNYXA8U3RyaW5nLCBIYXNo
TWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xp
Y3k+Pj4gcGx1Z2luTG9hZENsaWVudFBvbGljaWVzKQotICAgIENsZWFyUGx1Z2luQ2xpZW50UG9s
aWNpZXMoKQogICAgIFJlZnJlc2hQbHVnaW5zKCkKIAogICAgIHZvaWQgU3RhcnRNZW1vcnlTYW1w
bGVyKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbXBsZUxvZ0ZpbGVIYW5kbGUs
IFN0cmluZyBzYW1wbGVMb2dGaWxlUGF0aCwgZG91YmxlIGludGVydmFsKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCmluZGV4IGUzMjcw
YmQ5MTY1MTgzMGI1YzU3NjllMjA0YmIxN2YyZDIzZjVkMTYuLjg0YjM2NDVmZWFjMTc5YmM2YmNk
Mzk4ZTkxMGYwMjQxMmZkNzM5YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQpAQCAtMjM3MSwxMiArMjM3MSwxMSBAQCAtIChXZWJT
dG9yYWdlQmxvY2tpbmdQb2xpY3kpc3RvcmFnZUJsb2NraW5nUG9saWN5CiAKIC0gKEJPT0wpcGx1
Z0luU25hcHNob3R0aW5nRW5hYmxlZAogewotICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9y
S2V5OldlYktpdFBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5XTsKKyAgICBy
ZXR1cm4gTk87CiB9CiAKIC0gKHZvaWQpc2V0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZDooQk9P
TCllbmFibGVkCiB7Ci0gICAgW3NlbGYgX3NldEJvb2xWYWx1ZTplbmFibGVkIGZvcktleTpXZWJL
aXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkUHJlZmVyZW5jZUtleV07CiB9CiAKIC0gKEJPT0wp
aGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0VuYWJsZWQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3MmNkOTNiMGYxMmQx
YTdmNTNiMThmNGFjN2E4NjExMGExOGExNDMxLi4xNTk3NDM4MTk1ZDA1YTI5MDUyZTU0OGQyZjg1
Y2YxYWExZTEzMDcyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMTEtMTEgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQgYWR2YW5jZWQg
cGx1Zy1pbiBmZWF0dXJlczogc25hcHNob3R0aW5nIGFuZCBwbHVnLWluIGxvYWQgcG9saWN5Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4MzUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3Jt
L21hYy13azEvVGVzdEV4cGVjdGF0aW9uczogUmVtb3ZlZCBzbmFwc2hvdHRpbmcgZXhwZWN0YXRp
b25zLgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnM6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnM6IERpdHRvLgorCisgICAgICAg
ICogcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZzogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwbHVnaW5zL3NuYXBzaG90dGluZzogUmVtb3ZlZC4KKwogMjAyMC0xMS0xMiAgTWFydGlu
IFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkgbWFp
bmZyYW1lIHRlc3RzIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOGM1NzQ4M2M1
Nzk2NWRlMmRkNWMzZWRiNThkMjFhZmI2NTVkNjExNy4uNGZkN2I2Y2NiNTQ0ODgxNzRlNWYzY2Ix
YzJlZGNlZjJjZmE2OTQ1MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtMzg0LDkgKzM4NCw2IEBAIGZhc3QvZm9ybXMvdmFsaWRhdGlvbi1t
ZXNzYWdlLWluLXJlbGF0aXZlLWJvZHkuaHRtbAogZmFzdC9mb3Jtcy92YWxpZGF0aW9uLW1lc3Nh
Z2UtYXBwZWFyYW5jZS5odG1sCiBmYXN0L2Zvcm1zL3ZhbGlkYXRpb24tbWVzc2FnZS1vbi10ZXh0
YXJlYS5odG1sCiAKLSMgRGlzYWJsZSBzbmFwc2hvdHRpbmcgdGVzdHMgb24gV0sxIG9ubHkKLXBs
dWdpbnMvc25hcHNob3R0aW5nCi0KICMgRGlzYWJsZSBzbWFsbCBwbHVnaW4gYmxvY2tpbmcgb24g
V0sxCiBwbHVnaW5zL3NtYWxsLXBsdWdpbi1ibG9ja2VkLmh0bWwgWyBTa2lwIF0KIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGYzY2Q2M2Zm
ZjA0ODM5MzgxY2U5MDhmNWZmMTNhYzM0MGM2NzUyZWMuLjg3YmRjOWMzN2VjYWZjZmFmNWNhOGM5
OWJlNzJhZGFhZDFhYTMyNzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTM5OSwxNyArMzk5LDYgQEAgd2Via2l0Lm9yZy9iLzEzMjc2NiBm
YXN0L2hpZHBpL2ZpbHRlcnMtaW52ZXJ0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtp
dC5vcmcvYi8xMzI3NjYgZmFzdC9oaWRwaS9maWx0ZXJzLW11bHRpcGxlLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMzI3NjYgZmFzdC9oaWRwaS9maWx0ZXJzLXJlZmVy
ZW5jZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLSMgUGx1Zy1pbiBzbmFwc2hvdHRpbmcg
dGVzdHMgZG8gbm90IG1ha2UgbXVjaCBzZW5zZToKLSMgLSBzbmFwc2hvdHRpbmcgaXMgb25seSBz
dXBwb3J0ZWQgZm9yIEZsYXNoLCBidXQgd2UgY2FuJ3QgdXNlIEZsYXNoIGJlY2F1c2UgaXQgaXNu
J3QgaW5zdGFsbGVkIGV2ZXJ5d2hlcmU7Ci0jIC0gc28gbW9zdCBvZiB0aGUgdGVzdHMgdXNlIFF1
aWNrVGltZSwgd2hpY2ggZG9lc24ndCBzdXBwb3J0IHNuYXBzaG90dGluZywgYW5kIGlzIDMyLWJp
dCBvbmx5LCB0aHVzIGZhaWxpbmcgdG8gbG9hZCBpbiBlbmdpbmVlcmluZyBidWlsZHMuCi1wbHVn
aW5zL3NuYXBzaG90dGluZyBbIFBhc3MgRmFpbHVyZSBdCi0jIFRoZXNlIHR3byB0ZXN0cyB1c2Ug
Rmxhc2gsIHNvIHRoZXkgdHJpZ2dlciBhIHJlbGVhc2UgYXNzZXJ0aW9uLgotcGx1Z2lucy9zbmFw
c2hvdHRpbmcvYXV0b3BsYXktc2ltaWxhci10by1kb21pbmFudC1hZnRlci1kZWxheS5odG1sIFsg
U2tpcCBdCi1wbHVnaW5zL3NuYXBzaG90dGluZy9wcmludC1zbmFwc2hvdHRlZC1wbHVnaW4uaHRt
bCBbIFNraXAgXQotCi13ZWJraXQub3JnL2IvMTMzMjI3IHBsdWdpbnMvc25hcHNob3R0aW5nL3Nl
dC1wbHVnaW4tc2l6ZS10by10aW55Lmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xMzMy
MjcgcGx1Z2lucy9zbmFwc2hvdHRpbmcvcXVpY2t0aW1lLXBsdWdpbi1zbmFwc2hvdHRlZC5odG1s
IFsgUGFzcyBGYWlsdXJlIF0KLQogZmFzdC9kb20vZnJhbWUtbG9hZGluZy12aWEtZG9jdW1lbnQt
d3JpdGUuaHRtbCBbIFRpbWVvdXQgXQogCiBmYXN0L3NwZWVjaHN5bnRoZXNpcy9zcGVlY2gtc3lu
dGhlc2lzLWNhbmNlbC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktZG9taW5h
bnQtYmxhbmstcGx1Z2luLW1vdmVkLWludG8tdmlldy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LWRvbWluYW50
LWJsYW5rLXBsdWdpbi1tb3ZlZC1pbnRvLXZpZXctZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBhYTdlNTc4MDgxNDU0OTU2NTgxNWRmYjE3MDA0MDNiN2ZjNWE1MGI4
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktZG9taW5h
bnQtYmxhbmstcGx1Z2luLW1vdmVkLWludG8tdmlldy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSw0ICswLDAgQEAKLVRoaXMgdGVzdHMgdGhhdCBhIGRvbWluYW50IGJsYW5rIHBsdWdp
biB0aGF0IHN0YXJ0cyBvZmYgc2NyZWVuIGFuZCBpcyBtb3ZlZCBpbiB0byB2aWV3IGF1dG9wbGF5
cwotCi1QQVNTCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1
Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktZG9taW5hbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1kb21p
bmFudC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3ZmJiZWI2
MmYyOTI0MWFhYzE0YWJmYjk0ZTU1NzM2NDkzZjNiZTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVn
aW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1kb21pbmFudC1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSw0ICswLDAgQEAKLVRoaXMgdGVzdCdzIGRvbWluYW50IHBsdWdpbiBzaG91bGQg
cGxheSBhdXRvbWF0aWNhbGx5Ci0KLVBBU1MKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4tYmxvY2tl
ZC1ieS1pbWFnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3Bs
dWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXBsdWdpbi1ibG9ja2VkLWJ5LWltYWdlLWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRlNDkxNmE5ZjI1MTRhYjRj
NDEzNmNkYzhmZThlNjM4NmI0YWYyNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNo
b3R0aW5nL2F1dG9wbGF5LXBsdWdpbi1ibG9ja2VkLWJ5LWltYWdlLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotVGhpcyB0ZXN0cyB0aGF0IGEgZG9taW5hbnQgcGx1
Z2luIHNob3VsZCBwbGF5IGF1dG9tYXRpY2FsbHkgZXZlbiBpZiBhbiBpbWFnZSBpcyBvbiB0b3Ag
b2YgdGhlIHBsdWdpbi4KLQotUEFTUwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXBsdWdpbi1tb3N0bHktYmxv
Y2tlZC1ieS1pbWFnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXBsdWdpbi1tb3N0bHktYmxvY2tlZC1ieS1p
bWFnZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlOWM5Yjhi
Yzc2M2U0NTBhOTM1NDQ4MDg2NWQ1NDMzNzZjZDgzOGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVn
aW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4tbW9zdGx5LWJsb2NrZWQtYnktaW1hZ2Ut
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1UaGlzIHRlc3RzIHRo
YXQgYSBkb21pbmFudCBwbHVnaW4gc2hvdWxkIHBsYXkgYXV0b21hdGljYWxseSBpZiBhbiBpbWFn
ZSBpcyBtb3N0bHkgb24gdG9wIG9mIHRoZSBwbHVnaW4uCi0KLVBBU1MKLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxh
eS1zaW1pbGFyLXRvLWRvbWluYW50LWFmdGVyLWRlbGF5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktc2ltaWxh
ci10by1kb21pbmFudC1hZnRlci1kZWxheS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGZkZmJjMDNjMzM2Y2E0NTk3MTY1ZTZmMDQ5NTE2MDBjZDM0OGY3NjAuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1zaW1pbGFyLXRv
LWRvbWluYW50LWFmdGVyLWRlbGF5LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUg
KzAsMCBAQAotVGhlIGRvbWluYW50IHBsdWdpbiBzaG91bGQgcGxheSBhdXRvbWF0aWNhbGx5LCBh
bmQgdGhlbiBzbyBzaG91bGQgdGhlIGlkZW50aWNhbCBwbHVnaW4gdGhhdCBpcyBhZGRlZCBhIGJp
dCBsYXRlci4KLQotUEFTUwotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktc2ltaWxhci10by1kb21pbmFudC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNo
b3R0aW5nL2F1dG9wbGF5LXNpbWlsYXItdG8tZG9taW5hbnQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDlkMzU3ODRkM2ZiYzQ2MTE5YTg1MmRlNzM3MDNhNWI1
NzVkN2Q4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXkt
c2ltaWxhci10by1kb21pbmFudC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICsw
LDAgQEAKLVRoZSBkb21pbmFudCBwbHVnaW4gc2hvdWxkIHBsYXkgYXV0b21hdGljYWxseSwgYW5k
IHRyaWdnZXIgYWxsIHRoZSBvdGhlcnMgdG8gcGxheSBhcyB3ZWxsLCBzaW5jZSB0aGV5IGFyZSB0
aGUgc2FtZSBvcmlnaW4uCi0KLVBBU1MKLQotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvcGx1Z2luLXJlY2VpdmVzLWNsaWNr
LWV2ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lu
cy9zbmFwc2hvdHRpbmcvcGx1Z2luLXJlY2VpdmVzLWNsaWNrLWV2ZW50LWV4cGVjdGVkLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjU5M2U1NmY5NDJiM2FlODJlYjI2ZDE1MjYx
MzhiOTg2ZDA1ZGE0OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL3Bs
dWdpbi1yZWNlaXZlcy1jbGljay1ldmVudC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSwyICswLDAgQEAKLQotUEFTUywgcGx1Z2luIGRpZCByZWNlaXZlIG1vdXNlIGNsaWNrIGV2ZW50
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBz
aG90dGluZy9xdWlja3RpbWUtcGx1Z2luLXNuYXBzaG90dGVkLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvcXVpY2t0aW1lLXBs
dWdpbi1zbmFwc2hvdHRlZC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDg4MzY4OWNhZGIzZWQ2ZDZhNDU4YzVhZDAzMThiNGI4OTVlOTIyNTcuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9xdWlja3RpbWUtcGx1Z2luLXNuYXBzaG90dGVk
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotVGhpcyB0ZXN0IGVu
c3VyZXMgdGhhdCBxdWlja3RpbWUgcGx1Z2lucyBjYW4gYWxzbyBiZSBzbmFwc2hvdHRlZC4gV2Ug
bWFrZSB0aGUgcGx1Z2luIGhlcmUgdG9vIHNtYWxsIHRvIGJlIHRoZSBwcmltYXJ5IHBsdWdpbiwg
dGh1cyBpdCBzaG91bGQgZ2V0IHNuYXBzaG90dGVkLgotCi1QQVNTCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvcmVzdGFydC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNo
b3R0aW5nL3Jlc3RhcnQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3MzQ1NmFiOTE4ZTE2OTQwYjBmNWJlMTQ4NGZhYWY5MTg3MDRkYjQ0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvcmVzdGFydC1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSw0ICswLDAgQEAKLVRoaXMgdGVzdCBmb3JjZXMgYSBwbHVnaW4gdG8gc25hcHNo
b3QgaW1tZWRpYXRlbHksIHRoZW4gdHJpZXMgdG8gcmVzdGFydCBpdC4KLQotUEFTUwotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5n
L3NldC1wbHVnaW4tc2l6ZS10by10aW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvc2V0LXBsdWdpbi1zaXplLXRvLXRpbnkt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDE1Yjk3Zjk1YmJh
YTYyYTNjMmM0ZGFjZGZiYmNkYTZjZWIyNDI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9z
bmFwc2hvdHRpbmcvc2V0LXBsdWdpbi1zaXplLXRvLXRpbnktZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsNiArMCwwIEBACi1UaGlzIHRlc3QgZW5zdXJlcyB0aGF0IGlmIHdlIGhhdmUg
c2V0IGEgcGx1Z2luIHRvIGJlIHRvbyBzbWFsbCBhZnRlciB0aGUgaW5pdGlhbCBsb2FkIHRoYXQg
aXQgc3RpbGwgZ2V0cyBwbGF5ZWQuCi0KLUFsc28gZW5zdXJlIHRoYXQgdGhlIHBsdWdpbiByZW1h
aW5zIHNuYXBzaG90dGVkIGlmIHRoZSBzaXplIHdhcyBpbml0aWFsbHkgc3BlY2lmaWVkIGJ1dCBt
YWRlIHRvbyBzbWFsbCBhZnRlcndhcmRzLgotCi1QQVNTCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvc2ltcGxlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcv
c2ltcGxlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTdiMDAw
YzM1YTg2ZDNkN2Y1YjRkOGVjMzAwNzI3NjEwMGZkMDg2NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3Bs
dWdpbnMvc25hcHNob3R0aW5nL3NpbXBsZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSw0ICswLDAgQEAKLVRoaXMgdGVzdCBmb3JjZXMgYSBwbHVnaW4gdG8gc25hcHNob3QgaW1tZWRp
YXRlbHkKLQotUEFTUwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L3BsdWdpbnMvc25hcHNob3R0aW5nL3NuYXBzaG90LXBsdWdpbi1ub3QtcXVpdGUtYmxvY2tlZC1i
eS1pbWFnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdp
bnMvc25hcHNob3R0aW5nL3NuYXBzaG90LXBsdWdpbi1ub3QtcXVpdGUtYmxvY2tlZC1ieS1pbWFn
ZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhNjc3NTcwNDUw
NjNmMWU2NTc5MDc0MmRlMGMzZDFhYjFiMzVlYTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5z
L3NuYXBzaG90dGluZy9zbmFwc2hvdC1wbHVnaW4tbm90LXF1aXRlLWJsb2NrZWQtYnktaW1hZ2Ut
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1UaGlzIHRlc3RzIHRo
YXQgYSBwbHVnaW4gc2hvdWxkIGJlIHNuYXBzaG90dGVkIGlmIGl0IGlzIHBhcnRpYWxseSBjb3Zl
cmVkIGJ5IGFuIGltYWdlIGJ1dCBub3QgZW5vdWdoIHRvIGJlIGNvbnNpZGVyZWQgYmxvY2tpbmcu
Ci0KLUl0IGFkZGl0aW9uYWxseSB0ZXN0cyB0aGF0IHdlIHRha2UgdHJhbnNmb3JtcyBpbnRvIGFj
Y291bnQuCi0KLVBBU1MKLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IGQzYjZiOTI1Njk1NTI2MzY4NTY5MmI4YzdkMjY4NDRkNjYwNzJhM2UuLmVjYmE1
MmM5ZDUzMTg3NmVhYzY2YTI2YjMyNDcxN2Q5YzRmNTkxZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC02MzksOSArNjM5LDYgQEAgZmFzdC9ldmVudHMv
Y2xlYXItZHJhZy1zdGF0ZS5odG1sIFsgRmFpbHVyZSBdCiAjIE5lZWQgc3VwcG9ydCBmb3IgUmVz
b3VyY2VIYW5kbGU6OmRpZENoYW5nZVByaW9yaXR5IGFuZCBEUlQgc3VwcG9ydAogd2Via2l0Lm9y
Zy9iLzExMTAxNiBodHRwL3Rlc3RzL2xvYWRpbmcvcHJvbW90ZS1pbWctcHJlbG9hZC1wcmlvcml0
eS5odG1sIFsgU2tpcCBdICMgQ3Jhc2gKIAotIyBUT0RPIFNuYXBzaG90dGVkIHBsdWdpbnMgbm90
IGVuYWJsZWQgb24gV0sxCi13ZWJraXQub3JnL2IvOTg2OTYgcGx1Z2lucy9zbmFwc2hvdHRpbmcg
WyBTa2lwIF0KLQogIyBUT0RPIEV4Y2x1ZGUgV2ViU1FMIHRlc3RzOgogd2Via2l0Lm9yZy9iLzEx
NjU1OSBzdG9yYWdlL3dlYnNxbC8gWyBTa2lwIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZGRmYWE0Y2M0Njg3NDEwNzYxNWQ3Yzk1
NzQ5MGVkNmE5ZGMzMDdmOC4uZDJiNTQ3NzZjYzdkYmZlYzJkZmQwOWVkMjVmMTUwMGRjZTM0OTUw
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0
aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25z
CkBAIC0zNzIsOSArMzcyLDYgQEAgc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3BsdWdp
bnMtdHlwZXMtYmxvY2tzLXlvdXR1YmUtcGx1Z2luLXJlcGxhY2VtZW50LmgKICMgT3BlcmEtc3Vi
bWl0dGVkIHRlc3RzIHRvIFczQyBmb3IgPHRyYWNrPiwgYSBsb3Qgb2YgZmFpbHVyZXMgc3RpbGwu
CiB3ZWJraXQub3JnL2IvMTAzOTI2IG1lZGlhL3RyYWNrL29wZXJhIFsgU2tpcCBdCiAKLSMgU25h
cHNob3R0ZWQgcGx1Z2lucyBub3QgZW5hYmxlZAotd2Via2l0Lm9yZy9iLzk4Njk2IHBsdWdpbnMv
c25hcHNob3R0aW5nIFsgU2tpcCBdCi0KICMgVE9ETyBJbXBvc3NpYmxlIHRvIHRlc3QgdGV4dC1v
bmx5LXpvb20gZnJvbSBEUlQgb24gV2luZG93cwogd2Via2l0Lm9yZy9iLzM1MDEzIHN2Zy96b29t
L3RleHQvIFsgU2tpcCBdCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNo
b3R0aW5nL2F1dG9wbGF5LWRvbWluYW50LWJsYW5rLXBsdWdpbi1tb3ZlZC1pbnRvLXZpZXcuaHRt
bCBiL0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LWRvbWluYW50LWJs
YW5rLXBsdWdpbi1tb3ZlZC1pbnRvLXZpZXcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMTk1YjRjZGZiMWUwNDhlMGM2NTA5Y2IxZWZhYTg0OTAwMDgzNTJiMy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbHVnaW5z
L3NuYXBzaG90dGluZy9hdXRvcGxheS1kb21pbmFudC1ibGFuay1wbHVnaW4tbW92ZWQtaW50by12
aWV3Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi08cD5UaGlzIHRlc3RzIHRo
YXQgYSBkb21pbmFudCBibGFuayBwbHVnaW4gdGhhdCBzdGFydHMgb2ZmIHNjcmVlbiBhbmQgaXMg
bW92ZWQgaW4gdG8gdmlldyBhdXRvcGxheXM8L3A+Ci08ZGl2IGlkPSJyZXN1bHQiPkZBSUw8L2Rp
dj4KLTxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
LSAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHZhciBlbWJlZCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwbHVnaW4iKTsKLSAgICAgICAgICAgIGVtYmVkLnN0
eWxlLmxlZnQgPSAiMHB4IjsKLSAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewot
ICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0Iik7Ci0gICAgICAgICAgICAgICAgdmFyIGVtYmVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInBsdWdpbiIpOwotICAgICAgICAgICAgICAgIGlmICghaW50ZXJuYWxzLmlzUGx1Z2luU25h
cHNob3R0ZWQoZW1iZWQpKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0g
IlBBU1MiOwotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAg
ICAgICAgfSwgNTAwKTsgCi0gICAgICAgIH0sIDUwMCApOwotICAgIH0KLTwvc2NyaXB0PgotPGVt
YmVkIGlkPSJwbHVnaW4iIHNyYz0iLi4vcmVzb3VyY2VzL29yYW5nZS5tb3YiIHdpZHRoPSI2MDAi
IGhlaWdodD0iNjAwIiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7IGxlZnQ6LTYwMHB4OyI+PC9l
bWJlZD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9w
bGF5LWRvbWluYW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRv
cGxheS1kb21pbmFudC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzMxOWYy
NjI5ZjQxMzhjMDY4Y2MyZjY0ZDFmOWFlN2RkNjZlM2MzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5n
L2F1dG9wbGF5LWRvbWluYW50Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi08
cD5UaGlzIHRlc3QncyBkb21pbmFudCBwbHVnaW4gc2hvdWxkIHBsYXkgYXV0b21hdGljYWxseTwv
cD4KLTxkaXYgaWQ9InJlc3VsdCI+RkFJTDwvZGl2PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVz
dFJ1bm5lcikgewotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRQbHVnSW5TbmFwc2hvdHRpbmdF
bmFibGVkKHRydWUpOwotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRNYXhpbXVtUGx1Z0luU25h
cHNob3RBdHRlbXB0cygwKTsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKLSAg
ICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKLSAg
ICAgICAgdmFyIGVtYmVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBsdWdpbiIpOwotICAg
ICAgICBpZiAoIWludGVybmFscy5pc1BsdWdpblNuYXBzaG90dGVkKGVtYmVkKSkKLSAgICAgICAg
ICAgIHJlc3VsdC5pbm5lckhUTUwgPSAiUEFTUyI7Ci0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwotICAgIH0sIDEwMDApOwotfQotPC9zY3JpcHQ+Ci08ZW1iZWQgaWQ9InBsdWdpbiIg
c3JjPSIuLi9yZXNvdXJjZXMvb3JhbmdlLm1vdiIgd2lkdGg9IjYwMCIgaGVpZ2h0PSI2MDAiPjwv
ZW1iZWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRv
cGxheS1wbHVnaW4tYmxvY2tlZC1ieS1pbWFnZS5odG1sIGIvTGF5b3V0VGVzdHMvcGx1Z2lucy9z
bmFwc2hvdHRpbmcvYXV0b3BsYXktcGx1Z2luLWJsb2NrZWQtYnktaW1hZ2UuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzFlNDhlYjk3NDk2NmIzOTg4NDI0N2Q5OTA4YWI1Yjk1
ZGZkNTA2ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4tYmxvY2tlZC1i
eS1pbWFnZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotPHA+VGhpcyB0ZXN0
cyB0aGF0IGEgZG9taW5hbnQgcGx1Z2luIHNob3VsZCBwbGF5IGF1dG9tYXRpY2FsbHkgZXZlbiBp
ZiBhbiBpbWFnZSBpcyBvbiB0b3Agb2YgdGhlIHBsdWdpbi48L3A+Ci08ZGl2IGlkPSJyZXN1bHQi
PkZBSUw8L2Rpdj4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICBpbnRl
cm5hbHMuc2V0dGluZ3Muc2V0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCh0cnVlKTsKLSAgICBp
bnRlcm5hbHMuc2V0dGluZ3Muc2V0TWF4aW11bVBsdWdJblNuYXBzaG90QXR0ZW1wdHMoMCk7Ci0g
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7Ci0gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7Ci0gICAgICAgIHZhciBlbWJlZCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJwbHVnaW4iKTsKLSAgICAgICAgaWYgKCFpbnRlcm5hbHMu
aXNQbHVnaW5TbmFwc2hvdHRlZChlbWJlZCkpCi0gICAgICAgICAgICByZXN1bHQuaW5uZXJIVE1M
ID0gIlBBU1MiOwotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCAxMDAw
KTsKLX0KLTwvc2NyaXB0PgotPGVtYmVkIGlkPSJwbHVnaW4iIHNyYz0iLi4vcmVzb3VyY2VzL29y
YW5nZS5tb3YiIHdpZHRoPSI2MDAiIGhlaWdodD0iNjAwIj48L2VtYmVkPgotPGltZyBzcmM9Ii4u
L3Jlc291cmNlcy9hcHBsZS5naWYiIHdpZHRoPSI2MDAiIGhlaWdodD0iNjAwIiBzdHlsZT0icG9z
aXRpb246YWJzb2x1dGU7IHRvcDo2MHB4OyBsZWZ0OjBweDsiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktcGx1Z2luLW1vc3RseS1ibG9ja2Vk
LWJ5LWltYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxh
eS1wbHVnaW4tbW9zdGx5LWJsb2NrZWQtYnktaW1hZ2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYTA2Mjg2NjU5YTk1ZDVmYjhmNDE5MjRkYzU3NTJkYzYzMWYzNTY3Yy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9w
bHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4tbW9zdGx5LWJsb2NrZWQtYnktaW1h
Z2UuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLTxwPlRoaXMgdGVzdHMgdGhh
dCBhIGRvbWluYW50IHBsdWdpbiBzaG91bGQgcGxheSBhdXRvbWF0aWNhbGx5IGlmIGFuIGltYWdl
IGlzIG1vc3RseSBvbiB0b3Agb2YgdGhlIHBsdWdpbi48L3A+Ci08ZGl2IGlkPSJyZXN1bHQiPkZB
SUw8L2Rpdj4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICBpbnRlcm5h
bHMuc2V0dGluZ3Muc2V0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCh0cnVlKTsKLSAgICBpbnRl
cm5hbHMuc2V0dGluZ3Muc2V0TWF4aW11bVBsdWdJblNuYXBzaG90QXR0ZW1wdHMoMCk7Ci0gICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
Ci0gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7Ci0gICAgICAgIHZhciBlbWJlZCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJwbHVnaW4iKTsKLSAgICAgICAgaWYgKCFpbnRlcm5hbHMuaXNQ
bHVnaW5TbmFwc2hvdHRlZChlbWJlZCkpCi0gICAgICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0g
IlBBU1MiOwotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCAxMDAwKTsK
LX0KLTwvc2NyaXB0PgotPGVtYmVkIGlkPSJwbHVnaW4iIHNyYz0iLi4vcmVzb3VyY2VzL29yYW5n
ZS5tb3YiIHdpZHRoPSI2MDAiIGhlaWdodD0iNjAwIj48L2VtYmVkPgotPGltZyBzcmM9Ii4uL3Jl
c291cmNlcy9hcHBsZS5naWYiIHdpZHRoPSI2MDAiIGhlaWdodD0iNjAwIiBzdHlsZT0icG9zaXRp
b246YWJzb2x1dGU7IHRvcDo0NXB4OyBsZWZ0OjBweDsiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktc2ltaWxhci10by1kb21pbmFudC1hZnRl
ci1kZWxheS5odG1sIGIvTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXkt
c2ltaWxhci10by1kb21pbmFudC1hZnRlci1kZWxheS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzYTllNDA4MWYzNzg2NDQxM2YyNGJkMjI3MjA4N2ZiNWViNjQyMzI3Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3Bs
dWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXNpbWlsYXItdG8tZG9taW5hbnQtYWZ0ZXItZGVs
YXkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLTxwPlRoZSBkb21pbmFudCBw
bHVnaW4gc2hvdWxkIHBsYXkgYXV0b21hdGljYWxseSwgYW5kIHRoZW4gc28gc2hvdWxkIHRoZSBp
ZGVudGljYWwgcGx1Z2luIHRoYXQgaXMgYWRkZWQgYSBiaXQgbGF0ZXIuPC9wPgotPGRpdiBpZD0i
cmVzdWx0Ij5GQUlMPC9kaXY+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0g
ICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQodHJ1ZSk7
Ci0gICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldE1heGltdW1QbHVnSW5TbmFwc2hvdEF0dGVtcHRz
KDApOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewotICAgICAgICB2YXIgZGl2
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIGRpdi5pbm5lckhUTUwg
PSAnPGVtYmVkIGlkPSJwbHVnaW4yIiBzcmM9Ii4uL3Jlc291cmNlcy9saW5lcy5zd2YiIHdpZHRo
PSIyMDAiIGhlaWdodD0iMjAwIj48L2VtYmVkPic7Ci0gICAgICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoZGl2KTsKLSAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7Ci0gICAgICAg
ICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOwotICAg
ICAgICAgICAgdmFyIGVtYmVkMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwbHVnaW4xIik7
Ci0JCQl2YXIgZW1iZWQyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBsdWdpbjIiKTsKLSAg
ICAgICAgICAgIGlmICghKGludGVybmFscy5pc1BsdWdpblNuYXBzaG90dGVkKGVtYmVkMSkKLSAg
ICAgICAgICAgICAgICB8fCBpbnRlcm5hbHMuaXNQbHVnaW5TbmFwc2hvdHRlZChlbWJlZDIpKSkK
LSAgICAgICAgICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0gIlBBU1MiOwotICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgICAgIH0sIDEwMDApOwotICAgIH0sIDUwMCk7
Ci19Ci08L3NjcmlwdD4KLTxkaXY+Ci08ZW1iZWQgaWQ9InBsdWdpbjEiIHNyYz0iLi4vcmVzb3Vy
Y2VzL2xpbmVzLnN3ZiIgd2lkdGg9IjYwMCIgaGVpZ2h0PSI2MDAiPjwvZW1iZWQ+Ci08L2Rpdj4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXNp
bWlsYXItdG8tZG9taW5hbnQuaHRtbCBiL0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5n
L2F1dG9wbGF5LXNpbWlsYXItdG8tZG9taW5hbnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNDQyODk5ZWM2M2NkNzNiOWMzODg4ZGRhNWQ4OWFjOTM2NzM0MjFmYy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbHVn
aW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1zaW1pbGFyLXRvLWRvbWluYW50Lmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi08cD5UaGUgZG9taW5hbnQgcGx1Z2luIHNob3VsZCBw
bGF5IGF1dG9tYXRpY2FsbHksIGFuZCB0cmlnZ2VyIGFsbCB0aGUgb3RoZXJzIHRvIHBsYXkgYXMg
d2VsbCwgc2luY2UgdGhleSBhcmUgdGhlIHNhbWUgb3JpZ2luLjwvcD4KLTxkaXYgaWQ9InJlc3Vs
dCI+RkFJTDwvZGl2PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIGlu
dGVybmFscy5zZXR0aW5ncy5zZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKHRydWUpOwotICAg
IGludGVybmFscy5zZXR0aW5ncy5zZXRNYXhpbXVtUGx1Z0luU25hcHNob3RBdHRlbXB0cygwKTsK
LSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKLSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKLSAgICAgICAgdmFyIHJlc3VsdCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKLSAgICAgICAgdmFyIGVtYmVkMSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwbHVnaW4xIik7Ci0gICAgICAgIHZhciBlbWJlZDIg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGx1Z2luMiIpOwotICAgICAgICBpZiAoIWludGVy
bmFscy5pc1BsdWdpblNuYXBzaG90dGVkKGVtYmVkMSkKLSAgICAgICAgICAgICYmICFpbnRlcm5h
bHMuaXNQbHVnaW5TbmFwc2hvdHRlZChlbWJlZDIpKQotICAgICAgICAJcmVzdWx0LmlubmVySFRN
TCA9ICJQQVNTIjsKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgMTAw
MCk7Ci19Ci08L3NjcmlwdD4KLTxwPgotPGVtYmVkIGlkPSJwbHVnaW4xIiBzcmM9Ii4uL3Jlc291
cmNlcy90ZXN0Lm1vdiIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvZW1iZWQ+Ci08L3A+Ci08
cD4KLTxlbWJlZCBpZD0icGx1Z2luMiIgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC5tb3YiIHdpZHRo
PSI1MCIgaGVpZ2h0PSI1MCI+PC9lbWJlZD4KLTwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsdWdpbnMvc25hcHNob3R0aW5nL2RldGVybWluZS1wcmltYXJ5LXNuYXBzaG90dGVkLXBsdWdp
bi1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9k
ZXRlcm1pbmUtcHJpbWFyeS1zbmFwc2hvdHRlZC1wbHVnaW4tY3Jhc2gtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODA4ODgyYmZiZmNlYTdlYjk3YTI4MmU0NzNj
ZjMzNDI4ZmZlMDU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL2RldGVybWluZS1wcmltYXJ5LXNu
YXBzaG90dGVkLXBsdWdpbi1jcmFzaC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0
ICswLDAgQEAKLVRoaXMgdGVzdHMgZGV0ZXJtaW5pbmcgdGhlIHByaW1hcnkgc25hcHNob3R0ZWQg
cGx1Z2luIGRvZXMgbm90IGhpdCBhbiBhc3NlcnRpb24uCi0KLVBBU1MKLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvZGV0ZXJtaW5lLXByaW1hcnktc25hcHNo
b3R0ZWQtcGx1Z2luLWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGlu
Zy9kZXRlcm1pbmUtcHJpbWFyeS1zbmFwc2hvdHRlZC1wbHVnaW4tY3Jhc2guaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZlNTJlMjRlN2FjYjBiNzJiNDE2OWRiYWVkNDNhYTY3
NjdiZjA5ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9kZXRlcm1pbmUtcHJpbWFyeS1zbmFwc2hv
dHRlZC1wbHVnaW4tY3Jhc2guaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08Ym9keT4KLTxwPlRoaXMgdGVzdHMgZGV0ZXJtaW5pbmcg
dGhlIHByaW1hcnkgc25hcHNob3R0ZWQgcGx1Z2luIGRvZXMgbm90IGhpdCBhbiBhc3NlcnRpb24u
PC9wPgotPGRpdiBpZD0icmVzdWx0Ij5GQUlMPC9kaXY+Ci08ZW1iZWQgaWQ9InRlc3RQbHVnaW4i
IHNyYz0id2Via2l0LXRlc3QtbmV0c2NhcGUiIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRl
c3QtbmV0c2NhcGUiPjwvZW1iZWQ+Ci08c2NyaXB0PgotaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICByZXN1bHQudGV4dENvbnRlbnQgPSAnVGhpcyB0ZXN0IHJlcXVpcmVzIFdlYktpdFRlc3RS
dW5uZXIuJzsKLWVsc2UgewotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRQbHVnSW5TbmFwc2hv
dHRpbmdFbmFibGVkKHRydWUpOwotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRNYXhpbXVtUGx1
Z0luU25hcHNob3RBdHRlbXB0cygwKTsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
LSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICBzZXRUaW1lb3V0KCgpID0+IHsKLSAg
ICAgICAgY29uc3QgdGVzdFBsdWdpbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0UGx1
Z2luIik7Ci0gICAgICAgIGlmIChpbnRlcm5hbHMuaXNQbHVnaW5TbmFwc2hvdHRlZCh0ZXN0UGx1
Z2luKSkKLSAgICAgICAgICAgIHJlc3VsdC50ZXh0Q29udGVudCA9ICdQQVNTJzsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgcmVzdWx0LnRleHRDb250ZW50ID0gJ0ZBSUwgLSBub3Qgc25hcHNo
b3QnOwotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCA1MDApOwotfQot
Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5n
L3BsdWdpbi1yZWNlaXZlcy1jbGljay1ldmVudC5odG1sIGIvTGF5b3V0VGVzdHMvcGx1Z2lucy9z
bmFwc2hvdHRpbmcvcGx1Z2luLXJlY2VpdmVzLWNsaWNrLWV2ZW50Lmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDMyM2I0YjRhZWQ2NDkyMzM4YTJlMWQ2ZWI3ZWU5OTg1NmE0NGFm
YWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvcGx1Z2luLXJlY2VpdmVzLWNsaWNrLWV2ZW50Lmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi08ZW1iZWQgaWQ9InBsdWdpbiIgc3Jj
PSIuLi9yZXNvdXJjZXMvb3JhbmdlLm1vdiI+PC9lbWJlZD4KLTxkaXYgaWQ9InJlc3VsdCI+RkFJ
TCwgcGx1Z2luIGRpZCBub3QgcmVjZWl2ZSBtb3VzZSBjbGljayBldmVudC48L2Rpdj4KLTxzY3Jp
cHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRp
bmdzLnNldFBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQodHJ1ZSk7Ci0gICAgd2luZG93LmludGVy
bmFscy5zZXR0aW5ncy5zZXRNYXhpbXVtUGx1Z0luU25hcHNob3RBdHRlbXB0cygwKTsKLQl2YXIg
ZW1iZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGx1Z2luIik7Ci0JdmFyIGRpdiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKLQllbWJlZC5hZGRFdmVudExpc3RlbmVy
KCJjbGljayIsIGZ1bmN0aW9uKCkgewotCQlkaXYuaW5uZXJIVE1MID0gIlBBU1MsIHBsdWdpbiBk
aWQgcmVjZWl2ZSBtb3VzZSBjbGljayBldmVudC4iOwotCQl0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLQkJfSk7Ci0JdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsKLSAgICAgICAgdmFyIGVtYmVkID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigi
ZW1iZWQiKTsKLSAgICAgICAgdmFyIHJlY3QgPSBlbWJlZC5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KTsKLSAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8ocmVjdC5sZWZ0ICsgMTAsIHJlY3Qu
dG9wICsgMTApOwotICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKLSAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VVcCgpOwotICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgICAgIH0sIDUwMCk7Ci0gICAg
fSwgNTAwKTsKLQl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLX0KLTwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvcHJpbnQtc25hcHNob3R0ZWQt
cGx1Z2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL3By
aW50LXNuYXBzaG90dGVkLXBsdWdpbi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDQ3NTU3ZWQzYTdkMjkzYWFhZDI5NTNjZDljMTk3MGEwOTc4ZTIxNWUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGx1
Z2lucy9zbmFwc2hvdHRpbmcvcHJpbnQtc25hcHNob3R0ZWQtcGx1Z2luLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVRoaXMgdGVzdCBjaGVja3MgdGhhdCBwcmludGlu
ZyBhIHNuYXBzaG90dGVkIHBsdWdpbiB3aXRoIHRleHQgY2hpbGRyZW4gZG9lcyBub3QgY3Jhc2gg
b3IgY2F1c2UgYXNzZXJ0aW9uIGZhaWx1cmVzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGx1
Z2lucy9zbmFwc2hvdHRpbmcvcHJpbnQtc25hcHNob3R0ZWQtcGx1Z2luLmh0bWwgYi9MYXlvdXRU
ZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9wcmludC1zbmFwc2hvdHRlZC1wbHVnaW4uaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjYxZmE5NWU2NjUzOTFjYTAyMjFiZTdhZDFm
ZGQwOTdiMmZiNmYwMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9wcmludC1zbmFwc2hvdHRlZC1w
bHVnaW4uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIGludGVybmFscy5zZXR0
aW5ncy5zZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKHRydWUpOwotICAgIGludGVybmFscy5z
ZXR0aW5ncy5zZXRNYXhpbXVtUGx1Z0luU25hcHNob3RBdHRlbXB0cygwKTsKLSAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLX0gICAg
IAotPC9zY3JpcHQ+Ci0KLVRoaXMgdGVzdCBjaGVja3MgdGhhdCBwcmludGluZyBhIHNuYXBzaG90
dGVkIHBsdWdpbiB3aXRoIHRleHQgY2hpbGRyZW4KLWRvZXMgbm90IGNyYXNoIG9yIGNhdXNlIGFz
c2VydGlvbiBmYWlsdXJlcy4KLQotPG9iamVjdCAgaWQ9ImZvbyIgdHlwZT0iYXBwbGljYXRpb24v
eC1zaG9ja3dhdmUtZmxhc2giIGRhdGE9Ii4uL3Jlc291cmNlcy9saW5lcy5zd2YiPgotIDwvb2Jq
ZWN0PgotCi08c2NyaXB0PgotZnVuY3Rpb24gYm9vbSgpCi17Ci0gICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0UHJpbnRpbmcoKTsKLSAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgd2luZG93LnByaW50
KCk7Ci0gICAgfQotfQotc2V0VGltZW91dChib29tLCAzMDAwKTsKLTwvc2NyaXB0PgotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9xdWlja3RpbWUtcGx1Z2lu
LXNuYXBzaG90dGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9xdWlj
a3RpbWUtcGx1Z2luLXNuYXBzaG90dGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGVhNGI1NDE0MjJlODgxZWEyZjdiYTBmZGJjYjVlZjk2YWViMmQ2MGYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGx1Z2lucy9z
bmFwc2hvdHRpbmcvcXVpY2t0aW1lLXBsdWdpbi1zbmFwc2hvdHRlZC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTkgKzAsMCBAQAotPHA+VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBxdWlja3RpbWUg
cGx1Z2lucyBjYW4gYWxzbyBiZSBzbmFwc2hvdHRlZC4gCi1XZSBtYWtlIHRoZSBwbHVnaW4gaGVy
ZSB0b28gc21hbGwgdG8gYmUgdGhlIHByaW1hcnkgcGx1Z2luLCB0aHVzIGl0IHNob3VsZCBnZXQg
c25hcHNob3R0ZWQuPC9wPgotPGRpdiBpZD0icmVzdWx0Ij5GQUlMPC9kaXY+Ci08c2NyaXB0Pgot
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFBsdWdJ
blNuYXBzaG90dGluZ0VuYWJsZWQodHJ1ZSk7Ci0gICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldE1h
eGltdW1QbHVnSW5TbmFwc2hvdEF0dGVtcHRzKDApOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24gKCkgewotICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlc3VsdCIpOwotICAgICAgICB2YXIgZW1iZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cGx1Z2luIik7Ci0gICAgICAgIGlmIChpbnRlcm5hbHMuaXNQbHVnaW5TbmFwc2hvdHRlZChlbWJl
ZCkpCi0gICAgICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0gIlBBU1MiOwotICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCA1MDApOwotfQotPC9zY3JpcHQ+Ci08ZW1iZWQg
aWQ9InBsdWdpbiIgc3JjPSIuLi9yZXNvdXJjZXMvb3JhbmdlLm1vdiIgd2lkdGg9IjMwMCIgaGVp
Z2h0PSIzMDAiPjwvZW1iZWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBz
aG90dGluZy9yZXN0YXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9y
ZXN0YXJ0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyYjY1OTczY2MxM2Jj
OTA0Njc5ODQxMDM5YzBiNmVkZmM5ZDU3OWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvcmVzdGFy
dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotPHA+VGhpcyB0ZXN0IGZvcmNl
cyBhIHBsdWdpbiB0byBzbmFwc2hvdCBpbW1lZGlhdGVseSwgdGhlbiB0cmllcyB0byByZXN0YXJ0
IGl0LjwvcD4KLTxkaXYgaWQ9InJlc3VsdCI+RkFJTDwvZGl2PgotPHNjcmlwdD4KLWlmICh3aW5k
b3cudGVzdFJ1bm5lcikgewotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRQbHVnSW5TbmFwc2hv
dHRpbmdFbmFibGVkKHRydWUpOwotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRNYXhpbXVtUGx1
Z0luU25hcHNob3RBdHRlbXB0cygwKTsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
LSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgp
IHsKLSAgICAgICAgdmFyIGVtYmVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBsdWdpbiIp
OwotICAgICAgICB2YXIgcmVjdCA9IGVtYmVkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhyZWN0LmxlZnQgKyAxMCwgcmVjdC50b3AgKyAx
MCk7Ci0gICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwotICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVVwKCk7Ci0gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewotICAgICAgICAg
ICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKLSAgICAg
ICAgICAgIHZhciBlbWJlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwbHVnaW4iKTsKLSAg
ICAgICAgICAgIGlmICghaW50ZXJuYWxzLmlzUGx1Z2luU25hcHNob3R0ZWQoZW1iZWQpKQotICAg
ICAgICAgICAgICAgIHJlc3VsdC5pbm5lckhUTUwgPSAiUEFTUyI7Ci0gICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgfSwgMTAwMCk7Ci0gICAgfSwgMTAwMCk7Ci19
Ci08L3NjcmlwdD4KLTxlbWJlZCBpZD0icGx1Z2luIiBzcmM9Ii4uL3Jlc291cmNlcy9vcmFuZ2Uu
bW92Ij48L2VtYmVkPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRp
bmcvc2V0LXBsdWdpbi1zaXplLXRvLXRpbnkuaHRtbCBiL0xheW91dFRlc3RzL3BsdWdpbnMvc25h
cHNob3R0aW5nL3NldC1wbHVnaW4tc2l6ZS10by10aW55Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGIxM2ZkYjI0M2I1MmIwMTU5M2U0NGU1M2E5NTIxZDkwZDM3MzZjNDcuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
cGx1Z2lucy9zbmFwc2hvdHRpbmcvc2V0LXBsdWdpbi1zaXplLXRvLXRpbnkuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDI1ICswLDAgQEAKLTxwPlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgaWYgd2Ug
aGF2ZSBzZXQgYSBwbHVnaW4gdG8gYmUgdG9vIHNtYWxsIGFmdGVyIHRoZSBpbml0aWFsIGxvYWQg
dGhhdCBpdCBzdGlsbCBnZXRzIHBsYXllZC48L3A+Ci08cD5BbHNvIGVuc3VyZSB0aGF0IHRoZSBw
bHVnaW4gcmVtYWlucyBzbmFwc2hvdHRlZCBpZiB0aGUgc2l6ZSB3YXMgaW5pdGlhbGx5IHNwZWNp
ZmllZCBidXQgbWFkZSB0b28gc21hbGwgYWZ0ZXJ3YXJkcy48L3A+Ci08ZGl2IGlkPSJyZXN1bHQi
PkZBSUw8L2Rpdj4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICBpbnRl
cm5hbHMuc2V0dGluZ3Muc2V0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCh0cnVlKTsKLSAgICBp
bnRlcm5hbHMuc2V0dGluZ3Muc2V0TWF4aW11bVBsdWdJblNuYXBzaG90QXR0ZW1wdHMoMCk7Ci0g
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7Ci0gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7Ci0gICAgICAgIHZhciBlbWJlZDEgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGx1Z2luMSIpOwotICAgICAgICBlbWJlZDEuc3R5bGUu
d2lkdGggPSA0MDsKLSAgICAgICAgZW1iZWQxLnN0eWxlLmhlaWdodCA9IDQwOwotICAgICAgICB2
YXIgZW1iZWQyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBsdWdpbjIiKTsKLSAgICAgICAg
ZW1iZWQyLnN0eWxlLndpZHRoID0gNDA7Ci0gICAgICAgIGVtYmVkMi5zdHlsZS5oZWlnaHQgPSA0
MDsKLSAgICAgICAgaWYgKCFpbnRlcm5hbHMuaXNQbHVnaW5TbmFwc2hvdHRlZChlbWJlZDEpICYm
IGludGVybmFscy5pc1BsdWdpblNuYXBzaG90dGVkKGVtYmVkMikpCi0gICAgICAgICAgICByZXN1
bHQuaW5uZXJIVE1MID0gIlBBU1MiOwotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LSAgICB9LCAxMDAwKTsKLX0KLTwvc2NyaXB0PgotPGVtYmVkIGlkPSJwbHVnaW4xIiBzcmM9Ii4u
L3Jlc291cmNlcy9vcmFuZ2UubW92Ij48L2VtYmVkPgotPGVtYmVkIGlkPSJwbHVnaW4yIiBzcmM9
Ii4uL3Jlc291cmNlcy9vcmFuZ2UubW92IiBzdHlsZT0id2lkdGg6NTBweDsgaGVpZ2h0OjUwcHgi
PjwvZW1iZWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9z
aW1wbGUuaHRtbCBiL0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL3NpbXBsZS5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGU5OGQ2MzM4YmNjNjRkMjhjY2IwMDM5
ZDI2NmRiNjZlNzAxMWI0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL3NpbXBsZS5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotPHA+VGhpcyB0ZXN0IGZvcmNlcyBhIHBsdWdpbiB0
byBzbmFwc2hvdCBpbW1lZGlhdGVseTwvcD4KLTxkaXYgaWQ9InJlc3VsdCI+RkFJTDwvZGl2Pgot
PHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIGludGVybmFscy5zZXR0aW5n
cy5zZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKHRydWUpOwotICAgIGludGVybmFscy5zZXR0
aW5ncy5zZXRNYXhpbXVtUGx1Z0luU25hcHNob3RBdHRlbXB0cygwKTsKLSAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uICgpIHsKLSAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZXN1bHQiKTsKLSAgICAgICAgdmFyIGVtYmVkID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInBsdWdpbiIpOwotICAgICAgICBpZiAoaW50ZXJuYWxzLmlzUGx1Z2luU25hcHNo
b3R0ZWQoZW1iZWQpKQotICAgICAgICAgICAgcmVzdWx0LmlubmVySFRNTCA9ICJQQVNTIjsKLSAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgMTAwMCk7Ci19Ci08L3Njcmlw
dD4KLTxlbWJlZCBpZD0icGx1Z2luIiBzcmM9Ii4uL3Jlc291cmNlcy9vcmFuZ2UubW92Ij48L2Vt
YmVkPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvc25hcHNo
b3QtcGx1Z2luLW5vdC1xdWl0ZS1ibG9ja2VkLWJ5LWltYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9w
bHVnaW5zL3NuYXBzaG90dGluZy9zbmFwc2hvdC1wbHVnaW4tbm90LXF1aXRlLWJsb2NrZWQtYnkt
aW1hZ2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmEyMDYxNzhiNDVkYWE3
ODBhODgzZjkzZjM0ZjYxZjkzMmE4MDA5MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9zbmFwc2hv
dC1wbHVnaW4tbm90LXF1aXRlLWJsb2NrZWQtYnktaW1hZ2UuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDI0ICswLDAgQEAKLTxwIHN0eWxlID0gIndoaXRlLXNwYWNlOiBub3dyYXA7Ij5UaGlzIHRl
c3RzIHRoYXQgYSBwbHVnaW4gc2hvdWxkIGJlIHNuYXBzaG90dGVkIGlmIGl0IGlzIHBhcnRpYWxs
eSBjb3ZlcmVkIGJ5IGFuIGltYWdlIGJ1dCBub3QgZW5vdWdoIHRvIGJlIGNvbnNpZGVyZWQgYmxv
Y2tpbmcuPC9wPgotPHA+IEl0IGFkZGl0aW9uYWxseSB0ZXN0cyB0aGF0IHdlIHRha2UgdHJhbnNm
b3JtcyBpbnRvIGFjY291bnQuIDwvcD4KLTxkaXYgaWQ9InJlc3VsdCI+RkFJTDwvZGl2PgotPHNj
cmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIGludGVybmFscy5zZXR0aW5ncy5z
ZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKHRydWUpOwotICAgIGludGVybmFscy5zZXR0aW5n
cy5zZXRNYXhpbXVtUGx1Z0luU25hcHNob3RBdHRlbXB0cygwKTsKLSAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uICgpIHsKLSAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQiKTsKLSAgICAgICAgdmFyIGVtYmVkMSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJwbHVnaW4xIik7Ci0gICAgICAgIHZhciBlbWJlZDIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicGx1Z2luMiIpOwotICAgICAgICBpZiAoaW50ZXJuYWxzLmlzUGx1Z2luU25hcHNo
b3R0ZWQoZW1iZWQxKSAmJiBpbnRlcm5hbHMuaXNQbHVnaW5TbmFwc2hvdHRlZChlbWJlZDIpKQot
ICAgICAgICAgICAgcmVzdWx0LmlubmVySFRNTCA9ICJQQVNTIjsKLSAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgMTUwMCk7Ci19Ci08L3NjcmlwdD4KLTxlbWJlZCBpZD0i
cGx1Z2luMSIgc3JjPSIuLi9yZXNvdXJjZXMvb3JhbmdlLm1vdiIgd2lkdGg9IjYwMCIgaGVpZ2h0
PSI2MDAiPjwvZW1iZWQ+Ci08aW1nIHNyYz0iLi4vcmVzb3VyY2VzL2FwcGxlLmdpZiIgd2lkdGg9
IjYwMCIgaGVpZ2h0PSI2MDAiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjI1cHg7IGxl
ZnQ6MHB4Ij4KLTxicj4KLTxlbWJlZCBpZD0icGx1Z2luMiIgc3JjPSIuLi9yZXNvdXJjZXMvb3Jh
bmdlLm1vdiIgd2lkdGg9IjYwMCIgaGVpZ2h0PSI2MDAiPjwvZW1iZWQ+Ci08aW1nIHNyYz0iLi4v
cmVzb3VyY2VzL2FwcGxlLmdpZiIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiIHN0eWxlPSItd2Vi
a2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMjAwcHgsLTUwMHB4KSI+Cg==
</data>
<flag name="review"
          id="430677"
          type_id="1"
          status="+"
          setter="thorton"
    />
    <flag name="commit-queue"
          id="430666"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413984</attachid>
            <date>2020-11-12 16:51:17 -0800</date>
            <delta_ts>2020-11-12 18:34:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218835-20201112165116.patch</filename>
            <type>text/plain</type>
            <size>314065</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg2YjY2ODRjYzJlOTQ3NzI5Njc2MTEx
MmFlZDRhYWFhYTE2ODEyYzguLjJiN2RiZmFmMjUyNGQ5NGM0MzBhNTY2NzRjMDk5MmY3YjAzZGM0
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMTEtMTIgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQgYWR2YW5jZWQgcGx1Zy1pbiBmZWF0
dXJlczogc25hcHNob3R0aW5nIGFuZCBwbHVnLWluIGxvYWQgcG9saWN5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4MzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlcy55YW1sOiBSZW1vdmVkCisgICAgICAgIEF1dG9zdGFydE9yaWdpblBsdWdJblNu
YXBzaG90dGluZ0VuYWJsZWQsIFBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQsCisgICAgICAgIFBy
aW1hcnlQbHVnSW5TbmFwc2hvdERldGVjdGlvbkVuYWJsZWQsIGFuZCBTbmFwc2hvdEFsbFBsdWdJ
bnMuCisKIDIwMjAtMTEtMTIgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTaG93IGxlZ2FjeSBsaW5lIGxheW91dCB2aXN1YWwgY292ZXJhZ2UgaW5zdGVhZCBvZiAi
c2ltcGxlIGxpbmUiIGxheW91dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4MTMyZGJmZjM5MjQwNDE5YzJhNmU5
YjkwODljMThkZGFjZTE2NDkxLi5iOWZmNDE2ZDQ0ZWQ0N2Y4NGIwNmI3ZDFiYmZhNDBlOGE2YTY3
Yzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM2IEBACisyMDIwLTExLTEyICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdW51c2VkIGFkdmFuY2VkIHBs
dWctaW4gZmVhdHVyZXM6IHNuYXBzaG90dGluZyBhbmQgcGx1Zy1pbiBsb2FkIHBvbGljeQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODM1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6
IFJlbW92ZWQgc29tZSBoZWFkZXJzLgorICAgICAgICAqIFNvdXJjZXMudHh0OiBSZW1vdmVkIHNv
bWUgc291cmNlIGZpbGVzLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajogRGl0dG8uCisKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5o
OiBSZW1vdmVkIFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheVBhcnQuCisgICAgICAgICogY3NzL0NT
U1ZhbHVlS2V5d29yZHMuaW46IFJlbW92ZWQgc25hcHNob3R0ZWQtcGx1Z2luLW92ZXJsYXkuCisK
KyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxQbHVnSW5FbGVtZW50OjpIVE1MUGx1Z0luRWxlbWVudCk6IE1vdmVkIG1lbWJlciBpbml0
aWFsaXphdGlvbiB0bworICAgICAgICB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50OjpjYW5Qcm9jZXNzRHJhZyBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cik6IFJlbW92ZWQgc25hcHNob3Qtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxQbHVnSW5FbGVtZW50Ojpzd2FwUmVuZGVyZXJUaW1lckZpcmVkKTogUmVtb3ZlZCBjb2RlIHRv
IGhhbmRsZQorICAgICAgICBEaXNwbGF5aW5nU25hcHNob3Qgc3RhdGUuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6c2V0RGlzcGxheVN0YXRlKTogRGl0dG8uCisKKyAgICAg
ICAgKiBodG1sL0hUTUxQbHVnSW5FbGVtZW50Lmg6IFJlbW92ZWQgV2FpdGluZ0ZvclNuYXBzaG90
LCBEaXNwbGF5aW5nU25hcHNob3QsCisgICAgICAgIFJlc3RhcnRpbmcgYW5kIFJlc3RhcnRpbmdX
aXRoUGVuZGluZ01vdXNlQ2xpY2sgc3RhdGVzLCB1cGRhdGVTbmFwc2hvdCwKKyAgICAgICAgZGlz
cGF0Y2hQZW5kaW5nTW91c2VDbGljaywgaXNSZXN0YXJ0ZWRQbHVnaW4sIGFuZCBjYW5Qcm9jZXNz
RHJhZy4gTWFya2VkIHNvbWUKKyAgICAgICAgbW9yZSBmdW5jdGlvbnMgZmluYWwsIG1hZGUgYSBj
b3VwbGUgbm9uLXZpcnR1YWwsIGFuZCBtb3ZlZCBzb21lIHRoaW5ncyBmcm9tCisgICAgICAgIHB1
YmxpYyB0byBwcm90ZWN0ZWQgYW5kIHByb3RlY3RlZCB0byBwcml2YXRlLgorCisgICAgICAgICog
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRpdGxl
VGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzdWJ0aXRsZVRleHQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6SFRNTFBsdWdJbklt
YWdlRWxlbWVudCk6IFJlbW92ZWQgYSBmZXcgZGF0YQorICAgICAgICBtZW1iZXJzLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c2V0RGlzcGxheVN0YXRlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcik6IFJlbW92ZWQgY29kZSB0byBoYW5kbGUKKyAgICAgICAgdGhlIERpc3Bs
YXlpbmdTbmFwc2hvdCBjYXNlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxl
bWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlciBjb25zdCk6IFJlbW92ZWQgY29kZQorICAg
ICAgICB0byBoYW5kbGUgYSBzbmFwc2hvdHRlZCBwbHVnLWluLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6d2lsbFJlY2FsY1N0eWxlKTogUmVtb3ZlZCBjaGVjayBm
b3IKKyAgICAgICAgdGhlIERpc3BsYXlpbmdTbmFwc2hvdCBjYXNlLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlU25hcHNob3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6cGx1Z0luSW1hZ2VFbGVtZW50SXNvbGF0ZWRXb3JsZCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRVc2VyQWdl
bnRTaGFkb3dSb290KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ6OnBhcnRPZlNuYXBzaG90T3ZlcmxheSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZW1vdmVTbmFwc2hvdFRpbWVyRmly
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6
cmVzdGFydFNpbWlsYXJQbHVnSW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6OnVzZXJEaWRDbGlja1NuYXBzaG90KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnNldElzUHJpbWFyeVNuYXBzaG90
dGVkUGx1Z0luKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ6OnJlc3RhcnRTbmFwc2hvdHRlZFBsdWdJbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdNb3VzZUNsaWNrKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnNpbXVs
YXRlZE1vdXNlQ2xpY2tUaW1lckZpcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmRv
Y3VtZW50SGFkUmVjZW50VXNlckdlc3R1cmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y2hlY2tTaXplQ2hhbmdlRm9yU25hcHNob3R0aW5nKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzMTAwUGVyY2VudCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjppc1NtYWxsZXJUaGFuVGlueVNpemluZ1RocmVzaG9sZCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojppc1RvcExldmVsRnVs
bFBhZ2VQbHVnaW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJ
bkltYWdlRWxlbWVudDo6Y2hlY2tTbmFwc2hvdFN0YXR1cyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzdWJmcmFtZUxvYWRlcldpbGxDcmVhdGVQ
bHVnSW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6c3ViZnJhbWVMb2FkZXJEaWRDcmVhdGVQbHVnSW4pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IERlbGV0
ZWQuCisKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaDogUmVtb3ZlZCB0
aGUgZnVuY3Rpb25zIG1lbnRpb25lZCBhYm92ZS4KKyAgICAgICAgQWxzbyBsb2FkZWRVcmwsIHNu
YXBzaG90SW1hZ2UsIG5lZWRzQ2hlY2tGb3JTaXplQ2hhbmdlLCBzZXROZWVkc0NoZWNrRm9yU2l6
ZUNoYW5nZSwKKyAgICAgICAgc25hcHNob3REZWNpc2lvbiwgaXNSZXN0YXJ0ZWRQbHVnaW4sIG1f
bG9hZGVkVXJsLCBtX3BlbmRpbmdDbGlja0V2ZW50RnJvbVNuYXBzaG90LAorICAgICAgICBtX3Np
bXVsYXRlZE1vdXNlQ2xpY2tUaW1lciwgbV9yZW1vdmVTbmFwc2hvdFRpbWVyLCBtX3NuYXBzaG90
SW1hZ2UsCisgICAgICAgIG1fY3JlYXRlZER1cmluZ1VzZXJHZXN0dXJlLCBtX2lzUmVzdGFydGVk
UGx1Z2luLCBtX25lZWRzQ2hlY2tGb3JTaXplQ2hhbmdlLAorICAgICAgICBtX3BsdWdJbldhc0Ny
ZWF0ZWQsIG1fZGVmZXJyZWRQcm9tb3Rpb25Ub1ByaW1hcnlQbHVnSW4sIG1fc2l6ZVdoZW5TbmFw
c2hvdHRlZCwKKyAgICAgICAgbV9zbmFwc2hvdERlY2lzaW9uLCBhbmQgbV9wbHVnSW5EaW1lbnNp
b25zU3BlY2lmaWVkLgorCisgICAgICAgICogbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpTdWJmcmFtZUxvYWRlcjo6bG9hZFBsdWdpbik6
IFJlbW92ZWQgY2FsbHMgdG8KKyAgICAgICAgc3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0lu
L0RpZENyZWF0ZVBsdWdJbi4KKworICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmNhblByb2Nlc3NEcmFnKTogUmVtb3Zl
ZCBzcGVjaWFsIGNhc2UgZm9yIHBsdWctaW5zLgorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRFbWJlZGRlZE9iamVjdFRvVXBk
YXRlKTogUmVtb3ZlZCBjYWxsIHRvCisgICAgICAgIG5lZWRzQ2hlY2tGb3JTaXplQ2hhbmdlLgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVFbWJlZGRlZE9iamVjdCk6IFJlbW92
ZWQgc3BlY2lhbCBjYXNlIGZvcgorICAgICAgICBzbmFwc2hvdHRlZCBwbHVnLWluIGFuZCBjYWxs
IHRvIG5lZWRzQ2hlY2tGb3JTaXplQ2hhbmdlLgorCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOiBSZW1vdmVkIG1fcGx1Z0luQ2xpZW50Lgor
ICAgICAgICAqIHBhZ2UvUGFnZS5oOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1
cmF0aW9uLmNwcDogUmVtb3ZlZCBQbHVnSW5DbGllbnQuaC4KKyAgICAgICAgKiBwYWdlL1BhZ2VD
b25maWd1cmF0aW9uLmg6IFJlbW92ZWQgcGx1Z0luQ2xpZW50LgorICAgICAgICAqIHBhZ2UvUGx1
Z0luQ2xpZW50Lmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLnlhbWw6IFJl
bW92ZWQgTWF4aW11bVBsdWdJblNuYXBzaG90QXR0ZW1wdHMuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9UaGVtZVR5cGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOiBSZW1vdmVk
IFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheVBhcnQuCisgICAgICAgICogcGxhdGZvcm0vVGhlbWVU
eXBlcy5oOiBEaXR0by4KKworICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaDogUmVt
b3ZlZCBjYW5Qcm9jZXNzRHJhZywgc2hvdWxkQWx3YXlzQXV0b1N0YXJ0LAorICAgICAgICBhbmQg
YmVnaW5TbmFwc2hvdHRpbmdSdW5uaW5nUGx1Z2luLgorCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0Lmg6IEFkZGVkIGFuIGV4cG9ydCBiZWNhdXNlIHRoZSBsaW5rZXIg
ZmFpbGVkLgorICAgICAgICBOb3Qgc3VyZSB3aGF0IHRyaWdnZXJlZCB0aGlzLgorCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNuYXBzaG90SW1hZ2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50Q29udGVudHMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OmxheW91dCk6IFJl
bW92ZWQgY29kZSB0aGF0IHdhcyBvbmx5IGZvcgorICAgICAgICBzbmFocHNob3R0ZWQgcGx1Zy1p
bnMsIGd1YXJkZWQgYm90aCBieSBhbiBleHBsaWNpdCBjaGVjayBmb3Igc25hcHNob3Qgc3RhdGUK
KyAgICAgICAgYW5kIGJ5IGEgY2hlY2sgb2YgY2FuSGF2ZUNoaWxkcmVuIChub3cgYWx3YXlzIGZh
bHNlKS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpjYW5IYXZlQ2hp
bGRyZW4gY29uc3QpOiBEZWxldGVkLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVk
ZGVkT2JqZWN0Lmg6IE1hcmtlZCB0aGUgY2xhc3MgZmluYWwsIG1hZGUgZXZlcnl0aGluZworICAg
ICAgICBwcml2YXRlIHRoYXQgd2FzIHByb3RlY3RlZCwgcmVtb3ZlZCBmdW5jdGlvbnMgbWVudGlv
bmVkIGFib3ZlLCBhbmQgdmlydHVhbAorICAgICAgICBjYW5IYXZlV2lkZ2V0IGZ1bmN0aW9uLgor
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppc1Jlc3RhcnRlZFBsdWdpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckJhY2tpbmc6OmlzU2ltcGxlQ29udGFpbmVyQ29tcG9zaXRpbmdMYXllciBjb25z
dCk6CisgICAgICAgIFJlbW92ZWQgY2FsbCB0byBpc1Jlc3RhcnRlZFBsdWdpbi4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDogUmVtb3ZlZCBpc1NuYXBzaG90dGVkUGx1Z0lu
LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmg6IFJlbW92
ZWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWU6OnBhaW50KTogUmVtb3ZlZCBTbmFwc2hvdHRlZFBsdWdpbk92ZXJs
YXlQYXJ0LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5oOiBSZW1vdmVkIHBhaW50
U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5oOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbmFwc2hvdHRlZFBsdWdpbk92
ZXJsYXkpOiBEZWxldGVkLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppc1BsdWdpblNuYXBzaG90dGVkKTogQWx3YXlzIHJl
dHVybiBmYWxzZS4KKwogMjAyMC0xMS0xMiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBVc2UgaW5saW5lIGl0ZXJhdG9yIGluIFZpc2libGVQ
b3NpdGlvbjo6bGVmdC9yaWdodFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
ODQyNGM5NjY0YjdjNGM2NDFmMWVlMjYyYzczOTRmZWY3YTMyYzdjMS4uZDg2ZmRkOTJhODUwMWMy
NTQ0YTcwYjY2ZGUwNWEwY2RhZjVmYWIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNDYgQEAKKzIw
MjAtMTEtMTIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSB1bnVzZWQgYWR2YW5jZWQgcGx1Zy1pbiBmZWF0dXJlczogc25hcHNob3R0aW5nIGFuZCBwbHVn
LWluIGxvYWQgcG9saWN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTg4MzUKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAg
ICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6bXV0ZUF1ZGlvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vz
czo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2Vzcyk6CisKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weTogUmVtb3ZlIFBsdWdpblByb2Nlc3NUeXBlLgorICAgICAgICAq
IFNoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLmg6IERpdHRvLgorICAgICAg
ICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUg
Y29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVyczo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOiBEaXR0by4KKworICAgICAgICAqIFNoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KTogUmVtb3ZlIHBsdWdJbkF1dG9T
dGFydE9yaWdpbnMKKyAgICAgICAgYW5kIHBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKTogRGl0dG8u
CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDogRGl0dG8u
CisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM6OmVuY29kZSBjb25z
dCk6IFJlbW92ZSBwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuCisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUpOiBEaXR0by4KKworICAgICAg
ICAqIFNvdXJjZXMudHh0OiBSZW1vdmUgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuY3BwIGFuZCBX
ZWJQbHVnSW5DbGllbnQuY3BwLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4
dC5jcHA6CisgICAgICAgIChXS0NvbnRleHRDb3B5UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVz
KTogUmV0dXJuIG51bGxwdHIuCisgICAgICAgIChXS0NvbnRleHRTZXRQbHVnSW5BdXRvU3RhcnRP
cmlnaW5IYXNoZXMpOiBEbyBub3RoaW5nLgorICAgICAgICAoV0tDb250ZXh0U2V0UGx1Z0luQXV0
b1N0YXJ0T3JpZ2luc0ZpbHRlcmluZ091dEVudHJpZXNBZGRlZEFmdGVyVGltZSk6IERpdHRvLgor
ICAgICAgICAoV0tDb250ZXh0U2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2lucyk6IERpdHRvLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQ
YWdlTmF2aWdhdGlvbkNsaWVudCk6IFJlbW92ZSBkZWNpZGVQb2xpY3lGb3JQbHVnaW5Mb2FkLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAo
V0tQcmVmZXJlbmNlc1NldFBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQpOiBEbyBub3RoaW5nLgor
ICAgICAgICAoV0tQcmVmZXJlbmNlc0dldFBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQpOiBSZXR1
cm4gZmFsc2UuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U25hcHNob3RBbGxQbHVnSW5zKTog
RG8gbm90aGluZy4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNHZXRTbmFwc2hvdEFsbFBsdWdJbnMp
OiBSZXR1cm4gZmFsc2UuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0QXV0b3N0YXJ0T3JpZ2lu
UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCk6IERvIG5vdGhpbmcuCisgICAgICAgIChXS1ByZWZl
cmVuY2VzR2V0QXV0b3N0YXJ0T3JpZ2luUGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCk6IFJldHVy
biBmYWxzZS4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRQcmltYXJ5UGx1Z0luU25hcHNob3RE
ZXRlY3Rpb25FbmFibGVkKTogRG8gbm90aGluZy4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNHZXRQ
cmltYXJ5UGx1Z0luU25hcHNob3REZXRlY3Rpb25FbmFibGVkKTogUmV0dXJuIGZhbHNlLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tOgorICAg
ICAgICAoV0tDb250ZXh0SXNQbHVnSW5VcGRhdGVBdmFpbGFibGUpOiBSZXR1cm4gZmFsc2UuCisg
ICAgICAgIChXS0NvbnRleHRTZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KTogRG8gbm90aGluZy4K
KyAgICAgICAgKFdLQ29udGV4dENsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMpOiBEbyBub3RoaW5n
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tOgorICAg
ICAgICAoLVtXS1ByZWZlcmVuY2VzIF9zZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkOl0pOiBE
byBub3RoaW5nLgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIF9wbHVnSW5TbmFwc2hvdHRpbmdF
bmFibGVkXSk6IFJldHVybiBOTy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc1Bvb2wubW06CisgICAgICAgICh0b1BsdWdpbkxvYWRDbGllbnRQb2xpY2llc0hhc2hNYXAp
OiBEZWxldGVkLgorICAgICAgICAocG9saWNpZXNIYXNoTWFwVG9EaWN0aW9uYXJ5KTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNp
ZXM6XSk6IERvIG5vdGhpbmcuCisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3BsdWdpbkxvYWRD
bGllbnRQb2xpY2llc10pOiBSZXR1cm4gYW4gZW1wdHkgZGljdGlvbmFyeS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDogUmVtb3ZlIGRpZEZhaWxUb0luaXRp
YWxpemVQbHVnSW4sCisgICAgICAgIGRpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uLCBkZWNp
ZGVQb2xpY3lGb3JQbHVnaW5Mb2FkLAorICAgICAgICB3ZWJWaWV3RGlkRmFpbFRvSW5pdGlhbGl6
ZVBsdWdJbldpdGhJbmZvLAorICAgICAgICB3ZWJWaWV3RGlkQmxvY2tJbnNlY3VyZVBsdWdpblZl
cnNpb25XaXRoSW5mbywgYW5kCisgICAgICAgIHdlYlZpZXdEZWNpZGVQb2xpY3lGb3JQbHVnaW5M
b2FkV2l0aEN1cnJlbnRQb2xpY3lQbHVnaW5JbmZvQ29tcGxldGlvbkhhbmRsZXIuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0
OjpOYXZpZ2F0aW9uU3RhdGU6OnNldE5hdmlnYXRpb25EZWxlZ2F0ZSk6IFVwZGF0ZWQgZm9yIGFi
dm9lIHJlbW92YWxzLgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRpZEZhaWxUb0luaXRpYWxpemVQbHVnSW4pOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEJsb2NrSW5zZWN1
cmVQbHVnaW5WZXJzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6cGx1Z2luTW9kdWxl
TG9hZFBvbGljeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OndrUGx1Z2luTW9kdWxlTG9h
ZFBvbGljeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yUGx1Z2luTG9hZCk6IERlbGV0ZWQuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlk
ZXIuaDogUmVtb3ZlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6OnBs
dWdpblByb2Nlc3NUb2tlbik6IFJlbW92ZWQgdGhlCisgICAgICAgIHBsdWdpblByb2Nlc3NUeXBl
IGFyZ3VtZW50LgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6ZmV0Y2hX
ZWJzaXRlRGF0YSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFuYWdl
cjo6ZGVsZXRlV2Vic2l0ZURhdGEpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJv
Y2Vzc01hbmFnZXI6OmRlbGV0ZVdlYnNpdGVEYXRhRm9ySG9zdE5hbWVzKTogRGl0dG8uCisgICAg
ICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaDogRGl0dG8uCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6IFJl
bW92ZWQgdGhlIGNvZGUgdG8KKyAgICAgICAgaGFuZGxlIFBsdWdpblByb2Nlc3NUeXBlOjpTbmFw
c2hvdC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpbmRQbHVnaW4pOiBSZW1vdmVkIHRoZSBwcm9jZXNzVHlw
ZSBhcmd1bWVudC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6IERpdHRvLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46IERpdHRvLgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OndlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzKTogUmVtb3ZlZAor
ICAgICAgICBwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuCisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2ViUHJvY2Vzcyk6IFJlbW92ZWQKKyAgICAgICAg
cGx1Z0luQXV0b1N0YXJ0T3JpZ2lucyBhbmQgcGx1Z2luTG9hZENsaWVudFBvbGljaWVzLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldFBs
dWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5zKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnNGaWx0
ZXJpbmdPdXRFbnRyaWVzQWRkZWRBZnRlclRpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6c2V0UGx1Z2luTG9hZENsaWVudFBvbGljeSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZXNldFBsdWdpbkxvYWRDbGllbnRQb2xp
Y2llcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjbGVhclBs
dWdpbkNsaWVudFBvbGljaWVzKTogRGVsZXRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oOiBSZW1vdmVkIHNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3ksCisgICAgICAg
IHJlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzLCBjbGVhclBsdWdpbkNsaWVudFBvbGljaWVz
LAorICAgICAgICBwbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMsIHBsdWdJbkF1dG9TdGFydE9yaWdp
bkhhc2hlcywKKyAgICAgICAgc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLCBzZXRQbHVn
SW5BdXRvU3RhcnRPcmlnaW5zLAorICAgICAgICBzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5zRmls
dGVyaW5nT3V0RW50cmllc0FkZGVkQWZ0ZXJUaW1lLAorICAgICAgICBwbHVnSW5BdXRvU3RhcnRQ
cm92aWRlciwgbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlciwgYW5kCisgICAgICAgIG1fcGx1Z2lu
TG9hZENsaWVudFBvbGljaWVzLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6YWRkUGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94
eTo6cGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbik6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOiBEaXR0by4KKworICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBSZW1vdmVkIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVy
LmNwcC9oCisgICAgICAgIGFuZCBXZWJQbHVnSW5DbGllbnQuY3BwL2guCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Lmg6Cisg
ICAgICAgIFJlbW92ZWQgaW5jbHVkZSBvZiBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9QbHVnaW5Qcm94eU1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OnBsdWdpbkxheWVyKTogUmVtb3ZlZCBj
b2RlIHRvIGhhbmRsZQorICAgICAgICBtX2lzUmVzdGFydGVkUHJvY2Vzcy4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6IFJlbW92ZWQgc2hvdWxkQWx3YXlz
QXV0b1N0YXJ0LgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDogRGl0dG8u
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6Y3JlYXRlKTogUmVtb3ZlZCBpc1Jlc3RhcnRlZFByb2Nl
c3MgYXJndW1lbnQuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpQbHVnaW5Qcm94eSk6
IERpdHRvLiBBbHNvIG1vdmVkIGluaXRpYWxpemF0aW9uCisgICAgICAgIHRvIHRoZSBjbGFzcyBk
ZWZpbml0aW9uLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oOiBV
cGRhdGVkIGZvciB0aGUgYWJvdmUgY2hhbmdlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6UGx1Z2lu
Vmlldyk6IFJlbW92ZWQgbV9wbHVnaW5TbmFwc2hvdFRpbWVyLgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5WaWV3OjpyZWNyZWF0ZUFuZEluaXRpYWxpemUpOiBSZW1vdmVkIGNvZGUgdG8gbWFuYWdl
CisgICAgICAgIG1fcGx1Z2luU25hcHNob3RUaW1lci4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6aW5pdGlhbGl6ZVBsdWdpbik6IFJlbW92ZWQgY29kZSB0byBzZXQKKyAgICAgICAgbV9k
aWRQbHVnSW5TdGFydE9mZlNjcmVlbi4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6ZGlk
SW5pdGlhbGl6ZVBsdWdpbik6IFJlbW92ZWQgY29kZSB0byBoYW5kbGUKKyAgICAgICAgcmVzdGFy
dGluZyBwbHVnLWlucy4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGFpbnQpOiBEaXR0
by4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6aGFuZGxlRXZlbnQpOiBSZW1vdmVkIGNh
bGxzIHRvCisgICAgICAgIHBsdWdpbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24uCisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblZpZXc6OnNob3VsZE5vdEFkZExheWVyIGNvbnN0KTogUmV0dXJuIGZh
bHNlLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjppbnZhbGlkYXRlUmVjdCk6IFJlbW92
ZWQgY29kZSB0byBoYW5kbGUKKyAgICAgICAgcmVzdGFydGluZyBwbHVnLWlucy4KKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luVmlldzo6aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCk6IFJl
bW92ZWQKKyAgICAgICAgc29tZSBGbGFzaC1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViS2l0
Ojppc0FsbW9zdFNvbGlkQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5W
aWV3OjpwbHVnaW5TbmFwc2hvdFRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5WaWV3OjpiZWdpblNuYXBzaG90dGluZ1J1bm5pbmdQbHVnaW4pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpzaG91bGRBbHdheXNBdXRvU3RhcnQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpwbHVnaW5EaWRSZWNlaXZl
VXNlckludGVyYWN0aW9uKTogRGVsZXRlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3Lmg6IFJlbW92ZWQgcGx1Z2luU25hcHNob3RUaW1lckZpcmVkLAorICAgICAg
ICBwbHVnaW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uLCBzaG91bGRBbHdheXNBdXRvU3RhcnQs
CisgICAgICAgIGJlZ2luU25hcHNob3R0aW5nUnVubmluZ1BsdWdpbiwgbV9kaWRQbHVnSW5TdGFy
dE9mZlNjcmVlbiwKKyAgICAgICAgbV9wbHVnaW5TbmFwc2hvdFRpbWVyLCBtX2NvdW50U25hcHNo
b3RSZXRyaWVzLCBtX2RpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24uCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpjbGVhclBsdWdp
bkNsaWVudFBvbGljaWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luSW5m
b1Byb3ZpZGVyOjpwb3B1bGF0ZVBsdWdpbkNhY2hlKTogRG8gbm90IGNhbGwKKyAgICAgICAgcGx1
Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QuCisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbklu
Zm9Qcm92aWRlcjo6cGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5JbmZvUHJvdmlkZXI6Omxvbmdlc3RNYXRjaGVk
V2lsZGNhcmRIb3N0Rm9ySG9zdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBsdWdpbkluZm9Qcm92aWRlcjo6cmVwbGFjZUhvc3RXaXRoTWF0Y2hlZFdpbGRjYXJkSG9zdCBj
b25zdCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2lu
SW5mb1Byb3ZpZGVyLmg6IFJlbW92ZWQgc2V0UGx1Z2luTG9hZENsaWVudFBvbGljeSwKKyAgICAg
ICAgY2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcywgcGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhv
c3QsCisgICAgICAgIGxvbmdlc3RNYXRjaGVkV2lsZGNhcmRIb3N0Rm9ySG9zdCwgcmVwbGFjZUhv
c3RXaXRoTWF0Y2hlZFdpbGRjYXJkSG9zdCwKKyAgICAgICAgUGx1Z2luTG9hZENsaWVudFBvbGlj
aWVzQnlCdW5kbGVWZXJzaW9uLCBQbHVnaW5Qb2xpY3lNYXBzQnlJZGVudGlmaWVyLCBhbmQKKyAg
ICAgICAgbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaDogUmVtb3ZlZC4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6IFJlbW92ZWQgY29kZSB0byBpbml0aWFsaXplCisgICAg
ICAgIG1fZGV0ZXJtaW5lUHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luVGltZXIsIHBsdWdJbkNsaWVu
dCwgYW5kIHByb2Nlc3NUeXBlLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjcmVhdGVQbHVn
aW4pOiBSZW1vdmVkIGlzUmVzdGFydGVkUHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6Y2xvc2UpOiBSZW1vdmVkIG1fZGV0ZXJtaW5lUHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luVGlt
ZXIgY29kZS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWRkUGx1Z2luVmlldyk6IERpdHRv
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZW1vdmVQbHVnaW5WaWV3KTogRGl0dG8uCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNhblBsdWdpbkhhbmRsZVJlc3BvbnNlKTogUmVtb3Zl
ZCBwbHVnLWluIHByb2Nlc3MgdHlwZS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ29t
bWl0TG9hZCk6IFJlbW92ZWQgY2FsbCB0byByZXNldFByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbi4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkRmluaXNoTG9hZCk6IFJlbW92ZWQgbV9kZXRl
cm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5UaW1lcgorICAgICAgICBjb2RlLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpkZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5UaW1l
ckZpcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGV0ZXJtaW5lUHJp
bWFyeVNuYXBzaG90dGVkUGx1Z0luKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6cmVzZXRQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW4pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjptYXRjaGVzUHJpbWFyeVBsdWdJbiBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsdWdJbkludGVyc2VjdHNTZWFyY2hSZWN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGx1Z0luSXNQcmltYXJ5U2l6ZSk6IERlbGV0
ZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOiBSZW1vdmVkIGRl
dGVybWluZVByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbiwKKyAgICAgICAgZGV0ZXJtaW5lUHJpbWFy
eVNuYXBzaG90dGVkUGx1Z0luVGltZXJGaXJlZCwgcmVzZXRQcmltYXJ5U25hcHNob3R0ZWRQbHVn
SW4sCisgICAgICAgIG1hdGNoZXNQcmltYXJ5UGx1Z0luLCBwbHVnSW5JbnRlcnNlY3RzU2VhcmNo
UmVjdCwgcGx1Z0luSXNQcmltYXJ5U2l6ZSwKKyAgICAgICAgbV9yZWFkeVRvRmluZFByaW1hcnlT
bmFwc2hvdHRlZFBsdWdpbiwgbV9kaWRGaW5kUHJpbWFyeVNuYXBzaG90dGVkUGx1Z2luLAorICAg
ICAgICBtX251bWJlck9mUHJpbWFyeVNuYXBzaG90RGV0ZWN0aW9uQXR0ZW1wdHMsIG1fcHJpbWFy
eVBsdWdJblBhZ2VPcmlnaW4sCisgICAgICAgIG1fcHJpbWFyeVBsdWdJbk9yaWdpbiwgbV9wcmlt
YXJ5UGx1Z0luTWltZVR5cGUsIGFuZAorICAgICAgICBtX2RldGVybWluZVByaW1hcnlTbmFwc2hv
dHRlZFBsdWdJblRpbWVyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBSZW1v
dmVkIGNvZGUgdG8gc2V0CisgICAgICAgIG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2lucyBhbmQgY2Fs
bCB0byByZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6c2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMpOiBSZW1vdmVkIGNhbGwKKyAg
ICAgICAgdG8gcmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuCisgICAgICAgIChXZWJL
aXQ6OmFkZENhc2VGb2xkZWRDaGFyYWN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
aGFzaEZvclBsdWdJbk9yaWdpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OmlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OnNob3VsZFBsdWdJbkF1dG9TdGFydEZyb21PcmlnaW4pOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbHVnSW5EaWRTdGFydEZyb21PcmlnaW4p
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkaWRBZGRQbHVnSW5BdXRv
U3RhcnRPcmlnaW5IYXNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
cmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0UGx1Z2luTG9hZENsaWVudFBvbGlj
eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlc2V0UGx1Z2luTG9h
ZENsaWVudFBvbGljaWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
Y2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcyk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaDogUmVtb3ZlZCBzaG91bGRQbHVnSW5BdXRvU3RhcnRGcm9tT3JpZ2lu
LAorICAgICAgICBwbHVnSW5EaWRTdGFydEZyb21PcmlnaW4sIHBsdWdJbkRpZFJlY2VpdmVVc2Vy
SW50ZXJhY3Rpb24sCisgICAgICAgIHNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3ksIHJlc2V0UGx1
Z2luTG9hZENsaWVudFBvbGljaWVzLAorICAgICAgICBjbGVhclBsdWdpbkNsaWVudFBvbGljaWVz
LCBpc1BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gsCisgICAgICAgIGRpZEFkZFBsdWdJbkF1dG9T
dGFydE9yaWdpbkhhc2gsIHJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLAorICAgICAg
ICBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcywgYW5kIG1fcGx1Z0luQXV0b1N0YXJ0T3Jp
Z2lucy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjogUmVt
b3ZlZAorICAgICAgICBEaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoLCBSZXNldFBsdWdJ
bkF1dG9TdGFydE9yaWdpbkhhc2hlcywKKyAgICAgICAgU2V0UGx1Z2luTG9hZENsaWVudFBvbGlj
eSwgUmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMsIGFuZAorICAgICAgICBDbGVhclBsdWdp
bkNsaWVudFBvbGljaWVzLgorCiAyMDIwLTExLTEyICBEaWVnbyBQaW5vIEdhcmNpYSAgPGRwaW5v
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gVW5yZXZpZXdlZCwgbm9uLXVuaWZpZWQgYnVp
bGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGUzMTc3MDdjMjk1OTE1NDhm
ZjZhMmNmODY3YWJkMGY2M2QxNTBjZDQuLjg5YTVlYTcxYjI0YjNmOGI4ZjkzMTYyNmJhMWI0MGM3
NTM3NjM5MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAyMC0xMS0xMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIHVudXNlZCBhZHZhbmNlZCBwbHVnLWluIGZlYXR1cmVzOiBzbmFwc2hvdHRpbmcgYW5kIHBs
dWctaW4gbG9hZCBwb2xpY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxODgzNQorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAgICAoLVtXZWJQcmVmZXJl
bmNlcyBwbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkXSk6IFJldHVybiBOTy4KKyAgICAgICAgKC1b
V2ViUHJlZmVyZW5jZXMgc2V0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZDpdKTogRG8gbm90aGlu
Zy4KKwogMjAyMC0xMS0xMiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFNob3cgbGVnYWN5IGxpbmUgbGF5b3V0IHZpc3VhbCBjb3ZlcmFnZSBpbnN0ZWFkIG9mICJz
aW1wbGUgbGluZSIgbGF5b3V0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZl
cmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5j
ZXMvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCA4ZmZjMTU3Y2QzNzM0Y2UxNTRhMjUzNWE1OTQy
NGU2ZmY3MDdmNTFiLi5hOWNiZWJhYzY5ZjJkNDE5YWE3OWJhNTc3NjM4Y2UxMjQwNzBiNGI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMu
eWFtbAorKysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMu
eWFtbApAQCAtMzA1LDE2ICszMDUsNiBAQCBBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZDoKICAg
ICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDogdHJ1ZQogCi1BdXRvc3RhcnRPcmlnaW5QbHVnSW5T
bmFwc2hvdHRpbmdFbmFibGVkOgotICB0eXBlOiBib29sCi0gIGRlZmF1bHRWYWx1ZToKLSAgICBX
ZWJLaXRMZWdhY3k6Ci0gICAgICBkZWZhdWx0OiB0cnVlCi0gICAgV2ViS2l0OgotICAgICAgZGVm
YXVsdDogdHJ1ZQotICAgIFdlYkNvcmU6Ci0gICAgICBkZWZhdWx0OiB0cnVlCi0KIEJhY2tGb3J3
YXJkQ2FjaGVTdXBwb3J0c1BsdWdpbnM6CiAgIHR5cGU6IGJvb2wKICAgd2ViS2l0TGVnYWN5UHJl
ZmVyZW5jZUtleTogV2ViS2l0UGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zUHJlZmVyZW5jZUtleQpA
QCAtMTYwNSwxNiArMTU5NSw2IEBAIFBpY3R1cmVJblBpY3R1cmVBUElFbmFibGVkOgogICAgIFdl
YkNvcmU6CiAgICAgICBkZWZhdWx0OiB0cnVlCiAKLVBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQ6
Ci0gIHR5cGU6IGJvb2wKLSAgZGVmYXVsdFZhbHVlOgotICAgIFdlYktpdExlZ2FjeToKLSAgICAg
IGRlZmF1bHQ6IGZhbHNlCi0gICAgV2ViS2l0OgotICAgICAgZGVmYXVsdDogZmFsc2UKLSAgICBX
ZWJDb3JlOgotICAgICAgZGVmYXVsdDogZmFsc2UKLQogUGx1Z2luc0VuYWJsZWQ6CiAgIHR5cGU6
IGJvb2wKICAgd2ViY29yZUdldHRlcjogYXJlUGx1Z2luc0VuYWJsZWQKQEAgLTE2MjcsMTYgKzE2
MDcsNiBAQCBQbHVnaW5zRW5hYmxlZDoKICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDogZmFs
c2UKIAotUHJpbWFyeVBsdWdJblNuYXBzaG90RGV0ZWN0aW9uRW5hYmxlZDoKLSAgdHlwZTogYm9v
bAotICBkZWZhdWx0VmFsdWU6Ci0gICAgV2ViS2l0TGVnYWN5OgotICAgICAgZGVmYXVsdDogdHJ1
ZQotICAgIFdlYktpdDoKLSAgICAgIGRlZmF1bHQ6IHRydWUKLSAgICBXZWJDb3JlOgotICAgICAg
ZGVmYXVsdDogdHJ1ZQotCiBQdW5jaE91dFdoaXRlQmFja2dyb3VuZHNJbkRhcmtNb2RlOgogICB0
eXBlOiBib29sCiAgIHdlYmNvcmVPbkNoYW5nZTogc2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJh
bWVzCkBAIC0xOTk3LDE2ICsxOTY3LDYgQEAgU21hcnRJbnNlcnREZWxldGVFbmFibGVkOgogICAg
IFdlYkNvcmU6CiAgICAgICBkZWZhdWx0OiB0cnVlCiAKLVNuYXBzaG90QWxsUGx1Z0luczoKLSAg
dHlwZTogYm9vbAotICBkZWZhdWx0VmFsdWU6Ci0gICAgV2ViS2l0TGVnYWN5OgotICAgICAgZGVm
YXVsdDogZmFsc2UKLSAgICBXZWJLaXQ6Ci0gICAgICBkZWZhdWx0OiBmYWxzZQotICAgIFdlYkNv
cmU6Ci0gICAgICBkZWZhdWx0OiBmYWxzZQotCiBTb3VyY2VCdWZmZXJDaGFuZ2VUeXBlRW5hYmxl
ZDoKICAgdHlwZTogYm9vbAogICBjb25kaXRpb246IEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQppbmRleCA2NDUzNGNlMDI1MDc4YTliNTQ2NThlMGU2YTU5MzdiNzg4ZjYwOWFh
Li5iZWIwMDYwYmFlYTQzOTRhMDUwNGNjZWQyNjdlNjI2MDBhMzk2Yjc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKQEAgLTg2OSw3ICs4NjksNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUFERVJTCiAgICAgcGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuaAogICAgIHBhZ2UvUGVyZm9y
bWFuY2VMb2dnaW5nLmgKICAgICBwYWdlL1BlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5oCi0gICAg
cGFnZS9QbHVnSW5DbGllbnQuaAogICAgIHBhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmgK
ICAgICBwYWdlL1BvaW50ZXJDaGFyYWN0ZXJpc3RpY3MuaAogICAgIHBhZ2UvUG9pbnRlckxvY2tD
b250cm9sbGVyLmgKQEAgLTE0NTAsNyArMTQ0OSw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKICAgICByZW5kZXJpbmcvUmVuZGVyUHRyLmgKICAgICByZW5kZXJpbmcv
UmVuZGVyUmVwbGFjZWQuaAogICAgIHJlbmRlcmluZy9SZW5kZXJTZWxlY3Rpb25JbmZvLmgKLSAg
ICByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaAogICAgIHJlbmRlcmluZy9SZW5k
ZXJUZXh0LmgKICAgICByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAogICAgIHJlbmRlcmlu
Zy9SZW5kZXJUZXh0TGluZUJveGVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNWVmMWJmNmE2NjRmZjAx
Y2U5MTc5OGVhYzU1MzNhZTVmOWFkMDIzZS4uNzc4ZDJjMGMwYTNkOTc4ZTM5YTlhOWE0ODExYWUz
ZWNiMWUwN2EwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIyMjgsNyArMjIyOCw2IEBAIHJlbmRlcmlu
Zy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKIHJlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5j
cHAKIHJlbmRlcmluZy9SZW5kZXJTZWxlY3Rpb25JbmZvLmNwcAogcmVuZGVyaW5nL1JlbmRlclNs
aWRlci5jcHAKLXJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKIHJlbmRlcmlu
Zy9SZW5kZXJUYWJsZS5jcHAKIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNhcHRpb24uY3BwCiByZW5k
ZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVjZTFiZjllNTExYjZiMDJjNjg2MmJlYzUy
MDA3MzVmYTcyNTRmYTIuLmEyZGExNDRhYWFjOGE0ZDhjODU5YzAwMWNlNWQxNTJlNGI2MDBmNzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTkyNyw3ICs5MjcsNiBAQAogCQkzMTg0MzZERTIxQjlEQUFGMDBFRDM4M0UgLyogV2Vi
R1BVTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMxODQzNkRCMjFCOURBQTAwMEVEMzgzRSAvKiBXZWJHUFVMYXllci5oICovOyB9OwogCQkzMTg4
OTE2MTFBQjdFRUExMDBFQTYyN0IgLyogbWlzc2luZ0ltYWdlQDN4LnBuZyBpbiBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNDE5OTkxQUIwREExNDAwNEU2
NEUxIC8qIG1pc3NpbmdJbWFnZUAzeC5wbmcgKi87IH07CiAJCTMxOEVBRDREMUZBOTEzODAwMDhD
RUY4NiAvKiBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHRTZXR0aW5ncy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE4RUFENEExRkE5MTE1NzAwOENF
Rjg2IC8qIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dFNldHRpbmdzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMzE5NTVBODgxNjBEMTk5MjAw
ODU4MDI1IC8qIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUU4RDhCQjE2MEJDOTRDMDA0Q0U4RjUgLyogUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkzMTk4NDgwMTFBMUQ4MTdCMDBBMTMzMTggLyogQW5pbWF0aW9uRXZl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxOTg0
N0ZGMUExRDgxNjcwMEExMzMxOCAvKiBBbmltYXRpb25FdmVudC5oICovOyB9OwogCQkzMTk4NDgw
QzFBMUU2Q0U4MDBBMTMzMTggLyogSlNBbmltYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE5ODQ4MDQxQTFFNkI1RDAwQTEzMzE4IC8q
IEpTQW5pbWF0aW9uRXZlbnQuaCAqLzsgfTsKIAkJMzE5QTcyODgyM0MyNjdGRTAwODUzNTNDIC8q
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE5QTcyODcyM0MyNjdFNzAwODUzNTNDIC8qIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC05NTcsNyArOTU2LDYgQEAKIAkJMzFDMEZGMjUwRTRDRUI2
RTAwN0Q2RkU1IC8qIFdlYktpdFRyYW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFDMEZGMUYwRTRDRUI2RTAwN0Q2RkU1IC8qIFdl
YktpdFRyYW5zaXRpb25FdmVudC5oICovOyB9OwogCQkzMUMwRkYzRTBFNENFRkFDMDA3RDZGRTUg
LyogSlNXZWJLaXRBbmltYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzFDMEZGM0EwRTRDRUZBQzAwN0Q2RkU1IC8qIEpTV2ViS2l0QW5p
bWF0aW9uRXZlbnQuaCAqLzsgfTsKIAkJMzFDMEZGNDAwRTRDRUZBQzAwN0Q2RkU1IC8qIEpTV2Vi
S2l0VHJhbnNpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMUMwRkYzQzBFNENFRkFDMDA3RDZGRTUgLyogSlNXZWJLaXRUcmFuc2l0aW9u
RXZlbnQuaCAqLzsgfTsKLQkJMzFENTkxQjMxNjY5N0E2QzAwRTZCRjAyIC8qIFBsdWdJbkNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFENTkx
QjExNjY5N0E2QzAwRTZCRjAyIC8qIFBsdWdJbkNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMxRENERjQ0MURBMUM0NTQwMEVBNUI5MyAv
KiBFeHRlbmRlZENvbG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMURDREY0MjFEQTFDNDU0MDBFQTVCOTMgLyogRXh0ZW5kZWRDb2xvci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMxREVBNDU2MUIz
OUY0RDkwMEY3NzE3OCAvKiBXZWJTeXN0ZW1CYWNrZHJvcExheWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMURFQTQ1NDFCMzlGNEQ5MDBGNzcxNzgg
LyogV2ViU3lzdGVtQmFja2Ryb3BMYXllci5oICovOyB9OwogCQkzMUVBRjk3RTEyMTQzNUE0MDBF
N0MxQkYgLyogRGV2aWNlTW90aW9uQ2xpZW50SU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUVBRjk3QzEyMTQzNUE0MDBFN0MxQkYgLyogRGV2aWNl
TW90aW9uQ2xpZW50SU9TLmggKi87IH07CkBAIC00NjU5LDcgKzQ2NTcsNiBAQAogCQlERTVGODY1
OTFGQTJBRjI0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTYwLW1tLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREU1Rjg2M0ExRkEyQUYwNzAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2U2MC1tbS5tbSAqLzsgfTsKIAkJREU1Rjg2NTkxRkEyQUYyNDAwNkRC
NjNCIC8qIFVuaWZpZWRTb3VyY2U2MS1tbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERFNUY4NjNBMUZBMkFGMDcwMDZEQjYzQiAvKiBVbmlmaWVkU291
cmNlNjEtbW0ubW0gKi87IH07CiAJCURFNzcxMDg2MUZBMkYwRDYwMDQ2MDAxNiAvKiBXZWJBcmNo
aXZlRHVtcFN1cHBvcnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTc2M0YzQzFFMjA1MjM0MDAxRDU4REUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0
Lm1tICovOyB9OwotCQlERUJDQ0REMjE2NjQ2RTgyMDBBNDUyRTEgLyogUmVuZGVyTWVkaWFDb250
cm9scy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREU0
OUIzMDgxNjVGMkZFMTAwMTAzMzhEIC8qIFJlbmRlck1lZGlhQ29udHJvbHMuaCAqLzsgfTsKIAkJ
REVDQTdEOTMxRjlFNjdCNTAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UxMzEuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREVDQTdENkQxRjlFNjFDRjAw
RTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UxMzEuY3BwICovOyB9OwogCQlERUNBN0Q5NDFGOUU2N0I1
MDBFM0I2NjEgLyogVW5pZmllZFNvdXJjZTEzMi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERUNBN0Q3RTFGOUU2MUUzMDBFM0I2NjEgLyogVW5pZmll
ZFNvdXJjZTEzMi5jcHAgKi87IH07CiAJCURFQ0E3RDk1MUY5RTY3QjUwMEUzQjY2MSAvKiBVbmlm
aWVkU291cmNlMTMzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IERFQ0E3RDgwMUY5RTYxRTUwMEUzQjY2MSAvKiBVbmlmaWVkU291cmNlMTMzLmNwcCAq
LzsgfTsKQEAgLTczNzUsMTIgKzczNzIsOSBAQAogCQkzMUQyNkJDNDFGODZEMjY2MDA4RkYyNTUg
LyogSlNJbWFnZUJpdG1hcE9wdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNJbWFnZUJpdG1hcE9wdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMUQyNkJDNTFGODZEMjY4MDA4RkYyNTUgLyogSlNJbWFnZUJpdG1hcE9wdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbWFnZUJpdG1hcE9wdGlvbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFEMjZCQzYxRjg2RDI2OTAwOEZGMjU1
IC8qIEpTSW1hZ2VCaXRtYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNJbWFnZUJpdG1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxRDU5
MUIxMTY2OTdBNkMwMEU2QkYwMiAvKiBQbHVnSW5DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGx1Z0luQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTMxRENERjQyMURBMUM0NTQwMEVBNUI5MyAvKiBFeHRlbmRlZENvbG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVuZGVkQ29sb3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzFERUE0NTMxQjM5RjREOTAwRjc3MTc4IC8qIFdlYlN5c3RlbUJhY2tk
cm9wTGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJT
eXN0ZW1CYWNrZHJvcExheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMURF
QTQ1NDFCMzlGNEQ5MDBGNzcxNzggLyogV2ViU3lzdGVtQmFja2Ryb3BMYXllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTeXN0ZW1CYWNrZHJvcExheWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxRThEOEJBMTYwQkM5NEIwMDRDRThGNSAvKiBSZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTMxRThEOEJCMTYwQkM5NEMwMDRDRThGNSAvKiBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUVBRjk3QzEyMTQzNUE0MDBF
N0MxQkYgLyogRGV2aWNlTW90aW9uQ2xpZW50SU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERldmljZU1vdGlvbkNsaWVudElPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMUVBRjk3RDEyMTQzNUE0MDBFN0MxQkYgLyogRGV2aWNlTW90aW9uQ2xpZW50SU9T
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGV2aWNlTW90aW9u
Q2xpZW50SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUVCNTRERDFFN0RD
NzQ0MDBDMTYyM0IgLyogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MTY3LDggKzE1MTYxLDYgQEAKIAkJREJGQ0IwRUJG
RjVDRDc3RUJFQjM1OTVGIC8qIFJlbmRlck1hdGhNTFBhZGRlZC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNYXRoTUxQYWRkZWQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlERDA1RkUwQjBCOEJBM0M2MDA5QUNERkUgLyogV2ViQ29yZU9i
akNFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVPYmpD
RXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURENzYzQkIxMDk5MkMyQzkw
MDc0MEI4RSAvKiBsaWJ4bWwyLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJ4bWwy
LmR5bGliOyBwYXRoID0gL3Vzci9saWIvbGlieG1sMi5keWxpYjsgc291cmNlVHJlZSA9ICI8YWJz
b2x1dGU+IjsgfTsKLQkJREU0OUIzMDcxNjVGMkZFMTAwMTAzMzhEIC8qIFJlbmRlck1lZGlhQ29u
dHJvbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWVk
aWFDb250cm9scy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCURFNDlCMzA4MTY1
RjJGRTEwMDEwMzM4RCAvKiBSZW5kZXJNZWRpYUNvbnRyb2xzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbmRlck1lZGlhQ29udHJvbHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJREU1RjgzQjIxRkExODY3NjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzMDEu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5pZmllZFNvdXJjZTMw
MS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS91bmlmaWVkLXNvdXJjZXMvVW5p
ZmllZFNvdXJjZTMwMS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQlERTVGODNCMzFGQTE4Njc3MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTM1NS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMzU1LmNwcDsgcGF0
aCA9ICJEZXJpdmVkU291cmNlcy9XZWJDb3JlL3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNl
MzU1LmNwcCI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCURFNUY4M0I0
MUZBMTg2NzgwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMzc4LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UzNzguY3BwOyBwYXRoID0gIkRlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UzNzguY3BwIjsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTIxODkwLDcgKzIxODgyLDYg
QEAKIAkJCQk4QUY0RTU1QTExREM1QTYzMDAwRUQzREUgLyogUGVyZm9ybWFuY2VUaW1pbmcuaWRs
ICovLAogCQkJCUE1NTRCNUYwMUUzODM5MzYwMDFENEUwMyAvKiBQZXJmb3JtYW5jZVVzZXJUaW1p
bmcuY3BwICovLAogCQkJCUE1NTRCNUYxMUUzODM5MzYwMDFENEUwMyAvKiBQZXJmb3JtYW5jZVVz
ZXJUaW1pbmcuaCAqLywKLQkJCQkzMUQ1OTFCMTE2Njk3QTZDMDBFNkJGMDIgLyogUGx1Z0luQ2xp
ZW50LmggKi8sCiAJCQkJNzFCNUFCMjUyMUYxRDlFMzAwMzc2RTVDIC8qIFBvaW50ZXJDYXB0dXJl
Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJNzFCNUFCMjQyMUYxRDlFMjAwMzc2RTVDIC8qIFBvaW50
ZXJDYXB0dXJlQ29udHJvbGxlci5oICovLAogCQkJCTk1REY5RDIzMjUyQkVEOTkwMDBEN0Y0NiAv
KiBQb2ludGVyQ2hhcmFjdGVyaXN0aWNzLmggKi8sCkBAIC0yOTQyNSw4ICsyOTQxNiw2IEBACiAJ
CQkJMEY1NjAyOEQwRTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuaCAqLywKIAkJCQlF
NEMyNzk1NjBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVkaWEuY3BwICovLAogCQkJCUU0QzI3
OTU3MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oICovLAotCQkJCURFNDlCMzA3MTY1
RjJGRTEwMDEwMzM4RCAvKiBSZW5kZXJNZWRpYUNvbnRyb2xzLmNwcCAqLywKLQkJCQlERTQ5QjMw
ODE2NUYyRkUxMDAxMDMzOEQgLyogUmVuZGVyTWVkaWFDb250cm9scy5oICovLAogCQkJCUFCRERG
RTczMEE1QzZFNkYwMEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5jcHAgKi8sCiAJCQkJQUJEREZF
NzQwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0LmggKi8sCiAJCQkJQTQ1NDQyNEMx
MTlCMzY4NzAwOUJFOTEyIC8qIFJlbmRlck1ldGVyLmNwcCAqLywKQEAgLTI5NDcwLDggKzI5NDU5
LDYgQEAKIAkJCQkwRjExQTU0RTBGMzkyMzMxMDBDMzc4ODQgLyogUmVuZGVyU2VsZWN0aW9uSW5m
by5oICovLAogCQkJCUFCMjQ3QTZBMEFGRDYzODMwMDNGQTVGRCAvKiBSZW5kZXJTbGlkZXIuY3Bw
ICovLAogCQkJCUFCMjQ3QTZCMEFGRDYzODMwMDNGQTVGRCAvKiBSZW5kZXJTbGlkZXIuaCAqLywK
LQkJCQkzMUU4RDhCQTE2MEJDOTRCMDA0Q0U4RjUgLyogUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4u
Y3BwICovLAotCQkJCTMxRThEOEJCMTYwQkM5NEMwMDRDRThGNSAvKiBSZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbi5oICovLAogCQkJCUE4REY0QUUyMDk4MEM0MkMwMDUyOTgxQiAvKiBSZW5kZXJUYWJs
ZS5jcHAgKi8sCiAJCQkJQThERjRBRTEwOTgwQzQyQzAwNTI5ODFCIC8qIFJlbmRlclRhYmxlLmgg
Ki8sCiAJCQkJNkVEODc4QzIxNDc0OTNGNDAwNEMzNTk3IC8qIFJlbmRlclRhYmxlQ2FwdGlvbi5j
cHAgKi8sCkBAIC0zMzY5Nyw3ICszMzY4NCw2IEBACiAJCQkJQ0RBMjlBMEYxQ0JEOUNGRTAwOTAx
Q0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0NDZEQzY0ODI0QTI5REFCMDA2MUYzOTAgLyogUGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGRkM0NTkxRDVFODY2MTAwMjY3
QTY2IC8qIFBsdWdpbkJsb2NrbGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzFENTkxQjMxNjY5
N0E2QzAwRTZCRjAyIC8qIFBsdWdJbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTlDNkU0
RjQwRDc0NUU0ODAwNjQ0MkU5IC8qIFBsdWdpbkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3
MjA1QUJDMTIzOTI5MjcwMEIxNzM4MCAvKiBQbHVnaW5Eb2N1bWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUEwOEZFREQxRDU5MkI4QjAwOEJBOENCIC8qIFBsdWdpbkluZm9Qcm92aWRlci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zMzg4NSw3ICszMzg3MSw2IEBACiAJCQkJNDM5MDQ2RUMxMkRBMjVF
ODAwQUY4MEE5IC8qIFJlbmRlck1hdGhNTFRva2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQk0Mzkw
NDZFQTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNEMyNzk1OTBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVkaWEuaCBpbiBI
ZWFkZXJzICovLAotCQkJCURFQkNDREQyMTY2NDZFODIwMEE0NTJFMSAvKiBSZW5kZXJNZWRpYUNv
bnRyb2xzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQkRERkU3QTBBNUM2RTcwMDBBM0UxMUQgLyog
UmVuZGVyTWVudUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE0NTQ0MjRGMTE5QjM2ODcwMDlC
RTkxMiAvKiBSZW5kZXJNZXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzNTg2RTAxNTI2NEM0
NTAwMjJBNjU5IC8qIFJlbmRlck11bHRpQ29sdW1uRmxvdy5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
MzkwOSw3ICszMzg5NCw2IEBACiAJCQkJNDU4RkU0MEExNTg5REYwQjAwNTYwOUU2IC8qIFJlbmRl
clNlYXJjaEZpZWxkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjExQTU0RjBGMzkyMzMxMDBDMzc4
ODQgLyogUmVuZGVyU2VsZWN0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUIyNDdBNkQw
QUZENjM4MzAwM0ZBNUZEIC8qIFJlbmRlclNsaWRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE5
NTVBODgxNjBEMTk5MjAwODU4MDI1IC8qIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzhDOEZBRTBERENEMzFCMDBCNTkyRjQgLyogUmVuZGVyU3R5bGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDNUVCNjY4MEU4MUNCNzEwMEIyNTk2NSAvKiBSZW5kZXJTdHls
ZUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM2NzA4QzExMkQ5Q0E0QjAwMDQ0MjM0
IC8qIFJlbmRlclNWR0Jsb2NrLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCmluZGV4IGJiMDM5ZjkwZjk0YzViOWY4NTkz
Njg4NjAwMDAyZWQzNWU3NzQ2YzYuLjM1MThmOWFiYTc3ZmUxNTc5ZDgyOGQ4NDliMDcxODQ3YzE2
NGY0NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1h
cHBpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGlu
Z3MuaApAQCAtNTg3LDkgKzU4Nyw2IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZShDb250cm9sUGFydCBlKQogICAgIGNhc2UgU2VhcmNoRmll
bGRDYW5jZWxCdXR0b25QYXJ0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVNl
YXJjaGZpZWxkQ2FuY2VsQnV0dG9uOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNuYXBzaG90
dGVkUGx1Z2luT3ZlcmxheVBhcnQ6Ci0gICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5OwotICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRG
aWVsZFBhcnQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVGV4dGZpZWxkOwog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtl
eXdvcmRzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KaW5kZXgg
NGEzMjE4MWFkMThiN2UxZWYyYmJhODAxNDQyYjQ1ZmY2YzExZGZkOS4uNjljMThmMTM1ZjRlNDVh
M2IxMWM5OTUyNzNmMjMwMTM4ZmRkNjVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlS2V5d29yZHMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5
d29yZHMuaW4KQEAgLTg1Miw3ICs4NTIsNiBAQCBzZWFyY2hmaWVsZC1kZWNvcmF0aW9uCiBzZWFy
Y2hmaWVsZC1yZXN1bHRzLWRlY29yYXRpb24KIHNlYXJjaGZpZWxkLXJlc3VsdHMtYnV0dG9uCiBz
ZWFyY2hmaWVsZC1jYW5jZWwtYnV0dG9uCi1zbmFwc2hvdHRlZC1wbHVnaW4tb3ZlcmxheQogdGV4
dGZpZWxkCiByZWxldmFuY3ktbGV2ZWwtaW5kaWNhdG9yCiBjb250aW51b3VzLWNhcGFjaXR5LWxl
dmVsLWluZGljYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcApp
bmRleCA5NWJkNDUzNDExYjAzNzhiYjhjMWYxNTU0Mzc5NmI1NDYzNTdlM2E0Li45ZTZiM2IyYTFh
ZmYzNDFmOTdhYzYxYTMwNzc3OTlhN2U0ODA2ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5FbGVtZW50LmNwcApAQCAtNDEsNyArNDEsNiBAQAogI2luY2x1ZGUgIlBsdWdpblZp
ZXdCYXNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyRW1iZWRkZWRPYmplY3QuaCIKICNpbmNsdWRlICJS
ZW5kZXJMYXllci5oIgotI2luY2x1ZGUgIlJlbmRlclNuYXBzaG90dGVkUGx1Z0luLmgiCiAjaW5j
bHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKQEAgLTY4LDEwICs2Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiAKIEhUTUxQbHVnSW5FbGVtZW50OjpIVE1MUGx1Z0luRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBIVE1MRnJh
bWVPd25lckVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCi0gICAgLCBtX2luQmVmb3JlTG9hZEV2
ZW50SGFuZGxlcihmYWxzZSkKICAgICAsIG1fc3dhcFJlbmRlcmVyVGltZXIoKnRoaXMsICZIVE1M
UGx1Z0luRWxlbWVudDo6c3dhcFJlbmRlcmVyVGltZXJGaXJlZCkKLSAgICAsIG1faXNDYXB0dXJp
bmdNb3VzZUV2ZW50cyhmYWxzZSkKLSAgICAsIG1fZGlzcGxheVN0YXRlKFBsYXlpbmcpCiB7CiAg
ICAgc2V0SGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCk7CiB9CkBAIC04MSwxMiArNzcs
NiBAQCBIVE1MUGx1Z0luRWxlbWVudDo6fkhUTUxQbHVnSW5FbGVtZW50KCkKICAgICBBU1NFUlQo
IW1faW5zdGFuY2UpOyAvLyBjbGVhcmVkIGluIGRldGFjaCgpCiB9CiAKLWJvb2wgSFRNTFBsdWdJ
bkVsZW1lbnQ6OmNhblByb2Nlc3NEcmFnKCkgY29uc3QKLXsKLSAgICBjb25zdCBQbHVnaW5WaWV3
QmFzZSogcGx1Z2luID0gaXM8UGx1Z2luVmlld0Jhc2U+KHBsdWdpbldpZGdldCgpKSA/IGRvd25j
YXN0PFBsdWdpblZpZXdCYXNlPihwbHVnaW5XaWRnZXQoKSkgOiBudWxscHRyOwotICAgIHJldHVy
biBwbHVnaW4gPyBwbHVnaW4tPmNhblByb2Nlc3NEcmFnKCkgOiBmYWxzZTsKLX0KLQogYm9vbCBI
VE1MUGx1Z0luRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKQogewogICAg
IGlmIChpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKQEAgLTIwNiwyMSArMTk2LDggQEAgdm9pZCBI
VE1MUGx1Z0luRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiAgICAg
aWYgKCFpczxSZW5kZXJXaWRnZXQ+KHJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKGlzPFJlbmRlckVtYmVkZGVkT2JqZWN0PigqcmVuZGVyZXIpKSB7Ci0gICAgICAgIGlmIChk
b3duY2FzdDxSZW5kZXJFbWJlZGRlZE9iamVjdD4oKnJlbmRlcmVyKS5pc1BsdWdpblVuYXZhaWxh
YmxlKCkpIHsKLSAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckVtYmVkZGVkT2JqZWN0PigqcmVu
ZGVyZXIpLmhhbmRsZVVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yRXZlbnQoJmV2ZW50KTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpczxSZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbj4oKnJlbmRlcmVyKSAmJiBkaXNwbGF5U3RhdGUoKSA8IFJlc3RhcnRpbmcp
IHsKLSAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlclNuYXBzaG90dGVkUGx1Z0luPigqcmVuZGVy
ZXIpLmhhbmRsZUV2ZW50KGV2ZW50KTsKLSAgICAgICAgICAgIEhUTUxGcmFtZU93bmVyRWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAoZGlzcGxheVN0YXRlKCkgPCBQbGF5aW5nKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoaXM8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KCpyZW5k
ZXJlcikgJiYgZG93bmNhc3Q8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KCpyZW5kZXJlcikuaXNQbHVn
aW5VbmF2YWlsYWJsZSgpKQorICAgICAgICBkb3duY2FzdDxSZW5kZXJFbWJlZGRlZE9iamVjdD4o
KnJlbmRlcmVyKS5oYW5kbGVVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvckV2ZW50KCZldmVudCk7
CiAKICAgICAvLyBEb24ndCBrZWVwIHRoZSB3aWRnZXQgYWxpdmUgb3ZlciB0aGUgZGVmYXVsdEV2
ZW50SGFuZGxlciBjYWxsLCBzaW5jZSB0aGF0IGNhbiBkbyB0aGluZ3MgbGlrZSBuYXZpZ2F0ZS4K
ICAgICB7CkBAIC0yODksNyArMjY2LDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxQ
bHVnSW5FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJgogCiB2b2lk
IEhUTUxQbHVnSW5FbGVtZW50Ojpzd2FwUmVuZGVyZXJUaW1lckZpcmVkKCkKIHsKLSAgICBBU1NF
UlQoZGlzcGxheVN0YXRlKCkgPT0gUHJlcGFyaW5nUGx1Z2luUmVwbGFjZW1lbnQgfHwgZGlzcGxh
eVN0YXRlKCkgPT0gRGlzcGxheWluZ1NuYXBzaG90KTsKKyAgICBBU1NFUlQoZGlzcGxheVN0YXRl
KCkgPT0gUHJlcGFyaW5nUGx1Z2luUmVwbGFjZW1lbnQpOwogICAgIGlmICh1c2VyQWdlbnRTaGFk
b3dSb290KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKQEAgLTMwNCw5ICsyODEsOSBAQCB2b2lk
IEhUTUxQbHVnSW5FbGVtZW50OjpzZXREaXNwbGF5U3RhdGUoRGlzcGxheVN0YXRlIHN0YXRlKQog
ICAgICAgICByZXR1cm47CiAKICAgICBtX2Rpc3BsYXlTdGF0ZSA9IHN0YXRlOwotICAgIAorCiAg
ICAgbV9zd2FwUmVuZGVyZXJUaW1lci5zdG9wKCk7Ci0gICAgaWYgKHN0YXRlID09IERpc3BsYXlp
bmdTbmFwc2hvdCB8fCBkaXNwbGF5U3RhdGUoKSA9PSBQcmVwYXJpbmdQbHVnaW5SZXBsYWNlbWVu
dCkKKyAgICBpZiAoZGlzcGxheVN0YXRlKCkgPT0gUHJlcGFyaW5nUGx1Z2luUmVwbGFjZW1lbnQp
CiAgICAgICAgIG1fc3dhcFJlbmRlcmVyVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAppbmRleCA3MjI1YmI0NWRmNjYyNTBh
MzY3YTczNjZmMzQ4YTY4ZjY4MzYwZDg1Li42ZjgwNzRkMGU5OWYzOTRjYTIzMTk4ZWNlZmNmY2Vi
MTdlNDgwOWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCkBAIC01
MSwzNSArNTEsMjQgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFdpZGdldCogcGx1Z2lu
V2lkZ2V0KFBsdWdpbkxvYWRpbmdQb2xpY3kgPSBQbHVnaW5Mb2FkaW5nUG9saWN5OjpMb2FkKSBj
b25zdDsKIAogICAgIGVudW0gRGlzcGxheVN0YXRlIHsKLSAgICAgICAgV2FpdGluZ0ZvclNuYXBz
aG90LAotICAgICAgICBEaXNwbGF5aW5nU25hcHNob3QsCi0gICAgICAgIFJlc3RhcnRpbmcsCi0g
ICAgICAgIFJlc3RhcnRpbmdXaXRoUGVuZGluZ01vdXNlQ2xpY2ssCiAgICAgICAgIFBsYXlpbmcs
CiAgICAgICAgIFByZXBhcmluZ1BsdWdpblJlcGxhY2VtZW50LAogICAgICAgICBEaXNwbGF5aW5n
UGx1Z2luUmVwbGFjZW1lbnQsCiAgICAgfTsKICAgICBEaXNwbGF5U3RhdGUgZGlzcGxheVN0YXRl
KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5U3RhdGU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
RGlzcGxheVN0YXRlKERpc3BsYXlTdGF0ZSk7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNuYXBz
aG90KEltYWdlKikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoUGVuZGluZ01vdXNlQ2xp
Y2soKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSZXN0YXJ0ZWRQbHVnaW4oKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0RGlzcGxheVN0YXRlKERpc3BsYXlTdGF0ZSk7CiAK
ICAgICBKU0M6OkpTT2JqZWN0KiBzY3JpcHRPYmplY3RGb3JQbHVnaW5SZXBsYWNlbWVudCgpOwog
CiAgICAgYm9vbCBpc0NhcHR1cmluZ01vdXNlRXZlbnRzKCkgY29uc3QgeyByZXR1cm4gbV9pc0Nh
cHR1cmluZ01vdXNlRXZlbnRzOyB9CiAgICAgdm9pZCBzZXRJc0NhcHR1cmluZ01vdXNlRXZlbnRz
KGJvb2wgY2FwdHVyaW5nKSB7IG1faXNDYXB0dXJpbmdNb3VzZUV2ZW50cyA9IGNhcHR1cmluZzsg
fQogCi0gICAgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9Ci0KLSAgICBib29sIGNhblByb2Nlc3NEcmFnKCkgY29uc3Q7Ci0KICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2
ZW50cygpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCB3aWxsUmVzcG9uZFRv
TW91c2VNb3ZlRXZlbnRzKCkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgotICAgIGJv
b2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBvdmVycmlkZTsKKyAgICBib29sIHdp
bGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgZmluYWw7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
aXNQbHVnSW5JbWFnZUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc1BsdWdJbkltYWdlRWxlbWVudCgpIGNvbnN0ID0gMDsKIAogICAgIGJvb2wgaXNV
c2VyT2JzZXJ2YWJsZSgpIGNvbnN0OwogCkBAIC05MywyMyArODIsMjIgQEAgcHVibGljOgogcHJv
dGVjdGVkOgogICAgIEhUTUxQbHVnSW5FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50Jik7CiAKKyAgICBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHdpbGxEZXRhY2hSZW5kZXJl
cnMoKSBvdmVycmlkZTsKICAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclBy
ZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmlu
ZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9v
bCB1c2VGYWxsYmFja0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdm9p
ZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50JikgZmluYWw7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdE9i
amVjdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVl
cyk7CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCYpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290JikgZmluYWw7CiAKICAg
ICAvLyBTdWJjbGFzc2VzIHNob3VsZCB1c2UgZ3VhcmRlZERpc3BhdGNoQmVmb3JlTG9hZEV2ZW50
IGluc3RlYWQgb2YgY2FsbGluZyBkaXNwYXRjaEJlZm9yZUxvYWRFdmVudCBkaXJlY3RseS4KICAg
ICBib29sIGd1YXJkZWREaXNwYXRjaEJlZm9yZUxvYWRFdmVudChjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCk7CiAKLSAgICBib29sIG1faW5CZWZvcmVMb2FkRXZlbnRIYW5kbGVyOwotICAgIAogICAg
IC8vIFRoaXMgd2lsbCBsb2FkIHRoZSBwbHVnaW4gaWYgbmVjZXNzYXJ5LgogICAgIHZpcnR1YWwg
UmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXRMb2FkaW5nUGx1Z2luKCkgY29uc3Q7CiAKQEAgLTEx
OSwxOCArMTA3LDE4IEBAIHByaXZhdGU6CiAKICAgICBib29sIGRpc3BhdGNoQmVmb3JlTG9hZEV2
ZW50KGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSA9IGRlbGV0ZTsgLy8gR2VuZXJhdGUgYSBjb21w
aWxlIGVycm9yIGlmIHNvbWVvbmUgY2FsbHMgdGhpcyBieSBtaXN0YWtlLgogCi0gICAgYm9vbCBz
dXBwb3J0c0ZvY3VzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0ZvY3VzKCkg
Y29uc3QgZmluYWw7CiAKLSAgICBib29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVu
dCopIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2Fy
ZEV2ZW50KikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc1BsdWdpbkVsZW1lbnQoKSBjb25zdCBm
aW5hbDsKICAgICBib29sIGNhbkxvYWRTY3JpcHRVUkwoY29uc3QgVVJMJikgY29uc3QgZmluYWw7
CiAKICAgICBSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IG1faW5zdGFuY2U7CiAgICAg
VGltZXIgbV9zd2FwUmVuZGVyZXJUaW1lcjsKICAgICBSZWZQdHI8UGx1Z2luUmVwbGFjZW1lbnQ+
IG1fcGx1Z2luUmVwbGFjZW1lbnQ7Ci0gICAgYm9vbCBtX2lzQ2FwdHVyaW5nTW91c2VFdmVudHM7
Ci0KLSAgICBEaXNwbGF5U3RhdGUgbV9kaXNwbGF5U3RhdGU7CisgICAgYm9vbCBtX2lzQ2FwdHVy
aW5nTW91c2VFdmVudHMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pbkJlZm9yZUxvYWRFdmVudEhh
bmRsZXIgeyBmYWxzZSB9OworICAgIERpc3BsYXlTdGF0ZSBtX2Rpc3BsYXlTdGF0ZSB7IFBsYXlp
bmcgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IGQyYWY4NTA2NjEzMTE2ODNkOGY4
NWE2NGIyYjdhYTMxNTc4YTA5MTYuLjJlMWJlNjdlNjA1ZDI2NDI3NjFiMTE1Y2U3OTdiZTUwY2E1
MWIxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50
LmNwcApAQCAtMzksMTAgKzM5LDggQEAKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgotI2luY2x1ZGUgIlBs
dWdJbkNsaWVudC5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNlLmgiCiAjaW5jbHVkZSAiUmVu
ZGVySW1hZ2UuaCIKLSNpbmNsdWRlICJSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oIgogI2luY2x1
ZGUgIlJlbmRlclRyZWVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC02MCw1NiArNTgsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50KTsKIAotc3RhdGljIGNvbnN0IGludCBzaXppbmdUaW55RGltZW5zaW9uVGhyZXNob2xk
ID0gNDA7Ci1zdGF0aWMgY29uc3QgZmxvYXQgc2l6aW5nRnVsbFBhZ2VBcmVhUmF0aW9UaHJlc2hv
bGQgPSAwLjk2Owotc3RhdGljIGNvbnN0IFNlY29uZHMgYXV0b3N0YXJ0U29vbkFmdGVyVXNlckdl
c3R1cmVUaHJlc2hvbGQgPSA1X3M7Ci0KLS8vIFRoaXMgZGVsYXkgc2hvdWxkIG5vdCBleGNlZWQg
dGhlIHNuYXBzaG90IGRlbGF5IGluIFBsdWdpblZpZXcuY3BwCi1zdGF0aWMgY29uc3QgU2Vjb25k
cyBzaW11bGF0ZWRNb3VzZUNsaWNrVGltZXJEZWxheSB7IDc1MF9tcyB9OwotCi0jaWYgUExBVEZP
Uk0oQ09DT0EpCi1zdGF0aWMgY29uc3QgU2Vjb25kcyByZW1vdmVTbmFwc2hvdFRpbWVyRGVsYXkg
eyAxNTAwX21zIH07Ci0jZW5kaWYKLQotc3RhdGljIGNvbnN0IFN0cmluZyB0aXRsZVRleHQoUGFn
ZSYgcGFnZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKLXsKLSAgICBpZiAobWltZVR5cGUuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gc25hcHNob3R0ZWRQbHVnSW5MYWJlbFRpdGxlKCk7Ci0K
LSAgICAvLyBGSVhNRTogSXQncyBub3QgY29uc2lzdGVudCB0byBnZXQgYSBzdHJpbmcgZnJvbSB0
aGUgcGFnZSdzIGNocm9tZSBjbGllbnQsIGJ1dCB0aGVuIGNhY2hlIGl0IGdsb2JhbGx5LgotICAg
IC8vIElmIGl0J3MgZ2xvYmFsLCBpdCBzaG91bGQgY29tZSBmcm9tIGVsc2V3aGVyZS4gSWYgaXQn
cyBwZXItcGFnZSB0aGVuIGl0IHNob3VsZCBiZSBjYWNoZWQgcGVyIHBhZ2UuCi0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+PiBtaW1lVHlwZVRvTGFiZWxU
aXRsZU1hcDsKLSAgICByZXR1cm4gbWltZVR5cGVUb0xhYmVsVGl0bGVNYXAuZ2V0KCkuZW5zdXJl
KG1pbWVUeXBlLCBbJl0gewotICAgICAgICBhdXRvIHRpdGxlID0gcGFnZS5jaHJvbWUoKS5jbGll
bnQoKS5wbHVnSW5TdGFydExhYmVsVGl0bGUobWltZVR5cGUpOwotICAgICAgICBpZiAoIXRpdGxl
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiB0aXRsZTsKLSAgICAgICAgcmV0dXJuIHNu
YXBzaG90dGVkUGx1Z0luTGFiZWxUaXRsZSgpOwotICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKLX07
Ci0KLXN0YXRpYyBjb25zdCBTdHJpbmcgc3VidGl0bGVUZXh0KFBhZ2UmIHBhZ2UsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCi17Ci0gICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIHNuYXBzaG90dGVkUGx1Z0luTGFiZWxTdWJ0aXRsZSgpOwotCi0gICAgLy8gRklYTUU6
IEl0J3Mgbm90IGNvbnNpc3RlbnQgdG8gZ2V0IGEgc3RyaW5nIGZyb20gdGhlIHBhZ2UncyBjaHJv
bWUgY2xpZW50LCBidXQgdGhlbiBjYWNoZSBpdCBnbG9iYWxseS4KLSAgICAvLyBJZiBpdCdzIGds
b2JhbCwgaXQgc2hvdWxkIGNvbWUgZnJvbSBlbHNld2hlcmUuIElmIGl0J3MgcGVyLXBhZ2UgdGhl
biBpdCBzaG91bGQgYmUgY2FjaGVkIHBlciBwYWdlLgotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoTWFwPFN0cmluZywgU3RyaW5nPj4gbWltZVR5cGVUb0xhYmVsU3VidGl0bGVNYXA7Ci0g
ICAgcmV0dXJuIG1pbWVUeXBlVG9MYWJlbFN1YnRpdGxlTWFwLmdldCgpLmVuc3VyZShtaW1lVHlw
ZSwgWyZdIHsKLSAgICAgICAgYXV0byBzdWJ0aXRsZSA9IHBhZ2UuY2hyb21lKCkuY2xpZW50KCku
cGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKG1pbWVUeXBlKTsKLSAgICAgICAgaWYgKCFzdWJ0aXRs
ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gc3VidGl0bGU7Ci0gICAgICAgIHJldHVy
biBzbmFwc2hvdHRlZFBsdWdJbkxhYmVsU3VidGl0bGUoKTsKLSAgICB9KS5pdGVyYXRvci0+dmFs
dWU7Ci19OwotCiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6
IEhUTUxQbHVnSW5FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQotICAgICwgbV9zaW11bGF0ZWRN
b3VzZUNsaWNrVGltZXIoKnRoaXMsICZIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzaW11bGF0ZWRN
b3VzZUNsaWNrVGltZXJGaXJlZCwgc2ltdWxhdGVkTW91c2VDbGlja1RpbWVyRGVsYXkpCi0gICAg
LCBtX3JlbW92ZVNuYXBzaG90VGltZXIoKnRoaXMsICZIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpy
ZW1vdmVTbmFwc2hvdFRpbWVyRmlyZWQpCi0gICAgLCBtX2NyZWF0ZWREdXJpbmdVc2VyR2VzdHVy
ZShVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiB7Ci0gICAg
c2V0SGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCk7CiB9CiAKIHZvaWQgSFRNTFBsdWdJ
bkltYWdlRWxlbWVudDo6ZmluaXNoQ3JlYXRpbmcoKQpAQCAtMTIzLDIxICs3NCw2IEBAIEhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6On5IVE1MUGx1Z0luSW1hZ2VFbGVtZW50KCkKICAgICAgICAgZG9j
dW1lbnQoKS51bnJlZ2lzdGVyRm9yRG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tzKCp0aGlzKTsK
IH0KIAotdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzZXREaXNwbGF5U3RhdGUoRGlzcGxh
eVN0YXRlIHN0YXRlKQotewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlmIChzdGF0ZSA9PSBS
ZXN0YXJ0aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrIHx8IHN0YXRlID09IFJlc3RhcnRpbmcpIHsK
LSAgICAgICAgbV9pc1Jlc3RhcnRlZFBsdWdpbiA9IHRydWU7Ci0gICAgICAgIG1fc25hcHNob3RE
ZWNpc2lvbiA9IE5ldmVyU25hcHNob3Q7Ci0gICAgICAgIGludmFsaWRhdGVTdHlsZUFuZExheWVy
Q29tcG9zaXRpb24oKTsKLSAgICAgICAgaWYgKGRpc3BsYXlTdGF0ZSgpID09IERpc3BsYXlpbmdT
bmFwc2hvdCkKLSAgICAgICAgICAgIG1fcmVtb3ZlU25hcHNob3RUaW1lci5zdGFydE9uZVNob3Qo
cmVtb3ZlU25hcHNob3RUaW1lckRlbGF5KTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIEhUTUxQbHVn
SW5FbGVtZW50OjpzZXREaXNwbGF5U3RhdGUoc3RhdGUpOwotfQotCiBSZW5kZXJFbWJlZGRlZE9i
amVjdCogSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cmVuZGVyRW1iZWRkZWRPYmplY3QoKSBjb25z
dAogewogICAgIC8vIEhUTUxPYmplY3RFbGVtZW50IGFuZCBIVE1MRW1iZWRFbGVtZW50IG1heSBy
ZXR1cm4gYXJiaXRyYXJ5IHJlbmRlcmVycyB3aGVuIHVzaW5nIGZhbGxiYWNrIGNvbnRlbnQuCkBA
IC0xOTcsMTIgKzEzMyw2IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5CiAgICAgICAgIGRvY3Vt
ZW50KCkucmVnaXN0ZXJGb3JEb2N1bWVudFN1c3BlbnNpb25DYWxsYmFja3MoKnRoaXMpOwogICAg
IH0KIAotICAgIGlmIChkaXNwbGF5U3RhdGUoKSA9PSBEaXNwbGF5aW5nU25hcHNob3QpIHsKLSAg
ICAgICAgYXV0byByZW5kZXJTbmFwc2hvdHRlZFBsdWdJbiA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRl
clNuYXBzaG90dGVkUGx1Z0luPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwotICAgICAgICByZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbi0+dXBkYXRlU25hcHNob3QobV9zbmFwc2hvdEltYWdlLmdldCgp
KTsKLSAgICAgICAgcmV0dXJuIHJlbmRlclNuYXBzaG90dGVkUGx1Z0luOwotICAgIH0KLQogICAg
IGlmICh1c2VGYWxsYmFja0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIFJlbmRlckVsZW1lbnQ6
OmNyZWF0ZUZvcigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogCkBAIC0yMTQsOSArMTQ0LDYgQEAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHkKIAogYm9vbCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpj
aGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmIGNoaWxkKSBjb25zdAogewotICAg
IGlmIChpczxSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbj4ocmVuZGVyZXIoKSkgJiYgIWhhc1NoYWRv
d1Jvb3RQYXJlbnQoY2hpbGQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICByZXR1cm4g
SFRNTFBsdWdJbkVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY2hpbGQpOwogfQog
CkBAIC0yMjgsNyArMTU1LDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp3aWxsUmVj
YWxjU3R5bGUoU3R5bGU6OkNoYW5nZSBjaGFuZ2UpCiAKICAgICAvLyBGSVhNRTogVGhlcmUgc2hv
dWRuJ3QgYmUgbmVlZCB0byBmb3JjZSByZW5kZXIgdHJlZSByZWNvbnN0cnVjdGlvbiBoZXJlLgog
ICAgIC8vIEl0IGlzIG9ubHkgZG9uZSBiZWNhdXNlIGxvYWRpbmcgYW5kIGxvYWQgZXZlbnQgZGlz
cGF0Y2hpbmcgaXMgdGllZCB0byByZW5kZXIgdHJlZSBjb25zdHJ1Y3Rpb24uCi0gICAgaWYgKCF1
c2VGYWxsYmFja0NvbnRlbnQoKSAmJiBuZWVkc1dpZGdldFVwZGF0ZSgpICYmIHJlbmRlcmVyKCkg
JiYgIWlzSW1hZ2VUeXBlKCkgJiYgZGlzcGxheVN0YXRlKCkgIT0gRGlzcGxheWluZ1NuYXBzaG90
KQorICAgIGlmICghdXNlRmFsbGJhY2tDb250ZW50KCkgJiYgbmVlZHNXaWRnZXRVcGRhdGUoKSAm
JiByZW5kZXJlcigpICYmICFpc0ltYWdlVHlwZSgpKQogICAgICAgICBpbnZhbGlkYXRlU3R5bGVB
bmRSZW5kZXJlcnNGb3JTdWJ0cmVlKCk7CiB9CiAKQEAgLTM0MSw0MzUgKzI2OCw2IEBAIHZvaWQg
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cmVzdW1lRnJvbURvY3VtZW50U3VzcGVuc2lvbigpCiAg
ICAgSFRNTFBsdWdJbkVsZW1lbnQ6OnJlc3VtZUZyb21Eb2N1bWVudFN1c3BlbnNpb24oKTsKIH0K
IAotdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVTbmFwc2hvdChJbWFnZSogaW1h
Z2UpCi17Ci0gICAgaWYgKGRpc3BsYXlTdGF0ZSgpID4gRGlzcGxheWluZ1NuYXBzaG90KQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX3NuYXBzaG90SW1hZ2UgPSBpbWFnZTsKLQotICAgIGF1dG8q
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAoaXM8UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4+KCpyZW5kZXJl
cikpIHsKLSAgICAgICAgZG93bmNhc3Q8UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4+KCpyZW5kZXJl
cikudXBkYXRlU25hcHNob3QoaW1hZ2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGlzPFJlbmRlckVtYmVkZGVkT2JqZWN0PigqcmVuZGVyZXIpKQotICAgICAgICByZW5kZXJl
ci0+cmVwYWludCgpOwotfQotCi1zdGF0aWMgRE9NV3JhcHBlcldvcmxkJiBwbHVnSW5JbWFnZUVs
ZW1lbnRJc29sYXRlZFdvcmxkKCkKLXsKLSAgICBzdGF0aWMgYXV0byYgaXNvbGF0ZWRXb3JsZCA9
IERPTVdyYXBwZXJXb3JsZDo6Y3JlYXRlKGNvbW1vblZNKCksIERPTVdyYXBwZXJXb3JsZDo6VHlw
ZTo6SW50ZXJuYWwsICJQbHVnaW4iX3MpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gaXNvbGF0ZWRX
b3JsZDsKLX0KLQotdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRT
aGFkb3dSb290KFNoYWRvd1Jvb3QmIHJvb3QpCi17Ci0gICAgSFRNTFBsdWdJbkVsZW1lbnQ6OmRp
ZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3Qocm9vdCk7Ci0gICAgaWYgKGRpc3BsYXlTdGF0ZSgpID49
IFByZXBhcmluZ1BsdWdpblJlcGxhY2VtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRv
KiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBSZXNldCBhbnkgYXV0aG9yIHN0eWxlcyB0aGF0IG1heSBhcHBseSBhcyB3
ZSBvbmx5IHdhbnQgZXhwbGljaXQKLSAgICAvLyBzdHlsZXMgZGVmaW5lZCBpbiB0aGUgaW5qZWN0
ZWQgdXNlciBhZ2VudHMgc3R5bGVzaGVldHMgdG8gc3BlY2lmeQotICAgIC8vIHRoZSBsb29rLWFu
ZC1mZWVsIG9mIHRoZSBzbmFwc2hvdHRlZCBwbHVnLWluIG92ZXJsYXkuIAotICAgIHJvb3Quc2V0
UmVzZXRTdHlsZUluaGVyaXRhbmNlKHRydWUpOwotICAgIAotICAgIFN0cmluZyBtaW1lVHlwZSA9
IHNlcnZpY2VUeXBlKCk7Ci0KLSAgICBhdXRvJiBpc29sYXRlZFdvcmxkID0gcGx1Z0luSW1hZ2VF
bGVtZW50SXNvbGF0ZWRXb3JsZCgpOwotICAgIGRvY3VtZW50KCkuZW5zdXJlUGx1Z0luc0luamVj
dGVkU2NyaXB0KGlzb2xhdGVkV29ybGQpOwotCi0gICAgYXV0byYgc2NyaXB0Q29udHJvbGxlciA9
IGRvY3VtZW50KCkuZnJhbWUoKS0+c2NyaXB0KCk7Ci0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0g
KkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0Q29udHJvbGxlci5nbG9iYWxP
YmplY3QoaXNvbGF0ZWRXb3JsZCkpOwotCi0gICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0o
KTsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0gICAgYXV0byYgbGV4aWNhbEdsb2JhbE9iamVjdCA9IGds
b2JhbE9iamVjdDsKLQotICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJnTGlzdDsKLSAg
ICBhcmdMaXN0LmFwcGVuZCh0b0pTPElETEludGVyZmFjZTxTaGFkb3dSb290Pj4obGV4aWNhbEds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCByb290KSk7Ci0gICAgYXJnTGlzdC5hcHBlbmQodG9K
UzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRpdGxlVGV4dCgqcGFnZSwgbWlt
ZVR5cGUpKSk7Ci0gICAgYXJnTGlzdC5hcHBlbmQodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxH
bG9iYWxPYmplY3QsIHN1YnRpdGxlVGV4dCgqcGFnZSwgbWltZVR5cGUpKSk7Ci0gICAgCi0gICAg
Ly8gVGhpcyBwYXJhbWV0ZXIgZGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgc25hcHNob3Qg
b3ZlcmxheSBzaG91bGQgYWx3YXlzIGJlIHZpc2libGUgb3ZlciB0aGUgcGx1Z2luIHNuYXBzaG90
LgotICAgIC8vIElmIG5vIHNuYXBzaG90IHdhcyBmb3VuZCB0aGVuIHdlIHdhbnQgdGhlIG92ZXJs
YXkgdG8gYmUgdmlzaWJsZS4KLSAgICBhcmdMaXN0LmFwcGVuZCh0b0pTPElETEJvb2xlYW4+KCFt
X3NuYXBzaG90SW1hZ2UpKTsKLSAgICBBU1NFUlQoIWFyZ0xpc3QuaGFzT3ZlcmZsb3dlZCgpKTsK
LQotICAgIC8vIEl0IGlzIGV4cGVjdGVkIHRoZSBKUyBmaWxlIHByb3ZpZGVzIGEgY3JlYXRlT3Zl
cmxheShzaGFkb3dSb290LCB0aXRsZSwgc3VidGl0bGUpIGZ1bmN0aW9uLgotICAgIGF1dG8qIG92
ZXJsYXkgPSBnbG9iYWxPYmplY3QuZ2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OklkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJjcmVhdGVPdmVybGF5IikpLnRvT2JqZWN0KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKLSAgICBBU1NFUlQoIW92ZXJsYXkgPT0gISFzY29wZS5leGNlcHRpb24o
KSk7Ci0gICAgaWYgKCFvdmVybGF5KSB7Ci0gICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2Fs
bERhdGEodm0sIG92ZXJsYXkpOwotICAgIGlmIChjYWxsRGF0YS50eXBlID09IEpTQzo6Q2FsbERh
dGE6OlR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNhbGwoJmxleGljYWxHbG9i
YWxPYmplY3QsIG92ZXJsYXksIGNhbGxEYXRhLCAmZ2xvYmFsT2JqZWN0LCBhcmdMaXN0KTsKLSAg
ICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwotfQotCi1ib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1l
bnQ6OnBhcnRPZlNuYXBzaG90T3ZlcmxheShjb25zdCBFdmVudFRhcmdldCogdGFyZ2V0KSBjb25z
dAotewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gc2VsZWN0b3IoIi5zbmFwc2hvdC1vdmVybGF5IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotICAgIGF1dG8gc2hhZG93ID0gdXNlckFnZW50U2hhZG93Um9vdCgpOwotICAg
IGlmICghc2hhZG93KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFpczxOb2RlPih0
YXJnZXQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBxdWVyeVJlc3VsdCA9IHNo
YWRvdy0+cXVlcnlTZWxlY3RvcihzZWxlY3Rvci5nZXQoKSk7Ci0gICAgaWYgKHF1ZXJ5UmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzbmFwc2hv
dExhYmVsID0gbWFrZVJlZlB0cihxdWVyeVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7Ci0g
ICAgcmV0dXJuIHNuYXBzaG90TGFiZWwgJiYgc25hcHNob3RMYWJlbC0+Y29udGFpbnMoZG93bmNh
c3Q8Tm9kZT4odGFyZ2V0KSk7Ci19Ci0KLXZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cmVt
b3ZlU25hcHNob3RUaW1lckZpcmVkKCkKLXsKLSAgICBtX3NuYXBzaG90SW1hZ2UgPSBudWxscHRy
OwotICAgIG1faXNSZXN0YXJ0ZWRQbHVnaW4gPSBmYWxzZTsKLSAgICBpbnZhbGlkYXRlU3R5bGVB
bmRMYXllckNvbXBvc2l0aW9uKCk7Ci0gICAgaWYgKHJlbmRlcmVyKCkpCi0gICAgICAgIHJlbmRl
cmVyKCktPnJlcGFpbnQoKTsKLX0KLQotdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZXN0
YXJ0U2ltaWxhclBsdWdJbnMoKQotewotICAgIC8vIFJlc3RhcnQgYW55IG90aGVyIHNuYXBzaG90
dGVkIHBsdWdpbnMgaW4gdGhlIHBhZ2Ugd2l0aCB0aGUgc2FtZSBvcmlnaW4uIE5vdGUgdGhhdCB0
aGV5Ci0gICAgLy8gbWF5IGJlIGluIGRpZmZlcmVudCBmcmFtZXMsIHNvIHRyYXZlcnNlIGZyb20g
dGhlIHRvcCBvZiB0aGUgZG9jdW1lbnQuCi0KLSAgICBhdXRvIHBsdWdJbk9yaWdpbiA9IG1fbG9h
ZGVkVXJsLmhvc3QoKTsKLSAgICBTdHJpbmcgbWltZVR5cGUgPSBzZXJ2aWNlVHlwZSgpOwotICAg
IFZlY3RvcjxSZWY8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4+IHNpbWlsYXJQbHVnaW5zOwotCi0g
ICAgaWYgKCFkb2N1bWVudCgpLnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChS
ZWZQdHI8RnJhbWU+IGZyYW1lID0gJmRvY3VtZW50KCkucGFnZSgpLT5tYWluRnJhbWUoKTsgZnJh
bWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewotICAgICAgICBpZiAo
IWZyYW1lLT5sb2FkZXIoKS5zdWJmcmFtZUxvYWRlcigpLmNvbnRhaW5zUGx1Z2lucygpKQotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAotICAgICAgICBpZiAoIWZyYW1lLT5kb2N1bWVu
dCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50
IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4oKmZyYW1lLT5kb2N1
bWVudCgpKSkgewotICAgICAgICAgICAgaWYgKHBsdWdJbk9yaWdpbiA9PSBlbGVtZW50LmxvYWRl
ZFVybCgpLmhvc3QoKSAmJiBtaW1lVHlwZSA9PSBlbGVtZW50LnNlcnZpY2VUeXBlKCkpCi0gICAg
ICAgICAgICAgICAgc2ltaWxhclBsdWdpbnMuYXBwZW5kKGVsZW1lbnQpOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgZm9yIChhdXRvJiBwbHVnSW5Ub1Jlc3RhcnQgOiBzaW1pbGFyUGx1Z2lucykg
ewotICAgICAgICBpZiAocGx1Z0luVG9SZXN0YXJ0LT5kaXNwbGF5U3RhdGUoKSA8PSBIVE1MUGx1
Z0luRWxlbWVudDo6RGlzcGxheWluZ1NuYXBzaG90KSB7Ci0gICAgICAgICAgICBMT0coUGx1Z2lu
cywgIiVwIFBsdWctaW4gbG9va3Mgc2ltaWxhciB0byBhIHJlc3RhcnRlZCBwbHVnLWluLiBSZXN0
YXJ0LiIsIHBsdWdJblRvUmVzdGFydC5wdHIoKSk7Ci0gICAgICAgICAgICBwbHVnSW5Ub1Jlc3Rh
cnQtPnJlc3RhcnRTbmFwc2hvdHRlZFBsdWdJbigpOwotICAgICAgICB9Ci0gICAgICAgIHBsdWdJ
blRvUmVzdGFydC0+bV9zbmFwc2hvdERlY2lzaW9uID0gTmV2ZXJTbmFwc2hvdDsKLSAgICB9Ci19
Ci0KLXZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXNlckRpZENsaWNrU25hcHNob3QoTW91
c2VFdmVudCYgZXZlbnQsIGJvb2wgZm9yd2FyZEV2ZW50KQotewotICAgIGlmIChmb3J3YXJkRXZl
bnQpCi0gICAgICAgIG1fcGVuZGluZ0NsaWNrRXZlbnRGcm9tU25hcHNob3QgPSAmZXZlbnQ7Ci0K
LSAgICBhdXRvIHBsdWdJbk9yaWdpbiA9IG1fbG9hZGVkVXJsLmhvc3QoKTsKLSAgICBpZiAoZG9j
dW1lbnQoKS5wYWdlKCkgJiYgIUxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNj
aGVtZUFzTG9jYWwoZG9jdW1lbnQoKS5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmJh
c2VVUkwoKS5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkgJiYgZG9jdW1lbnQo
KS5wYWdlKCktPnNldHRpbmdzKCkuYXV0b3N0YXJ0T3JpZ2luUGx1Z0luU25hcHNob3R0aW5nRW5h
YmxlZCgpKQotICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+cGx1Z0luQ2xpZW50KCktPmRpZFN0
YXJ0RnJvbU9yaWdpbihkb2N1bWVudCgpLnBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+
YmFzZVVSTCgpLmhvc3QoKS50b1N0cmluZygpLCBwbHVnSW5PcmlnaW4udG9TdHJpbmcoKSwgc2Vy
dmljZVR5cGUoKSk7Ci0KLSAgICBMT0coUGx1Z2lucywgIiVwIFVzZXIgY2xpY2tlZCBvbiBzbmFw
c2hvdHRlZCBwbHVnLWluLiBSZXN0YXJ0LiIsIHRoaXMpOwotICAgIHJlc3RhcnRTbmFwc2hvdHRl
ZFBsdWdJbigpOwotICAgIGlmIChmb3J3YXJkRXZlbnQpCi0gICAgICAgIHNldERpc3BsYXlTdGF0
ZShSZXN0YXJ0aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrKTsKLSAgICByZXN0YXJ0U2ltaWxhclBs
dWdJbnMoKTsKLX0KLQotdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzZXRJc1ByaW1hcnlT
bmFwc2hvdHRlZFBsdWdJbihib29sIGlzUHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luKQotewotICAg
IGlmICghZG9jdW1lbnQoKS5wYWdlKCkgfHwgIWRvY3VtZW50KCkucGFnZSgpLT5zZXR0aW5ncygp
LnByaW1hcnlQbHVnSW5TbmFwc2hvdERldGVjdGlvbkVuYWJsZWQoKSB8fCBkb2N1bWVudCgpLnBh
Z2UoKS0+c2V0dGluZ3MoKS5zbmFwc2hvdEFsbFBsdWdJbnMoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKGlzUHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luKSB7Ci0gICAgICAgIGlmIChtX3Bs
dWdJbldhc0NyZWF0ZWQpIHsKLSAgICAgICAgICAgIExPRyhQbHVnaW5zLCAiJXAgUGx1Zy1pbiB3
YXMgZGV0ZWN0ZWQgYXMgdGhlIHByaW1hcnkgZWxlbWVudCBpbiB0aGUgcGFnZS4gUmVzdGFydC4i
LCB0aGlzKTsKLSAgICAgICAgICAgIHJlc3RhcnRTbmFwc2hvdHRlZFBsdWdJbigpOwotICAgICAg
ICAgICAgcmVzdGFydFNpbWlsYXJQbHVnSW5zKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gd2FzIGRldGVjdGVkIGFzIHRoZSBwcmltYXJ5
IGVsZW1lbnQgaW4gdGhlIHBhZ2UsIGJ1dCBpcyBub3QgeWV0IGNyZWF0ZWQuIFdpbGwgcmVzdGFy
dCBsYXRlci4iLCB0aGlzKTsKLSAgICAgICAgICAgIG1fZGVmZXJyZWRQcm9tb3Rpb25Ub1ByaW1h
cnlQbHVnSW4gPSB0cnVlOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ6OnJlc3RhcnRTbmFwc2hvdHRlZFBsdWdJbigpCi17Ci0gICAgaWYgKGRpc3Bs
YXlTdGF0ZSgpID49IFJlc3RhcnRpbmdXaXRoUGVuZGluZ01vdXNlQ2xpY2spCi0gICAgICAgIHJl
dHVybjsKLQotICAgIHNldERpc3BsYXlTdGF0ZShSZXN0YXJ0aW5nKTsKLSAgICBpbnZhbGlkYXRl
U3R5bGVBbmRSZW5kZXJlcnNGb3JTdWJ0cmVlKCk7Ci19Ci0KLXZvaWQgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nTW91c2VDbGljaygpCi17Ci0gICAgQVNTRVJUKCFtX3Np
bXVsYXRlZE1vdXNlQ2xpY2tUaW1lci5pc0FjdGl2ZSgpKTsKLSAgICBtX3NpbXVsYXRlZE1vdXNl
Q2xpY2tUaW1lci5yZXN0YXJ0KCk7Ci19Ci0KLXZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6
c2ltdWxhdGVkTW91c2VDbGlja1RpbWVyRmlyZWQoKQotewotICAgIEFTU0VSVChkaXNwbGF5U3Rh
dGUoKSA9PSBSZXN0YXJ0aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrKTsKLSAgICBBU1NFUlQobV9w
ZW5kaW5nQ2xpY2tFdmVudEZyb21TbmFwc2hvdCk7Ci0KLSAgICBzZXREaXNwbGF5U3RhdGUoUGxh
eWluZyk7Ci0gICAgZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhtX3BlbmRpbmdDbGlja0V2ZW50RnJv
bVNuYXBzaG90LmdldCgpLCBTZW5kTW91c2VPdmVyVXBEb3duRXZlbnRzLCBEb05vdFNob3dQcmVz
c2VkTG9vayk7Ci0KLSAgICBtX3BlbmRpbmdDbGlja0V2ZW50RnJvbVNuYXBzaG90ID0gbnVsbHB0
cjsKLX0KLQotc3RhdGljIGJvb2wgZG9jdW1lbnRIYWRSZWNlbnRVc2VyR2VzdHVyZShEb2N1bWVu
dCYgZG9jdW1lbnQpCi17Ci0gICAgTW9ub3RvbmljVGltZSBsYXN0S25vd25Vc2VyR2VzdHVyZVRp
bWVzdGFtcCA9IGRvY3VtZW50Lmxhc3RIYW5kbGVkVXNlckdlc3R1cmVUaW1lc3RhbXAoKTsKLSAg
ICBpZiAoZG9jdW1lbnQuZnJhbWUoKSAhPSAmZG9jdW1lbnQucGFnZSgpLT5tYWluRnJhbWUoKSAm
JiBkb2N1bWVudC5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCi0gICAgICAgIGxhc3RL
bm93blVzZXJHZXN0dXJlVGltZXN0YW1wID0gc3RkOjptYXgobGFzdEtub3duVXNlckdlc3R1cmVU
aW1lc3RhbXAsIGRvY3VtZW50LnBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+bGFzdEhh
bmRsZWRVc2VyR2VzdHVyZVRpbWVzdGFtcCgpKTsKLQotICAgIHJldHVybiBNb25vdG9uaWNUaW1l
Ojpub3coKSAtIGxhc3RLbm93blVzZXJHZXN0dXJlVGltZXN0YW1wIDwgYXV0b3N0YXJ0U29vbkFm
dGVyVXNlckdlc3R1cmVUaHJlc2hvbGQ7Ci19Ci0KLXZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6Y2hlY2tTaXplQ2hhbmdlRm9yU25hcHNob3R0aW5nKCkKLXsKLSAgICBpZiAoIW1fbmVlZHND
aGVja0ZvclNpemVDaGFuZ2UgfHwgbV9zbmFwc2hvdERlY2lzaW9uICE9IE1heVNuYXBzaG90V2hl
blJlc2l6ZWQgfHwgZG9jdW1lbnRIYWRSZWNlbnRVc2VyR2VzdHVyZShkb2N1bWVudCgpKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgbV9uZWVkc0NoZWNrRm9yU2l6ZUNoYW5nZSA9IGZhbHNlOwot
Ci0gICAgYXV0byBjb250ZW50Qm94UmVjdCA9IGRvd25jYXN0PFJlbmRlckJveD4oKnJlbmRlcmVy
KCkpLmNvbnRlbnRCb3hSZWN0KCk7Ci0gICAgaW50IGNvbnRlbnRXaWR0aCA9IGNvbnRlbnRCb3hS
ZWN0LndpZHRoKCk7Ci0gICAgaW50IGNvbnRlbnRIZWlnaHQgPSBjb250ZW50Qm94UmVjdC5oZWln
aHQoKTsKLQotICAgIGlmIChjb250ZW50V2lkdGggPD0gc2l6aW5nVGlueURpbWVuc2lvblRocmVz
aG9sZCB8fCBjb250ZW50SGVpZ2h0IDw9IHNpemluZ1RpbnlEaW1lbnNpb25UaHJlc2hvbGQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIExPRyhQbHVnaW5zLCAiJXAgUGx1Zy1pbiBvcmlnaW5hbGx5
IGF2b2lkZWQgc25hcHNob3R0aW5nIGJlY2F1c2UgaXQgd2FzIHNpemVkICVkeCVkLiBOb3cgaXQg
aXMgJWR4JWQuIFRlbGwgaXQgdG8gc25hcHNob3QuXG4iLCB0aGlzLCBtX3NpemVXaGVuU25hcHNo
b3R0ZWQud2lkdGgoKSwgbV9zaXplV2hlblNuYXBzaG90dGVkLmhlaWdodCgpLCBjb250ZW50V2lk
dGgsIGNvbnRlbnRIZWlnaHQpOwotICAgIHNldERpc3BsYXlTdGF0ZShXYWl0aW5nRm9yU25hcHNo
b3QpOwotICAgIG1fc25hcHNob3REZWNpc2lvbiA9IFNuYXBzaG90dGVkOwotICAgIGF1dG8gd2lk
Z2V0ID0gbWFrZVJlZlB0cihwbHVnaW5XaWRnZXQoKSk7Ci0gICAgaWYgKGlzPFBsdWdpblZpZXdC
YXNlPih3aWRnZXQpKQotICAgICAgICBkb3duY2FzdDxQbHVnaW5WaWV3QmFzZT4oKndpZGdldCku
YmVnaW5TbmFwc2hvdHRpbmdSdW5uaW5nUGx1Z2luKCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9v
bCBpczEwMFBlcmNlbnQoTGVuZ3RoIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gbGVuZ3RoLmlzUGVy
Y2VudCgpICYmIGxlbmd0aC5wZXJjZW50KCkgPT0gMTAwOwotfQotICAgIAotc3RhdGljIGlubGlu
ZSBib29sIGlzU21hbGxlclRoYW5UaW55U2l6aW5nVGhyZXNob2xkKGNvbnN0IFJlbmRlckVtYmVk
ZGVkT2JqZWN0JiByZW5kZXJlcikKLXsKLSAgICBhdXRvIGNvbnRlbnRSZWN0ID0gcmVuZGVyZXIu
Y29udGVudEJveFJlY3QoKTsKLSAgICByZXR1cm4gY29udGVudFJlY3Qud2lkdGgoKSA8PSBzaXpp
bmdUaW55RGltZW5zaW9uVGhyZXNob2xkIHx8IGNvbnRlbnRSZWN0LmhlaWdodCgpIDw9IHNpemlu
Z1RpbnlEaW1lbnNpb25UaHJlc2hvbGQ7Ci19Ci0gICAgCi1ib29sIEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ6OmlzVG9wTGV2ZWxGdWxsUGFnZVBsdWdpbihjb25zdCBSZW5kZXJFbWJlZGRlZE9iamVj
dCYgcmVuZGVyZXIpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGRvY3VtZW50KCkuZnJhbWUoKSk7Ci0g
ICAgYXV0byYgZnJhbWUgPSAqZG9jdW1lbnQoKS5mcmFtZSgpOwotICAgIGlmICghZnJhbWUuaXNN
YWluRnJhbWUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIGF1dG8mIHN0eWxl
ID0gcmVuZGVyZXIuc3R5bGUoKTsKLSAgICBhdXRvIHZpc2libGVTaXplID0gZnJhbWUudmlldygp
LT52aXNpYmxlU2l6ZSgpOwotICAgIGF1dG8gY29udGVudFJlY3QgPSByZW5kZXJlci5jb250ZW50
Qm94UmVjdCgpOwotICAgIGZsb2F0IGNvbnRlbnRXaWR0aCA9IGNvbnRlbnRSZWN0LndpZHRoKCk7
Ci0gICAgZmxvYXQgY29udGVudEhlaWdodCA9IGNvbnRlbnRSZWN0LmhlaWdodCgpOwotICAgIHJl
dHVybiBpczEwMFBlcmNlbnQoc3R5bGUud2lkdGgoKSkgJiYgaXMxMDBQZXJjZW50KHN0eWxlLmhl
aWdodCgpKSAmJiBjb250ZW50V2lkdGggKiBjb250ZW50SGVpZ2h0ID4gdmlzaWJsZVNpemUuYXJl
YSgpLnVuc2FmZUdldCgpICogc2l6aW5nRnVsbFBhZ2VBcmVhUmF0aW9UaHJlc2hvbGQ7Ci19Ci0K
LXZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y2hlY2tTbmFwc2hvdFN0YXR1cygpCi17Ci0g
ICAgaWYgKCFpczxSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbj4oKnJlbmRlcmVyKCkpKSB7Ci0gICAg
ICAgIGlmIChkaXNwbGF5U3RhdGUoKSA9PSBQbGF5aW5nKQotICAgICAgICAgICAgY2hlY2tTaXpl
Q2hhbmdlRm9yU25hcHNob3R0aW5nKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0g
ICAgLy8gSWYgd2lkdGggYW5kIGhlaWdodCBzdHlsZXMgd2VyZSBwcmV2aW91c2x5IG5vdCBzZXQg
YW5kIHdlJ3ZlIHNuYXBzaG90dGVkIHRoZSBwbHVnaW4gd2UgbWF5IG5lZWQgdG8gcmVzdGFydCB0
aGUgcGx1Z2luIHNvIHRoYXQgaXRzIHN0YXRlIGNhbiBiZSB1cGRhdGVkIGFwcHJvcHJpYXRlbHku
Ci0gICAgaWYgKCFkb2N1bWVudCgpLnBhZ2UoKS0+c2V0dGluZ3MoKS5zbmFwc2hvdEFsbFBsdWdJ
bnMoKSAmJiBkaXNwbGF5U3RhdGUoKSA8PSBEaXNwbGF5aW5nU25hcHNob3QgJiYgIW1fcGx1Z0lu
RGltZW5zaW9uc1NwZWNpZmllZCkgewotICAgICAgICBhdXRvJiByZW5kZXJlciA9IGRvd25jYXN0
PFJlbmRlclNuYXBzaG90dGVkUGx1Z0luPigqdGhpcy0+cmVuZGVyZXIoKSk7Ci0gICAgICAgIGlm
ICghcmVuZGVyZXIuc3R5bGUoKS5sb2dpY2FsV2lkdGgoKS5pc1NwZWNpZmllZCgpICYmICFyZW5k
ZXJlci5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc1NwZWNpZmllZCgpKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAKLSAgICAgICAgbV9wbHVnSW5EaW1lbnNpb25zU3BlY2lmaWVkID0g
dHJ1ZTsKLSAgICAgICAgaWYgKGlzVG9wTGV2ZWxGdWxsUGFnZVBsdWdpbihyZW5kZXJlcikpIHsK
LSAgICAgICAgICAgIG1fc25hcHNob3REZWNpc2lvbiA9IE5ldmVyU25hcHNob3Q7Ci0gICAgICAg
ICAgICByZXN0YXJ0U25hcHNob3R0ZWRQbHVnSW4oKTsKLSAgICAgICAgfSBlbHNlIGlmIChpc1Nt
YWxsZXJUaGFuVGlueVNpemluZ1RocmVzaG9sZChyZW5kZXJlcikpIHsKLSAgICAgICAgICAgIG1f
c25hcHNob3REZWNpc2lvbiA9IE1heVNuYXBzaG90V2hlblJlc2l6ZWQ7Ci0gICAgICAgICAgICBy
ZXN0YXJ0U25hcHNob3R0ZWRQbHVnSW4oKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIAotICAgIC8vIE5vdGlmeSB0aGUgc2hhZG93IHJvb3QgdGhhdCB0aGUgc2l6ZSBj
aGFuZ2VkIHNvIHRoYXQgd2UgbWF5IHVwZGF0ZSB0aGUgb3ZlcmxheSBsYXlvdXQuCi0gICAgZW5z
dXJlVXNlckFnZW50U2hhZG93Um9vdCgpLmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkucmVzaXplRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6Tm8pKTsKLX0KLSAgICAKLXZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3Vi
ZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKGNvbnN0IFVSTCYgdXJsKQotewotICAgIExPRyhQ
bHVnaW5zLCAiJXAgUGx1Zy1pbiBVUkw6ICVzIiwgdGhpcywgbV91cmwudXRmOCgpLmRhdGEoKSk7
Ci0gICAgTE9HKFBsdWdpbnMsICIgICBBY3R1YWwgVVJMOiAlcyIsIHVybC5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKLSAgICBMT0coUGx1Z2lucywgIiAgIE1JTUUgdHlwZTogJXMiLCBzZXJ2aWNl
VHlwZSgpLnV0ZjgoKS5kYXRhKCkpOwotCi0gICAgbV9sb2FkZWRVcmwgPSB1cmw7Ci0gICAgbV9w
bHVnSW5XYXNDcmVhdGVkID0gZmFsc2U7Ci0gICAgbV9kZWZlcnJlZFByb21vdGlvblRvUHJpbWFy
eVBsdWdJbiA9IGZhbHNlOwotCi0gICAgaWYgKCFkb2N1bWVudCgpLnBhZ2UoKSB8fCAhZG9jdW1l
bnQoKS5wYWdlKCktPnNldHRpbmdzKCkucGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCgpKSB7Ci0g
ICAgICAgIG1fc25hcHNob3REZWNpc2lvbiA9IE5ldmVyU25hcHNob3Q7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoZGlzcGxheVN0YXRlKCkgPT0gUmVzdGFydGluZykgewotICAg
ICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gaXMgZXhwbGljaXRseSByZXN0YXJ0aW5nIiwg
dGhpcyk7Ci0gICAgICAgIG1fc25hcHNob3REZWNpc2lvbiA9IE5ldmVyU25hcHNob3Q7Ci0gICAg
ICAgIHNldERpc3BsYXlTdGF0ZShQbGF5aW5nKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChkaXNwbGF5U3RhdGUoKSA9PSBSZXN0YXJ0aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNr
KSB7Ci0gICAgICAgIExPRyhQbHVnaW5zLCAiJXAgUGx1Zy1pbiBpcyBleHBsaWNpdGx5IHJlc3Rh
cnRpbmcgYnV0IGFsc28gd2FpdGluZyBmb3IgYSBjbGljayIsIHRoaXMpOwotICAgICAgICBtX3Nu
YXBzaG90RGVjaXNpb24gPSBOZXZlclNuYXBzaG90OwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKG1fc25hcHNob3REZWNpc2lvbiA9PSBOZXZlclNuYXBzaG90KSB7Ci0gICAgICAg
IExPRyhQbHVnaW5zLCAiJXAgUGx1Zy1pbiBpcyBibGVzc2VkLCBhbGxvdyBpdCB0byBzdGFydCIs
IHRoaXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYm9vbCBpbk1haW5GcmFtZSA9
IGRvY3VtZW50KCkuZnJhbWUoKS0+aXNNYWluRnJhbWUoKTsKLQotICAgIGlmIChkb2N1bWVudCgp
LmlzUGx1Z2luRG9jdW1lbnQoKSAmJiBpbk1haW5GcmFtZSkgewotICAgICAgICBMT0coUGx1Z2lu
cywgIiVwIFBsdWctaW4gZG9jdW1lbnQgaW4gbWFpbiBmcmFtZSIsIHRoaXMpOwotICAgICAgICBt
X3NuYXBzaG90RGVjaXNpb24gPSBOZXZlclNuYXBzaG90OwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUo
KSkgewotICAgICAgICBMT0coUGx1Z2lucywgIiVwIFNjcmlwdCBpcyBjdXJyZW50bHkgcHJvY2Vz
c2luZyB1c2VyIGdlc3R1cmUsIHNldCB0byBwbGF5IiwgdGhpcyk7Ci0gICAgICAgIG1fc25hcHNo
b3REZWNpc2lvbiA9IE5ldmVyU25hcHNob3Q7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAobV9jcmVhdGVkRHVyaW5nVXNlckdlc3R1cmUpIHsKLSAgICAgICAgTE9HKFBsdWdpbnMs
ICIlcCBQbHVnLWluIHdhcyBjcmVhdGVkIHdoZW4gcHJvY2Vzc2luZyB1c2VyIGdlc3R1cmUsIHNl
dCB0byBwbGF5IiwgdGhpcyk7Ci0gICAgICAgIG1fc25hcHNob3REZWNpc2lvbiA9IE5ldmVyU25h
cHNob3Q7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoZG9jdW1lbnRIYWRSZWNl
bnRVc2VyR2VzdHVyZShkb2N1bWVudCgpKSkgewotICAgICAgICBMT0coUGx1Z2lucywgIiVwIFBs
dWctaW4gd2FzIGNyZWF0ZWQgc2hvcnRseSBhZnRlciBhIHVzZXIgZ2VzdHVyZSwgc2V0IHRvIHBs
YXkiLCB0aGlzKTsKLSAgICAgICAgbV9zbmFwc2hvdERlY2lzaW9uID0gTmV2ZXJTbmFwc2hvdDsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChkb2N1bWVudCgpLnBhZ2UoKS0+c2V0
dGluZ3MoKS5zbmFwc2hvdEFsbFBsdWdJbnMoKSkgewotICAgICAgICBMT0coUGx1Z2lucywgIiVw
IFBsdWctaW4gZm9yY2VkIHRvIHNuYXBzaG90IGJ5IHVzZXIgcHJlZmVyZW5jZSIsIHRoaXMpOwot
ICAgICAgICBtX3NuYXBzaG90RGVjaXNpb24gPSBTbmFwc2hvdHRlZDsKLSAgICAgICAgc2V0RGlz
cGxheVN0YXRlKFdhaXRpbmdGb3JTbmFwc2hvdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoZG9jdW1lbnQoKS5wYWdlKCktPnNldHRpbmdzKCkuYXV0b3N0YXJ0T3JpZ2luUGx1
Z0luU25hcHNob3R0aW5nRW5hYmxlZCgpICYmIGRvY3VtZW50KCkucGFnZSgpLT5wbHVnSW5DbGll
bnQoKSAmJiBkb2N1bWVudCgpLnBhZ2UoKS0+cGx1Z0luQ2xpZW50KCktPnNob3VsZEF1dG9TdGFy
dEZyb21PcmlnaW4oZG9jdW1lbnQoKS5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmJh
c2VVUkwoKS5ob3N0KCkudG9TdHJpbmcoKSwgdXJsLmhvc3QoKS50b1N0cmluZygpLCBzZXJ2aWNl
VHlwZSgpKSkgewotICAgICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gZnJvbSAoJXMsICVz
KSBpcyBtYXJrZWQgdG8gYXV0by1zdGFydCwgc2V0IHRvIHBsYXkiLCB0aGlzLCBkb2N1bWVudCgp
LnBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+YmFzZVVSTCgpLmhvc3QoKS51dGY4KCku
ZGF0YSgpLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBtX3NuYXBzaG90RGVj
aXNpb24gPSBOZXZlclNuYXBzaG90OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KG1fbG9hZGVkVXJsLmlzRW1wdHkoKSAmJiAhc2VydmljZVR5cGUoKS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgTE9HKFBsdWdpbnMsICIlcCBQbHVnLWluIGhhcyBubyBzcmMgVVJMIGJ1dCBkb2VzIGhh
dmUgYSB2YWxpZCBtaW1lIHR5cGUgJXMsIHNldCB0byBwbGF5IiwgdGhpcywgc2VydmljZVR5cGUo
KS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgbV9zbmFwc2hvdERlY2lzaW9uID0gTWF5U25hcHNo
b3RXaGVuQ29udGVudElzU2V0OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFM
ZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKG1fbG9hZGVk
VXJsLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSAmJiAhbV9sb2FkZWRVcmwu
aG9zdCgpLmlzRW1wdHkoKSAmJiBtX2xvYWRlZFVybC5ob3N0KCkgPT0gZG9jdW1lbnQoKS5wYWdl
KCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmJhc2VVUkwoKS5ob3N0KCkpIHsKLSAgICAgICAg
TE9HKFBsdWdpbnMsICIlcCBQbHVnLWluIGlzIHNlcnZlZCBmcm9tIHBhZ2UncyBkb21haW4sIHNl
dCB0byBwbGF5IiwgdGhpcyk7Ci0gICAgICAgIG1fc25hcHNob3REZWNpc2lvbiA9IE5ldmVyU25h
cHNob3Q7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byYgcmVuZGVyZXIg
PSBkb3duY2FzdDxSZW5kZXJFbWJlZGRlZE9iamVjdD4oKnRoaXMtPnJlbmRlcmVyKCkpOwotICAg
IGF1dG8gY29udGVudFJlY3QgPSByZW5kZXJlci5jb250ZW50Qm94UmVjdCgpOwotICAgIGludCBj
b250ZW50V2lkdGggPSBjb250ZW50UmVjdC53aWR0aCgpOwotICAgIGludCBjb250ZW50SGVpZ2h0
ID0gY29udGVudFJlY3QuaGVpZ2h0KCk7Ci0gICAgCi0gICAgbV9wbHVnSW5EaW1lbnNpb25zU3Bl
Y2lmaWVkID0gcmVuZGVyZXIuc3R5bGUoKS5sb2dpY2FsV2lkdGgoKS5pc1NwZWNpZmllZCgpIHx8
IHJlbmRlcmVyLnN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzU3BlY2lmaWVkKCk7Ci0gICAgCi0g
ICAgaWYgKGlzVG9wTGV2ZWxGdWxsUGFnZVBsdWdpbihyZW5kZXJlcikpIHsKLSAgICAgICAgTE9H
KFBsdWdpbnMsICIlcCBQbHVnLWluIGlzIHRvcCBsZXZlbCBmdWxsIHBhZ2UsIHNldCB0byBwbGF5
IiwgdGhpcyk7Ci0gICAgICAgIG1fc25hcHNob3REZWNpc2lvbiA9IE5ldmVyU25hcHNob3Q7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoaXNTbWFsbGVyVGhhblRpbnlTaXppbmdU
aHJlc2hvbGQocmVuZGVyZXIpKSB7Ci0gICAgICAgIExPRyhQbHVnaW5zLCAiJXAgUGx1Zy1pbiBp
cyB2ZXJ5IHNtYWxsICVkeCVkLCBzZXQgdG8gcGxheSIsIHRoaXMsIGNvbnRlbnRXaWR0aCwgY29u
dGVudEhlaWdodCk7Ci0gICAgICAgIG1fc2l6ZVdoZW5TbmFwc2hvdHRlZCA9IEludFNpemUoY29u
dGVudFdpZHRoLCBjb250ZW50SGVpZ2h0KTsKLSAgICAgICAgbV9zbmFwc2hvdERlY2lzaW9uID0g
TWF5U25hcHNob3RXaGVuUmVzaXplZDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
ICghZG9jdW1lbnQoKS5wYWdlKCktPnBsdWdJbkNsaWVudCgpKSB7Ci0gICAgICAgIExPRyhQbHVn
aW5zLCAiJXAgVGhlcmUgaXMgbm8gcGx1Zy1pbiBjbGllbnQuIFNldCB0byB3YWl0IGZvciBzbmFw
c2hvdCIsIHRoaXMpOwotICAgICAgICBtX3NuYXBzaG90RGVjaXNpb24gPSBOZXZlclNuYXBzaG90
OwotICAgICAgICBzZXREaXNwbGF5U3RhdGUoV2FpdGluZ0ZvclNuYXBzaG90KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIExPRyhQbHVnaW5zLCAiJXAgUGx1Zy1pbiBmcm9tICglcywg
JXMpIGlzIG5vdCBhdXRvLXN0YXJ0LCBzaXplZCBhdCAlZHglZCwgc2V0IHRvIHdhaXQgZm9yIHNu
YXBzaG90IiwgdGhpcywgZG9jdW1lbnQoKS50b3BEb2N1bWVudCgpLmJhc2VVUkwoKS5ob3N0KCku
dXRmOCgpLmRhdGEoKSwgdXJsLmhvc3QoKS51dGY4KCkuZGF0YSgpLCBjb250ZW50V2lkdGgsIGNv
bnRlbnRIZWlnaHQpOwotICAgIG1fc25hcHNob3REZWNpc2lvbiA9IFNuYXBzaG90dGVkOwotICAg
IHNldERpc3BsYXlTdGF0ZShXYWl0aW5nRm9yU25hcHNob3QpOwotfQotCi12b2lkIEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQ6OnN1YmZyYW1lTG9hZGVyRGlkQ3JlYXRlUGx1Z0luKGNvbnN0IFdpZGdl
dCYgd2lkZ2V0KQotewotICAgIG1fcGx1Z0luV2FzQ3JlYXRlZCA9IHRydWU7Ci0KLSAgICBpZiAo
aXM8UGx1Z2luVmlld0Jhc2U+KHdpZGdldCkgJiYgZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KHdp
ZGdldCkuc2hvdWxkQWx3YXlzQXV0b1N0YXJ0KCkpIHsKLSAgICAgICAgTE9HKFBsdWdpbnMsICIl
cCBQbHVnLWluIHNob3VsZCBhdXRvLXN0YXJ0LCBzZXQgdG8gcGxheSIsIHRoaXMpOwotICAgICAg
ICBtX3NuYXBzaG90RGVjaXNpb24gPSBOZXZlclNuYXBzaG90OwotICAgICAgICBzZXREaXNwbGF5
U3RhdGUoUGxheWluZyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobV9kZWZl
cnJlZFByb21vdGlvblRvUHJpbWFyeVBsdWdJbikgewotICAgICAgICBMT0coUGx1Z2lucywgIiVw
IFBsdWctaW4gd2FzIGNyZWF0ZWQsIHByZXZpb3VzbHkgZGVmZXJyZWQgcHJvbW90aW9uIHRvIHBy
aW1hcnkuIFdpbGwgcHJvbW90ZSIsIHRoaXMpOwotICAgICAgICBzZXRJc1ByaW1hcnlTbmFwc2hv
dHRlZFBsdWdJbih0cnVlKTsKLSAgICAgICAgbV9kZWZlcnJlZFByb21vdGlvblRvUHJpbWFyeVBs
dWdJbiA9IGZhbHNlOwotICAgIH0KLX0KLQotdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50JiBldmVudCkKLXsKLSAgICBpZiAoaXM8UmVuZGVyRW1i
ZWRkZWRPYmplY3Q+KHJlbmRlcmVyKCkpICYmIGRpc3BsYXlTdGF0ZSgpID09IFdhaXRpbmdGb3JT
bmFwc2hvdCAmJiBpczxNb3VzZUV2ZW50PihldmVudCkgJiYgZXZlbnQudHlwZSgpID09IGV2ZW50
TmFtZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAgIGF1dG8mIG1vdXNlRXZlbnQgPSBkb3duY2Fz
dDxNb3VzZUV2ZW50PihldmVudCk7Ci0gICAgICAgIGlmIChtb3VzZUV2ZW50LmJ1dHRvbigpID09
IExlZnRCdXR0b24pIHsKLSAgICAgICAgICAgIHVzZXJEaWRDbGlja1NuYXBzaG90KG1vdXNlRXZl
bnQsIHRydWUpOwotICAgICAgICAgICAgbW91c2VFdmVudC5zZXREZWZhdWx0SGFuZGxlZCgpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotICAgIEhUTUxQbHVnSW5FbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKLX0KLQogYm9vbCBIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50OjpjYW5Mb2FkUGx1Z0luQ29udGVudChjb25zdCBTdHJpbmcmIHJlbGF0aXZlVVJM
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAogewogICAgIC8vIEVsZW1lbnRzIGluIHVz
ZXIgYWdlbnQgc2hvdyB0cmVlIHNob3VsZCBsb2FkIHdoYXRldmVyIHRoZSBlbWJlZGRpbmcgZG9j
dW1lbnQgcG9saWN5IGlzLgpAQCAtODA3LDcgKzMwNSw3IEBAIGJvb2wgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6cmVxdWVzdE9iamVjdChjb25zdCBTdHJpbmcmIHJlbGF0aXZlVVJMLCBjb25zdCBT
dHJpCiAKICAgICBpZiAoSFRNTFBsdWdJbkVsZW1lbnQ6OnJlcXVlc3RPYmplY3QocmVsYXRpdmVV
UkwsIG1pbWVUeXBlLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcykpCiAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIAorCiAgICAgcmV0dXJuIGRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkuc3Vi
ZnJhbWVMb2FkZXIoKS5yZXF1ZXN0T2JqZWN0KCp0aGlzLCByZWxhdGl2ZVVSTCwgZ2V0TmFtZUF0
dHJpYnV0ZSgpLCBtaW1lVHlwZSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCmluZGV4IDgyZTkyODY0
OWJmYzM2MGM5YWFiNTJlZGEzYWRjNmYyNDJhZGIwODguLjk2NDJhYmMwMjRhYWUyZDU4MmZlNjRh
ZWMyMDZkNTU1MGE5NzVlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5oCkBAIC0yNSwxMSArMjUsMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgSFRNTEltYWdlTG9hZGVyOwotY2xhc3MgTW91c2VFdmVudDsKIAogZW51bSBjbGFzcyBD
cmVhdGVQbHVnaW5zIHsgTm8sIFllcyB9OwogCiAvLyBCYXNlIGNsYXNzIGZvciBIVE1MRW1iZWRF
bGVtZW50IGFuZCBIVE1MT2JqZWN0RWxlbWVudC4KKy8vIEZJWE1FOiBUaGlzIGlzIHRoZSBvbmx5
IGNsYXNzIHRoYXQgZGVyaXZlcyBmcm9tIEhUTUxQbHVnSW5FbGVtZW50LCBzbyB3ZSBjb3VsZCBt
ZXJnZSB0aGUgdHdvIGNsYXNzZXMuCiBjbGFzcyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50IDogcHVi
bGljIEhUTUxQbHVnSW5FbGVtZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQpOwogcHVibGljOgpAQCAtNDEsMzcgKzQxLDEwIEBAIHB1YmxpYzoK
IAogICAgIGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3NlcnZp
Y2VUeXBlOyB9CiAgICAgY29uc3QgU3RyaW5nJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsg
fQotICAgIGNvbnN0IFVSTCYgbG9hZGVkVXJsKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkZWRVcmw7
IH0KIAotICAgIC8vIFB1YmxpYyBmb3IgRnJhbWVWaWV3OjphZGRXaWRnZXRUb1VwZGF0ZSgpCiAg
ICAgYm9vbCBuZWVkc1dpZGdldFVwZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNXaWRnZXRV
cGRhdGU7IH0KICAgICB2b2lkIHNldE5lZWRzV2lkZ2V0VXBkYXRlKGJvb2wgbmVlZHNXaWRnZXRV
cGRhdGUpIHsgbV9uZWVkc1dpZGdldFVwZGF0ZSA9IG5lZWRzV2lkZ2V0VXBkYXRlOyB9CiAgICAg
Ci0gICAgdm9pZCB1c2VyRGlkQ2xpY2tTbmFwc2hvdChNb3VzZUV2ZW50JiwgYm9vbCBmb3J3YXJk
RXZlbnQpOwotICAgIHZvaWQgY2hlY2tTbmFwc2hvdFN0YXR1cygpOwotICAgIEltYWdlKiBzbmFw
c2hvdEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9zbmFwc2hvdEltYWdlLmdldCgpOyB9Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0YXJ0U25hcHNob3R0ZWRQbHVnSW4oKTsKLQotICAgIC8v
IFBsdWctaW4gVVJMIG1pZ2h0IG5vdCBiZSB0aGUgc2FtZSBhcyB1cmwoKSB3aXRoIG92ZXJyaWRp
bmcgcGFyYW1ldGVycy4KLSAgICB2b2lkIHN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBsdWdJbihj
b25zdCBVUkwmIHBsdWdJblVSTCk7Ci0gICAgdm9pZCBzdWJmcmFtZUxvYWRlckRpZENyZWF0ZVBs
dWdJbihjb25zdCBXaWRnZXQmKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SXNQcmlt
YXJ5U25hcHNob3R0ZWRQbHVnSW4oYm9vbCk7Ci0gICAgYm9vbCBwYXJ0T2ZTbmFwc2hvdE92ZXJs
YXkoY29uc3QgRXZlbnRUYXJnZXQqKSBjb25zdDsKLQotICAgIGJvb2wgbmVlZHNDaGVja0ZvclNp
emVDaGFuZ2UoKSBjb25zdCB7IHJldHVybiBtX25lZWRzQ2hlY2tGb3JTaXplQ2hhbmdlOyB9Ci0g
ICAgdm9pZCBzZXROZWVkc0NoZWNrRm9yU2l6ZUNoYW5nZSgpIHsgbV9uZWVkc0NoZWNrRm9yU2l6
ZUNoYW5nZSA9IHRydWU7IH0KLSAgICB2b2lkIGNoZWNrU2l6ZUNoYW5nZUZvclNuYXBzaG90dGlu
ZygpOwotCi0gICAgZW51bSBTbmFwc2hvdERlY2lzaW9uIHsKLSAgICAgICAgU25hcHNob3ROb3RZ
ZXREZWNpZGVkLAotICAgICAgICBOZXZlclNuYXBzaG90LAotICAgICAgICBTbmFwc2hvdHRlZCwK
LSAgICAgICAgTWF5U25hcHNob3RXaGVuUmVzaXplZCwKLSAgICAgICAgTWF5U25hcHNob3RXaGVu
Q29udGVudElzU2V0Ci0gICAgfTsKLSAgICBTbmFwc2hvdERlY2lzaW9uIHNuYXBzaG90RGVjaXNp
b24oKSBjb25zdCB7IHJldHVybiBtX3NuYXBzaG90RGVjaXNpb247IH0KLQogcHJvdGVjdGVkOgog
ICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQmKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW5nKCk7CkBAIC05NCwxMyArNjcsMTAg
QEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIGJvb2wgaXNQbHVnSW5JbWFnZUVsZW1lbnQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgYm9vbCBpc1Jlc3RhcnRlZFBsdWdp
bigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNSZXN0YXJ0ZWRQbHVnaW47IH0KIAogICAgIGJv
b2wgY2FuTG9hZFBsdWdJbkNvbnRlbnQoY29uc3QgU3RyaW5nJiByZWxhdGl2ZVVSTCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkgY29uc3Q7CiAgICAgYm9vbCBjYW5Mb2FkVVJMKGNvbnN0IFVSTCYp
IGNvbnN0OwogCi0gICAgdm9pZCBkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3Qm
KSBmaW5hbDsKLQogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7
CiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBv
dmVycmlkZTsKICAgICB2b2lkIHdpbGxSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKSBmaW5hbDsK
QEAgLTExMSwzNiArODEsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByZXBhcmVGb3JEb2N1bWVu
dFN1c3BlbnNpb24oKSBmaW5hbDsKICAgICB2b2lkIHJlc3VtZUZyb21Eb2N1bWVudFN1c3BlbnNp
b24oKSBmaW5hbDsKIAotICAgIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYpIGZpbmFs
OwotICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5nTW91c2VDbGljaygpIGZpbmFsOwotCi0gICAgdm9p
ZCB1cGRhdGVTbmFwc2hvdChJbWFnZSopIGZpbmFsOwotCiAgICAgdm9pZCB1cGRhdGVBZnRlclN0
eWxlUmVzb2x1dGlvbigpOwogCi0gICAgdm9pZCBzaW11bGF0ZWRNb3VzZUNsaWNrVGltZXJGaXJl
ZCgpOwotCi0gICAgdm9pZCByZXN0YXJ0U2ltaWxhclBsdWdJbnMoKTsKLSAgICB2b2lkIHJlbW92
ZVNuYXBzaG90VGltZXJGaXJlZCgpOwotICAgIGJvb2wgaXNUb3BMZXZlbEZ1bGxQYWdlUGx1Z2lu
KGNvbnN0IFJlbmRlckVtYmVkZGVkT2JqZWN0JikgY29uc3Q7Ci0KLSAgICB2b2lkIHNldERpc3Bs
YXlTdGF0ZShEaXNwbGF5U3RhdGUpIGZpbmFsOwotCi0gICAgVVJMIG1fbG9hZGVkVXJsOwogICAg
IGJvb2wgbV9uZWVkc1dpZGdldFVwZGF0ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX25lZWRzRG9j
dW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8TW91c2VFdmVu
dD4gbV9wZW5kaW5nQ2xpY2tFdmVudEZyb21TbmFwc2hvdDsKLSAgICBEZWZlcnJhYmxlT25lU2hv
dFRpbWVyIG1fc2ltdWxhdGVkTW91c2VDbGlja1RpbWVyOwotICAgIFRpbWVyIG1fcmVtb3ZlU25h
cHNob3RUaW1lcjsKLSAgICBSZWZQdHI8SW1hZ2U+IG1fc25hcHNob3RJbWFnZTsKLSAgICBib29s
IG1fY3JlYXRlZER1cmluZ1VzZXJHZXN0dXJlIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNSZXN0
YXJ0ZWRQbHVnaW4geyBmYWxzZSB9OwotICAgIGJvb2wgbV9uZWVkc0NoZWNrRm9yU2l6ZUNoYW5n
ZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3BsdWdJbldhc0NyZWF0ZWQgeyBmYWxzZSB9OwotICAg
IGJvb2wgbV9kZWZlcnJlZFByb21vdGlvblRvUHJpbWFyeVBsdWdJbiB7IGZhbHNlIH07Ci0gICAg
SW50U2l6ZSBtX3NpemVXaGVuU25hcHNob3R0ZWQ7Ci0gICAgU25hcHNob3REZWNpc2lvbiBtX3Nu
YXBzaG90RGVjaXNpb24geyBTbmFwc2hvdE5vdFlldERlY2lkZWQgfTsKLSAgICBib29sIG1fcGx1
Z0luRGltZW5zaW9uc1NwZWNpZmllZCB7IGZhbHNlIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPEhU
TUxJbWFnZUxvYWRlcj4gbV9pbWFnZUxvYWRlcjsKICAgICBib29sIG1fbmVlZHNJbWFnZVJlbG9h
ZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1VwZGF0ZVNjaGVkdWxlZEZvckFmdGVyU3R5bGVS
ZXNvbHV0aW9uIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJmcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIu
Y3BwCmluZGV4IDIxY2YwNjJkOTBjODM3ZTkxNmRmMDNhMzM1YTQ5ZDYyMDZjODlmYWEuLjFiMWNl
NjIwYzAyOTQwMzIxMDljMGNhMDMwMTA1MmQ1NWQ2MjdiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YmZyYW1lTG9hZGVyLmNwcApAQCAtMzUzLDggKzM1Myw2IEBAIGJvb2wgRnJhbWVMb2Fk
ZXI6OlN1YmZyYW1lTG9hZGVyOjpsb2FkUGx1Z2luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBs
dWdpbkVsZW1lCiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgcGx1Z2luRWxlbWVudC5zdWJmcmFtZUxvYWRlcldpbGxDcmVhdGVQbHVnSW4odXJsKTsKLQog
ICAgIEludFNpemUgY29udGVudFNpemUgPSByb3VuZGVkSW50U2l6ZShMYXlvdXRTaXplKHJlbmRl
cmVyLT5jb250ZW50V2lkdGgoKSwgcmVuZGVyZXItPmNvbnRlbnRIZWlnaHQoKSkpOwogICAgIGJv
b2wgbG9hZE1hbnVhbGx5ID0gaXM8UGx1Z2luRG9jdW1lbnQ+KGRvY3VtZW50KSAmJiAhbV9jb250
YWluc1BsdWdpbnMgJiYgZG93bmNhc3Q8UGx1Z2luRG9jdW1lbnQ+KGRvY3VtZW50KS5zaG91bGRM
b2FkUGx1Z2luTWFudWFsbHkoKTsKIApAQCAtMzc4LDcgKzM3Niw2IEBAIGJvb2wgRnJhbWVMb2Fk
ZXI6OlN1YmZyYW1lTG9hZGVyOjpsb2FkUGx1Z2luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBs
dWdpbkVsZW1lCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBwbHVnaW5FbGVt
ZW50LnN1YmZyYW1lTG9hZGVyRGlkQ3JlYXRlUGx1Z0luKCp3aWRnZXQpOwogICAgIHJlbmRlcmVy
LT5zZXRXaWRnZXQoV1RGTW92ZSh3aWRnZXQpKTsKICAgICBtX2NvbnRhaW5zUGx1Z2lucyA9IHRy
dWU7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
CmluZGV4IGE3Y2FiMTQwMzgyY2NjZDgxMjg3OGQ2ZGFmYzZiMDdkNTlkMzJjMjQuLjlmY2VmZDZl
OWYzMzMyNGIxYzZlMjkwM2ZkNjE3ZjQwN2QzNWZjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwCkBAIC02ODQsMTAgKzY4NCw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6
OmNhblByb2Nlc3NEcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAjZW5kaWYKIAotICAgIGlmIChpczxIVE1MUGx1Z0luRWxlbWVudD4oKmRyYWdOb2Rl
KSkgewotICAgICAgICBpZiAoIWRvd25jYXN0PEhUTUxQbHVnSW5FbGVtZW50PigqZHJhZ05vZGUp
LmNhblByb2Nlc3NEcmFnKCkgJiYgIWRyYWdOb2RlLT5oYXNFZGl0YWJsZVN0eWxlKCkpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSBlbHNlIGlmICghZHJhZ05vZGUtPmhhc0VkaXRh
YmxlU3R5bGUoKSkKKyAgICBpZiAoIWRyYWdOb2RlLT5oYXNFZGl0YWJsZVN0eWxlKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX2RpZEluaXRpYXRlRHJhZyAmJiBtX2RvY3Vt
ZW50VW5kZXJNb3VzZSA9PSBtX2RyYWdJbml0aWF0b3IgJiYgcmVzdWx0LmlzU2VsZWN0ZWQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA0N2QwMzEwN2YwNGEyOTQ4ZGZlOTc4MmIz
MzAwNTlhODhkMWM1MzJhLi5iMWNjMjI3ZWQ0OGExMDBlYjkzYjlhYTM4OWRjODQ1MjdmMWQ2YWU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xMzQ1LDEzICsxMzQ1LDkgQEAgdm9p
ZCBGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2JqZWN0VG9VcGRhdGUoUmVuZGVyRW1iZWRkZWRPYmpl
Y3QmIGVtYmVkZGVkT2JqZWN0KQogICAgIGlmICghbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZSkK
ICAgICAgICAgbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZSA9IG1ha2VVbmlxdWU8TGlzdEhhc2hT
ZXQ8UmVuZGVyRW1iZWRkZWRPYmplY3QqPj4oKTsKIAotICAgIEhUTUxGcmFtZU93bmVyRWxlbWVu
dCYgZWxlbWVudCA9IGVtYmVkZGVkT2JqZWN0LmZyYW1lT3duZXJFbGVtZW50KCk7Ci0gICAgaWYg
KGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MRW1iZWRFbGVtZW50Pihl
bGVtZW50KSkgewotICAgICAgICAvLyBUZWxsIHRoZSBET00gZWxlbWVudCB0aGF0IGl0IG5lZWRz
IGEgd2lkZ2V0IHVwZGF0ZS4KLSAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgcGx1Z2lu
RWxlbWVudCA9IGRvd25jYXN0PEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+KGVsZW1lbnQpOwotICAg
ICAgICBpZiAoIXBsdWdpbkVsZW1lbnQubmVlZHNDaGVja0ZvclNpemVDaGFuZ2UoKSkKLSAgICAg
ICAgICAgIHBsdWdpbkVsZW1lbnQuc2V0TmVlZHNXaWRnZXRVcGRhdGUodHJ1ZSk7Ci0gICAgfQor
ICAgIGF1dG8mIGVsZW1lbnQgPSBlbWJlZGRlZE9iamVjdC5mcmFtZU93bmVyRWxlbWVudCgpOwor
ICAgIGlmIChpczxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PihlbGVtZW50KSkKKyAgICAgICAgZG93
bmNhc3Q8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4oZWxlbWVudCkuc2V0TmVlZHNXaWRnZXRVcGRh
dGUodHJ1ZSk7CiAKICAgICBtX2VtYmVkZGVkT2JqZWN0c1RvVXBkYXRlLT5hZGQoJmVtYmVkZGVk
T2JqZWN0KTsKIH0KQEAgLTMyMzgsMjYgKzMyMzQsMTIgQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0
ZUVtYmVkZGVkT2JqZWN0KFJlbmRlckVtYmVkZGVkT2JqZWN0JiBlbWJlZGRlZE9iamVjdCkKICAg
ICBpZiAoZW1iZWRkZWRPYmplY3QuaXNQbHVnaW5VbmF2YWlsYWJsZSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQmIGVsZW1lbnQgPSBlbWJlZGRlZE9iamVj
dC5mcmFtZU93bmVyRWxlbWVudCgpOwotCi0gICAgaWYgKGVtYmVkZGVkT2JqZWN0LmlzU25hcHNo
b3R0ZWRQbHVnSW4oKSkgewotICAgICAgICBpZiAoaXM8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1l
bnQpIHx8IGlzPEhUTUxFbWJlZEVsZW1lbnQ+KGVsZW1lbnQpKSB7Ci0gICAgICAgICAgICBIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50JiBwbHVnaW5FbGVtZW50ID0gZG93bmNhc3Q8SFRNTFBsdWdJbklt
YWdlRWxlbWVudD4oZWxlbWVudCk7Ci0gICAgICAgICAgICBwbHVnaW5FbGVtZW50LmNoZWNrU25h
cHNob3RTdGF0dXMoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGF1
dG8mIGVsZW1lbnQgPSBlbWJlZGRlZE9iamVjdC5mcmFtZU93bmVyRWxlbWVudCgpOwogCiAgICAg
YXV0byB3ZWFrUmVuZGVyZXIgPSBtYWtlV2Vha1B0cihlbWJlZGRlZE9iamVjdCk7CiAKLSAgICAv
LyBGSVhNRTogVGhpcyBjb3VsZCB0dXJuIGludG8gYSByZWFsIHZpcnR1YWwgZGlzcGF0Y2ggaWYg
d2UgZGVmaW5lZAotICAgIC8vIHVwZGF0ZVdpZGdldChQbHVnaW5DcmVhdGlvbk9wdGlvbikgb24g
SFRNTEVsZW1lbnQuCiAgICAgaWYgKGlzPEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+KGVsZW1lbnQp
KSB7Ci0gICAgICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBsdWdpbkVsZW1lbnQgPSBkb3du
Y2FzdDxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PihlbGVtZW50KTsKLSAgICAgICAgaWYgKHBsdWdp
bkVsZW1lbnQubmVlZHNDaGVja0ZvclNpemVDaGFuZ2UoKSkgewotICAgICAgICAgICAgcGx1Z2lu
RWxlbWVudC5jaGVja1NuYXBzaG90U3RhdHVzKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KKyAgICAgICAgYXV0byYgcGx1Z2luRWxlbWVudCA9IGRvd25jYXN0PEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ+KGVsZW1lbnQpOwogICAgICAgICBpZiAocGx1Z2luRWxlbWVudC5uZWVkc1dp
ZGdldFVwZGF0ZSgpKQogICAgICAgICAgICAgcGx1Z2luRWxlbWVudC51cGRhdGVXaWRnZXQoQ3Jl
YXRlUGx1Z2luczo6WWVzKTsKICAgICB9IGVsc2UKQEAgLTMyODQsNyArMzI2Niw3IEBAIGJvb2wg
RnJhbWVWaWV3Ojp1cGRhdGVFbWJlZGRlZE9iamVjdHMoKQogICAgIG1fZW1iZWRkZWRPYmplY3Rz
VG9VcGRhdGUtPmFkZChudWxscHRyKTsKIAogICAgIHdoaWxlICghbV9lbWJlZGRlZE9iamVjdHNU
b1VwZGF0ZS0+aXNFbXB0eSgpKSB7Ci0gICAgICAgIFJlbmRlckVtYmVkZGVkT2JqZWN0KiBlbWJl
ZGRlZE9iamVjdCA9IG1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGUtPnRha2VGaXJzdCgpOworICAg
ICAgICBhdXRvIGVtYmVkZGVkT2JqZWN0ID0gbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZS0+dGFr
ZUZpcnN0KCk7CiAgICAgICAgIGlmICghZW1iZWRkZWRPYmplY3QpCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgdXBkYXRlRW1iZWRkZWRPYmplY3QoKmVtYmVkZGVkT2JqZWN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCmluZGV4IGY5NDJiNGI0ZTcwMjI1OTFmMTI1MTlmODlhYjcyZTc0ODRjMWU1NTku
LjViMWQ5ZTY1NWY0MmJhOWQyNWQ0MjhiMDU4NTQwMDY2YjU3NWQ1YTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcApAQCAtOTEsNyArOTEsNiBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJhdGVnaWVzLmgiCi0jaW5jbHVkZSAiUGx1Z0luQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2lu
RGF0YS5oIgogI2luY2x1ZGUgIlBsdWdpbkluZm9Qcm92aWRlci5oIgogI2luY2x1ZGUgIlBsdWdp
blZpZXdCYXNlLmgiCkBAIC0yNDMsNyArMjQyLDYgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJh
dGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQogICAgICwgbV9iYWNrRm9yd2FyZENvbnRyb2xsZXIo
bWFrZVVuaXF1ZTxCYWNrRm9yd2FyZENvbnRyb2xsZXI+KCp0aGlzLCBXVEZNb3ZlKHBhZ2VDb25m
aWd1cmF0aW9uLmJhY2tGb3J3YXJkQ2xpZW50KSkpCiAgICAgLCBtX21haW5GcmFtZShGcmFtZTo6
Y3JlYXRlKHRoaXMsIG51bGxwdHIsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xp
ZW50Rm9yTWFpbkZyYW1lKSkpCiAgICAgLCBtX2VkaXRvckNsaWVudChXVEZNb3ZlKHBhZ2VDb25m
aWd1cmF0aW9uLmVkaXRvckNsaWVudCkpCi0gICAgLCBtX3BsdWdJbkNsaWVudChXVEZNb3ZlKHBh
Z2VDb25maWd1cmF0aW9uLnBsdWdJbkNsaWVudCkpCiAgICAgLCBtX3ZhbGlkYXRpb25NZXNzYWdl
Q2xpZW50KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQp
KQogICAgICwgbV9kaWFnbm9zdGljTG9nZ2luZ0NsaWVudChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0
aW9uLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KSkKICAgICAsIG1fcGVyZm9ybWFuY2VMb2dnaW5n
Q2xpZW50KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24ucGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKaW5kZXggMTAzNmFmYThjYjk4ZDY3OGNjNjA3NDQ2Yzg5NTZiMzliYTZk
MjNlZi4uOTE1MjE0YTcxMjAxOWM3OTk1MWU2OTVlMzk3NzJiZTZkNzRhMTUwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKQEAgLTEyMiw3ICsxMjIsNiBAQCBjbGFzcyBQYXltZW50Q29vcmRpbmF0b3I7CiBjbGFz
cyBQZXJmb3JtYW5jZUxvZ2dpbmc7CiBjbGFzcyBQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQ7CiBj
bGFzcyBQZXJmb3JtYW5jZU1vbml0b3I7Ci1jbGFzcyBQbHVnSW5DbGllbnQ7CiBjbGFzcyBQbHVn
aW5EYXRhOwogY2xhc3MgUGx1Z2luSW5mb1Byb3ZpZGVyOwogY2xhc3MgUGx1Z2luVmlld0Jhc2U7
CkBAIC0yNTcsNyArMjU2LDYgQEAgcHVibGljOgogICAgIGJvb2wgY2FuU3RhcnRNZWRpYSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FuU3RhcnRNZWRpYTsgfQogCiAgICAgRWRpdG9yQ2xpZW50JiBlZGl0
b3JDbGllbnQoKSB7IHJldHVybiBtX2VkaXRvckNsaWVudC5nZXQoKTsgfQotICAgIFBsdWdJbkNs
aWVudCogcGx1Z0luQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9wbHVnSW5DbGllbnQuZ2V0KCk7
IH0KIAogICAgIEZyYW1lJiBtYWluRnJhbWUoKSB7IHJldHVybiBtX21haW5GcmFtZS5nZXQoKTsg
fQogICAgIGNvbnN0IEZyYW1lJiBtYWluRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX21haW5GcmFt
ZS5nZXQoKTsgfQpAQCAtOTAwLDcgKzg5OCw2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFBsdWdp
bkRhdGE+IG1fcGx1Z2luRGF0YTsKIAogICAgIFVuaXF1ZVJlZjxFZGl0b3JDbGllbnQ+IG1fZWRp
dG9yQ2xpZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxQbHVnSW5DbGllbnQ+IG1fcGx1Z0luQ2xp
ZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxWYWxpZGF0aW9uTWVzc2FnZUNsaWVudD4gbV92YWxp
ZGF0aW9uTWVzc2FnZUNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQ+IG1fZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudD4gbV9wZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IDRhMDViZTI0Yzdm
Yzk2NmVjMDAwMjc4YmU3ZWJlMWJlZTYzYzRlODIuLjk1YTk4NGFjYjU1OGJlM2I5ZDg1MjE4ZWUy
ODkxZmI3N2NkNGRhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZp
Z3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24u
Y3BwCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKICNp
bmNsdWRlICJNZWRpYVJlY29yZGVyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJQZXJmb3JtYW5jZUxv
Z2dpbmdDbGllbnQuaCIKLSNpbmNsdWRlICJQbHVnSW5DbGllbnQuaCIKICNpbmNsdWRlICJQbHVn
aW5JbmZvUHJvdmlkZXIuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaCIKICNp
bmNsdWRlICJTb2NrZXRQcm92aWRlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJh
dGlvbi5oCmluZGV4IDljNDczMzEwOTVhODg5YjgwMDM0OGEzYWE0MGEyYjFhMTViYzAzNTIuLmYw
NTRmY2IzNjc1MWJiZWFlZjRiZjhiMTJjNDdmMjBmNTMwYzEzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VDb25maWd1cmF0aW9uLmgKQEAgLTU4LDcgKzU4LDYgQEAgY2xhc3MgTGliV2ViUlRD
UHJvdmlkZXI7CiBjbGFzcyBNZWRpYVJlY29yZGVyUHJvdmlkZXI7CiBjbGFzcyBQYXltZW50Q29v
cmRpbmF0b3JDbGllbnQ7CiBjbGFzcyBQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQ7Ci1jbGFzcyBQ
bHVnSW5DbGllbnQ7CiBjbGFzcyBQbHVnaW5JbmZvUHJvdmlkZXI7CiBjbGFzcyBQcm9ncmVzc1Ry
YWNrZXJDbGllbnQ7CiBjbGFzcyBTb2NrZXRQcm92aWRlcjsKQEAgLTEwMiw3ICsxMDEsNiBAQCBw
dWJsaWM6CiAKICAgICBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+IGxpYldlYlJUQ1Byb3Zp
ZGVyOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFBsdWdJbkNsaWVudD4gcGx1Z0luQ2xpZW50Owog
ICAgIFVuaXF1ZVJlZjxQcm9ncmVzc1RyYWNrZXJDbGllbnQ+IHByb2dyZXNzVHJhY2tlckNsaWVu
dDsKICAgICBSZWY8QmFja0ZvcndhcmRDbGllbnQ+IGJhY2tGb3J3YXJkQ2xpZW50OwogICAgIFJl
ZjxDb29raWVKYXI+IGNvb2tpZUphcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGx1Z0luQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdJbkNsaWVudC5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWQwMDc4NTg2NmY3NjM3N2MxZDc3NWE3MTViNWJh
NjMzNjVkMDBmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z0luQ2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSwz
OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFBsdWdJbkNsaWVudCB7Ci1w
dWJsaWM6Ci0gICAgdmlydHVhbCB+UGx1Z0luQ2xpZW50KCkgPSBkZWZhdWx0OwotICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRBdXRvU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdp
biwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFn
ZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MueWFtbAppbmRleCA3ZGZiYmY3NmQ5MThmZjU2ZjAyY2I2MmMxZDcxYjYxNDdhM2I3Njg4Li45
ZDY4YTMwY2E5YjcwNDNjNDQ3NmZlMTE3MWYyZWNhMzE4MjFhZTE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy55YW1sCkBAIC0zNzksMTIgKzM3OSw2IEBAIE1heGltdW1IVE1MUGFyc2VyRE9NVHJl
ZURlcHRoOgogICAgIFdlYkNvcmU6CiAgICAgICBkZWZhdWx0OiBkZWZhdWx0TWF4aW11bUhUTUxQ
YXJzZXJET01UcmVlRGVwdGgKIAotTWF4aW11bVBsdWdJblNuYXBzaG90QXR0ZW1wdHM6Ci0gIHR5
cGU6IHVpbnQzMl90Ci0gIGRlZmF1bHRWYWx1ZToKLSAgICBXZWJDb3JlOgotICAgICAgZGVmYXVs
dDogMjAKLQogTWF4aW11bVNvdXJjZUJ1ZmZlclNpemU6CiAgIGNvbW1lbnQ6ID4tCiAgICAgQWxs
b3cgU291cmNlQnVmZmVycyB0byBzdG9yZSB1cCB0byAzMDRNQiBlYWNoLCBlbm91Z2ggZm9yIGFw
cHJveGltYXRlbHkgZml2ZSBtaW51dGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9UaGVtZVR5cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMu
Y3BwCmluZGV4IDRkNDZkOTg0Y2RlYzQzMzViMmE1Nzg4ZWQ3Mjg3ZTU4ZmIzNDBjYTguLmNkYjJi
MTJiYjkzZTZlYTZkYmFiMDE4MGQ4ODEwZDAzNjk3MzM0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RoZW1lVHlwZXMuY3BwCkBAIC04NSw3ICs4NSw2IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIENvbnRyb2xQYXJ0IGNvbnRyb2xQYXJ0KQogICAgIGNhc2UgU2Vh
cmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQ6IHRzIDw8ICJzZWFyY2gtZmllbGQtcmVzdWx0
cy1kZWNvcmF0aW9uLXBhcnQiOyBicmVhazsKICAgICBjYXNlIFNlYXJjaEZpZWxkUmVzdWx0c0J1
dHRvblBhcnQ6IHRzIDw8ICJzZWFyY2gtZmllbGQtcmVzdWx0cy1idXR0b24tcGFydCI7IGJyZWFr
OwogICAgIGNhc2UgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25QYXJ0OiB0cyA8PCAic2VhcmNoLWZp
ZWxkLWNhbmNlbC1idXR0b24tcGFydCI7IGJyZWFrOwotICAgIGNhc2UgU25hcHNob3R0ZWRQbHVn
aW5PdmVybGF5UGFydDogdHMgPDwgInNuYXBzaG90dGVkLXBsdWdpbi1vdmVybGF5LXBhcnQiOyBi
cmVhazsKICAgICBjYXNlIFRleHRGaWVsZFBhcnQ6IHRzIDw8ICJ0ZXh0LWZpZWxkLXBhcnQiOyBi
cmVhazsKICAgICBjYXNlIFJlbGV2YW5jeUxldmVsSW5kaWNhdG9yUGFydDogdHMgPDwgInJlbGV2
YW5jeS1sZXZlbC1pbmRpY2F0b3ItcGFydCI7IGJyZWFrOwogICAgIGNhc2UgQ29udGludW91c0Nh
cGFjaXR5TGV2ZWxJbmRpY2F0b3JQYXJ0OiB0cyA8PCAiY29udGludW91cy1jYXBhY2l0eS1sZXZl
bC1pbmRpY2F0b3ItcGFydCI7IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVGhlbWVUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWVUeXBlcy5o
CmluZGV4IDNkNWEyYjMxNDk1OTRjYTM5ZWY5MDMyODczY2Q5Y2I1MzhhZGMxM2IuLmMyODc1ZTNi
NGFmYmNkODMzOTJmMzA0NjZlMDdiYjI2OWI2ODRjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
aGVtZVR5cGVzLmgKQEAgLTg1LDcgKzg1LDYgQEAgZW51bSBDb250cm9sUGFydCB7CiAgICAgU2Vh
cmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQsCiAgICAgU2VhcmNoRmllbGRSZXN1bHRzQnV0
dG9uUGFydCwKICAgICBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblBhcnQsCi0gICAgU25hcHNob3R0
ZWRQbHVnaW5PdmVybGF5UGFydCwKICAgICBUZXh0RmllbGRQYXJ0LAogICAgIFJlbGV2YW5jeUxl
dmVsSW5kaWNhdG9yUGFydCwKICAgICBDb250aW51b3VzQ2FwYWNpdHlMZXZlbEluZGljYXRvclBh
cnQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdCYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdCYXNlLmgKaW5kZXggMWIyMWYwNDQ3
Zjc3YjI0OTEwOGMyOTBiNzU0NjRkODgwMGE5ZGY1Yi4uZTY0ODNiMDgzOTZhMTU2NzVlYzNjZmVi
MjBiMWJmMjQ2MTk0Mzk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5WaWV3QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld0Jhc2Uu
aApAQCAtNjksMTAgKzY5LDYgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgaGFj
ayB0aGF0IHdvcmtzIGFyb3VuZCB0aGUgZmFjdCB0aGF0IHRoZSBXZWJLaXQyIFBsdWdpblZpZXcg
aXNuJ3QgYSBTY3JvbGxhYmxlQXJlYS4KICAgICB2aXJ0dWFsIGJvb2wgd2FudHNXaGVlbEV2ZW50
cygpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzS2V5Ym9hcmRG
b2N1cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGNhblByb2Nl
c3NEcmFnKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRBbHdheXNBdXRvU3RhcnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
dm9pZCBiZWdpblNuYXBzaG90dGluZ1J1bm5pbmdQbHVnaW4oKSB7IH0KIAogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRBbGxvd05hdmlnYXRpb25Gcm9tRHJhZ3MoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5oCmluZGV4IDBkODdiMmFjNWUzYmRkYmRhZmNjZjhjODgwNjUwNjI4NmFkZGRjMjEuLjRlNWFi
YTZkMDQ3MzUyMjNlY2M2YzYzMjBmNjU3NzVlMzdmNjVjMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0yOTcsNyArMjk3LDcgQEAg
cHVibGljOgogICAgIENvbnRpbnVhdGlvbkNoYWluTm9kZSogY29udGludWF0aW9uQ2hhaW5Ob2Rl
KCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICBMYXlvdXRVbml0IGNvbXB1dGVkQ1NTUGFkZGlu
Zyhjb25zdCBMZW5ndGgmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBMYXlvdXRVbml0IGNv
bXB1dGVkQ1NTUGFkZGluZyhjb25zdCBMZW5ndGgmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQg
YWJzb2x1dGVRdWFkc0lnbm9yaW5nQ29udGludWF0aW9uKGNvbnN0IEZsb2F0UmVjdCYsIFZlY3Rv
cjxGbG9hdFF1YWQ+JiwgYm9vbCogLyp3YXNGaXhlZCovKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CiAgICAgdm9pZCBjb2xsZWN0QWJzb2x1dGVRdWFkc0ZvckNvbnRpbnVhdGlvbihW
ZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKaW5kZXgg
MDI4N2MxZTQ4ZDg1Y2JhZTU4M2NlMWExMzIxZGU0MDUxOThiZmFlZi4uZTFjZDAyNDlhZDcwYzZi
ZjRiNjBmODBmZjEyYWMyYzU1N2RmZWM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCkBAIC0xNzcsNDcgKzE3Nyw2IEBAIHZvaWQg
UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnNldFVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9ySXNQcmVz
c2VkKGJvb2wgcHJlc3NlZCkKICAgICByZXBhaW50KCk7CiB9CiAKLXZvaWQgUmVuZGVyRW1iZWRk
ZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBJbWFnZSYgaW1hZ2UpCi17Ci0gICAgTGF5b3V0VW5p
dCBjV2lkdGggPSBjb250ZW50V2lkdGgoKTsKLSAgICBMYXlvdXRVbml0IGNIZWlnaHQgPSBjb250
ZW50SGVpZ2h0KCk7Ci0gICAgaWYgKCFjV2lkdGggfHwgIWNIZWlnaHQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7
Ci0gICAgTGF5b3V0U2l6ZSBjb250ZW50U2l6ZShjV2lkdGgsIGNIZWlnaHQpOwotICAgIExheW91
dFBvaW50IGNvbnRlbnRMb2NhdGlvbiA9IGxvY2F0aW9uKCkgKyBwYWludE9mZnNldDsKLSAgICBj
b250ZW50TG9jYXRpb24ubW92ZShib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBib3JkZXJU
b3AoKSArIHBhZGRpbmdUb3AoKSk7Ci0KLSAgICBMYXlvdXRSZWN0IHJlY3QoY29udGVudExvY2F0
aW9uLCBjb250ZW50U2l6ZSk7Ci0gICAgSW50UmVjdCBhbGlnbmVkUmVjdCA9IHNuYXBwZWRJbnRS
ZWN0KHJlY3QpOwotICAgIGlmIChhbGlnbmVkUmVjdC53aWR0aCgpIDw9IDAgfHwgYWxpZ25lZFJl
Y3QuaGVpZ2h0KCkgPD0gMCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgSW50ZXJwb2xhdGlvblF1
YWxpdHkgaW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQs
IGltYWdlLCAmaW1hZ2UsIGFsaWduZWRSZWN0LnNpemUoKSk7Ci0gICAgY29udGV4dC5kcmF3SW1h
Z2UoaW1hZ2UsIGFsaWduZWRSZWN0LCB7IGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xhdGlv
biB9KTsKLX0KLQotdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRDb250ZW50cyhQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQotewotICAg
IGlmICghaXM8SFRNTFBsdWdJbkVsZW1lbnQ+KGZyYW1lT3duZXJFbGVtZW50KCkpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z0luRWxlbWVudCA9IGRvd25j
YXN0PEhUTUxQbHVnSW5FbGVtZW50PihmcmFtZU93bmVyRWxlbWVudCgpKTsKLQotICAgIGlmIChw
bHVnSW5FbGVtZW50LmRpc3BsYXlTdGF0ZSgpID4gSFRNTFBsdWdJbkVsZW1lbnQ6OkRpc3BsYXlp
bmdTbmFwc2hvdCkgewotICAgICAgICBSZW5kZXJXaWRnZXQ6OnBhaW50Q29udGVudHMocGFpbnRJ
bmZvLCBwYWludE9mZnNldCk7Ci0gICAgICAgIGlmICghcGx1Z0luRWxlbWVudC5pc1Jlc3RhcnRl
ZFBsdWdpbigpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXM8SFRN
TFBsdWdJbkltYWdlRWxlbWVudD4ocGx1Z0luRWxlbWVudCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChJbWFnZSogc25hcHNob3QgPSBkb3duY2FzdDxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
PihwbHVnSW5FbGVtZW50KS5zbmFwc2hvdEltYWdlKCkpCi0gICAgICAgIHBhaW50U25hcHNob3RJ
bWFnZShwYWludEluZm8sIHBhaW50T2Zmc2V0LCAqc25hcHNob3QpOwotfQotCiB2b2lkIFJlbmRl
ckVtYmVkZGVkT2JqZWN0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0KQogewogICAgIC8vIFRoZSByZWxldmFudCByZXBhaW50ZWQgb2Jq
ZWN0IGhldXJpc3RpYyBpcyBub3QgdHVuZWQgZm9yIHBsdWdpbiBkb2N1bWVudHMuCkBAIC0zODAs
OCArMzM5LDYgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6bGF5b3V0KCkKICAgICBTdGFj
a1N0YXRzOjpMYXlvdXRDaGVja1BvaW50IGxheW91dENoZWNrUG9pbnQ7CiAgICAgQVNTRVJUKG5l
ZWRzTGF5b3V0KCkpOwogCi0gICAgTGF5b3V0U2l6ZSBvbGRTaXplID0gY29udGVudEJveFJlY3Qo
KS5zaXplKCk7Ci0KICAgICB1cGRhdGVMb2dpY2FsV2lkdGgoKTsKICAgICB1cGRhdGVMb2dpY2Fs
SGVpZ2h0KCk7CiAKQEAgLTM5Miw1MiArMzQ5LDEwIEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmpl
Y3Q6OmxheW91dCgpCiAKICAgICB1cGRhdGVMYXllclRyYW5zZm9ybSgpOwogCi0gICAgYm9vbCB3
YXNNaXNzaW5nV2lkZ2V0ID0gZmFsc2U7Ci0gICAgaWYgKCF3aWRnZXQoKSAmJiBjYW5IYXZlV2lk
Z2V0KCkpIHsKLSAgICAgICAgd2FzTWlzc2luZ1dpZGdldCA9IHRydWU7CisgICAgaWYgKCF3aWRn
ZXQoKSkKICAgICAgICAgdmlldygpLmZyYW1lVmlldygpLmFkZEVtYmVkZGVkT2JqZWN0VG9VcGRh
dGUoKnRoaXMpOwotICAgIH0KIAogICAgIGNsZWFyTmVlZHNMYXlvdXQoKTsKLQotICAgIExheW91
dFNpemUgbmV3U2l6ZSA9IGNvbnRlbnRCb3hSZWN0KCkuc2l6ZSgpOwotCi0gICAgaWYgKCF3YXNN
aXNzaW5nV2lkZ2V0ICYmIG5ld1NpemUud2lkdGgoKSA+PSBvbGRTaXplLndpZHRoKCkgJiYgbmV3
U2l6ZS5oZWlnaHQoKSA+PSBvbGRTaXplLmhlaWdodCgpKSB7Ci0gICAgICAgIEhUTUxGcmFtZU93
bmVyRWxlbWVudCYgZWxlbWVudCA9IGZyYW1lT3duZXJFbGVtZW50KCk7Ci0gICAgICAgIGlmIChp
czxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PihlbGVtZW50KSkgewotICAgICAgICAgICAgSFRNTFBs
dWdJbkltYWdlRWxlbWVudCYgcGx1Z0luSW1hZ2VFbGVtZW50ID0gZG93bmNhc3Q8SFRNTFBsdWdJ
bkltYWdlRWxlbWVudD4oZWxlbWVudCk7Ci0gICAgICAgICAgICBpZiAocGx1Z0luSW1hZ2VFbGVt
ZW50LmRpc3BsYXlTdGF0ZSgpID4gSFRNTFBsdWdJbkVsZW1lbnQ6OkRpc3BsYXlpbmdTbmFwc2hv
dCAmJiBwbHVnSW5JbWFnZUVsZW1lbnQuc25hcHNob3REZWNpc2lvbigpID09IEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ6Ok1heVNuYXBzaG90V2hlblJlc2l6ZWQpIHsKLSAgICAgICAgICAgICAgICBw
bHVnSW5JbWFnZUVsZW1lbnQuc2V0TmVlZHNDaGVja0ZvclNpemVDaGFuZ2UoKTsKLSAgICAgICAg
ICAgICAgICB2aWV3KCkuZnJhbWVWaWV3KCkuYWRkRW1iZWRkZWRPYmplY3RUb1VwZGF0ZSgqdGhp
cyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoIWNhbkhhdmVD
aGlsZHJlbigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBUaGlzIGNvZGUgY29waWVkIGZy
b20gUmVuZGVyTWVkaWE6OmxheW91dCgpLgotICAgIFJlbmRlck9iamVjdCogY2hpbGQgPSBmaXJz
dENoaWxkKCk7Ci0KLSAgICBpZiAoIWNoaWxkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRv
JiBjaGlsZEJveCA9IGRvd25jYXN0PFJlbmRlckJveD4oKmNoaWxkKTsKLQotICAgIGlmIChuZXdT
aXplID09IG9sZFNpemUgJiYgIWNoaWxkQm94Lm5lZWRzTGF5b3V0KCkpCi0gICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICAvLyBXaGVuIGNhbGxpbmcgbGF5b3V0KCkgb24gYSBjaGlsZCBub2RlLCBh
IHBhcmVudCBtdXN0IGVpdGhlciBwdXNoIGEgTGF5b3V0U3RhdGVNYWludGFpbnRlciwgb3IKLSAg
ICAvLyBpbnN0YW50aWF0ZSBMYXlvdXRTdGF0ZURpc2FibGVyLiBTaW5jZSB1c2luZyBhIExheW91
dFN0YXRlTWFpbnRhaW5lciBpcyBzbGlnaHRseSBtb3JlIGVmZmljaWVudCwKLSAgICAvLyBhbmQg
dGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgbWFueSB0aW1lcyBwZXIgc2Vjb25kIGR1cmluZyBw
bGF5YmFjaywgdXNlIGEgTGF5b3V0U3RhdGVNYWludGFpbmVyOgotICAgIExheW91dFN0YXRlTWFp
bnRhaW5lciBzdGF0ZVB1c2hlcigqdGhpcywgbG9jYXRpb25PZmZzZXQoKSwgaGFzVHJhbnNmb3Jt
KCkgfHwgaGFzUmVmbGVjdGlvbigpIHx8IHN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01v
ZGUoKSk7Ci0gICAgCi0gICAgY2hpbGRCb3guc2V0TG9jYXRpb24oTGF5b3V0UG9pbnQoYm9yZGVy
TGVmdCgpLCBib3JkZXJUb3AoKSkgKyBMYXlvdXRTaXplKHBhZGRpbmdMZWZ0KCksIHBhZGRpbmdU
b3AoKSkpOwotICAgIGNoaWxkQm94Lm11dGFibGVTdHlsZSgpLnNldEhlaWdodChMZW5ndGgobmV3
U2l6ZS5oZWlnaHQoKSwgRml4ZWQpKTsKLSAgICBjaGlsZEJveC5tdXRhYmxlU3R5bGUoKS5zZXRX
aWR0aChMZW5ndGgobmV3U2l6ZS53aWR0aCgpLCBGaXhlZCkpOwotICAgIGNoaWxkQm94LnNldE5l
ZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7Ci0gICAgY2hpbGRCb3gubGF5b3V0KCk7Ci0gICAgY2xl
YXJDaGlsZE5lZWRzTGF5b3V0KCk7CiB9CiAKIGJvb2wgUmVuZGVyRW1iZWRkZWRPYmplY3Q6Om5v
ZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiBy
ZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3Qg
TGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rp
b24pCkBAIC00ODIsNyArMzk3LDYgQEAgYm9vbCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6bG9naWNh
bFNjcm9sbChTY3JvbGxMb2dpY2FsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2wKICAgICByZXR1
cm4gc2Nyb2xsKGxvZ2ljYWxUb1BoeXNpY2FsKGRpcmVjdGlvbiwgdHJ1ZSwgZmFsc2UpLCBncmFu
dWxhcml0eSwgbXVsdGlwbGllciwgc3RvcEVsZW1lbnQpOwogfQogCi0KIGJvb2wgUmVuZGVyRW1i
ZWRkZWRPYmplY3Q6OmlzSW5VbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcihjb25zdCBGbG9hdFBv
aW50JiBwb2ludCkgY29uc3QKIHsKICAgICByZXR1cm4gZ2V0UmVwbGFjZW1lbnRUZXh0R2VvbWV0
cnkoTGF5b3V0UG9pbnQoKSkuY29udGFpbnMoTGF5b3V0UG9pbnQocG9pbnQpKTsKQEAgLTU0Mywx
MiArNDU3LDQgQEAgQ3Vyc29yRGlyZWN0aXZlIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpnZXRDdXJz
b3IoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBDdXJzb3IKICAgICByZXR1cm4gUmVuZGVyV2lk
Z2V0OjpnZXRDdXJzb3IocG9pbnQsIGN1cnNvcik7CiB9CiAKLWJvb2wgUmVuZGVyRW1iZWRkZWRP
YmplY3Q6OmNhbkhhdmVDaGlsZHJlbigpIGNvbnN0Ci17Ci0gICAgaWYgKGlzU25hcHNob3R0ZWRQ
bHVnSW4oKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9i
amVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgK
aW5kZXggOWEwMWM0OTQ3MThmNWYzZDVjM2RhNDkxM2U2YWYzNDI5OWE4ZWVjNC4uZWI2YmQ0MzYy
MWRiMmUwNmMxY2FkYWFkNzM2Y2NiZTM2Yjg5NGFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3Mg
VGV4dFJ1bjsKIAogLy8gUmVuZGVyZXIgZm9yIGVtYmVkcyBhbmQgb2JqZWN0cywgb2Z0ZW4sIGJ1
dCBub3QgYWx3YXlzLCByZW5kZXJlZCB2aWEgcGx1Zy1pbnMuCiAvLyBGb3IgZXhhbXBsZSwgPGVt
YmVkIHNyYz0iZm9vLmh0bWwiPiBkb2VzIG5vdCBpbnZva2UgYSBwbHVnLWluLgotY2xhc3MgUmVu
ZGVyRW1iZWRkZWRPYmplY3QgOiBwdWJsaWMgUmVuZGVyV2lkZ2V0IHsKK2NsYXNzIFJlbmRlckVt
YmVkZGVkT2JqZWN0IGZpbmFsIDogcHVibGljIFJlbmRlcldpZGdldCB7CiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChSZW5kZXJFbWJlZGRlZE9iamVjdCk7CiBwdWJsaWM6CiAgICAgUmVuZGVy
RW1iZWRkZWRPYmplY3QoSFRNTEZyYW1lT3duZXJFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CkBA
IC02MSwyMyArNjEsMTkgQEAgcHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiBwbHVnaW5SZXBs
YWNlbWVudFRleHRJZlVuYXZhaWxhYmxlKCkgY29uc3QgeyByZXR1cm4gbV91bmF2YWlsYWJsZVBs
dWdpblJlcGxhY2VtZW50VGV4dDsgfQogCi1wcm90ZWN0ZWQ6Citwcml2YXRlOgogICAgIHZvaWQg
cGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIGZpbmFsOwotICAg
IHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgZmluYWw7CiAKLSAg
ICBDdXJzb3JEaXJlY3RpdmUgZ2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiwgQ3Vyc29yJikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgQ3Vyc29yRGlyZWN0aXZlIGdldEN1cnNvcihjb25zdCBMYXlv
dXRQb2ludCYsIEN1cnNvciYpIGNvbnN0IGZpbmFsOwogCi1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBs
YXlvdXQoKSBvdmVycmlkZTsKLSAgICB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgbGF5b3V0KCkgZmluYWw7CisgICAgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBmaW5h
bDsKIAotcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIlJlbmRlckVtYmVkZGVkT2JqZWN0IjsgfQorICAgIGNvbnN0IGNoYXIqIHJl
bmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyRW1iZWRkZWRPYmplY3QiOyB9
CiAgICAgYm9vbCBpc0VtYmVkZGVkT2JqZWN0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQogCiAgICAgYm9vbCBzaG93c1VuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yKCkgY29uc3QgeyBy
ZXR1cm4gaXNQbHVnaW5VbmF2YWlsYWJsZSgpICYmIG1faXNVbmF2YWlsYWJsZVBsdWdpbkluZGlj
YXRvclN0YXRlICE9IFVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yU3RhdGU6OkhpZGRlbjsgfQot
ICAgIHZvaWQgcGFpbnRTbmFwc2hvdEltYWdlKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
JiwgSW1hZ2UmKTsKLSAgICB2b2lkIHBhaW50Q29udGVudHMoUGFpbnRJbmZvJiwgY29uc3QgTGF5
b3V0UG9pbnQmKSBmaW5hbDsKIAogICAgIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IGZpbmFs
OwogCkBAIC05Miw5ICs4OCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRSZXBsYWNlbWVudFRl
eHRHZW9tZXRyeShjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEZsb2F0UmVj
dCYgY29udGVudFJlY3QsIEZsb2F0UmVjdCYgaW5kaWNhdG9yUmVjdCwgRmxvYXRSZWN0JiByZXBs
YWNlbWVudFRleHRSZWN0LCBGbG9hdFJlY3QmIGFycm93UmVjdCwgRm9udENhc2NhZGUmLCBUZXh0
UnVuJiwgZmxvYXQmIHRleHRXaWR0aCkgY29uc3Q7CiAgICAgTGF5b3V0UmVjdCBnZXRSZXBsYWNl
bWVudFRleHRHZW9tZXRyeShjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNv
bnN0OwogCi0gICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBmaW5hbDsKLSAgICB2aXJ0
dWFsIGJvb2wgY2FuSGF2ZVdpZGdldCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQogICAgIGJv
b2wgbV9pc1BsdWdpblVuYXZhaWxhYmxlOwogICAgIGVudW0gY2xhc3MgVW5hdmFpbGFibGVQbHVn
aW5JbmRpY2F0b3JTdGF0ZSB7IFVuaW5pdGlhbGl6ZWQsIEhpZGRlbiwgVmlzaWJsZSB9OwogICAg
IFVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yU3RhdGUgbV9pc1VuYXZhaWxhYmxlUGx1Z2luSW5k
aWNhdG9yU3RhdGUgeyBVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvclN0YXRlOjpVbmluaXRpYWxp
emVkIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCmluZGV4IDNmMGI3OTU4ZTZjYWEyMzhkMzE1MjNkNmQ0YWI3MWE1NTQ0OGY0ZGUuLjM2MTc4
ZmNmMTg2ODJjZWQxZjg1MWE0MWIzNGRjMTc1YmRhY2QwNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0yNjM4LDE4ICsyNjM4LDYg
QEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50c0NvbnRlbnQoUmVuZGVyTGF5ZXI6OlBh
aW50ZWRDb250ZW50UmVxdWVzdCYgcmVxdWUKICAgICByZXR1cm4gcGFpbnRzQ29udGVudDsKIH0K
IAotc3RhdGljIGJvb2wgaXNSZXN0YXJ0ZWRQbHVnaW4oUmVuZGVyT2JqZWN0JiByZW5kZXJlcikK
LXsKLSAgICBpZiAoIWlzPFJlbmRlckVtYmVkZGVkT2JqZWN0PihyZW5kZXJlcikpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2FzdDxSZW5kZXJFbWJl
ZGRlZE9iamVjdD4ocmVuZGVyZXIpLmZyYW1lT3duZXJFbGVtZW50KCk7Ci0gICAgaWYgKCFpczxI
VE1MUGx1Z0luRWxlbWVudD4oZWxlbWVudCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHJldHVybiBkb3duY2FzdDxIVE1MUGx1Z0luRWxlbWVudD4oZWxlbWVudCkuaXNSZXN0YXJ0ZWRQ
bHVnaW4oKTsKLX0KLQogc3RhdGljIGJvb2wgaXNDb21wb3NpdGVkUGx1Z2luKFJlbmRlck9iamVj
dCYgcmVuZGVyZXIpCiB7CiAgICAgcmV0dXJuIGlzPFJlbmRlckVtYmVkZGVkT2JqZWN0PihyZW5k
ZXJlcikgJiYgZG93bmNhc3Q8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KHJlbmRlcmVyKS5hbGxvd3NB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nKCk7CkBAIC0yNjY2LDcgKzI2NTQsNyBAQCBib29sIFJlbmRl
ckxheWVyQmFja2luZzo6aXNTaW1wbGVDb250YWluZXJDb21wb3NpdGluZ0xheWVyKFBhaW50ZWRD
b250ZW50c0luZm8mCiAgICAgaWYgKGhhc0JhY2tpbmdTaGFyaW5nTGF5ZXJzKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGlmIChyZW5kZXJlcigpLmlzUmVuZGVyUmVwbGFjZWQoKSAm
JiAoIWlzQ29tcG9zaXRlZFBsdWdpbihyZW5kZXJlcigpKSB8fCBpc1Jlc3RhcnRlZFBsdWdpbihy
ZW5kZXJlcigpKSkpCisgICAgaWYgKHJlbmRlcmVyKCkuaXNSZW5kZXJSZXBsYWNlZCgpICYmICFp
c0NvbXBvc2l0ZWRQbHVnaW4ocmVuZGVyZXIoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGlmIChyZW5kZXJlcigpLmlzVGV4dENvbnRyb2woKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaAppbmRleCA5NTMzN2E0Y2EwMTY0MDZiNzYxMzhkMDc1ODcyMWM4ZGNj
NGNhOTc5Li5iOTE1OTIyYjIxZTk4ODMyY2NlYjUwOGEzY2Q5NzQ0OGFmNjI3YmEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC0yMTcsNyArMjE3LDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGlzTWV0ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBpc1NuYXBzaG90dGVkUGx1Z0luKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNQcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGlzUmVuZGVyQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJJRnJhbWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVk
UGx1Z0luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmZTg1ODYyNWM5MjlkODBi
ZWNhZmVhNjZmMDY0ZTM0MjE4MTI1Y2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVk
UGx1Z0luLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5MiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVuZGVyU25hcHNob3R0ZWRQbHVn
SW4uaCIKLQotI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCi0jaW5jbHVkZSAiQ3Vyc29yLmgiCi0j
aW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkZpbHRlci5oIgotI2luY2x1ZGUgIkZy
YW1lLmgiCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRlICJGcmFtZVZp
ZXcuaCIKLSNpbmNsdWRlICJHcmFkaWVudC5oIgotI2luY2x1ZGUgIkhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgotI2luY2x1ZGUgIk1vdXNlRXZlbnQu
aCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUGFpbnRJbmZvLmgiCi0jaW5jbHVkZSAi
UGF0aC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgotI2luY2x1ZGUgIlJlbmRl
ckltYWdlUmVzb3VyY2UuaCIKLSNpbmNsdWRlICJSZW5kZXJJdGVyYXRvci5oIgotI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKLSNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotI2luY2x1
ZGUgPHd0Zi9TdGFja1N0YXRzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKFJlbmRlclNuYXBzaG90dGVkUGx1Z0luKTsKLQotUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW46OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luKEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCi0gICAgOiBSZW5kZXJFbWJlZGRl
ZE9iamVjdChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKLSAgICAsIG1fc25hcHNob3RSZXNvdXJj
ZShtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCi17Ci0gICAgbV9zbmFwc2hvdFJl
c291cmNlLT5pbml0aWFsaXplKCp0aGlzKTsKLX0KLQotUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46
On5SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbigpCi17Ci0gICAgLy8gRG8gbm90IGFkZCBhbnkgY29k
ZSBoZXJlLiBBZGQgaXQgdG8gd2lsbEJlRGVzdHJveWVkKCkgaW5zdGVhZC4KLX0KLQotdm9pZCBS
ZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6d2lsbEJlRGVzdHJveWVkKCkKLXsKLSAgICBBU1NFUlQo
bV9zbmFwc2hvdFJlc291cmNlKTsKLSAgICBtX3NuYXBzaG90UmVzb3VyY2UtPnNodXRkb3duKCk7
Ci0KLSAgICBSZW5kZXJFbWJlZGRlZE9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCk7Ci19Ci0KLUhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQmIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpwbHVnSW5JbWFn
ZUVsZW1lbnQoKSBjb25zdAotewotICAgIHJldHVybiBkb3duY2FzdDxIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50PihSZW5kZXJFbWJlZGRlZE9iamVjdDo6ZnJhbWVPd25lckVsZW1lbnQoKSk7Ci19Ci0K
LXZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmxheW91dCgpCi17Ci0gICAgU3RhY2tTdGF0
czo6TGF5b3V0Q2hlY2tQb2ludCBsYXlvdXRDaGVja1BvaW50OwotICAgIExheW91dFNpemUgb2xk
U2l6ZSA9IGNvbnRlbnRCb3hSZWN0KCkuc2l6ZSgpOwotCi0gICAgUmVuZGVyRW1iZWRkZWRPYmpl
Y3Q6OmxheW91dCgpOwotCi0gICAgTGF5b3V0U2l6ZSBuZXdTaXplID0gY29udGVudEJveFJlY3Qo
KS5zaXplKCk7Ci0gICAgaWYgKG5ld1NpemUgPT0gb2xkU2l6ZSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgdmlldygpLmZyYW1lVmlldygpLmFkZEVtYmVkZGVkT2JqZWN0VG9VcGRhdGUoKnRoaXMp
OwotfQotCi12b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjp1cGRhdGVTbmFwc2hvdChJbWFn
ZSogaW1hZ2UpCi17Ci0gICAgLy8gWmVyby1zaXplIHBsdWdpbnMgd2lsbCBoYXZlIG5vIGltYWdl
LgotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc25hcHNob3RSZXNv
dXJjZS0+c2V0Q2FjaGVkSW1hZ2UobmV3IENhY2hlZEltYWdlKGltYWdlLCBwYWdlKCkuc2Vzc2lv
bklEKCksICZwYWdlKCkuY29va2llSmFyKCkpKTsKLSAgICByZXBhaW50KCk7Ci19Ci0KLXZvaWQg
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCi17Ci0gICAgaWYgKHBhaW50SW5mby5waGFzZSA9
PSBQYWludFBoYXNlOjpGb3JlZ3JvdW5kICYmIHBsdWdJbkltYWdlRWxlbWVudCgpLmRpc3BsYXlT
dGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlJlc3RhcnRpbmcpIHsKLSAgICAgICAgcGFpbnRT
bmFwc2hvdChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKLSAgICB9Ci0KLSAgICBQYWludFBoYXNl
IG5ld1BoYXNlID0gKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpDaGlsZE91dGxpbmVz
KSA/IFBhaW50UGhhc2U6Ok91dGxpbmUgOiBwYWludEluZm8ucGhhc2U7Ci0gICAgbmV3UGhhc2Ug
PSAobmV3UGhhc2UgPT0gUGFpbnRQaGFzZTo6Q2hpbGRCbG9ja0JhY2tncm91bmRzKSA/IFBhaW50
UGhhc2U6OkNoaWxkQmxvY2tCYWNrZ3JvdW5kIDogbmV3UGhhc2U7Ci0KLSAgICBQYWludEluZm8g
cGFpbnRJbmZvRm9yQ2hpbGQocGFpbnRJbmZvKTsKLSAgICBwYWludEluZm9Gb3JDaGlsZC5waGFz
ZSA9IG5ld1BoYXNlOwotICAgIHBhaW50SW5mb0ZvckNoaWxkLnVwZGF0ZVN1YnRyZWVQYWludFJv
b3RGb3JDaGlsZHJlbih0aGlzKTsKLQotICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9m
VHlwZTxSZW5kZXJCb3g+KCp0aGlzKSkgewotICAgICAgICBMYXlvdXRQb2ludCBjaGlsZFBvaW50
ID0gZmxpcEZvcldyaXRpbmdNb2RlRm9yQ2hpbGQoJmNoaWxkLCBwYWludE9mZnNldCk7Ci0gICAg
ICAgIGlmICghY2hpbGQuaGFzU2VsZlBhaW50aW5nTGF5ZXIoKSAmJiAhY2hpbGQuaXNGbG9hdGlu
ZygpKQotICAgICAgICAgICAgY2hpbGQucGFpbnQocGFpbnRJbmZvRm9yQ2hpbGQsIGNoaWxkUG9p
bnQpOwotICAgIH0KLQotICAgIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludChwYWludEluZm8s
IHBhaW50T2Zmc2V0KTsKLX0KLQotdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRT
bmFwc2hvdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0KQotewotICAgIEltYWdlKiBpbWFnZSA9IG1fc25hcHNob3RSZXNvdXJjZS0+aW1hZ2UoKS5n
ZXQoKTsKLSAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5pc051bGwoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgTGF5b3V0VW5pdCBjV2lkdGggPSBjb250ZW50V2lkdGgoKTsKLSAgICBMYXlvdXRV
bml0IGNIZWlnaHQgPSBjb250ZW50SGVpZ2h0KCk7Ci0gICAgaWYgKCFjV2lkdGggfHwgIWNIZWln
aHQpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBh
aW50SW5mby5jb250ZXh0KCk7Ci0KLSAgICBMYXlvdXRTaXplIGNvbnRlbnRTaXplKGNXaWR0aCwg
Y0hlaWdodCk7Ci0gICAgTGF5b3V0UG9pbnQgY29udGVudExvY2F0aW9uID0gbG9jYXRpb24oKSAr
IHBhaW50T2Zmc2V0OwotICAgIGNvbnRlbnRMb2NhdGlvbi5tb3ZlKGJvcmRlckxlZnQoKSArIHBh
ZGRpbmdMZWZ0KCksIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpKTsKLQotICAgIExheW91dFJl
Y3QgcmVjdChjb250ZW50TG9jYXRpb24sIGNvbnRlbnRTaXplKTsKLSAgICBJbnRSZWN0IGFsaWdu
ZWRSZWN0ID0gc25hcHBlZEludFJlY3QocmVjdCk7Ci0gICAgaWYgKGFsaWduZWRSZWN0LndpZHRo
KCkgPD0gMCB8fCBhbGlnbmVkUmVjdC5oZWlnaHQoKSA8PSAwKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uID0gY2hvb3NlSW50ZXJwb2xh
dGlvblF1YWxpdHkoY29udGV4dCwgKmltYWdlLCBpbWFnZSwgYWxpZ25lZFJlY3Quc2l6ZSgpKTsK
LSAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGFsaWduZWRSZWN0LCB7IGltYWdlT3JpZW50
YXRpb24oKSwgaW50ZXJwb2xhdGlvbiB9KTsKLX0KLQotQ3Vyc29yRGlyZWN0aXZlIFJlbmRlclNu
YXBzaG90dGVkUGx1Z0luOjpnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBDdXJz
b3ImIG92ZXJyaWRlQ3Vyc29yKSBjb25zdAotewotICAgIGlmIChwbHVnSW5JbWFnZUVsZW1lbnQo
KS5kaXNwbGF5U3RhdGUoKSA8IEhUTUxQbHVnSW5FbGVtZW50OjpSZXN0YXJ0aW5nKSB7Ci0gICAg
ICAgIG92ZXJyaWRlQ3Vyc29yID0gaGFuZEN1cnNvcigpOwotICAgICAgICByZXR1cm4gU2V0Q3Vy
c29yOwotICAgIH0KLSAgICByZXR1cm4gUmVuZGVyRW1iZWRkZWRPYmplY3Q6OmdldEN1cnNvcihw
b2ludCwgb3ZlcnJpZGVDdXJzb3IpOwotfQotCi12b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0lu
OjpoYW5kbGVFdmVudChFdmVudCYgZXZlbnQpCi17Ci0gICAgaWYgKCFpczxNb3VzZUV2ZW50Pihl
dmVudCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIG1vdXNlRXZlbnQgPSBkb3duY2Fz
dDxNb3VzZUV2ZW50PihldmVudCk7Ci0KLSAgICAvLyBJZiB3ZSdyZSBhIHNuYXBzaG90dGVkIHBs
dWdpbiwgd2Ugd2FudCB0byBtYWtlIHN1cmUgd2UgYWN0aXZhdGUgb24KLSAgICAvLyBjbGlja3Mg
ZXZlbiBpZiB0aGUgcGFnZSBpcyBwcmV2ZW50aW5nIG91ciBkZWZhdWx0IGJlaGF2aW91ci4gT3Ro
ZXJ3aXNlCi0gICAgLy8gd2UgY2FuIG5ldmVyIHJlc3RhcnQuIE9uZSB3ZSBkbyByZXN0YXJ0LCB0
aGVuIHRoZSBwYWdlIHdpbGwgaGFwcGlseQotICAgIC8vIGJsb2NrIHRoZSBuZXcgcGx1Z2luIGlu
IHRoZSBub3JtYWwgcmVuZGVyZXIuIEFsbCB0aGlzIG1lYW5zIHdlIGhhdmUgdG8KLSAgICAvLyBi
ZSBvbiB0aGUgbG9va291dCBmb3IgYSBtb3VzZXVwIGV2ZW50IHRoYXQgY29tZXMgYWZ0ZXIgYSBt
b3VzZWRvd24KLSAgICAvLyBldmVudC4gVGhlIGNvZGUgYmVsb3cgaXMgbm90IGNvbXBsZXRlbHkg
Zm9vbHByb29mLCBidXQgdGhlIHdvcnN0IHRoYXQKLSAgICAvLyBjb3VsZCBoYXBwZW4gaXMgdGhh
dCBhIHNuYXBzaG90dGVkIHBsdWdpbiByZXN0YXJ0cy4KLQotICAgIGlmIChtb3VzZUV2ZW50LnR5
cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdXRFdmVudCkKLSAgICAgICAgbV9pc1BvdGVudGlh
bE1vdXNlQWN0aXZhdGlvbiA9IGZhbHNlOwotCi0gICAgaWYgKG1vdXNlRXZlbnQuYnV0dG9uKCkg
IT0gTGVmdEJ1dHRvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1vdXNlRXZlbnQudHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50IHx8IChtX2lzUG90ZW50aWFsTW91c2VBY3Rp
dmF0aW9uICYmIG1vdXNlRXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQp
KSB7Ci0gICAgICAgIG1faXNQb3RlbnRpYWxNb3VzZUFjdGl2YXRpb24gPSBmYWxzZTsKLSAgICAg
ICAgYm9vbCBjbGlja1dhc09uT3ZlcmxheSA9IHBsdWdJbkltYWdlRWxlbWVudCgpLnBhcnRPZlNu
YXBzaG90T3ZlcmxheShtb3VzZUV2ZW50LnRhcmdldCgpKTsKLSAgICAgICAgcGx1Z0luSW1hZ2VF
bGVtZW50KCkudXNlckRpZENsaWNrU25hcHNob3QobW91c2VFdmVudCwgIWNsaWNrV2FzT25PdmVy
bGF5KTsKLSAgICAgICAgbW91c2VFdmVudC5zZXREZWZhdWx0SGFuZGxlZCgpOwotICAgIH0gZWxz
ZSBpZiAobW91c2VFdmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50KSB7
Ci0gICAgICAgIG1faXNQb3RlbnRpYWxNb3VzZUFjdGl2YXRpb24gPSB0cnVlOwotICAgICAgICBt
b3VzZUV2ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDVhMzFhNTcwYjJl
ZmNiNDVhNmUxMGViNDY3YjhlYWIwZGM0MWYwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ7Ci1j
bGFzcyBSZW5kZXJJbWFnZVJlc291cmNlOwotCi1jbGFzcyBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
biBmaW5hbCA6IHB1YmxpYyBSZW5kZXJFbWJlZGRlZE9iamVjdCB7Ci0gICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRChSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbik7Ci1wdWJsaWM6Ci0gICAgUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCYsIFJlbmRlclN0eWxlJiYp
OwotICAgIHZpcnR1YWwgflJlbmRlclNuYXBzaG90dGVkUGx1Z0luKCk7Ci0KLSAgICBIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50JiBwbHVnSW5JbWFnZUVsZW1lbnQoKSBjb25zdDsKLSAgICB2b2lkIHVw
ZGF0ZVNuYXBzaG90KEltYWdlKik7Ci0gICAgdm9pZCBoYW5kbGVFdmVudChFdmVudCYpOwotCi1w
cml2YXRlOgotICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBm
cmFtZU93bmVyRWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwotICAgIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4iOyB9
Ci0gICAgQ3Vyc29yRGlyZWN0aXZlIGdldEN1cnNvcihjb25zdCBMYXlvdXRQb2ludCYsIEN1cnNv
ciYpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgaXNTbmFwc2hvdHRlZFBsdWdJbigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExh
eW91dFBvaW50JikgZmluYWw7Ci0gICAgYm9vbCBjYW5IYXZlV2lkZ2V0KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2b2lkIHBhaW50U25hcHNob3QoUGFpbnRJbmZvJiwgY29u
c3QgTGF5b3V0UG9pbnQmKTsKLSAgICB2b2lkIGxheW91dCgpIGZpbmFsOwotCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlckltYWdlUmVzb3VyY2U+IG1fc25hcHNob3RSZXNvdXJjZTsKLSAgICBi
b29sIG1faXNQb3RlbnRpYWxNb3VzZUFjdGl2YXRpb24geyBmYWxzZSB9OwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1Qo
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4sIGlzU25hcHNob3R0ZWRQbHVnSW4oKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IGI4OWFjMGQxZjI4ZWE4NmFlMjAx
MzQ3NWU1ZGE0OWQ1NDU2ZDNlZGIuLjA0YTkzMGM4MGE3Yzc4ZGMwMTA4MDUyOTE1MDMyOWYzYWEz
YTEzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAtNDEz
LDggKzQxMyw2IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KGNvbnN0IFJlbmRlckJveCYgYm94
LCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzLCBjb25zCiAgICAgICAgIHJldHVybiBwYWlu
dFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0KGJveCwgcGFpbnRJbmZvLCBpbnRlZ3Jh
bFNuYXBwZWRSZWN0KTsKICAgICBjYXNlIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblBhcnQ6CiAg
ICAgICAgIHJldHVybiBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihib3gsIHBhaW50SW5m
bywgaW50ZWdyYWxTbmFwcGVkUmVjdCk7Ci0gICAgY2FzZSBTbmFwc2hvdHRlZFBsdWdpbk92ZXJs
YXlQYXJ0OgotICAgICAgICByZXR1cm4gcGFpbnRTbmFwc2hvdHRlZFBsdWdpbk92ZXJsYXkoYm94
LCBwYWludEluZm8sIGludGVncmFsU25hcHBlZFJlY3QpOwogI2lmIEVOQUJMRShTRVJWSUNFX0NP
TlRST0xTKQogICAgIGNhc2UgSW1hZ2VDb250cm9sc0J1dHRvblBhcnQ6CiAgICAgICAgIHJldHVy
biBwYWludEltYWdlQ29udHJvbHNCdXR0b24oYm94LCBwYWludEluZm8sIGludGVncmFsU25hcHBl
ZFJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAppbmRleCA3MWIzYjQw
ZThlODVjMzI4ZDBlMmQ0MTkyYWZmYjAzYTE4NWY0YzNjLi5iZTE5OTAzZDVhYjY0NmZhZTk0MmNj
MjI5ZDQxYzE0OGU4ZDRlN2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUu
aApAQCAtMzg2LDggKzM4Niw2IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRN
ZWRpYUZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmLCBjb25z
dCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBwYWludE1lZGlhRnVsbFNjcmVlblZvbHVtZVNsaWRlclRodW1iKGNvbnN0IFJlbmRl
ck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJldHVybiB0cnVl
OyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbmFwc2hvdHRlZFBsdWdpbk92ZXJsYXkoY29u
c3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0
dXJuIHRydWU7IH0KLQogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAgIHZpcnR1YWwg
Ym9vbCBwYWludEltYWdlQ29udHJvbHNCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3Qg
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAppbmRleCAyZGM1ZjJiMzE3OTA1
OGUyZmI2M2EzYzFiNGQ5NGU3MDkyZmUyMzc2Li40ZjU3OTY1OTM2OWVjNGI2ZTkwMzRmNzkwY2Zm
MmUwMjliNWM0ZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
aApAQCAtMTU2LDggKzE1Niw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdXBwb3J0c0Nsb3NlZENh
cHRpb25pbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIAotICAgIGJv
b2wgcGFpbnRTbmFwc2hvdHRlZFBsdWdpbk92ZXJsYXkoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29u
c3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIGZpbmFsOwotCiAjaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKICAgICBMYXlvdXRTaXplIGF0dGFjaG1lbnRJbnRyaW5zaWNTaXplKGNv
bnN0IFJlbmRlckF0dGFjaG1lbnQmKSBjb25zdCBmaW5hbDsKICAgICBpbnQgYXR0YWNobWVudEJh
c2VsaW5lKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCA0ZDIwZDE3Njc4YTdlMjBkN2I3
NTI0N2Q1ZWVhZDY3YTQ5Y2RmZTBiLi43NjkxYjYzM2ZjMGY1NzQ5YTdhN2FlYWE3ZWFmNThhNzE5
YjBhMTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBA
IC01OCw3ICs1OCw2IEBACiAjaW1wb3J0ICJSZW5kZXJNZXRlci5oIgogI2ltcG9ydCAiUmVuZGVy
UHJvZ3Jlc3MuaCIKICNpbXBvcnQgIlJlbmRlclNsaWRlci5oIgotI2ltcG9ydCAiUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4uaCIKICNpbXBvcnQgIlJlbmRlclZpZXcuaCIKICNpbXBvcnQgIlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgpAQCAtMjEzOCw4
MSArMjEzNyw2IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRz
QnV0dG9uKGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zdCBQCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1ib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheShj
b25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgSW50UmVjdCYpCi17Ci0gICAgaWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNl
OjpCbG9ja0JhY2tncm91bmQpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKCFpczxS
ZW5kZXJCbG9jaz4ocmVuZGVyZXIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGNvbnN0
IFJlbmRlckJsb2NrJiByZW5kZXJCbG9jayA9IGRvd25jYXN0PFJlbmRlckJsb2NrPihyZW5kZXJl
cik7Ci0KLSAgICBMYXlvdXRVbml0IGNvbnRlbnRXaWR0aCA9IHJlbmRlckJsb2NrLmNvbnRlbnRX
aWR0aCgpOwotICAgIExheW91dFVuaXQgY29udGVudEhlaWdodCA9IHJlbmRlckJsb2NrLmNvbnRl
bnRIZWlnaHQoKTsKLSAgICBpZiAoIWNvbnRlbnRXaWR0aCB8fCAhY29udGVudEhlaWdodCkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWlu
dEluZm8uY29udGV4dCgpOwotCi0gICAgTGF5b3V0U2l6ZSBjb250ZW50U2l6ZShjb250ZW50V2lk
dGgsIGNvbnRlbnRIZWlnaHQpOwotICAgIExheW91dFBvaW50IGNvbnRlbnRMb2NhdGlvbiA9IHJl
bmRlckJsb2NrLmxvY2F0aW9uKCk7Ci0gICAgY29udGVudExvY2F0aW9uLm1vdmUocmVuZGVyQmxv
Y2suYm9yZGVyTGVmdCgpICsgcmVuZGVyQmxvY2sucGFkZGluZ0xlZnQoKSwgcmVuZGVyQmxvY2su
Ym9yZGVyVG9wKCkgKyByZW5kZXJCbG9jay5wYWRkaW5nVG9wKCkpOwotCi0gICAgTGF5b3V0UmVj
dCByZWN0KGNvbnRlbnRMb2NhdGlvbiwgY29udGVudFNpemUpOwotICAgIEludFJlY3QgYWxpZ25l
ZFJlY3QgPSBzbmFwcGVkSW50UmVjdChyZWN0KTsKLSAgICBpZiAoYWxpZ25lZFJlY3Qud2lkdGgo
KSA8PSAwIHx8IGFsaWduZWRSZWN0LmhlaWdodCgpIDw9IDApCi0gICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgLy8gV2UgbmVlZCB0byBnZXQgdGhlIHNuYXBzaG90IGltYWdlIGZyb20gdGhlIHBs
dWdpbiBlbGVtZW50LCB3aGljaCBzaG91bGQgYmUgYXZhaWxhYmxlCi0gICAgLy8gZnJvbSBvdXIg
bm9kZS4gQXNzdW1pbmcgdGhpcyBub2RlIGlzIHRoZSBwbHVnaW4gb3ZlcmxheSBlbGVtZW50LCB3
ZSBzaG91bGQgZ2V0IHRvIHRoZQotICAgIC8vIHBsdWdpbiBpdHNlbGYgYnkgYXNraW5nIGZvciB0
aGUgc2hhZG93IHJvb3QgcGFyZW50LCBhbmQgdGhlbiBpdHMgcGFyZW50LgotCi0gICAgaWYgKCFp
czxIVE1MRWxlbWVudD4oKnJlbmRlckJsb2NrLmVsZW1lbnQoKSkpCi0gICAgICAgIHJldHVybiB0
cnVlOwotCi0gICAgSFRNTEVsZW1lbnQmIHBsdWdJbk92ZXJsYXkgPSBkb3duY2FzdDxIVE1MRWxl
bWVudD4oKnJlbmRlckJsb2NrLmVsZW1lbnQoKSk7Ci0gICAgRWxlbWVudCogcGFyZW50ID0gcGx1
Z0luT3ZlcmxheS5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCk7Ci0gICAgd2hpbGUgKHBhcmVu
dCAmJiAhaXM8SFRNTFBsdWdJbkVsZW1lbnQ+KCpwYXJlbnQpKQotICAgICAgICBwYXJlbnQgPSBw
YXJlbnQtPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKTsKLQotICAgIGlmICghcGFyZW50KQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnSW5FbGVt
ZW50ID0gZG93bmNhc3Q8SFRNTFBsdWdJbkVsZW1lbnQ+KCpwYXJlbnQpOwotICAgIGlmICghaXM8
SFRNTFBsdWdJbkltYWdlRWxlbWVudD4ocGx1Z0luRWxlbWVudCkpCi0gICAgICAgIHJldHVybiB0
cnVlOwotCi0gICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgcGx1Z0luSW1hZ2VFbGVtZW50ID0g
ZG93bmNhc3Q8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4ocGx1Z0luRWxlbWVudCk7Ci0KLSAgICBJ
bWFnZSogc25hcHNob3QgPSBwbHVnSW5JbWFnZUVsZW1lbnQuc25hcHNob3RJbWFnZSgpOwotICAg
IGlmICghc25hcHNob3QpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4mIHBsdWdJblJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW4+KCpwbHVnSW5JbWFnZUVsZW1lbnQucmVuZGVyZXIoKSk7Ci0gICAgRmxvYXRQb2ludCBz
bmFwc2hvdEFic1BvcyA9IHBsdWdJblJlbmRlcmVyLmxvY2FsVG9BYnNvbHV0ZSgpOwotICAgIHNu
YXBzaG90QWJzUG9zLm1vdmUocGx1Z0luUmVuZGVyZXIuYm9yZGVyTGVmdCgpICsgcGx1Z0luUmVu
ZGVyZXIucGFkZGluZ0xlZnQoKSwgcGx1Z0luUmVuZGVyZXIuYm9yZGVyVG9wKCkgKyBwbHVnSW5S
ZW5kZXJlci5wYWRkaW5nVG9wKCkpOwotCi0gICAgLy8gV2UgY291bGQgZHJhdyB0aGUgc25hcHNo
b3Qgd2l0aCB0aGF0IGNvb3JkaW5hdGVzLCBidXQgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUK
LSAgICAvLyBpc24ndCBhIGNvbXBvc2l0ZWQgbGF5ZXIgYmV0d2VlbiB1cyBhbmQgdGhlIHBsdWdJ
blJlbmRlcmVyLgotICAgIGZvciAoYXV0byogcmVuZGVyQm94ID0gJmRvd25jYXN0PFJlbmRlckJv
eD4ocmVuZGVyZXIpOyByZW5kZXJCb3ggIT0gJnBsdWdJblJlbmRlcmVyOyByZW5kZXJCb3ggPSBy
ZW5kZXJCb3gtPnBhcmVudEJveCgpKSB7Ci0gICAgICAgIGlmIChyZW5kZXJCb3gtPmlzQ29tcG9z
aXRlZCgpKSB7Ci0gICAgICAgICAgICBzbmFwc2hvdEFic1BvcyA9IC1yZW5kZXJCb3gtPmxvY2F0
aW9uKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIExheW91
dFNpemUgcGx1Z2luU2l6ZShwbHVnSW5SZW5kZXJlci5jb250ZW50V2lkdGgoKSwgcGx1Z0luUmVu
ZGVyZXIuY29udGVudEhlaWdodCgpKTsKLSAgICBMYXlvdXRSZWN0IHBsdWdpblJlY3Qoc25hcHNo
b3RBYnNQb3MsIHBsdWdpblNpemUpOwotICAgIEludFJlY3QgYWxpZ25lZFBsdWdpblJlY3QgPSBz
bmFwcGVkSW50UmVjdChwbHVnaW5SZWN0KTsKLQotICAgIGlmIChhbGlnbmVkUGx1Z2luUmVjdC53
aWR0aCgpIDw9IDAgfHwgYWxpZ25lZFBsdWdpblJlY3QuaGVpZ2h0KCkgPD0gMCkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICBjb250ZXh0LmRyYXdJbWFnZSgqc25hcHNob3QsIGFsaWduZWRQ
bHVnaW5SZWN0KTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KICNpZiBFTkFCTEUoREFUQUxJU1Rf
RUxFTUVOVCkKIEludFNpemUgUmVuZGVyVGhlbWVNYWM6OnNsaWRlclRpY2tTaXplKCkgY29uc3QK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAwZmZiYWFlM2FhMjA4ZDYx
NzU4OGZjYmM0ZjAzZTc0MTRjZDE1Nzg5Li4xY2ZhMTNhMzE2MzY5NjI0MWI5YWY5NDYwOTBlOTY1
YWQzYTg1OTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC00MDQ0LDkg
KzQwNDQsOSBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IEludGVybmFsczo6dW5hdmFpbGFibGVQbHVn
aW5SZXBsYWNlbWVudFRleHQoRWxlbWVudCYgZWxlbWVudAogICAgIHJldHVybiBTdHJpbmcgeyBk
b3duY2FzdDxSZW5kZXJFbWJlZGRlZE9iamVjdD4oKnJlbmRlcmVyKS5wbHVnaW5SZXBsYWNlbWVu
dFRleHRJZlVuYXZhaWxhYmxlKCkgfTsKIH0KIAotYm9vbCBJbnRlcm5hbHM6OmlzUGx1Z2luU25h
cHNob3R0ZWQoRWxlbWVudCYgZWxlbWVudCkKK2Jvb2wgSW50ZXJuYWxzOjppc1BsdWdpblNuYXBz
aG90dGVkKEVsZW1lbnQmKQogewotICAgIHJldHVybiBpczxIVE1MUGx1Z0luRWxlbWVudD4oZWxl
bWVudCkgJiYgZG93bmNhc3Q8SFRNTFBsdWdJbkVsZW1lbnQ+KGVsZW1lbnQpLmRpc3BsYXlTdGF0
ZSgpIDw9IEhUTUxQbHVnSW5FbGVtZW50OjpEaXNwbGF5aW5nU25hcHNob3Q7CisgICAgcmV0dXJu
IGZhbHNlOwogfQogCiBib29sIEludGVybmFsczo6cGx1Z2luSXNCZWxvd1NpemVUaHJlc2hvbGQo
RWxlbWVudCYgZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vz
cy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9t
YWMvUGx1Z2luUHJvY2Vzc01hYy5tbQppbmRleCBmNWUyNDMyMGVmNzA4MzVlNzFiOTFmNzAxMjY3
NDk0YTVkYjMxNDVlLi4zMWU5Y2Y5MmYwMmVlMGNjZjEwN2FmZmU1NmMwNTM0OGZiYzVjNGYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNz
TWFjLm1tCkBAIC0zNzMsMTkgKzM3Myw5IEBAIGJvb2wgUGx1Z2luUHJvY2Vzczo6b3BlbkZpbGUo
Y29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMg
dm9pZCBtdXRlQXVkaW8odm9pZCkKLXsKLSAgICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBw
cm9wZXJ0eUFkZHJlc3MgPSB7IGtBdWRpb0hhcmR3YXJlUHJvcGVydHlQcm9jZXNzSXNBdWRpYmxl
LCBrQXVkaW9PYmplY3RQcm9wZXJ0eVNjb3BlR2xvYmFsLCBrQXVkaW9PYmplY3RQcm9wZXJ0eUVs
ZW1lbnRNYXN0ZXIgfTsKLSAgICBVSW50MzIgcHJvcGVydHlEYXRhID0gMDsKLSAgICBPU1N0YXR1
cyByZXN1bHQgPSBBdWRpb09iamVjdFNldFByb3BlcnR5RGF0YShrQXVkaW9PYmplY3RTeXN0ZW1P
YmplY3QsICZwcm9wZXJ0eUFkZHJlc3MsIDAsIDAsIHNpemVvZihVSW50MzIpLCAmcHJvcGVydHlE
YXRhKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IG5vRXJyKTsKLX0KLQog
dm9pZCBQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdp
blByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAgIG1fY29tcG9z
aXRpbmdSZW5kZXJTZXJ2ZXJQb3J0ID0gV1RGTW92ZShwYXJhbWV0ZXJzLmFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdQb3J0KTsKLSAgICBpZiAocGFyYW1ldGVycy5wcm9jZXNzVHlwZSA9PSBQbHVnaW5Q
cm9jZXNzVHlwZTo6U25hcHNob3QpCi0gICAgICAgIG11dGVBdWRpbygpOwogCiAgICAgW05TVVJM
Q2FjaGUgc2V0U2hhcmVkVVJMQ2FjaGU6YWRvcHROUyhbW05TVVJMQ2FjaGUgYWxsb2NdCiAgICAg
ICAgIGluaXRXaXRoTWVtb3J5Q2FwYWNpdHk6cGx1Z2luTWVtb3J5Q2FjaGVTaXplCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBkZjFkOTZmYTEwMjY2OWU2NDgy
YmVjNTQ5ZDY4ZWYzZjMzNWYxNjc2Li45NzA4NzY0OTVmYjFhY2M5MDRjMWVhMjUwNjkwOTNiMjAw
ZWIyNTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTI1
MSw3ICsyNTEsNiBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgp
OgogICAgICAgICAnV2ViS2l0OjpNZWRpYVJlY29yZGVySWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJLaXQ6OlBERlBsdWdpbklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllcicsCi0gICAgICAgICdXZWJLaXQ6OlBsdWdpblByb2Nlc3NU
eXBlJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIn
LAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVBdWRpb1Nlc3Npb25JZGVudGlmaWVyJywKICAgICAg
ICAgJ1dlYktpdDo6UmVtb3RlQ0RNSWRlbnRpZmllcicsCkBAIC02ODIsNyArNjgxLDYgQEAgZGVm
IGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OlBhZ2VTdGF0ZSc6IFsn
IlNlc3Npb25TdGF0ZS5oIiddLAogICAgICAgICAnV2ViS2l0OjpQYXltZW50U2V0dXBDb25maWd1
cmF0aW9uJzogWyciUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbldlYktpdC5oIiddLAogICAgICAg
ICAnV2ViS2l0OjpQYXltZW50U2V0dXBGZWF0dXJlcyc6IFsnIkFwcGxlUGF5UGF5bWVudFNldHVw
RmVhdHVyZXNXZWJLaXQuaCInXSwKLSAgICAgICAgJ1dlYktpdDo6UGx1Z2luUHJvY2Vzc1R5cGUn
OiBbJyJQbHVnaW5Qcm9jZXNzQXR0cmlidXRlcy5oIiddLAogICAgICAgICAnV2ViS2l0OjpSZXNw
ZWN0U2VsZWN0aW9uQW5jaG9yJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCiAgICAgICAgICdXZWJL
aXQ6OlNlbGVjdGlvbkZsYWdzJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCiAgICAgICAgICdXZWJL
aXQ6OlNlbGVjdGlvblRvdWNoJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLmgKaW5k
ZXggMjFjOTUyYTY2M2I5YzY0NmIzMDMxNjljYjZmOGJkZDc4OGEyNDA2ZS4uNDE4N2FhZmMzNzM0
NGE2Mjg3N2JhMTFhZGY5ZDhkYTM1ZjIwNzlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQXR0cmlidXRlcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMuaApAQCAtMzAsMTEgKzMw
LDYgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWVudW0gY2xhc3MgUGx1Z2luUHJvY2Vzc1R5
cGUgOiBib29sIHsKLSAgICBOb3JtYWwsCi0gICAgU25hcHNob3QsCi19OwotCiBlbnVtIGNsYXNz
IFBsdWdpblByb2Nlc3NTYW5kYm94UG9saWN5IDogYm9vbCB7CiAgICAgTm9ybWFsLAogICAgIFVu
c2FuZGJveGVkLApAQCAtNDIsNyArMzcsNiBAQCBlbnVtIGNsYXNzIFBsdWdpblByb2Nlc3NTYW5k
Ym94UG9saWN5IDogYm9vbCB7CiAKIHN0cnVjdCBQbHVnaW5Qcm9jZXNzQXR0cmlidXRlcyB7CiAg
ICAgUGx1Z2luTW9kdWxlSW5mbyBtb2R1bGVJbmZvOwotICAgIFBsdWdpblByb2Nlc3NUeXBlIHBy
b2Nlc3NUeXBlOwogICAgIFBsdWdpblByb2Nlc3NTYW5kYm94UG9saWN5IHNhbmRib3hQb2xpY3k7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCAzODE2NWRlNGExMGVm
YTZiMTU5MWU3MzBkZDIxNGZiNWIwZjNlNmNkLi4xZDM2ZmU5M2FkNGI3MWEwMjE3ODk5OTY5MjZm
MTVmZDI1YTVjN2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTQxLDcg
KzQxLDYgQEAgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6UGx1Z2luUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycygpCiAKIHZvaWQgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
czo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8
IHByb2Nlc3NUeXBlOwogICAgIGVuY29kZXIgPDwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5J
bml0aWFsaXphdGlvbjsKICAgICBlbmNvZGVyIDw8IG1pbmltdW1MaWZldGltZTsKICAgICBlbmNv
ZGVyIDw8IHRlcm1pbmF0aW9uVGltZW91dDsKQEAgLTUzLDggKzUyLDYgQEAgdm9pZCBQbHVnaW5Q
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogCiBib29sIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIsIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHJlc3Vs
dCkKIHsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wcm9jZXNzVHlwZSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zdXBwb3J0
c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1pbmltdW1MaWZldGltZSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDIxNTkxNTg4ZTZmZWNlYzJjNTIxODBjZTNmNDVi
ZTFlM2JmYWFiZDEuLmJmODQyZjBhNTRiOTljNTQ1ODVmZGIyZTc2ZmNlZDY5YTlmMDI2MjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC00Nyw3ICs0Nyw2IEBAIHN0cnVjdCBQbHVn
aW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29k
ZXImKSBjb25zdDsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQ
Qzo6RGVjb2RlciYsIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKIAotICAgIFBs
dWdpblByb2Nlc3NUeXBlIHByb2Nlc3NUeXBlOwogICAgIGJvb2wgc3VwcG9ydHNBc3luY2hyb25v
dXNQbHVnaW5Jbml0aWFsaXphdGlvbjsKIAogICAgIFNlY29uZHMgbWluaW11bUxpZmV0aW1lOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAppbmRleCAxZGEwMDZmZWI1ZjMyNDZjNzk3NTYzM2E3NTFjMGJjNTlhMWNhYzhkLi5j
NWVmNDQ5YmViYWVmMTU1MWVjNTU0N2ZlM2MzYjAyYTFhOTNjYzNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAt
MTEyLDcgKzExMiw2IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2Rl
KElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IG5vdGlmaWNhdGlv
blBlcm1pc3Npb25zOwogI2VuZGlmCiAKLSAgICBlbmNvZGVyIDw8IHBsdWdJbkF1dG9TdGFydE9y
aWdpbnM7CiAgICAgZW5jb2RlciA8PCBtZW1vcnlDYWNoZURpc2FibGVkOwogICAgIGVuY29kZXIg
PDwgYXR0clN0eWxlRW5hYmxlZDsKIApAQCAtMTIyLDEwICsxMjEsNiBAQCB2b2lkIFdlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiAgICAgZW5jb2RlciA8PCBoYXNSaWNoQ29udGVudFNlcnZpY2VzOwogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBlbmNvZGVyIDw8IHBsdWdpbkxvYWRDbGll
bnRQb2xpY2llczsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgSVBDOjplbmNv
ZGUoZW5jb2RlciwgbmV0d29ya0FUU0NvbnRleHQuZ2V0KCkpOwogI2VuZGlmCkBAIC0zNTEsOCAr
MzQ2LDYgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3JlYXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
I2VuZGlmCiAKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMucGx1Z0luQXV0b1N0
YXJ0T3JpZ2lucykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBhcmFtZXRlcnMubWVtb3J5Q2FjaGVEaXNhYmxlZCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYXR0clN0eWxlRW5hYmxlZCkp
CkBAIC0zNjcsMTEgKzM2MCw2IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnBsdWdpbkxvYWRDbGllbnRQb2xpY2ll
cykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBwYXJhbWV0ZXJzLm5ldHdvcmtBVFNDb250
ZXh0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDg4YjNkNmMxMzZkZDM4YzVm
YmQ3YmEzZjM1Y2E0ODBjMzU1OGFhODYuLmZjODdhMzdhODc0NDNkMTBmYTNmY2EyYjAxNTE1YWY3
NTRhY2ZlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgKQEAgLTE1OSw4ICsxNTksNiBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IG5vdGlmaWNhdGlv
blBlcm1pc3Npb25zOwogI2VuZGlmCiAKLSAgICBWZWN0b3I8U3RyaW5nPiBwbHVnSW5BdXRvU3Rh
cnRPcmlnaW5zOwotCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgSGFzaE1h
cDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgV2ViQ29yZTo6UGx1Z2lu
TG9hZENsaWVudFBvbGljeT4+PiBwbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXM7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVy
cy5oCmluZGV4IGU2MjYzNDI0NGU4MWE5ZWM1ZTc2N2NiNzJhZjA3MWVkZTM1ZGY5NTMuLjllYTE1
ZTk5OWJjZWRmZjhhM2VjMTJmMjM2OGM4M2FhMDdhYWRjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaApAQCAtNDUsNyAr
NDUsNiBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMgewogICAgIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBtZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGU7CiAgICAgU3RyaW5nIGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5OwogICAgIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZTsKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBXYWxsVGltZT4gcGx1Z0luQXV0
b1N0YXJ0T3JpZ2luSGFzaGVzOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CiAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlIHsgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6
QWxsIH07CiAgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1dp
dGhVc2VySW50ZXJhY3Rpb247CkBAIC03MSw3ICs3MCw2IEBAIHZvaWQgV2ViUHJvY2Vzc0RhdGFT
dG9yZVBhcmFtZXRlcnM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29k
ZXIgPDwgbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGVuY29k
ZXIgPDwgamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7CiAgICAgZW5jb2RlciA8PCBq
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKLSAgICBlbmNv
ZGVyIDw8IHBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlczsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQogICAgIGVuY29kZXIgPDwgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZTsKICAgICBlbmNvZGVyIDw8IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uOwpAQCAtMTM2
LDExICsxMzQsNiBAQCBPcHRpb25hbDxXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycz4gV2Vi
UHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZShEZQogICAgIGlmICghamF2YVNjcmlw
dENvbmZpZ3VyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAgICAgICAgIAotICAgIE9wdGlvbmFsPEhhc2hNYXA8dW5zaWduZWQsIFdh
bGxUaW1lPj4gcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzOwotICAgIGRlY29kZXIgPj4gcGx1
Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzOwotICAgIGlmICghcGx1Z0luQXV0b1N0YXJ0T3JpZ2lu
SGFzaGVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKICAgICBPcHRpb25hbDxXZWJDb3JlOjpUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlPiB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOwogICAgIGRlY29k
ZXIgPj4gdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKQEAgLTE3MCw3ICsxNjMsNiBAQCBP
cHRpb25hbDxXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycz4gV2ViUHJvY2Vzc0RhdGFTdG9y
ZVBhcmFtZXRlcnM6OmRlY29kZShEZQogICAgICAgICBXVEZNb3ZlKCptZWRpYUtleVN0b3JhZ2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpLAogICAgICAgICBXVEZNb3ZlKGphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5KSwKICAgICAgICAgV1RGTW92ZSgqamF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpLAotICAgICAgICBXVEZNb3ZlKCpwbHVnSW5B
dXRvU3RhcnRPcmlnaW5IYXNoZXMpLAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCiAgICAgICAgICp0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLAogICAgICAgICBXVEZN
b3ZlKCpkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbiksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAwNDgxYmNj
MzQyY2FjZGNlYTE4OWI5ODAwOThmOWY1YzgwNWMyMDg0Li41MTg0MGFhOTA3NWZkYWMwN2E0ZTkx
YTIzMDViZDgxYjZkYmYyM2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTQ1NCw3ICs0NTQsNiBAQCBVSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uY3BwCiBVSVByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCiBVSVByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAKIAotVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuY3BwCiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZv
U3RvcmUuY3BwCiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAKIFVJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKQEAgLTY1Niw3ICs2NTUsNiBA
QCBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
LmNwcAogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuY3Bw
CiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5j
cHAKIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAot
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuY3BwCiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAKIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmNwcAogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuY3BwCmluZGV4IDdjZjU3NzI0ZjJhYjkzMzkwMDhkMWIyZTFkYmQyZTdh
MzRkZjE5NzkuLjNhMDgzY2E0ODY0NDNiZDg4MDYzM2E1YzI2MDc0ZTI2MmQxMTM0YmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAtNTEzLDMwICs1
MTMsMjEgQEAgdm9pZCBXS0NvbnRleHRTZXRKYXZhU2NyaXB0R2FyYmFnZUNvbGxlY3RvclRpbWVy
RW5hYmxlZChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwKICAgICBXZWJLaXQ6OnRvSW1wbChjb250
ZXh0UmVmKS0+c2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoZW5hYmxl
KTsKIH0KIAotV0tEaWN0aW9uYXJ5UmVmIFdLQ29udGV4dENvcHlQbHVnSW5BdXRvU3RhcnRPcmln
aW5IYXNoZXMoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCitXS0RpY3Rpb25hcnlSZWYgV0tDb250
ZXh0Q29weVBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhXS0NvbnRleHRSZWYpCiB7Ci0gICAg
cmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5wbHVnSW5B
dXRvU3RhcnRPcmlnaW5IYXNoZXMoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBudWxscHRyOwog
fQogCi12b2lkIFdLQ29udGV4dFNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhXS0NvbnRl
eHRSZWYgY29udGV4dFJlZiwgV0tEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnlSZWYpCit2b2lkIFdL
Q29udGV4dFNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhXS0NvbnRleHRSZWYsIFdLRGlj
dGlvbmFyeVJlZikKIHsKLSAgICBpZiAoIWRpY3Rpb25hcnlSZWYpCi0gICAgICAgIHJldHVybjsK
LSAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+c2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2lu
SGFzaGVzKCpXZWJLaXQ6OnRvSW1wbChkaWN0aW9uYXJ5UmVmKSk7CiB9CiAKLXZvaWQgV0tDb250
ZXh0U2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luc0ZpbHRlcmluZ091dEVudHJpZXNBZGRlZEFmdGVy
VGltZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnlS
ZWYsIGRvdWJsZSB0aW1lKQordm9pZCBXS0NvbnRleHRTZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5z
RmlsdGVyaW5nT3V0RW50cmllc0FkZGVkQWZ0ZXJUaW1lKFdLQ29udGV4dFJlZiwgV0tEaWN0aW9u
YXJ5UmVmLCBkb3VibGUpCiB7Ci0gICAgaWYgKCFkaWN0aW9uYXJ5UmVmKQotICAgICAgICByZXR1
cm47Ci0gICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldFBsdWdJbkF1dG9TdGFydE9y
aWdpbnNGaWx0ZXJpbmdPdXRFbnRyaWVzQWRkZWRBZnRlclRpbWUoKldlYktpdDo6dG9JbXBsKGRp
Y3Rpb25hcnlSZWYpLCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHModGltZSkpOwogfQogCi12b2lk
IFdLQ29udGV4dFNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnMoV0tDb250ZXh0UmVmIGNvbnRleHRS
ZWYsIFdLQXJyYXlSZWYgYXJyYXlSZWYpCit2b2lkIFdLQ29udGV4dFNldFBsdWdJbkF1dG9TdGFy
dE9yaWdpbnMoV0tDb250ZXh0UmVmLCBXS0FycmF5UmVmKQogewotICAgIGlmICghYXJyYXlSZWYp
Ci0gICAgICAgIHJldHVybjsKLSAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+c2V0UGx1
Z0luQXV0b1N0YXJ0T3JpZ2lucygqV2ViS2l0Ojp0b0ltcGwoYXJyYXlSZWYpKTsKIH0KIAogdm9p
ZCBXS0NvbnRleHRTZXRJbnZhbGlkTWVzc2FnZUZ1bmN0aW9uKFdLQ29udGV4dEludmFsaWRNZXNz
YWdlRnVuY3Rpb24gaW52YWxpZE1lc3NhZ2VGdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGU3NmUwMDc4MGE0MTQ2NjIwNWVhMjlmNjEyMDU1M2I2
YjNhNmU0NDkuLmFmNjJhY2FlOWE0ZGFmZmEwMmIyOGRkYWM0NGY2NGI0OGQwZDNiMmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjI5OCwyNCArMjI5OCw2
IEBAIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYs
IGNvbnN0IFdLUGFnZU5hdmlnYXRpb25DbGllCiAgICAgICAgICAgICBpZiAoIWFwaU5vdGlmaWNh
dGlvbnMuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIG1fY2xpZW50LmNvbnRlbnRSdWxlTGlz
dE5vdGlmaWNhdGlvbih0b0FQSSgmcGFnZSksIHRvVVJMUmVmKHVybC5zdHJpbmcoKS5pbXBsKCkp
LCB0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcGlMaXN0SWRlbnRpZmllcnMpKS5w
dHIoKSksIHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFwaU5vdGlmaWNhdGlvbnMp
KS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KLSNpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JQbHVn
aW5Mb2FkKFdlYlBhZ2VQcm94eSYgcGFnZSwgUGx1Z2luTW9kdWxlTG9hZFBvbGljeSBjdXJyZW50
UGx1Z2luTG9hZFBvbGljeSwgQVBJOjpEaWN0aW9uYXJ5JiBwbHVnaW5JbmZvcm1hdGlvbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChQbHVnaW5Nb2R1bGVMb2FkUG9saWN5LCBjb25zdCBTdHJpbmcm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAg
V0tTdHJpbmdSZWYgdW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbk91dCA9IDA7Ci0gICAgICAgICAg
ICBQbHVnaW5Nb2R1bGVMb2FkUG9saWN5IGxvYWRQb2xpY3kgPSBjdXJyZW50UGx1Z2luTG9hZFBv
bGljeTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKG1fY2xpZW50LmRlY2lkZVBvbGlj
eUZvclBsdWdpbkxvYWQpCi0gICAgICAgICAgICAgICAgbG9hZFBvbGljeSA9IHRvUGx1Z2luTW9k
dWxlTG9hZFBvbGljeShtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JQbHVnaW5Mb2FkKHRvQVBJKCZw
YWdlKSwgdG9XS1BsdWdpbkxvYWRQb2xpY3koY3VycmVudFBsdWdpbkxvYWRQb2xpY3kpLCB0b0FQ
SSgmcGx1Z2luSW5mb3JtYXRpb24pLCAmdW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbk91dCwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFN0cmlu
ZyB1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uOwotICAgICAgICAgICAgaWYgKHVuYXZhaWxhYmls
aXR5RGVzY3JpcHRpb25PdXQpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8QVBJOjpTdHJpbmc+
IHdlYlVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24gPSBhZG9wdFJlZih0b0ltcGwodW5hdmFpbGFi
aWxpdHlEZXNjcmlwdGlvbk91dCkpOwotICAgICAgICAgICAgICAgIHVuYXZhaWxhYmlsaXR5RGVz
Y3JpcHRpb24gPSB3ZWJVbmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uLT5zdHJpbmcoKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobG9h
ZFBvbGljeSwgdW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbik7Ci0gICAgICAgIH0KLSNlbmRpZgog
ICAgIH07CiAKICAgICBXZWJQYWdlUHJveHkqIHdlYlBhZ2VQcm94eSA9IHRvSW1wbChwYWdlUmVm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5j
ZXMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAK
aW5kZXggOTM2OWYwNTM4Y2U0M2MxODcwZGViNzI3ZGVjZDUyODRhN2RlODg4ZS4uMjEwMzVhMTNl
NmNiYzRmMWFlZjdlOTdkMWVkNmIwZTY4OTZkMmI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKQEAgLTEwNjYsMTQgKzEwNjYsMTMgQEAg
Ym9vbCBXS1ByZWZlcmVuY2VzR2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChX
S1ByZWZlcmVuY2VzUmVmIHByZWZlcmUKICAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVm
KS0+c2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpOwogfQogCi12b2lkIFdLUHJl
ZmVyZW5jZXNTZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJl
ZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldFBsdWdJblNu
YXBzaG90dGluZ0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiwgYm9vbCkKIHsKLSAgICB0b0ltcGwo
cHJlZmVyZW5jZXNSZWYpLT5zZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKGVuYWJsZWQpOwog
fQogCiBib29sIFdLUHJlZmVyZW5jZXNHZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKFdLUHJl
ZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChwcmVmZXJl
bmNlc1JlZiktPnBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7
CiB9CiAKIHZvaWQgV0tQcmVmZXJlbmNlc1NldFBsdWdpblNhbmRib3hQcm9maWxlc0VuYWJsZWRG
b3JBbGxQbHVnaW5zKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxl
ZCkKQEAgLTEwODksMzQgKzEwODgsMzEgQEAgYm9vbCBXS1ByZWZlcmVuY2VzR2V0UGx1Z2luU2Fu
ZGJveFByb2ZpbGVzRW5hYmxlZEZvckFsbFBsdWdpbnMoV0tQcmVmZXJlbmNlc1JlZgogICAgIHJl
dHVybiB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5leHBlcmltZW50YWxQbHVnSW5TYW5kYm94UHJv
ZmlsZXNFbmFibGVkKCk7CiB9CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldFNuYXBzaG90QWxsUGx1
Z0lucyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCit2b2lk
IFdLUHJlZmVyZW5jZXNTZXRTbmFwc2hvdEFsbFBsdWdJbnMoV0tQcmVmZXJlbmNlc1JlZiwgYm9v
bCkKIHsKLSAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRTbmFwc2hvdEFsbFBsdWdJbnMo
ZW5hYmxlZCk7CiB9CiAKLWJvb2wgV0tQcmVmZXJlbmNlc0dldFNuYXBzaG90QWxsUGx1Z0lucyhX
S1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQorYm9vbCBXS1ByZWZlcmVuY2VzR2V0U25h
cHNob3RBbGxQbHVnSW5zKFdLUHJlZmVyZW5jZXNSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChw
cmVmZXJlbmNlc1JlZiktPnNuYXBzaG90QWxsUGx1Z0lucygpOworICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0QXV0b3N0YXJ0T3JpZ2luUGx1Z0luU25hcHNob3R0
aW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQp
Cit2b2lkIFdLUHJlZmVyZW5jZXNTZXRBdXRvc3RhcnRPcmlnaW5QbHVnSW5TbmFwc2hvdHRpbmdF
bmFibGVkKFdLUHJlZmVyZW5jZXNSZWYsIGJvb2wpCiB7Ci0gICAgdG9JbXBsKHByZWZlcmVuY2Vz
UmVmKS0+c2V0QXV0b3N0YXJ0T3JpZ2luUGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZChlbmFibGVk
KTsKIH0KIAogYm9vbCBXS1ByZWZlcmVuY2VzR2V0QXV0b3N0YXJ0T3JpZ2luUGx1Z0luU25hcHNo
b3R0aW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQogewotICAgIHJl
dHVybiB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5hdXRvc3RhcnRPcmlnaW5QbHVnSW5TbmFwc2hv
dHRpbmdFbmFibGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIFdLUHJlZmVyZW5j
ZXNTZXRQcmltYXJ5UGx1Z0luU25hcHNob3REZXRlY3Rpb25FbmFibGVkKFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCkKIHsKLSAgICB0b0ltcGwocHJlZmVyZW5j
ZXNSZWYpLT5zZXRQcmltYXJ5UGx1Z0luU25hcHNob3REZXRlY3Rpb25FbmFibGVkKGVuYWJsZWQp
OwogfQogCiBib29sIFdLUHJlZmVyZW5jZXNHZXRQcmltYXJ5UGx1Z0luU25hcHNob3REZXRlY3Rp
b25FbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpCiB7Ci0gICAgcmV0dXJu
IHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnByaW1hcnlQbHVnSW5TbmFwc2hvdERldGVjdGlvbkVu
YWJsZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgV0tQcmVmZXJlbmNlc1NldFBE
RlBsdWdpbkVuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFi
bGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29u
dGV4dFByaXZhdGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tD
b250ZXh0UHJpdmF0ZU1hYy5tbQppbmRleCBkM2EwNzE3YTZiZjJkYzk3NGM2ZTM5MDljYjEzODBm
ZjBmNmVlOTYyLi5hZTJhMTg4MjQ2NDA1MGVmMWUxNzk5Mzc1NGIyMmIzNDMxMDgzNjM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0
UHJpdmF0ZU1hYy5tbQpAQCAtNDIsMjcgKzQyLDE3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1dlYkdM
QmxvY2tsaXN0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLWJvb2wgV0tDb250ZXh0
SXNQbHVnSW5VcGRhdGVBdmFpbGFibGUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLU3RyaW5n
UmVmIHBsdWdJbkJ1bmRsZUlkZW50aWZpZXJSZWYpCitib29sIFdLQ29udGV4dElzUGx1Z0luVXBk
YXRlQXZhaWxhYmxlKFdLQ29udGV4dFJlZiwgV0tTdHJpbmdSZWYpCiB7Ci0jaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICByZXR1cm4gZmFsc2U7Ci0jZWxzZQotICAgIHJldHVybiBXZWJDb3Jl
OjpQbHVnaW5CbG9ja2xpc3Q6OmlzUGx1Z2luVXBkYXRlQXZhaWxhYmxlKChfX2JyaWRnZSBOU1N0
cmluZyAqKWFkb3B0Q0YoV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
cGx1Z0luQnVuZGxlSWRlbnRpZmllclJlZikpLmdldCgpKTsKLSNlbmRpZgogfQogCi12b2lkIFdL
Q29udGV4dFNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koV0tDb250ZXh0UmVmIGNvbnRleHRSZWYs
IFdLUGx1Z2luTG9hZENsaWVudFBvbGljeSBwb2xpY3ksIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3Ry
aW5nUmVmIGJ1bmRsZUlkZW50aWZpZXIsIFdLU3RyaW5nUmVmIHZlcnNpb25TdHJpbmcpCit2b2lk
IFdLQ29udGV4dFNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koV0tDb250ZXh0UmVmLCBXS1BsdWdp
bkxvYWRDbGllbnRQb2xpY3ksIFdLU3RyaW5nUmVmLCBXS1N0cmluZ1JlZiwgV0tTdHJpbmdSZWYp
CiB7Ci0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgV2ViS2l0Ojp0b0ltcGwo
Y29udGV4dFJlZiktPnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koV2ViS2l0Ojp0b1BsdWdpbkxv
YWRDbGllbnRQb2xpY3kocG9saWN5KSwgV2ViS2l0Ojp0b1dURlN0cmluZyhob3N0KSwgV2ViS2l0
Ojp0b1dURlN0cmluZyhidW5kbGVJZGVudGlmaWVyKSwgV2ViS2l0Ojp0b1dURlN0cmluZyh2ZXJz
aW9uU3RyaW5nKSk7Ci0jZW5kaWYKIH0KIAotdm9pZCBXS0NvbnRleHRDbGVhclBsdWdpbkNsaWVu
dFBvbGljaWVzKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQordm9pZCBXS0NvbnRleHRDbGVhclBs
dWdpbkNsaWVudFBvbGljaWVzKFdLQ29udGV4dFJlZikKIHsKLSNpZiBFTkFCTEUoTkVUU0NBUEVf
UExVR0lOX0FQSSkKLSAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+Y2xlYXJQbHVnaW5D
bGllbnRQb2xpY2llcygpOwotI2VuZGlmCiB9CiAKIFdLRGljdGlvbmFyeVJlZiBXS0NvbnRleHRD
b3B5UGx1Z0luSW5mb0ZvckJ1bmRsZUlkZW50aWZpZXIoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYs
IFdLU3RyaW5nUmVmIHBsdWdJbkJ1bmRsZUlkZW50aWZpZXJSZWYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCmluZGV4IDMyMDVlMjg3
Mzc3NGQ5NzkxZTVjY2E3N2IyYjA2M2JjMzcxZGE3ZjUuLjk5YzQ0YzViMTk1ZGZiMGUxYWJiMDA1
MjlmNTQyNGI4NzA4YTBmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCkBAIC0xMTA0LDEyICsxMTA0LDExIEBAIC0gKEJPT0wp
X2Nvb2tpZUVuYWJsZWQKIAogLSAodm9pZClfc2V0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZDoo
Qk9PTCllbmFibGVkCiB7Ci0gICAgX3ByZWZlcmVuY2VzLT5zZXRQbHVnSW5TbmFwc2hvdHRpbmdF
bmFibGVkKGVuYWJsZWQpOwogfQogCiAtIChCT09MKV9wbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVk
CiB7Ci0gICAgcmV0dXJuIF9wcmVmZXJlbmNlcy0+cGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCgp
OworICAgIHJldHVybiBOTzsKIH0KIAogLSAodm9pZClfc2V0Vmlld0dlc3R1cmVEZWJ1Z2dpbmdF
bmFibGVkOihCT09MKWVuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggMDM1OTFlOGE4ZmE5MDQyMTIwOWI5MzkwZDRm
M2Q4ZTA3NjgwZGY2MS4uNGYzNmUyMzI2NDM3MTAyM2QzOGYyODM4MTA3NTFiY2JhOTk4NTlkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW0KQEAgLTI0OSw5NiArMjQ5LDE2IEBAIC0gKHZvaWQpX3NldE9iamVjdHNGb3JCdW5kbGVQ
YXJhbWV0ZXJzV2l0aERpY3Rpb25hcnk6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkKIAogI2lm
ICFUQVJHRVRfT1NfSVBIT05FCiAKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLQot
c3RhdGljIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIFdl
YkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+Pj4gdG9QbHVnaW5Mb2FkQ2xpZW50UG9saWNp
ZXNIYXNoTWFwKE5TRGljdGlvbmFyeSogZGljdGlvbmFyeSkKLXsKLSAgICBfX2Jsb2NrIEhhc2hN
YXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6OlBsdWdp
bkxvYWRDbGllbnRQb2xpY3k+Pj4gcGx1Z2luTG9hZENsaWVudFBvbGljaWVzOwotICAgIFtkaWN0
aW9uYXJ5IGVudW1lcmF0ZUtleXNBbmRPYmplY3RzVXNpbmdCbG9jazpeKGlkIG5zSG9zdCwgaWQg
bnNQb2xpY2llc0Zvckhvc3QsIEJPT0wgKnN0b3ApIHsKLSAgICAgICAgaWYgKCFbbnNIb3N0IGlz
S2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFBsdWdpbnMsICJfcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMgd2FzIGNhbGxl
ZCB3aXRoIGRpY3Rpb25hcnkgaW4gd3JvbmcgZm9ybWF0Iik7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFbbnNQb2xpY2llc0Zvckhvc3QgaXNLaW5kT2ZDbGFz
czpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KFBsdWdpbnMsICJfcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMgd2FzIGNhbGxlZCB3aXRo
IGRpY3Rpb25hcnkgaW4gd3JvbmcgZm9ybWF0Iik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICBTdHJpbmcgaG9zdCA9IChOU1N0cmluZyAqKW5zSG9zdDsKLSAgICAg
ICAgX19ibG9jayBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6OlBsdWdp
bkxvYWRDbGllbnRQb2xpY3k+PiBwb2xpY2llc0Zvckhvc3Q7Ci0gICAgICAgIFtuc1BvbGljaWVz
Rm9ySG9zdCBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6XihpZCBuc0lkZW50aWZp
ZXIsIGlkIG5zVmVyc2lvbnNUb1BvbGljaWVzLCBCT09MICpzdG9wKSB7Ci0gICAgICAgICAgICBp
ZiAoIVtuc0lkZW50aWZpZXIgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgewotICAg
ICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBsdWdpbnMsICJfcmVzZXRQbHVnaW5Mb2Fk
Q2xpZW50UG9saWNpZXMgd2FzIGNhbGxlZCB3aXRoIGRpY3Rpb25hcnkgaW4gd3JvbmcgZm9ybWF0
Iik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKCFbbnNWZXJzaW9uc1RvUG9saWNpZXMgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNs
YXNzXV0pIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQbHVnaW5zLCAiX3Jl
c2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzIHdhcyBjYWxsZWQgd2l0aCBkaWN0aW9uYXJ5IGlu
IHdyb25nIGZvcm1hdCIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgU3RyaW5nIGJ1bmRsZUlkZW50aWZpZXIgPSAoTlNTdHJpbmcgKiluc0lk
ZW50aWZpZXI7Ci0gICAgICAgICAgICBfX2Jsb2NrIEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpQ
bHVnaW5Mb2FkQ2xpZW50UG9saWN5PiB2ZXJzaW9uc1RvUG9saWNpZXM7Ci0gICAgICAgICAgICBb
bnNWZXJzaW9uc1RvUG9saWNpZXMgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4o
aWQgbnNWZXJzaW9uLCBpZCBuc1BvbGljeSwgQk9PTCAqc3RvcCkgewotICAgICAgICAgICAgICAg
IGlmICghW25zVmVyc2lvbiBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBsdWdpbnMsICJfcmVzZXRQbHVnaW5M
b2FkQ2xpZW50UG9saWNpZXMgd2FzIGNhbGxlZCB3aXRoIGRpY3Rpb25hcnkgaW4gd3JvbmcgZm9y
bWF0Iik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgaWYgKCFbbnNQb2xpY3kgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xh
c3NdXSkgewotICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQbHVnaW5zLCAi
X3Jlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzIHdhcyBjYWxsZWQgd2l0aCBkaWN0aW9uYXJ5
IGluIHdyb25nIGZvcm1hdCIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIHVuc2lnbmVkIHBvbGljeSA9ICgoTlNOdW1iZXIg
Kiluc1BvbGljeSkudW5zaWduZWRJbnRWYWx1ZTsKLSAgICAgICAgICAgICAgICBpZiAoIVdURjo6
aXNWYWxpZEVudW08V2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeT4ocG9saWN5KSkgewot
ICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQbHVnaW5zLCAiX3Jlc2V0UGx1
Z2luTG9hZENsaWVudFBvbGljaWVzIHdhcyBjYWxsZWQgd2l0aCBkaWN0aW9uYXJ5IGluIHdyb25n
IGZvcm1hdCIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIFN0cmluZyB2ZXJzaW9uID0gKE5TU3RyaW5nICopbnNWZXJzaW9u
OwotICAgICAgICAgICAgICAgIHZlcnNpb25zVG9Qb2xpY2llcy5hZGQodmVyc2lvbiwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeT4ocG9saWN5KSk7Ci0gICAgICAg
ICAgICB9XTsKLSAgICAgICAgICAgIGlmICghdmVyc2lvbnNUb1BvbGljaWVzLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgICAgICBwb2xpY2llc0Zvckhvc3QuYWRkKGJ1bmRsZUlkZW50aWZpZXIsIFdU
Rk1vdmUodmVyc2lvbnNUb1BvbGljaWVzKSk7Ci0gICAgICAgIH1dOwotICAgICAgICBpZiAoIXBv
bGljaWVzRm9ySG9zdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBwbHVnaW5Mb2FkQ2xpZW50UG9s
aWNpZXMuYWRkKGhvc3QsIFdURk1vdmUocG9saWNpZXNGb3JIb3N0KSk7Ci0gICAgfV07Ci0gICAg
cmV0dXJuIHBsdWdpbkxvYWRDbGllbnRQb2xpY2llczsKLX0KLQotc3RhdGljIE5TRGljdGlvbmFy
eSAqcG9saWNpZXNIYXNoTWFwVG9EaWN0aW9uYXJ5KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBIYXNo
TWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xp
Y3k+Pj4mIG1hcCkKLXsKLSAgICBhdXRvIHBvbGljaWVzID0gYWRvcHROUyhbW05TTXV0YWJsZURp
Y3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6bWFwLnNpemUoKV0pOwotICAgIGZvciAo
YXV0byYgaG9zdFBhaXIgOiBtYXApIHsKLSAgICAgICAgTlNTdHJpbmcgKmhvc3QgPSBob3N0UGFp
ci5rZXk7Ci0gICAgICAgIHBvbGljaWVzLmdldCgpW2hvc3RdID0gYWRvcHROUyhbW05TTXV0YWJs
ZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6aG9zdFBhaXIudmFsdWUuc2l6ZSgp
XSkuZ2V0KCk7Ci0gICAgICAgIGZvciAoYXV0byYgYnVuZGxlSWRlbnRpZmllclBhaXIgOiBob3N0
UGFpci52YWx1ZSkgewotICAgICAgICAgICAgTlNTdHJpbmcgKmJ1bmRsZXJJZGVudGlmaWVyID0g
YnVuZGxlSWRlbnRpZmllclBhaXIua2V5OwotICAgICAgICAgICAgcG9saWNpZXMuZ2V0KClbaG9z
dF1bYnVuZGxlcklkZW50aWZpZXJdID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxs
b2NdIGluaXRXaXRoQ2FwYWNpdHk6YnVuZGxlSWRlbnRpZmllclBhaXIudmFsdWUuc2l6ZSgpXSku
Z2V0KCk7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHZlcnNpb25QYWlyIDogYnVuZGxlSWRlbnRp
ZmllclBhaXIudmFsdWUpIHsKLSAgICAgICAgICAgICAgICBOU1N0cmluZyAqdmVyc2lvbiA9IHZl
cnNpb25QYWlyLmtleTsKLSAgICAgICAgICAgICAgICBhdXRvIHBvbGljeVZhbHVlID0gc3RhdGlj
X2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9s
aWN5Pj4odmVyc2lvblBhaXIudmFsdWUpOwotICAgICAgICAgICAgICAgIHBvbGljaWVzLmdldCgp
W2hvc3RdW2J1bmRsZXJJZGVudGlmaWVyXVt2ZXJzaW9uXSA9IGFkb3B0TlMoW1tOU051bWJlciBh
bGxvY10gaW5pdFdpdGhVbnNpZ25lZEludDpwb2xpY3lWYWx1ZV0pLmdldCgpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBwb2xpY2llcy5hdXRvcmVsZWFzZSgp
OwotfQotCi0jZW5kaWYKLQogLSAodm9pZClfcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXM6
KE5TRGljdGlvbmFyeSAqKXBvbGljaWVzCiB7Ci0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCi0gICAgX3Byb2Nlc3NQb29sLT5yZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyh0b1Bs
dWdpbkxvYWRDbGllbnRQb2xpY2llc0hhc2hNYXAocG9saWNpZXMpKTsKLSNlbmRpZgogfQogCiAt
KE5TRGljdGlvbmFyeSAqKV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMKIHsKLSAgICBhdXRvJiBt
YXAgPSBfcHJvY2Vzc1Bvb2wtPnBsdWdpbkxvYWRDbGllbnRQb2xpY2llcygpOwotICAgIHJldHVy
biBwb2xpY2llc0hhc2hNYXBUb0RpY3Rpb25hcnkobWFwKTsKKyAgICByZXR1cm4gQHsgfTsKIH0K
LSNlbmRpZgogCisjZW5kaWYKIAogLSAoaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+KV9kb3dubG9h
ZERlbGVnYXRlCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5oCmluZGV4IDU3NGMzNDJmMzNkY2YwNmNjYWRhMTFmMGJkMmQwOTdlYzVhOTU3YTMu
LjA0MmU3ODg1NDExZDQxNzdmY2U5YzY3NWVkOGQ0OGYxMmJiM2Q0ZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCkBAIC0xMzQsOSArMTM0
LDYgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIHZvaWQgd2ViR0xMb2Fk
UG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJikgY29uc3QgZmluYWw7CiAgICAgICAgIHZvaWQg
cmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJQYWdlUHJveHkmLCBjb25zdCBVUkwmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYpIGNvbnN0IGZpbmFs
OwotICAgICAgICBib29sIGRpZEZhaWxUb0luaXRpYWxpemVQbHVnSW4oV2ViUGFnZVByb3h5Jiwg
QVBJOjpEaWN0aW9uYXJ5JikgZmluYWw7Ci0gICAgICAgIGJvb2wgZGlkQmxvY2tJbnNlY3VyZVBs
dWdpblZlcnNpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpEaWN0aW9uYXJ5JikgZmluYWw7Ci0gICAg
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUGx1Z2luTG9hZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IFdlYktpdDo6UGx1Z2luTW9kdWxlTG9hZFBvbGljeSwgQVBJOjpEaWN0aW9uYXJ5JiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OlBsdWdpbk1vZHVsZUxvYWRQb2xpY3ksIGNvbnN0IFdU
Rjo6U3RyaW5nJik+JiYpIGZpbmFsOwogICAgICAgICBib29sIGRpZENoYW5nZUJhY2tGb3J3YXJk
TGlzdChXZWJQYWdlUHJveHkmLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiwgY29uc3QgVmVjdG9y
PFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4mKSBmaW5hbDsKICNlbmRpZgogICAgICAgICBi
b29sIHdpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShXZWJQYWdlUHJveHkmLCBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtJiwgYm9vbCBpbkJhY2tGb3J3YXJkQ2FjaGUpIGZpbmFsOwpAQCAtMjU1LDkg
KzI1Miw2IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmlld1dlYkdMTG9hZFBvbGljeUZv
clVSTCA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1Jlc29sdmVXZWJHTExvYWRQb2xpY3lGb3JV
UkwgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdCYWNrRm9yd2FyZExpc3RJdGVtQWRkZWRSZW1v
dmVkIDogMTsKLSAgICAgICAgYm9vbCB3ZWJWaWV3RGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdJbldp
dGhJbmZvIDogMTsKLSAgICAgICAgYm9vbCB3ZWJWaWV3RGlkQmxvY2tJbnNlY3VyZVBsdWdpblZl
cnNpb25XaXRoSW5mbyA6IDE7Ci0gICAgICAgIGJvb2wgd2ViVmlld0RlY2lkZVBvbGljeUZvclBs
dWdpbkxvYWRXaXRoQ3VycmVudFBvbGljeVBsdWdpbkluZm9Db21wbGV0aW9uSGFuZGxlciA6IDE7
CiAjZW5kaWYKICAgICAgICAgYm9vbCB3ZWJWaWV3V2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
SW5CYWNrRm9yd2FyZENhY2hlIDogMTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IGM0MTAyZmY1MmI5NWUzMjM0NTkwY2U5ZTAz
MTc2NTI5NWU5NmJkYTcuLmU3Y2IwODNjNGZmMmIzMzkwOTNkNzE5NDgzYjU5NGM4MDVmZDU0ZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0KQEAgLTIwMywxMCArMjAzLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OnNldE5hdmlnYXRp
b25EZWxlZ2F0ZShpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlKQogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dlYkdMTG9h
ZFBvbGljeUZvclVSTCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93
ZWJWaWV3OndlYkdMTG9hZFBvbGljeUZvclVSTDpkZWNpc2lvbkhhbmRsZXI6KV07CiAgICAgbV9u
YXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXNvbHZlV2ViR0xMb2FkUG9saWN5Rm9y
VVJMID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVz
b2x2ZVdlYkdMTG9hZFBvbGljeUZvclVSTDpkZWNpc2lvbkhhbmRsZXI6KV07Ci0gICAgbV9uYXZp
Z2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRGYWlsVG9Jbml0aWFsaXplUGx1Z0luV2l0
aEluZm8gPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpk
aWRGYWlsVG9Jbml0aWFsaXplUGx1Z0luV2l0aEluZm86KV07Ci0gICAgbV9uYXZpZ2F0aW9uRGVs
ZWdhdGVNZXRob2RzLndlYlZpZXdEaWRCbG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbldpdGhJbmZv
ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkQmxv
Y2tJbnNlY3VyZVBsdWdpblZlcnNpb25XaXRoSW5mbzopXTsKICAgICBtX25hdmlnYXRpb25EZWxl
Z2F0ZU1ldGhvZHMud2ViVmlld0JhY2tGb3J3YXJkTGlzdEl0ZW1BZGRlZFJlbW92ZWQgPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpiYWNrRm9yd2FyZExp
c3RJdGVtQWRkZWQ6cmVtb3ZlZDopXTsKLSAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld0RlY2lkZVBvbGljeUZvclBsdWdpbkxvYWRXaXRoQ3VycmVudFBvbGljeVBsdWdpbklu
Zm9Db21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF93ZWJWaWV3OmRlY2lkZVBvbGljeUZvclBsdWdpbkxvYWRXaXRoQ3VycmVudFBvbGljeTpw
bHVnaW5JbmZvOmNvbXBsZXRpb25IYW5kbGVyOildOwogI2VuZGlmCiAgICAgbV9uYXZpZ2F0aW9u
RGVsZWdhdGVNZXRob2RzLndlYlZpZXdXaWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1JbkJhY2tG
b3J3YXJkQ2FjaGUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2Vi
Vmlldzp3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06aW5QYWdlQ2FjaGU6KV07CiAjaWYgSEFW
RShBUFBfU1NPKQpAQCAtMzI1LDg2ICszMjIsNiBAQCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6On5OYXZpZ2F0aW9uQ2xpZW50KCkKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLWJv
b2wgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGYWlsVG9Jbml0aWFsaXpl
UGx1Z0luKFdlYlBhZ2VQcm94eSYsIEFQSTo6RGljdGlvbmFyeSYgaW5mbykKLXsKLSAgICBpZiAo
IW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlk
RmFpbFRvSW5pdGlhbGl6ZVBsdWdJbldpdGhJbmZvKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgCi0gICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBtX25hdmlnYXRpb25TdGF0ZS5tX25h
dmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKLSAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIFsoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRl
UHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1f
d2ViVmlldyBkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z0luV2l0aEluZm86d3JhcHBlcihpbmZvKV07
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkaWRCbG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbihXZWJQYWdlUHJveHkmLCBBUEk6
OkRpY3Rpb25hcnkmIGluZm8pCi17Ci0gICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmln
YXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9u
V2l0aEluZm8pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gbmF2aWdhdGlvbkRl
bGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7Ci0g
ICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IFsoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRlIF93
ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRCbG9ja0luc2VjdXJlUGx1Z2lu
VmVyc2lvbldpdGhJbmZvOndyYXBwZXIoaW5mbyldOwotICAgIHJldHVybiB0cnVlOwotfQotCi1z
dGF0aWMgV2ViS2l0OjpQbHVnaW5Nb2R1bGVMb2FkUG9saWN5IHBsdWdpbk1vZHVsZUxvYWRQb2xp
Y3koX1dLUGx1Z2luTW9kdWxlTG9hZFBvbGljeSBwb2xpY3kpCi17Ci0gICAgc3dpdGNoIChwb2xp
Y3kpIHsKLSAgICBjYXNlIF9XS1BsdWdpbk1vZHVsZUxvYWRQb2xpY3lMb2FkTm9ybWFsbHk6Ci0g
ICAgICAgIHJldHVybiBXZWJLaXQ6OlBsdWdpbk1vZHVsZUxvYWROb3JtYWxseTsKLSAgICBjYXNl
IF9XS1BsdWdpbk1vZHVsZUxvYWRQb2xpY3lMb2FkVW5zYW5kYm94ZWQ6Ci0gICAgICAgIHJldHVy
biBXZWJLaXQ6OlBsdWdpbk1vZHVsZUxvYWRVbnNhbmRib3hlZDsKLSAgICBjYXNlIF9XS1BsdWdp
bk1vZHVsZUxvYWRQb2xpY3lCbG9ja2VkRm9yU2VjdXJpdHk6Ci0gICAgICAgIHJldHVybiBXZWJL
aXQ6OlBsdWdpbk1vZHVsZUJsb2NrZWRGb3JTZWN1cml0eTsKLSAgICBjYXNlIF9XS1BsdWdpbk1v
ZHVsZUxvYWRQb2xpY3lCbG9ja2VkRm9yQ29tcGF0aWJpbGl0eToKLSAgICAgICAgcmV0dXJuIFdl
YktpdDo6UGx1Z2luTW9kdWxlQmxvY2tlZEZvckNvbXBhdGliaWxpdHk7Ci0gICAgfQotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXZWJLaXQ6OlBsdWdpbk1vZHVsZUxvYWRO
b3JtYWxseTsKLX0KLQotc3RhdGljIF9XS1BsdWdpbk1vZHVsZUxvYWRQb2xpY3kgd2tQbHVnaW5N
b2R1bGVMb2FkUG9saWN5KFdlYktpdDo6UGx1Z2luTW9kdWxlTG9hZFBvbGljeSBwb2xpY3kpCi17
Ci0gICAgc3dpdGNoIChwb2xpY3kpIHsKLSAgICBjYXNlIFdlYktpdDo6UGx1Z2luTW9kdWxlTG9h
ZE5vcm1hbGx5OgotICAgICAgICByZXR1cm4gX1dLUGx1Z2luTW9kdWxlTG9hZFBvbGljeUxvYWRO
b3JtYWxseTsKLSAgICBjYXNlIFdlYktpdDo6UGx1Z2luTW9kdWxlTG9hZFVuc2FuZGJveGVkOgot
ICAgICAgICByZXR1cm4gX1dLUGx1Z2luTW9kdWxlTG9hZFBvbGljeUxvYWRVbnNhbmRib3hlZDsK
LSAgICBjYXNlIFdlYktpdDo6UGx1Z2luTW9kdWxlQmxvY2tlZEZvclNlY3VyaXR5OgotICAgICAg
ICByZXR1cm4gX1dLUGx1Z2luTW9kdWxlTG9hZFBvbGljeUJsb2NrZWRGb3JTZWN1cml0eTsKLSAg
ICBjYXNlIFdlYktpdDo6UGx1Z2luTW9kdWxlQmxvY2tlZEZvckNvbXBhdGliaWxpdHk6Ci0gICAg
ICAgIHJldHVybiBfV0tQbHVnaW5Nb2R1bGVMb2FkUG9saWN5QmxvY2tlZEZvckNvbXBhdGliaWxp
dHk7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBfV0tQbHVn
aW5Nb2R1bGVMb2FkUG9saWN5TG9hZE5vcm1hbGx5OwotfQotCi12b2lkIE5hdmlnYXRpb25TdGF0
ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yUGx1Z2luTG9hZChXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYsIFdlYktpdDo6UGx1Z2luTW9kdWxlTG9hZFBvbGljeSBjdXJyZW50UGx1Z2lu
TG9hZFBvbGljeSwgQVBJOjpEaWN0aW9uYXJ5JiBwbHVnaW5JbmZvcm1hdGlvbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJLaXQ6OlBsdWdpbk1vZHVsZUxvYWRQb2xpY3ksIGNvbnN0IFN0cmlu
ZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUu
bV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEZWNpZGVQb2xpY3lGb3JQbHVnaW5M
b2FkV2l0aEN1cnJlbnRQb2xpY3lQbHVnaW5JbmZvQ29tcGxldGlvbkhhbmRsZXIpIHsKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoY3VycmVudFBsdWdpbkxvYWRQb2xpY3ksIHsgfSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBt
X25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKLSAgICBpZiAoIW5h
dmlnYXRpb25EZWxlZ2F0ZSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjdXJyZW50UGx1
Z2luTG9hZFBvbGljeSwgeyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8g
Y2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShuYXZpZ2F0aW9u
RGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JQbHVnaW5M
b2FkV2l0aEN1cnJlbnRQb2xpY3k6cGx1Z2luSW5mbzpjb21wbGV0aW9uSGFuZGxlcjopKTsKLSAg
ICBbKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+KW5hdmlnYXRpb25EZWxlZ2F0ZSBf
d2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGVjaWRlUG9saWN5Rm9yUGx1Z2lu
TG9hZFdpdGhDdXJyZW50UG9saWN5OndrUGx1Z2luTW9kdWxlTG9hZFBvbGljeShjdXJyZW50UGx1
Z2luTG9hZFBvbGljeSkgcGx1Z2luSW5mbzp3cmFwcGVyKHBsdWdpbkluZm9ybWF0aW9uKSBjb21w
bGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShfV0tQbHVnaW5N
b2R1bGVMb2FkUG9saWN5IHBvbGljeSwgTlNTdHJpbmcgKnVuYXZhaWxhYmlsaXR5RGVzY3JpcHRp
b24pIG11dGFibGUgewotICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNC
ZWVuQ2FsbGVkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNoZWNrZXItPmRpZENh
bGxDb21wbGV0aW9uSGFuZGxlcigpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihwbHVnaW5N
b2R1bGVMb2FkUG9saWN5KHBvbGljeSksIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24pOwotICAg
IH0pLmdldCgpXTsKLX0KLQogaW5saW5lIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB0b1dlYkNv
cmVXZWJHTExvYWRQb2xpY3koX1dLV2ViR0xMb2FkUG9saWN5IHBvbGljeSkKIHsKICAgICBzd2l0
Y2ggKHBvbGljeSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYTBjZmYwY2JhYzMxYzI3ZTIyOTgxOWY3ZTQ1YmM3YWMyZTI1NzI2Ni4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDE5MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaCIKLQotI2luY2x1ZGUgIkFQSUFy
cmF5LmgiCi0jaW5jbHVkZSAiQVBJRGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIldlYkNvbnRleHRD
bGllbnQuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJQ
cm9jZXNzUG9vbC5oIgotI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1zdGF0aWMgY29uc3QgU2Vjb25kcyBw
bHVnSW5BdXRvU3RhcnRFeHBpcmF0aW9uVGltZVRocmVzaG9sZCB7IDMwICogMjQgKiA2MCAqIDYw
IH07Ci0KLVBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjpQbHVnSW5BdXRvU3RhcnRQcm92aWRlcihX
ZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCi0gICAgOiBtX3Byb2Nlc3NQb29sKHByb2Nlc3NQ
b29sKQotewotICAgIG1faGFzaFRvT3JpZ2luTWFwLmFkZChQQUw6OlNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpLCBIYXNoVG9PcmlnaW5NYXAoKSk7Ci0gICAgbV9hdXRvU3RhcnRUYWJsZS5h
ZGQoUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgQXV0b1N0YXJ0VGFibGUoKSk7
Ci19Ci0KLXN0YXRpYyBXYWxsVGltZSBleHBpcmF0aW9uVGltZUZyb21Ob3coKQotewotICAgIHJl
dHVybiBXYWxsVGltZTo6bm93KCkgKyBwbHVnSW5BdXRvU3RhcnRFeHBpcmF0aW9uVGltZVRocmVz
aG9sZDsKLX0KLQotdm9pZCBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6YWRkQXV0b1N0YXJ0T3Jp
Z2luSGFzaChjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhh
c2gsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSAgICBhdXRvIHNlc3Npb25JdGVyYXRv
ciA9IG1faGFzaFRvT3JpZ2luTWFwLmZpbmQoc2Vzc2lvbklEKTsKLSAgICBpZiAoc2Vzc2lvbkl0
ZXJhdG9yID09IG1faGFzaFRvT3JpZ2luTWFwLmVuZCgpKSB7Ci0gICAgICAgIGlmIChtX2hhc2hU
b09yaWdpbk1hcC5nZXQoUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkuY29udGFp
bnMocGx1Z0luT3JpZ2luSGFzaCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHNlc3Np
b25JdGVyYXRvciA9IG1faGFzaFRvT3JpZ2luTWFwLnNldChzZXNzaW9uSUQsIEhhc2hUb09yaWdp
bk1hcCgpKS5pdGVyYXRvcjsKLSAgICB9IGVsc2UgaWYgKHNlc3Npb25JdGVyYXRvci0+dmFsdWUu
Y29udGFpbnMocGx1Z0luT3JpZ2luSGFzaCkgfHwgbV9oYXNoVG9PcmlnaW5NYXAuZ2V0KFBBTDo6
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpLmNvbnRhaW5zKHBsdWdJbk9yaWdpbkhhc2gp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBBdXRvU3RhcnRUYWJsZTo6aXRlcmF0b3IgaXQgPSBt
X2F1dG9TdGFydFRhYmxlLmFkZChzZXNzaW9uSUQsIEF1dG9TdGFydFRhYmxlKCkpLml0ZXJhdG9y
LT52YWx1ZS5hZGQocGFnZU9yaWdpbiwgUGx1Z0luQXV0b1N0YXJ0T3JpZ2luTWFwKCkpLml0ZXJh
dG9yOwotCi0gICAgV2FsbFRpbWUgZXhwaXJhdGlvblRpbWUgPSBleHBpcmF0aW9uVGltZUZyb21O
b3coKTsKLSAgICBpdC0+dmFsdWUuc2V0KHBsdWdJbk9yaWdpbkhhc2gsIGV4cGlyYXRpb25UaW1l
KTsKLSAgICBzZXNzaW9uSXRlcmF0b3ItPnZhbHVlLnNldChwbHVnSW5PcmlnaW5IYXNoLCBwYWdl
T3JpZ2luKTsKLQotICAgIG1fcHJvY2Vzc1Bvb2wtPnNlbmRUb0FsbFByb2Nlc3Nlc0ZvclNlc3Np
b24oTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2go
cGx1Z0luT3JpZ2luSGFzaCwgZXhwaXJhdGlvblRpbWUpLCBzZXNzaW9uSUQpOwotCi0gICAgaWYg
KCFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgbV9wcm9jZXNzUG9vbC0+Y2xpZW50
KCkucGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzQ2hhbmdlZChtX3Byb2Nlc3NQb29sKTsKLX0K
LQotUGx1Z0luQXV0b1N0YXJ0T3JpZ2luTWFwIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjphdXRv
U3RhcnRPcmlnaW5IYXNoZXNDb3B5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgY29uc3QKLXsK
LSAgICBQbHVnSW5BdXRvU3RhcnRPcmlnaW5NYXAgbWFwOwotCi0gICAgYXV0byBpdCA9IG1fYXV0
b1N0YXJ0VGFibGUuZmluZChzZXNzaW9uSUQpOwotICAgIGlmIChpdCAhPSBtX2F1dG9TdGFydFRh
YmxlLmVuZCgpKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYga2V5T3JpZ2luSGFzaCA6IGl0
LT52YWx1ZSkgewotICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW5IYXNoIDoga2V5
T3JpZ2luSGFzaC52YWx1ZSkKLSAgICAgICAgICAgICAgICBtYXAuc2V0KG9yaWdpbkhhc2gua2V5
LCBvcmlnaW5IYXNoLnZhbHVlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbWFwOwot
fQotCi1SZWY8QVBJOjpEaWN0aW9uYXJ5PiBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6YXV0b1N0
YXJ0T3JpZ2luc1RhYmxlQ29weSgpIGNvbnN0Ci17Ci0gICAgQVBJOjpEaWN0aW9uYXJ5OjpNYXBU
eXBlIG1hcDsKLQotICAgIFdhbGxUaW1lIG5vdyA9IFdhbGxUaW1lOjpub3coKTsKLSAgICBmb3Ig
KGNvbnN0IGF1dG8mIHN0cmluZ09yaWdpbkhhc2ggOiBtX2F1dG9TdGFydFRhYmxlLmdldChQQUw6
OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSkgewotICAgICAgICBBUEk6OkRpY3Rpb25h
cnk6Ok1hcFR5cGUgaGFzaE1hcDsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW5IYXNo
IDogc3RyaW5nT3JpZ2luSGFzaC52YWx1ZSkgewotICAgICAgICAgICAgaWYgKG5vdyA8PSBvcmln
aW5IYXNoLnZhbHVlKQotICAgICAgICAgICAgICAgIGhhc2hNYXAuc2V0KFN0cmluZzo6bnVtYmVy
KG9yaWdpbkhhc2gua2V5KSwgQVBJOjpEb3VibGU6OmNyZWF0ZShvcmlnaW5IYXNoLnZhbHVlLnNl
Y29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGhh
c2hNYXAuc2l6ZSgpKQotICAgICAgICAgICAgbWFwLnNldChzdHJpbmdPcmlnaW5IYXNoLmtleSwg
QVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZShoYXNoTWFwKSkpOwotICAgIH0KLQotICAg
IHJldHVybiBBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEZNb3ZlKG1hcCkpOwotfQotCi12b2lk
IFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjpzZXRBdXRvU3RhcnRPcmlnaW5zVGFibGUoQVBJOjpE
aWN0aW9uYXJ5JiB0YWJsZSkKLXsKLSAgICBzZXRBdXRvU3RhcnRPcmlnaW5zVGFibGVXaXRoSXRl
bXNQYXNzaW5nVGVzdCh0YWJsZSwgW10oV2FsbFRpbWUpIHsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OnNldEF1dG9TdGFy
dE9yaWdpbnNGaWx0ZXJpbmdPdXRFbnRyaWVzQWRkZWRBZnRlclRpbWUoQVBJOjpEaWN0aW9uYXJ5
JiB0YWJsZSwgV2FsbFRpbWUgdGltZSkKLXsKLSAgICBXYWxsVGltZSBhZGp1c3RlZFRpbWVzdGFt
cCA9IHRpbWUgKyBwbHVnSW5BdXRvU3RhcnRFeHBpcmF0aW9uVGltZVRocmVzaG9sZDsKLSAgICBz
ZXRBdXRvU3RhcnRPcmlnaW5zVGFibGVXaXRoSXRlbXNQYXNzaW5nVGVzdCh0YWJsZSwgW2FkanVz
dGVkVGltZXN0YW1wXShXYWxsVGltZSBleHBpcmF0aW9uVGltZXN0YW1wKSB7Ci0gICAgICAgIHJl
dHVybiBhZGp1c3RlZFRpbWVzdGFtcCA+IGV4cGlyYXRpb25UaW1lc3RhbXA7Ci0gICAgfSk7Ci19
Ci0KLXZvaWQgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OnNldEF1dG9TdGFydE9yaWdpbnNUYWJs
ZVdpdGhJdGVtc1Bhc3NpbmdUZXN0KEFQSTo6RGljdGlvbmFyeSYgdGFibGUsIFdURjo6RnVuY3Rp
b248Ym9vbChXYWxsVGltZSBleHBpcmF0aW9uVGltZXN0YW1wKT4mJiBpc0V4cGlyYXRpb25UaW1l
QWNjZXB0YWJsZSkKLXsKLSAgICBBU1NFUlQoaXNFeHBpcmF0aW9uVGltZUFjY2VwdGFibGUpOwot
Ci0gICAgbV9oYXNoVG9PcmlnaW5NYXAuY2xlYXIoKTsKLSAgICBtX2F1dG9TdGFydFRhYmxlLmNs
ZWFyKCk7Ci0gICAgSGFzaE1hcDx1bnNpZ25lZCwgV2FsbFRpbWU+IGhhc2hNYXA7Ci0gICAgYXV0
byYgaGFzaFRvT3JpZ2luTWFwID0gbV9oYXNoVG9PcmlnaW5NYXAuYWRkKFBBTDo6U2Vzc2lvbklE
OjpkZWZhdWx0U2Vzc2lvbklEKCksIEhhc2hUb09yaWdpbk1hcCgpKS5pdGVyYXRvci0+dmFsdWU7
Ci0gICAgQXV0b1N0YXJ0VGFibGUmIGFzdCA9IG1fYXV0b1N0YXJ0VGFibGUuYWRkKFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIEF1dG9TdGFydFRhYmxlKCkpLml0ZXJhdG9yLT52
YWx1ZTsKLQotICAgIGZvciAoYXV0byYgc3RyRGljdCA6IHRhYmxlLm1hcCgpKSB7Ci0gICAgICAg
IFBsdWdJbkF1dG9TdGFydE9yaWdpbk1hcCBoYXNoZXM7Ci0gICAgICAgIGZvciAoYXV0byYgaGFz
aFRpbWUgOiBzdGF0aWNfY2FzdDxBUEk6OkRpY3Rpb25hcnkqPihzdHJEaWN0LnZhbHVlLmdldCgp
KS0+bWFwKCkpIHsKLSAgICAgICAgICAgIGJvb2wgb2s7Ci0gICAgICAgICAgICB1bnNpZ25lZCBo
YXNoID0gaGFzaFRpbWUua2V5LnRvVUludCgmb2spOwotICAgICAgICAgICAgaWYgKCFvaykKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgaWYgKGhhc2hUaW1lLnZhbHVl
LT50eXBlKCkgIT0gQVBJOjpEb3VibGU6OkFQSVR5cGUpCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0KLSAgICAgICAgICAgIFdhbGxUaW1lIGV4cGlyYXRpb25UaW1lID0gV2FsbFRpbWU6OmZy
b21SYXdTZWNvbmRzKHN0YXRpY19jYXN0PEFQSTo6RG91YmxlKj4oaGFzaFRpbWUudmFsdWUuZ2V0
KCkpLT52YWx1ZSgpKTsKLSAgICAgICAgICAgIGlmICghaXNFeHBpcmF0aW9uVGltZUFjY2VwdGFi
bGUoZXhwaXJhdGlvblRpbWUpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
ICAgICBoYXNoZXMuc2V0KGhhc2gsIGV4cGlyYXRpb25UaW1lKTsKLSAgICAgICAgICAgIGhhc2hN
YXAuc2V0KGhhc2gsIGV4cGlyYXRpb25UaW1lKTsKLSAgICAgICAgICAgIGhhc2hUb09yaWdpbk1h
cC5zZXQoaGFzaCwgc3RyRGljdC5rZXkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFoYXNo
ZXMuaXNFbXB0eSgpKQotICAgICAgICAgICAgYXN0LnNldChzdHJEaWN0LmtleSwgaGFzaGVzKTsK
LSAgICB9Ci0KLSAgICBtX3Byb2Nlc3NQb29sLT5zZW5kVG9BbGxQcm9jZXNzZXNGb3JTZXNzaW9u
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZXNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyho
YXNoTWFwKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7Ci19Ci0KLXZvaWQg
UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OnNldEF1dG9TdGFydE9yaWdpbnNBcnJheShBUEk6OkFy
cmF5JiBvcmlnaW5MaXN0KQotewotICAgIG1fYXV0b1N0YXJ0T3JpZ2lucy5jbGVhcigpOwotICAg
IGZvciAoYXV0byBzdHJpbmcgOiBvcmlnaW5MaXN0LmVsZW1lbnRzT2ZUeXBlPEFQSTo6U3RyaW5n
PigpKQotICAgICAgICBtX2F1dG9TdGFydE9yaWdpbnMuYXBwZW5kKHN0cmluZy0+c3RyaW5nKCkp
OwotfQotCi12b2lkIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjpkaWRSZWNlaXZlVXNlckludGVy
YWN0aW9uKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKLXsKLSAgICBhdXRvIHNlc3Npb25JdGVyYXRvciA9IG1faGFzaFRvT3JpZ2luTWFwLmZpbmQo
c2Vzc2lvbklEKTsKLSAgICBIYXNoVG9PcmlnaW5NYXA6OmNvbnN0X2l0ZXJhdG9yIGl0OwotICAg
IGJvb2wgY29udGFpbnMgPSBmYWxzZTsKLSAgICBpZiAoc2Vzc2lvbkl0ZXJhdG9yICE9IG1faGFz
aFRvT3JpZ2luTWFwLmVuZCgpKSB7Ci0gICAgICAgIGl0ID0gc2Vzc2lvbkl0ZXJhdG9yLT52YWx1
ZS5maW5kKHBsdWdJbk9yaWdpbkhhc2gpOwotICAgICAgICBjb250YWlucyA9IGl0ICE9IHNlc3Np
b25JdGVyYXRvci0+dmFsdWUuZW5kKCk7Ci0gICAgfQotICAgIGlmICghY29udGFpbnMpIHsKLSAg
ICAgICAgc2Vzc2lvbkl0ZXJhdG9yID0gbV9oYXNoVG9PcmlnaW5NYXAuZmluZChQQUw6OlNlc3Np
b25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKLSAgICAgICAgaXQgPSBzZXNzaW9uSXRlcmF0b3It
PnZhbHVlLmZpbmQocGx1Z0luT3JpZ2luSGFzaCk7Ci0gICAgICAgIGlmIChpdCA9PSBzZXNzaW9u
SXRlcmF0b3ItPnZhbHVlLmVuZCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFdhbGxUaW1l
IG5ld0V4cGlyYXRpb25UaW1lID0gZXhwaXJhdGlvblRpbWVGcm9tTm93KCk7Ci0gICAgbV9hdXRv
U3RhcnRUYWJsZS5hZGQoc2Vzc2lvbklELCBBdXRvU3RhcnRUYWJsZSgpKS5pdGVyYXRvci0+dmFs
dWUuYWRkKGl0LT52YWx1ZSwgUGx1Z0luQXV0b1N0YXJ0T3JpZ2luTWFwKCkpLml0ZXJhdG9yLT52
YWx1ZS5zZXQocGx1Z0luT3JpZ2luSGFzaCwgbmV3RXhwaXJhdGlvblRpbWUpOwotICAgIG1fcHJv
Y2Vzc1Bvb2wtPnNlbmRUb0FsbFByb2Nlc3Nlc0ZvclNlc3Npb24oTWVzc2FnZXM6OldlYlByb2Nl
c3M6OkRpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gocGx1Z0luT3JpZ2luSGFzaCwgbmV3
RXhwaXJhdGlvblRpbWUpLCBzZXNzaW9uSUQpOwotICAgIG1fcHJvY2Vzc1Bvb2wtPmNsaWVudCgp
LnBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlc0NoYW5nZWQobV9wcm9jZXNzUG9vbCk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA1NDJkMTZlZGQ4ODgxYzNmYjQ5ZWY3OWE2NmQ2NjU1ZTkwMzQzNDUzLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFBsdWdJbkF1dG9TdGFy
dFByb3ZpZGVyX2gKLSNkZWZpbmUgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXJfaAotCi0jaW5jbHVk
ZSA8cGFsL1Nlc3Npb25JRC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSGFzaC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1l
c3BhY2UgQVBJIHsKLWNsYXNzIEFycmF5OwotY2xhc3MgRGljdGlvbmFyeTsKLX0KLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlByb2Nlc3NQb29sOwotCi10eXBlZGVmIEhhc2hNYXA8
dW5zaWduZWQsIFdhbGxUaW1lPiBQbHVnSW5BdXRvU3RhcnRPcmlnaW5NYXA7Ci10eXBlZGVmIEhh
c2hNYXA8UEFMOjpTZXNzaW9uSUQsIFBsdWdJbkF1dG9TdGFydE9yaWdpbk1hcD4gU2Vzc2lvblBs
dWdJbkF1dG9TdGFydE9yaWdpbk1hcDsKLXR5cGVkZWYgVmVjdG9yPFN0cmluZz4gUGx1Z0luQXV0
b1N0YXJ0T3JpZ2luczsKLQotY2xhc3MgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIgewotICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyKTsKLXB1YmxpYzoKLSAg
ICBleHBsaWNpdCBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcihXZWJQcm9jZXNzUG9vbCopOwotCi0g
ICAgdm9pZCBhZGRBdXRvU3RhcnRPcmlnaW5IYXNoKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwg
dW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgUEFMOjpTZXNzaW9uSUQpOwotICAgIHZvaWQgZGlk
UmVjZWl2ZVVzZXJJbnRlcmFjdGlvbih1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoLCBQQUw6OlNl
c3Npb25JRCk7Ci0KLSAgICBSZWY8QVBJOjpEaWN0aW9uYXJ5PiBhdXRvU3RhcnRPcmlnaW5zVGFi
bGVDb3B5KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRBdXRvU3RhcnRPcmlnaW5zVGFibGUoQVBJOjpE
aWN0aW9uYXJ5Jik7Ci0gICAgdm9pZCBzZXRBdXRvU3RhcnRPcmlnaW5zRmlsdGVyaW5nT3V0RW50
cmllc0FkZGVkQWZ0ZXJUaW1lKEFQSTo6RGljdGlvbmFyeSYsIFdhbGxUaW1lKTsKLSAgICB2b2lk
IHNldEF1dG9TdGFydE9yaWdpbnNBcnJheShBUEk6OkFycmF5Jik7Ci0KLSAgICBQbHVnSW5BdXRv
U3RhcnRPcmlnaW5NYXAgYXV0b1N0YXJ0T3JpZ2luSGFzaGVzQ29weShQQUw6OlNlc3Npb25JRCkg
Y29uc3Q7Ci0gICAgY29uc3QgUGx1Z0luQXV0b1N0YXJ0T3JpZ2lucyYgYXV0b1N0YXJ0T3JpZ2lu
cygpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b1N0YXJ0T3JpZ2luczsgfQotCi0gICAgdXNpbmcgSGFz
aFRvT3JpZ2luTWFwID0gSGFzaE1hcDx1bnNpZ25lZCwgU3RyaW5nPjsKLSAgICB1c2luZyBQZXJT
ZXNzaW9uSGFzaFRvT3JpZ2luTWFwID0gSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgSGFzaFRvT3Jp
Z2luTWFwPjsKLSAgICB1c2luZyBBdXRvU3RhcnRUYWJsZSA9IEhhc2hNYXA8U3RyaW5nLCBQbHVn
SW5BdXRvU3RhcnRPcmlnaW5NYXAsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD47Ci0KLXByaXZh
dGU6Ci0gICAgV2ViUHJvY2Vzc1Bvb2wqIG1fcHJvY2Vzc1Bvb2w7Ci0KLSAgICB2b2lkIHNldEF1
dG9TdGFydE9yaWdpbnNUYWJsZVdpdGhJdGVtc1Bhc3NpbmdUZXN0KEFQSTo6RGljdGlvbmFyeSYs
IFdURjo6RnVuY3Rpb248Ym9vbChXYWxsVGltZSBleHBpcmF0aW9uVGltZXN0YW1wKT4mJik7Ci0K
LSAgICB0eXBlZGVmIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIEF1dG9TdGFydFRhYmxlPiBTZXNz
aW9uQXV0b1N0YXJ0VGFibGU7Ci0gICAgU2Vzc2lvbkF1dG9TdGFydFRhYmxlIG1fYXV0b1N0YXJ0
VGFibGU7Ci0KLSAgICBQZXJTZXNzaW9uSGFzaFRvT3JpZ2luTWFwIG1faGFzaFRvT3JpZ2luTWFw
OwotCi0gICAgUGx1Z0luQXV0b1N0YXJ0T3JpZ2lucyBtX2F1dG9TdGFydE9yaWdpbnM7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8qIFBsdWdJbkF1dG9TdGFydFByb3Zp
ZGVyX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAKaW5kZXggZmI3MjJiYzVhZGZiY2UyOTYyMjhmNzA1OTJh
MjJiZTkyZWM5MGRiZi4uZmNkNWUzMzA2MThmY2YzY2ZiNDgxNjY5YmUyMzZmMWQ2YWJlY2QyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzTWFuYWdlci5jcHAKQEAgLTUxLDE0ICs1MSwxMyBAQCBQbHVnaW5Qcm9jZXNzTWFuYWdl
cjo6UGx1Z2luUHJvY2Vzc01hbmFnZXIoKQogewogfQogCi11aW50NjRfdCBQbHVnaW5Qcm9jZXNz
TWFuYWdlcjo6cGx1Z2luUHJvY2Vzc1Rva2VuKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdp
bk1vZHVsZUluZm8sIFBsdWdpblByb2Nlc3NUeXBlIHBsdWdpblByb2Nlc3NUeXBlLCBQbHVnaW5Q
cm9jZXNzU2FuZGJveFBvbGljeSBwbHVnaW5Qcm9jZXNzU2FuZGJveFBvbGljeSkKK3VpbnQ2NF90
IFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpwbHVnaW5Qcm9jZXNzVG9rZW4oY29uc3QgUGx1Z2luTW9k
dWxlSW5mbyYgcGx1Z2luTW9kdWxlSW5mbywgUGx1Z2luUHJvY2Vzc1NhbmRib3hQb2xpY3kgcGx1
Z2luUHJvY2Vzc1NhbmRib3hQb2xpY3kpCiB7CiAgICAgLy8gU2VlIGlmIHdlIGtub3cgdGhpcyB0
b2tlbiBhbHJlYWR5LgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wbHVnaW5Qcm9jZXNz
VG9rZW5zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IFBsdWdpblByb2Nlc3NBdHRyaWJ1
dGVzJiBhdHRyaWJ1dGVzID0gbV9wbHVnaW5Qcm9jZXNzVG9rZW5zW2ldLmZpcnN0OwogCiAgICAg
ICAgIGlmIChhdHRyaWJ1dGVzLm1vZHVsZUluZm8ucGF0aCA9PSBwbHVnaW5Nb2R1bGVJbmZvLnBh
dGgKLSAgICAgICAgICAgICYmIGF0dHJpYnV0ZXMucHJvY2Vzc1R5cGUgPT0gcGx1Z2luUHJvY2Vz
c1R5cGUKICAgICAgICAgICAgICYmIGF0dHJpYnV0ZXMuc2FuZGJveFBvbGljeSA9PSBwbHVnaW5Q
cm9jZXNzU2FuZGJveFBvbGljeSkKICAgICAgICAgICAgIHJldHVybiBtX3BsdWdpblByb2Nlc3NU
b2tlbnNbaV0uc2Vjb25kOwogICAgIH0KQEAgLTczLDcgKzcyLDYgQEAgdWludDY0X3QgUGx1Z2lu
UHJvY2Vzc01hbmFnZXI6OnBsdWdpblByb2Nlc3NUb2tlbihjb25zdCBQbHVnaW5Nb2R1bGVJbmZv
JiBwbHVnaW4KIAogICAgIFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CiAgICAg
YXR0cmlidXRlcy5tb2R1bGVJbmZvID0gcGx1Z2luTW9kdWxlSW5mbzsKLSAgICBhdHRyaWJ1dGVz
LnByb2Nlc3NUeXBlID0gcGx1Z2luUHJvY2Vzc1R5cGU7CiAgICAgYXR0cmlidXRlcy5zYW5kYm94
UG9saWN5ID0gcGx1Z2luUHJvY2Vzc1NhbmRib3hQb2xpY3k7CiAKICAgICBtX3BsdWdpblByb2Nl
c3NUb2tlbnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKFdURk1vdmUoYXR0cmlidXRlcyksIHRva2Vu
KSk7CkBAIC0xMDUsNyArMTAzLDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6cmVtb3Zl
UGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHIKIAogdm9pZCBQ
bHVnaW5Qcm9jZXNzTWFuYWdlcjo6ZmV0Y2hXZWJzaXRlRGF0YShjb25zdCBQbHVnaW5Nb2R1bGVJ
bmZvJiBwbHVnaW4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlv
bnMsIFdURjo6RnVuY3Rpb248dm9pZCAoVmVjdG9yPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIGF1dG8gdG9rZW4gPSBwbHVnaW5Qcm9jZXNzVG9rZW4ocGx1Z2luLCBQbHVn
aW5Qcm9jZXNzVHlwZTo6Tm9ybWFsLCBQbHVnaW5Qcm9jZXNzU2FuZGJveFBvbGljeTo6Tm9ybWFs
KTsKKyAgICBhdXRvIHRva2VuID0gcGx1Z2luUHJvY2Vzc1Rva2VuKHBsdWdpbiwgUGx1Z2luUHJv
Y2Vzc1NhbmRib3hQb2xpY3k6Ok5vcm1hbCk7CiAgICAgYXV0byBwbHVnaW5Qcm9jZXNzID0gZmV0
Y2hPcHRpb25zLmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkRvTm90Q3JlYXRlUHJv
Y2Vzc2VzKSA/IGdldFBsdWdpblByb2Nlc3ModG9rZW4pIDogZ2V0T3JDcmVhdGVQbHVnaW5Qcm9j
ZXNzKHRva2VuKTsKICAgICBpZiAoIXBsdWdpblByb2Nlc3MpIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKQEAgLTExNywxMyArMTE1LDEzIEBAIHZvaWQgUGx1Z2luUHJvY2Vzc01h
bmFnZXI6OmZldGNoV2Vic2l0ZURhdGEoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luLCBP
cHRpCiAKIHZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OmRlbGV0ZVdlYnNpdGVEYXRhKGNvbnN0
IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgV1RGOjpG
dW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFBsdWdpblByb2Nl
c3NQcm94eSogcGx1Z2luUHJvY2VzcyA9IGdldE9yQ3JlYXRlUGx1Z2luUHJvY2VzcyhwbHVnaW5Q
cm9jZXNzVG9rZW4ocGx1Z2luLCBQbHVnaW5Qcm9jZXNzVHlwZTo6Tm9ybWFsLCBQbHVnaW5Qcm9j
ZXNzU2FuZGJveFBvbGljeTo6Tm9ybWFsKSk7CisgICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVn
aW5Qcm9jZXNzID0gZ2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKHBsdWdpblByb2Nlc3NUb2tlbihw
bHVnaW4sIFBsdWdpblByb2Nlc3NTYW5kYm94UG9saWN5OjpOb3JtYWwpKTsKICAgICBwbHVnaW5Q
cm9jZXNzLT5kZWxldGVXZWJzaXRlRGF0YShtb2RpZmllZFNpbmNlLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OmRlbGV0ZVdlYnNp
dGVEYXRhRm9ySG9zdE5hbWVzKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGhvc3ROYW1lcyxXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzID0g
Z2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKHBsdWdpblByb2Nlc3NUb2tlbihwbHVnaW4sIFBsdWdp
blByb2Nlc3NUeXBlOjpOb3JtYWwsIFBsdWdpblByb2Nlc3NTYW5kYm94UG9saWN5OjpOb3JtYWwp
KTsKKyAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByb2Nlc3MgPSBnZXRPckNyZWF0ZVBs
dWdpblByb2Nlc3MocGx1Z2luUHJvY2Vzc1Rva2VuKHBsdWdpbiwgUGx1Z2luUHJvY2Vzc1NhbmRi
b3hQb2xpY3k6Ok5vcm1hbCkpOwogICAgIHBsdWdpblByb2Nlc3MtPmRlbGV0ZVdlYnNpdGVEYXRh
Rm9ySG9zdE5hbWVzKGhvc3ROYW1lcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NNYW5hZ2VyLmgKaW5kZXggNWQ4ODVlYTE1ODgzZGNkYjY0YTIwYTZjNzhiZDJlNTZjZWY4Y2Jk
NS4uMmUwZGJiMDAyZWIzZWYzMjgwNmMyZGFiYjUzMjg1NjQyMGZiY2Y1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIu
aApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBQbHVnaW5Qcm9jZXNzTWFuYWdlciB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBsdWdpblByb2Nlc3NNYW5hZ2VyJiBzaW5nbGV0b24oKTsKIAotICAgIHVp
bnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbihjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiwgUGx1Z2lu
UHJvY2Vzc1R5cGUsIFBsdWdpblByb2Nlc3NTYW5kYm94UG9saWN5KTsKKyAgICB1aW50NjRfdCBw
bHVnaW5Qcm9jZXNzVG9rZW4oY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYsIFBsdWdpblByb2Nlc3NT
YW5kYm94UG9saWN5KTsKIAogICAgIGJvb2wgZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWlu
dDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHJlbW92ZVBs
dWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzUHJveHkqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAy
Y2NhNmQ5OGNkYThhMjlkZTJkYjU5NzlkM2VhNTQ4NmNmMDZhNDFhLi4xYTcwZjYzMmFmYzNmNmQ1
NGY1NTFhNDNiYjAwMzNlMTE4YTQyMzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCkBAIC0yMzUsMTQgKzIzNSw4
IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xh
dW5jaGVyKiwgSVBDOjpDb25uZWN0aW9uOjpJCiAgICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7CiAg
ICAgCiAgICAgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICAg
IHBhcmFtZXRlcnMucHJvY2Vzc1R5cGUgPSBtX3BsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLnByb2Nl
c3NUeXBlOwotICAgIGlmIChwYXJhbWV0ZXJzLnByb2Nlc3NUeXBlID09IFBsdWdpblByb2Nlc3NU
eXBlOjpTbmFwc2hvdCkgewotICAgICAgICBwYXJhbWV0ZXJzLm1pbmltdW1MaWZldGltZSA9IHNu
YXBzaG90dGluZ01pbmltdW1MaWZldGltZTsKLSAgICAgICAgcGFyYW1ldGVycy50ZXJtaW5hdGlv
blRpbWVvdXQgPSBzbmFwc2hvdHRpbmdTaHV0ZG93blRpbWVvdXQ7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgcGFyYW1ldGVycy5taW5pbXVtTGlmZXRpbWUgPSBtaW5pbXVtTGlmZXRpbWU7Ci0gICAg
ICAgIHBhcmFtZXRlcnMudGVybWluYXRpb25UaW1lb3V0ID0gc2h1dGRvd25UaW1lb3V0OwotICAg
IH0KKyAgICBwYXJhbWV0ZXJzLm1pbmltdW1MaWZldGltZSA9IG1pbmltdW1MaWZldGltZTsKKyAg
ICBwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCA9IHNodXRkb3duVGltZW91dDsKIAogICAg
IHBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MocGFyYW1ldGVycyk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGYwNTRmMmJjOGI3ZmRkZTBlNTA4
ZTNkYTcwZTYxNGRiZmVmMTcwYjcuLjExYThlY2E5YTRmMGJhYTQ0MzdhNTQwOGQ2NWZkZjljODI1
ZWJiM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjcw
Nyw3ICsyNzA3LDcgQEAgV2ViUHJlZmVyZW5jZXNTdG9yZSBXZWJQYWdlUHJveHk6OnByZWZlcmVu
Y2VzU3RvcmUoKSBjb25zdAogfQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi12
b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFBsdWdpbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBQbHVn
aW5Qcm9jZXNzVHlwZSBwcm9jZXNzVHlwZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0
IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZywgYm9v
bCBhbGxvd09ubHlBcHBsaWNhdGlvblBsdWdpbnMsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZp
bmRQbHVnaW46OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmZpbmRQ
bHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZywg
Ym9vbCBhbGxvd09ubHlBcHBsaWNhdGlvblBsdWdpbnMsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkZpbmRQbHVnaW46OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFBhZ2VDbGllbnRQcm90
ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTI3MzYsNyArMjczNiw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpmaW5kUGx1Z2luKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFBsdWdp
blByb2Nlc3NUeXBlIHByb2Nlc3NUCiAgICAgYXV0byBwbHVnaW5JbmZvcm1hdGlvbiA9IGNyZWF0
ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeShwbHVnaW4sIGZyYW1lVVJMU3RyaW5nLCBTdHJp
bmcoKSwgcGFnZVVSTFN0cmluZywgU3RyaW5nKCksIFN0cmluZygpKTsKICNlbmRpZgogCi0gICAg
YXV0byBmaW5kUGx1Z2luQ29tcGxldGlvbiA9IFtwcm9jZXNzVHlwZSwgcmVwbHkgPSBXVEZNb3Zl
KHJlcGx5KSwgbmV3TWltZVR5cGUgPSBXVEZNb3ZlKG5ld01pbWVUeXBlKSwgcGx1Z2luID0gV1RG
TW92ZShwbHVnaW4pXSAodWludDMyX3QgcGx1Z2luTG9hZFBvbGljeSwgY29uc3QgU3RyaW5nJiB1
bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uKSBtdXRhYmxlIHsKKyAgICBhdXRvIGZpbmRQbHVnaW5D
b21wbGV0aW9uID0gW3JlcGx5ID0gV1RGTW92ZShyZXBseSksIG5ld01pbWVUeXBlID0gV1RGTW92
ZShuZXdNaW1lVHlwZSksIHBsdWdpbiA9IFdURk1vdmUocGx1Z2luKV0gKHVpbnQzMl90IHBsdWdp
bkxvYWRQb2xpY3ksIGNvbnN0IFN0cmluZyYgdW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbikgbXV0
YWJsZSB7CiAgICAgICAgIFBsdWdpblByb2Nlc3NTYW5kYm94UG9saWN5IHBsdWdpblByb2Nlc3NT
YW5kYm94UG9saWN5ID0gUGx1Z2luUHJvY2Vzc1NhbmRib3hQb2xpY3k6Ok5vcm1hbDsKICAgICAg
ICAgc3dpdGNoIChwbHVnaW5Mb2FkUG9saWN5KSB7CiAgICAgICAgIGNhc2UgUGx1Z2luTW9kdWxl
TG9hZE5vcm1hbGx5OgpAQCAtMjc1Miw3ICsyNzUyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZp
bmRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgUGx1Z2luUHJvY2Vzc1R5cGUgcHJvY2Vz
c1QKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHJlcGx5KFBsdWdp
blByb2Nlc3NNYW5hZ2VyOjpzaW5nbGV0b24oKS5wbHVnaW5Qcm9jZXNzVG9rZW4ocGx1Z2luLCBw
cm9jZXNzVHlwZSwgcGx1Z2luUHJvY2Vzc1NhbmRib3hQb2xpY3kpLCBuZXdNaW1lVHlwZSwgcGx1
Z2luTG9hZFBvbGljeSwgdW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbiwgZmFsc2UpOworICAgICAg
ICByZXBseShQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkucGx1Z2luUHJvY2Vzc1Rv
a2VuKHBsdWdpbiwgcGx1Z2luUHJvY2Vzc1NhbmRib3hQb2xpY3kpLCBuZXdNaW1lVHlwZSwgcGx1
Z2luTG9hZFBvbGljeSwgdW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbiwgZmFsc2UpOwogICAgIH07
CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggZjJjOWFkNGYyODVlMTRmYzRmMTRhNGZmNDgwNjMwNTFkNTg5NjBmNi4uOWZjYmQ1
ODkwY2FlYjZhZDEwNTc3Y2MwNWRmODNjY2I4NTZkYTFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKQEAgLTIyNDYsNyArMjI0Niw3IEBAIHByaXZhdGU6CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIHZvaWQgZmluZFBsdWdpbihj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJLaXQ6OlBsdWdpblByb2Nlc3NUeXBlLCBjb25zdCBT
dHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3Ry
aW5nJiBwYWdlVVJMU3RyaW5nLCBib29sIGFsbG93T25seUFwcGxpY2F0aW9uUGx1Z2lucywgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RmluZFBsdWdpbkRlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lk
IGZpbmRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0
cmluZywgYm9vbCBhbGxvd09ubHlBcHBsaWNhdGlvblBsdWdpbnMsIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkZpbmRQbHVnaW5EZWxheWVkUmVwbHkmJik7CiAjZW5kaWYKIAogI2lmIFVTRShRVUlD
S19MT09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IGZmYTdkNjFjZWUyNTkzNzE0ZDI5ODYyNjMyNmI0NjM5ZjNjNDY5OTAuLjNi
YzY3YWI1NWQyMTk0ZTJmNDUxN2Q4ODBlNTc2YTU2YWM4MDQ0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTQ0NCw3ICs0NDQs
NyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKLSAgICBGaW5kUGx1Z2luKFN0cmluZyBtaW1lVHlwZSwgV2ViS2l0
OjpQbHVnaW5Qcm9jZXNzVHlwZSBwcm9jZXNzVHlwZSwgU3RyaW5nIHVybFN0cmluZywgU3RyaW5n
IGZyYW1lVVJMU3RyaW5nLCBTdHJpbmcgcGFnZVVSTFN0cmluZywgYm9vbCBhbGxvd09ubHlBcHBs
aWNhdGlvblBsdWdpbnMpIC0+ICh1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIFN0cmluZyBu
ZXdNSU1FVHlwZSwgdWludDMyX3QgcGx1Z2luTG9hZFBvbGljeSwgU3RyaW5nIHVuYXZhaWxhYmls
aXR5RGVzY3JpcHRpb24sIGJvb2wgaXNVbnN1cHBvcnRlZCkgU3luY2hyb25vdXMKKyAgICBGaW5k
UGx1Z2luKFN0cmluZyBtaW1lVHlwZSwgU3RyaW5nIHVybFN0cmluZywgU3RyaW5nIGZyYW1lVVJM
U3RyaW5nLCBTdHJpbmcgcGFnZVVSTFN0cmluZywgYm9vbCBhbGxvd09ubHlBcHBsaWNhdGlvblBs
dWdpbnMpIC0+ICh1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIFN0cmluZyBuZXdNSU1FVHlw
ZSwgdWludDMyX3QgcGx1Z2luTG9hZFBvbGljeSwgU3RyaW5nIHVuYXZhaWxhYmlsaXR5RGVzY3Jp
cHRpb24sIGJvb2wgaXNVbnN1cHBvcnRlZCkgU3luY2hyb25vdXMKICNlbmRpZgogCiAgICAgRGlk
VXBkYXRlQWN0aXZpdHlTdGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKaW5kZXggNzBmZGRhZjhkZDAwNTZjYTI5NDhlOWYxMzI1MGM5YWJhMGExYmY4Yy4u
YWEyNzhlYWMyMjlmMDg3MTA0MWJhMzNmNzkwOTljZWU2Njg2Y2VlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNzQwLDggKzc0MCw2IEBAIFdlYlBy
b2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYlByb2Nlc3NQb29sOjp3ZWJQcm9jZXNzRGF0YVN0
b3JlUGFyYW1ldGVycyhXZWJQCiAgICAgaWYgKCFqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVj
dG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdp
dGhvdXRSZXNvbHZpbmdQYXRoKGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5LCBTYW5k
Ym94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICAgICAgCi0gICAgYXV0byBwbHVnSW5BdXRvU3Rh
cnRPcmlnaW5IYXNoZXMgPSBtX3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmF1dG9TdGFydE9yaWdp
bkhhc2hlc0NvcHkod2Vic2l0ZURhdGFTdG9yZS5zZXNzaW9uSUQoKSk7Ci0KICAgICByZXR1cm4g
V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMgewogICAgICAgICB3ZWJzaXRlRGF0YVN0b3Jl
LnNlc3Npb25JRCgpLAogICAgICAgICBXVEZNb3ZlKGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnkp
LApAQCAtNzU1LDcgKzc1Myw2IEBAIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYlBy
b2Nlc3NQb29sOjp3ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQCiAgICAgICAgIFdU
Rk1vdmUobWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKSwKICAgICAgICAg
V1RGTW92ZShqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSksCiAgICAgICAgIFdURk1v
dmUoamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpLAotICAg
ICAgICBXVEZNb3ZlKHBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyksCiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZS50aGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlKCksCiAgICAgICAgIG1fZG9tYWluc1dpdGhVc2VySW50ZXJh
Y3Rpb24sCkBAIC04MjEsOCArODE4LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6
ZU5ld1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWJzaXRlRGEKICAgICBw
YXJhbWV0ZXJzLm5vdGlmaWNhdGlvblBlcm1pc3Npb25zID0gc3VwcGxlbWVudDxXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk+KCktPm5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CiAjZW5kaWYK
IAotICAgIHBhcmFtZXRlcnMucGx1Z0luQXV0b1N0YXJ0T3JpZ2lucyA9IGNvcHlUb1ZlY3Rvciht
X3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmF1dG9TdGFydE9yaWdpbnMoKSk7Ci0KICAgICBwYXJh
bWV0ZXJzLm1lbW9yeUNhY2hlRGlzYWJsZWQgPSBtX21lbW9yeUNhY2hlRGlzYWJsZWQ7CiAgICAg
cGFyYW1ldGVycy5hdHRyU3R5bGVFbmFibGVkID0gbV9jb25maWd1cmF0aW9uLT5hdHRyU3R5bGVF
bmFibGVkKCk7CiAKQEAgLTgzNCwxMCArODI5LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5p
dGlhbGl6ZU5ld1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWJzaXRlRGEK
ICAgICBzZXJ2aWNlQ29udHJvbGxlci5yZWZyZXNoRXhpc3RpbmdTZXJ2aWNlcygpOwogI2VuZGlm
CiAKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBwYXJhbWV0ZXJzLnBsdWdp
bkxvYWRDbGllbnRQb2xpY2llcyA9IG1fcGx1Z2luTG9hZENsaWVudFBvbGljaWVzOwotI2VuZGlm
Ci0KICNpZiBPUyhMSU5VWCkKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU1lbW9yeVByZXNz
dXJlUmVsaWVmTG9nZ2luZyA9IHRydWU7CiAjZW5kaWYKQEAgLTE2NTQsNTMgKzE2NDUsNiBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRKYXZhU2NyaXB0R2FyYmFnZUNvbGxlY3RvclRpbWVyRW5h
YmxlZChib29sIGZsYWcpCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpTZXRKYXZhU2NyaXB0R2FyYmFnZUNvbGxlY3RvclRpbWVyRW5hYmxlZChmbGFnKSk7CiB9
CiAKLVJlZjxBUEk6OkRpY3Rpb25hcnk+IFdlYlByb2Nlc3NQb29sOjpwbHVnSW5BdXRvU3RhcnRP
cmlnaW5IYXNoZXMoKSBjb25zdAotewotICAgIHJldHVybiBtX3BsdWdJbkF1dG9TdGFydFByb3Zp
ZGVyLmF1dG9TdGFydE9yaWdpbnNUYWJsZUNvcHkoKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzUG9v
bDo6c2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKEFQSTo6RGljdGlvbmFyeSYgZGljdGlv
bmFyeSkKLXsKLSAgICBtX3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLnNldEF1dG9TdGFydE9yaWdp
bnNUYWJsZShkaWN0aW9uYXJ5KTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0UGx1Z0lu
QXV0b1N0YXJ0T3JpZ2lucyhBUEk6OkFycmF5JiBhcnJheSkKLXsKLSAgICBtX3BsdWdJbkF1dG9T
dGFydFByb3ZpZGVyLnNldEF1dG9TdGFydE9yaWdpbnNBcnJheShhcnJheSk7Ci19Ci0KLXZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnNGaWx0ZXJpbmdPdXRFbnRy
aWVzQWRkZWRBZnRlclRpbWUoQVBJOjpEaWN0aW9uYXJ5JiBkaWN0aW9uYXJ5LCBXYWxsVGltZSB0
aW1lKQotewotICAgIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuc2V0QXV0b1N0YXJ0T3JpZ2lu
c0ZpbHRlcmluZ091dEVudHJpZXNBZGRlZEFmdGVyVGltZShkaWN0aW9uYXJ5LCB0aW1lKTsKLX0K
LQotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6
c2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5
IHBvbGljeSwgY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZykKLXsKLSAgICBhdXRvJiBwb2xpY2llc0Zv
ckhvc3QgPSBtX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5lbnN1cmUoaG9zdCwgW10gewotICAg
ICAgICByZXR1cm4gSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpQbHVn
aW5Mb2FkQ2xpZW50UG9saWN5Pj4oKTsKLSAgICB9KS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgYXV0
byYgdmVyc2lvbnNUb1BvbGljaWVzID0gcG9saWNpZXNGb3JIb3N0LmVuc3VyZShidW5kbGVJZGVu
dGlmaWVyLCBbXSB7Ci0gICAgICAgIHJldHVybiBIYXNoTWFwPFN0cmluZywgV2ViQ29yZTo6UGx1
Z2luTG9hZENsaWVudFBvbGljeT4oKTsKLSAgICB9KS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgdmVy
c2lvbnNUb1BvbGljaWVzLnNldCh2ZXJzaW9uU3RyaW5nLCBwb2xpY3kpOwotCi0gICAgc2VuZFRv
QWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRQbHVnaW5Mb2FkQ2xpZW50UG9s
aWN5KHBvbGljeSwgaG9zdCwgYnVuZGxlSWRlbnRpZmllciwgdmVyc2lvblN0cmluZykpOwotfQot
Ci12b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcyhIYXNo
TWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpQbHVn
aW5Mb2FkQ2xpZW50UG9saWN5Pj4+JiYgcGx1Z2luTG9hZENsaWVudFBvbGljaWVzKQotewotICAg
IG1fcGx1Z2luTG9hZENsaWVudFBvbGljaWVzID0gV1RGTW92ZShwbHVnaW5Mb2FkQ2xpZW50UG9s
aWNpZXMpOwotICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVz
ZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMobV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMpKTsK
LX0KLQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpCi17
Ci0gICAgbV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMuY2xlYXIoKTsKLSAgICBzZW5kVG9BbGxQ
cm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMo
KSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6YWRkU3VwcG9ydGVkUGx1Z2lu
KFN0cmluZyYmIG1hdGNoaW5nRG9tYWluLCBTdHJpbmcmJiBuYW1lLCBIYXNoU2V0PFN0cmluZz4m
JiBtaW1lVHlwZXMsIEhhc2hTZXQ8U3RyaW5nPiBleHRlbnNpb25zKQogewogI2lmIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgKaW5kZXggYWFiNzM2YzhhOTQ0MmEwMzYzMTE4YzA0ZGE4NjI3NDc0ZGJkNzkzNS4uNDc4NWE1
NDIwNmJjZjZjMzhkYjMzYWM2NWRiYTVhNGEwNTk2NTgyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NQcm94eS5oIgotI2luY2x1ZGUgIlBsdWdJbkF1dG9TdGFydFByb3ZpZGVy
LmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb1N0b3JlLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90
dGxlci5oIgogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RvcmUuaCIKQEAgLTIyNSwxMSArMjI0LDYg
QEAgcHVibGljOgogICAgIHZvaWQgcmVmcmVzaFBsdWdpbnMoKTsKIAogICAgIFBsdWdpbkluZm9T
dG9yZSYgcGx1Z2luSW5mb1N0b3JlKCkgeyByZXR1cm4gbV9wbHVnaW5JbmZvU3RvcmU7IH0KLQot
ICAgIHZvaWQgc2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xp
ZW50UG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nKTsKLSAgICB2b2lkIHJlc2V0UGx1Z2lu
TG9hZENsaWVudFBvbGljaWVzKEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgSGFzaE1h
cDxTdHJpbmcsIFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+Pj4mJik7Ci0gICAgdm9p
ZCBjbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCk7Ci0gICAgY29uc3QgSGFzaE1hcDxTdHJpbmcs
IEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVu
dFBvbGljeT4+PiYgcGx1Z2luTG9hZENsaWVudFBvbGljaWVzKCkgY29uc3QgeyByZXR1cm4gbV9w
bHVnaW5Mb2FkQ2xpZW50UG9saWNpZXM7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCkBAIC0zNDgsMTEgKzM0
Miw2IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHZvaWQgdGV4dENoZWNrZXJTdGF0ZUNoYW5nZWQo
KTsKIAotICAgIFJlZjxBUEk6OkRpY3Rpb25hcnk+IHBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hl
cygpIGNvbnN0OwotICAgIHZvaWQgc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKEFQSTo6
RGljdGlvbmFyeSYpOwotICAgIHZvaWQgc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2lucyhBUEk6OkFy
cmF5Jik7Ci0gICAgdm9pZCBzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5zRmlsdGVyaW5nT3V0RW50
cmllc0FkZGVkQWZ0ZXJUaW1lKEFQSTo6RGljdGlvbmFyeSYsIFdhbGxUaW1lKTsKLQogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKICAgICB2b2lkIGdwdVByb2Nlc3NDcmFzaGVkKFByb2Nlc3NJRCk7
CiAKQEAgLTQ4OCw4ICs0NzcsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgV2ViUHJvY2Vzc0RhdGFT
dG9yZVBhcmFtZXRlcnMgd2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMoV2ViUHJvY2Vzc1By
b3h5JiwgV2Vic2l0ZURhdGFTdG9yZSYpOwogICAgIAotICAgIFBsdWdJbkF1dG9TdGFydFByb3Zp
ZGVyJiBwbHVnSW5BdXRvU3RhcnRQcm92aWRlcigpIHsgcmV0dXJuIG1fcGx1Z0luQXV0b1N0YXJ0
UHJvdmlkZXI7IH0KLQogICAgIHN0YXRpYyB2b2lkIHNldFVzZVNlcGFyYXRlU2VydmljZVdvcmtl
clByb2Nlc3MoYm9vbCk7CiAgICAgc3RhdGljIGJvb2wgdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2Vy
UHJvY2VzcygpIHsgcmV0dXJuIHNfdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzczsgfQog
CkBAIC02MjEsOCArNjA4LDYgQEAgcHJpdmF0ZToKICAgICBSZWY8VmlzaXRlZExpbmtTdG9yZT4g
bV92aXNpdGVkTGlua1N0b3JlOwogICAgIGJvb2wgbV92aXNpdGVkTGlua3NQb3B1bGF0ZWQgeyBm
YWxzZSB9OwogCi0gICAgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIgbV9wbHVnSW5BdXRvU3RhcnRQ
cm92aWRlciB7IHRoaXMgfTsKLSAgICAgICAgCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1l
c1RvUmVnaXN0ZXJBc0VtcHR5RG9jdW1lbnQ7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1l
c1RvU2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvcjsKICAgICBIYXNoU2V0PFN0cmluZz4g
bV9zY2hlbWVzVG9SZWdpc3RlckFzRGlzcGxheUlzb2xhdGVkOwpAQCAtNzA0LDEwICs2ODksNiBA
QCBwcml2YXRlOgogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fZW5jb2RlZENvbnRlbnRF
eHRlbnNpb25zOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAg
ICBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBXZWJDb3Jl
OjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5Pj4+IG1fcGx1Z2luTG9hZENsaWVudFBvbGljaWVzOwot
I2VuZGlmCi0KICNpZiBFTkFCTEUoR0FNRVBBRCkKICAgICBIYXNoU2V0PFdlYlByb2Nlc3NQcm94
eSo+IG1fcHJvY2Vzc2VzVXNpbmdHYW1lcGFkczsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggYTlmODI4MmJlNTQwMTA4OWMyOTQyN2Iw
ODg2MDc3YTQ4Njk0Yzc4MS4uOWJmM2VhM2VkNTY2NDQ1NjMzOTUyZDc4ZTIxNTY0ZWFhMzIyMTA2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0x
Njk5LDE5ICsxNjk5LDYgQEAgUEFMOjpTZXNzaW9uSUQgV2ViUHJvY2Vzc1Byb3h5OjpzZXNzaW9u
SUQoKSBjb25zdAogICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpOwog
fQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChT
dHJpbmcmJiBwYWdlT3JpZ2luLCB1aW50MzJfdCBoYXNoKQotewotICAgIE1FU1NBR0VfQ0hFQ0so
UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OkF1dG9TdGFydFRhYmxlOjppc1ZhbGlkS2V5KHBhZ2VP
cmlnaW4pKTsKLSAgICBNRVNTQUdFX0NIRUNLKFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjpIYXNo
VG9PcmlnaW5NYXA6OmlzVmFsaWRLZXkoaGFzaCkpOwotICAgIHByb2Nlc3NQb29sKCkucGx1Z0lu
QXV0b1N0YXJ0UHJvdmlkZXIoKS5hZGRBdXRvU3RhcnRPcmlnaW5IYXNoKFdURk1vdmUocGFnZU9y
aWdpbiksIGhhc2gsIHNlc3Npb25JRCgpKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnBs
dWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24odWludDMyX3QgaGFzaCkKLXsKLSAgICBNRVNT
QUdFX0NIRUNLKFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjpIYXNoVG9PcmlnaW5NYXA6OmlzVmFs
aWRLZXkoaGFzaCkpOwotICAgIHByb2Nlc3NQb29sKCkucGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIo
KS5kaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKGhhc2gsIHNlc3Npb25JRCgpKTsKLX0KLQogdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9uU2VydmVyKFNwZWVjaFJl
Y29nbml0aW9uU2VydmVySWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIGF1dG8gc3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIgPSBtX3NwZWVjaFJlY29nbml0aW9uU2VydmVyTWFwLmFkZChpZGVu
dGlmaWVyLCBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmgKaW5kZXggNTBiY2I5Y2FiOTA0MDYwOGUyNDc1NWRiNzYzMGE0YWRhNmU2YThmNS4uOWUwZTVh
MGQ0YWZmNWZhZDhmZmY1ZjQ3NzM1NGJkODg4ZThkYmVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTQ0Myw4ICs0NDMsNiBAQCBwcml2YXRlOgogI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseSYmKTsKICNlbmRp
ZgotICAgIHZvaWQgYWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChTdHJpbmcmJiBwYWdlT3Jp
Z2luLCB1aW50MzJfdCBoYXNoKTsKLSAgICB2b2lkIHBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJh
Y3Rpb24odWludDMyX3QgaGFzaCk7CiAgICAgCiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uRGVsYXllZFJlcGx5JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggOWU4OTc2M2U4YzFhZTBlMjM4ZWJk
NWVmZDViYmM2MGQ2M2QxMTU2My4uOTA2MzljMmFjZTJkMDUxZDAzNDlmYjUyMjZhYjYxNjFhZmE4
M2Y0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5tZXNzYWdlcy5pbgpAQCAtNzYsMTAgKzc2LDYgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vzc1By
b3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBTdG9wRGlzcGxheUxpbmsoV2ViS2l0OjpEaXNwbGF5
TGlua09ic2VydmVySUQgb2JzZXJ2ZXJJRCwgdWludDMyX3QgZGlzcGxheUlEKQogI2VuZGlmCiAK
LSAgICAjIFBsdWctaW4gbWVzc2FnZXMuCi0gICAgdm9pZCBBZGRQbHVnSW5BdXRvU3RhcnRPcmln
aW5IYXNoKFN0cmluZyBwYWdlT3JpZ2luLCB1aW50MzJfdCBoYXNoKQotICAgIHZvaWQgUGx1Z0lu
RGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbih1aW50MzJfdCBoYXNoKQotCiAjaWYgUExBVEZPUk0o
R1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgU2VuZE1lc3NhZ2VUb1dlYkNvbnRleHQoc3RydWN0
IFdlYktpdDo6VXNlck1lc3NhZ2UgdXNlck1lc3NhZ2UpCiAgICAgU2VuZE1lc3NhZ2VUb1dlYkNv
bnRleHRXaXRoUmVwbHkoc3RydWN0IFdlYktpdDo6VXNlck1lc3NhZ2UgdXNlck1lc3NhZ2UpIC0+
IChzdHJ1Y3QgV2ViS2l0OjpVc2VyTWVzc2FnZSByZXBseU1lc3NhZ2UpIEFzeW5jCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwZGFlMWEw
OTAxZTU4OTJmYzA5NmFhOWFiMzg4MWNmOWU4MzRiMjhhLi4zNmU1ZDBiZGM0MDI1ZTcwNjY3ZGVj
ODZhMmEwOWIxMGIzZWFlMjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTc5NSwxNCArNzk1LDEyIEBACiAJCTMxQTJFQzU2MTQ4OTlD
MDkwMDgxMEQ3MSAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMkVDNTMxNDg5OTgyNTAwODEw
RDcxIC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi87IH07CiAJCTMxQTJFQzc0
MTQ4RDU5Q0EwMDgxMEQ3MSAvKiBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEyRUM3MjE0OEQ1
OUJCMDA4MTBENzEgLyogV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMxQTUwNUZBMTY4MDAy
NTUwMEE5MzBFQiAvKiBXZWJDb250ZXh0Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUE1MDVGODE2ODAwMjU1MDBBOTMwRUIgLyogV2ViQ29u
dGV4dENsaWVudC5oICovOyB9OwotCQkzMUE2N0UwRDE2NUIyQTk5MDA2Q0JBNjYgLyogUGx1Z0lu
QXV0b1N0YXJ0UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxQTY3RTBCMTY1QjJBOTkwMDZDQkE2NiAvKiBQbHVnSW5BdXRvU3RhcnRQcm92
aWRlci5oICovOyB9OwogCQkzMUIzNjI4RjIxNDFFQTVEMDA3QkZBNTMgLyogQVBJSW50ZXJuYWxE
ZWJ1Z0ZlYXR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMxQjM2MjhFMjE0MUVBNEQwMDdCRkE1MyAvKiBBUElJbnRlcm5hbERlYnVnRmVhdHVyZS5o
ICovOyB9OwogCQkzMUIzNjI5NTIxNDFFQkNEMDA3QkZBNTMgLyogX1dLSW50ZXJuYWxEZWJ1Z0Zl
YXR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
QjM2Mjk0MjE0MUVCQUQwMDdCRkE1MyAvKiBfV0tJbnRlcm5hbERlYnVnRmVhdHVyZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMxQjM2Mjk3MjE0
MUVCRDkwMDdCRkE1MyAvKiBfV0tJbnRlcm5hbERlYnVnRmVhdHVyZUludGVybmFsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUIzNjI5MzIxNDFFQkFE
MDA3QkZBNTMgLyogX1dLSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVJbnRlcm5hbC5oICovOyB9OwogCQkz
MUIzNjI5OTIxNDFGNkU4MDA3QkZBNTMgLyogV2ViUHJlZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVh
dHVyZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzFCMzYyOTgyMTQxRjZFMDAwN0JGQTUzIC8qIFdlYlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0Zl
YXR1cmVzLmNwcCAqLzsgfTsKIAkJMzFCQTkyNEQxNDg4MzEyNjAwNjJFREI1IC8qIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFCQTkyNDgxNDg4MzA4MTAwNjJFREI1IC8qIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkzMUJBOTI0RTE0
ODgzMTI2MDA2MkVEQjUgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUJBOTI0OTE0ODgzMDgx
MDA2MkVEQjUgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmggKi87IH07Ci0JCTMx
RDU5MjlGMTY2RTA2MDAwMEU2QkYwMiAvKiBXZWJQbHVnSW5DbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRDU5MjlEMTY2RTA2MDAwMEU2QkYw
MiAvKiBXZWJQbHVnSW5DbGllbnQuaCAqLzsgfTsKIAkJMzFENzU1QzExRDkxQjgxNTAwODQzQkQx
IC8qIFdLVGV4dENoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxNDg4OEZGMUQ5MUIxMUQwMDM3NzA0MiAvKiBXS1RleHRDaGVja2VyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzFGMDYwRTEx
NjU0MzE4NTAwRjMyODFDIC8qIE5ldHdvcmtTb2NrZXRDaGFubmVsTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRjA2MERE
MTY1NDMxNzUwMEYzMjgxQyAvKiBOZXR3b3JrU29ja2V0Q2hhbm5lbE1lc3NhZ2VSZWNlaXZlci5j
cHAgKi87IH07CiAJCTMzMDkzNDQ3MTMxNUI5MjIwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2Vy
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMzMDkzNDQzMTMxNUI5MjIwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKQEAgLTMzMTEsOCArMzMwOSw2IEBACiAJCTMxQTJFQzc1
MTQ4RDY1QkIwMDgxMEQ3MSAvKiBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUE1MDVGNzE2
ODAwMjU1MDBBOTMwRUIgLyogV2ViQ29udGV4dENsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb250ZXh0Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzFBNTA1RjgxNjgwMDI1NTAwQTkzMEVCIC8qIFdlYkNvbnRleHRDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGV4dENsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMUE2N0UwQTE2NUIyQTk5MDA2Q0JBNjYg
LyogUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkzMUE2N0UwQjE2NUIyQTk5MDA2Q0JBNjYgLyogUGx1Z0luQXV0b1N0YXJ0
UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGx1Z0luQXV0b1N0
YXJ0UHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFBQkE3OUMyMTVB
RjlFMDAwQzkwRTMxIC8qIEhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzMUFCQTc5RDIxNUFGOUUwMDBDOTBFMzEgLyogSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdl
ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxQjM2MjhFMjE0MUVBNEQwMDdCRkE1MyAv
KiBBUElJbnRlcm5hbERlYnVnRmVhdHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElJbnRlcm5hbERl
YnVnRmVhdHVyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzMyMyw4ICszMzE5
LDYgQEAKIAkJMzFCMzYyOTgyMTQxRjZFMDAwN0JGQTUzIC8qIFdlYlByZWZlcmVuY2VzSW50ZXJu
YWxEZWJ1Z0ZlYXR1cmVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFdlYlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNwcDsgcGF0aCA9IERlcml2ZWRT
b3VyY2VzL1dlYktpdDIvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVhdHVyZXMuY3BwOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkzMUJBOTI0ODE0ODgzMDgxMDA2
MkVEQjUgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVz
c2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTMxQkE5MjQ5MTQ4ODMwODEwMDYyRURCNSAvKiBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJL
aXQyL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwotCQkzMUQ1OTI5QzE2NkUwNUZGMDBFNkJGMDIgLyogV2ViUGx1Z0lu
Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBsdWdJ
bkNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxRDU5MjlEMTY2RTA2
MDAwMEU2QkYwMiAvKiBXZWJQbHVnSW5DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViUGx1Z0luQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMxRUEyNUQwMTM0Rjc4QjIwMDVCMTQ1MiAvKiBOYXRpdmVXZWJNb3VzZUV2ZW50TWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gTmF0aXZlV2ViTW91c2VFdmVudE1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFFQTI1RDMxMzRGNzhENjAwNUIxNDUyIC8qIE5hdGl2ZVdl
Yk1vdXNlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlV2Vi
TW91c2VFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUYwNjBERDE2NTQz
MTc1MDBGMzI4MUMgLyogTmV0d29ya1NvY2tldENoYW5uZWxNZXNzYWdlUmVjZWl2ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1NvY2tldENoYW5uZWxNZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OZXR3b3JrU29ja2V0Q2hhbm5lbE1lc3Nh
Z2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC02
NjAxLDggKzY1OTUsNiBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJ
CQkxQUVGQ0MwRDExRDAxRjQxMDA4MjE5RDMgLyogbWFjICovLAotCQkJCTMxQTY3RTBBMTY1QjJB
OTkwMDZDQkE2NiAvKiBQbHVnSW5BdXRvU3RhcnRQcm92aWRlci5jcHAgKi8sCi0JCQkJMzFBNjdF
MEIxNjVCMkE5OTAwNkNCQTY2IC8qIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmggKi8sCiAJCQkJ
MUFFRkNDMTExMUQwMUY5NjAwODIxOUQzIC8qIFBsdWdpbkluZm9TdG9yZS5jcHAgKi8sCiAJCQkJ
MUFFRkNDMTAxMUQwMUY5NjAwODIxOUQzIC8qIFBsdWdpbkluZm9TdG9yZS5oICovLAogCQkJCTFB
MEVDNjAyMTI0QTlGMkMwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAgKi8sCkBA
IC05MDk3LDggKzkwODksNiBAQAogCQkJCTBGODUwRkU1MUVEN0MzOUYwMEZCNzdBNyAvKiBXZWJQ
ZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuaCAqLywKIAkJCQkxQTNFNzM2MDExQ0MyNjU5MDA3QkQ1
MzkgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCAqLywKIAkJCQkxQTNFNzM1RjExQ0MyNjU5
MDA3QkQ1MzkgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggKi8sCi0JCQkJMzFENTkyOUMxNjZF
MDVGRjAwRTZCRjAyIC8qIFdlYlBsdWdJbkNsaWVudC5jcHAgKi8sCi0JCQkJMzFENTkyOUQxNjZF
MDYwMDAwRTZCRjAyIC8qIFdlYlBsdWdJbkNsaWVudC5oICovLAogCQkJCUQzQjk0ODQyMTFGRjRC
NjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuY3BwICovLAogCQkJCUQzQjk0ODQzMTFGRjRCNjUw
MDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuaCAqLywKIAkJCQkxQTFFMDkzMTE4ODYxRDM4MDBEMkRD
NDkgLyogV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmNwcCAqLywKQEAgLTExMzAzLDcgKzExMjkz
LDYgQEAKIAkJCQlDREEyOUEyMDFDQkVCNUZCMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREEyOUEyQjFDQkVCNjdBMDA5MDFDQ0Yg
LyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBNkZCN0QzMTFFNjUxRTIwMERCMTM3MSAvKiBQbHVnaW4uaCBpbiBIZWFkZXJzICovLAot
CQkJCTMxQTY3RTBEMTY1QjJBOTkwMDZDQkE2NiAvKiBQbHVnSW5BdXRvU3RhcnRQcm92aWRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5RkJBOEQxM0ZGMDRFNjAwREVFRDY3IC8qIFBsdWdpbkNv
bXBsZXhUZXh0SW5wdXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBNTZGMjkxMUU5MkJD
ODAwNjFCODgyIC8qIFBsdWdpbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOEVG
NENCMTI1MjQwMzcwMEY3MDY3RiAvKiBQbHVnaW5Db250cm9sbGVyUHJveHkuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTE2NjAsNyArMTE2NDksNiBAQAogCQkJCTFBQjFGNzk5MUQxQjM2MTMwMDdDOUJE
MSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjg1MEZFNzFFRDdDMzlGMDBGQjc3QTcgLyogV2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNFNzM2MTExQ0MyNjU5MDA3QkQ1MzkgLyogV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMUQ1OTI5RjE2NkUwNjAw
MDBFNkJGMDIgLyogV2ViUGx1Z0luQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzU3NDRG
MDEyNjM4RkIzMDA2RjBGMTIgLyogV2ViUG9wdXBJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQlE
M0I5NDg0NzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzU3NEU2MzEyNjdEMDgwMDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHkuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaAppbmRleCA2
Mjc4NDRiOWE0YTZiZDU4M2NiNTNmZTc0NTZhMzc0ZGRkMDY3ZTg1Li4xMzJlOTRhMjhjYWEwY2Q3
ZDA5ZjI4MTAwNDU4NTAwYjliNzg4ZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
VUlDbGllbnQuaApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkFQSUluamVjdGVkQnVuZGxl
UGFnZVVJQ2xpZW50LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVQYWdlLmgiCiAjaW5jbHVkZSAiV2Vi
RXZlbnQuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIEFQSSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvUGx1Z2luUHJveHlN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvUGx1
Z2luUHJveHlNYWMubW0KaW5kZXggMzUxM2IwMzg0NGVjMDAwMDFjZDhmNDc1YzY0NmIwNmU5MDA0
ZTM0Mi4uNzJlODFjMDk2ODg1ZTQ0ZmQ3YzIxYjA5NTVhODIxNTUyOTJhNTliYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL1BsdWdpblBy
b3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L21hYy9QbHVnaW5Qcm94eU1hYy5tbQpAQCAtNTMsMTYgKzUzLDYgQEAgUGxhdGZvcm1MYXllciog
UGx1Z2luUHJveHk6OnBsdWdpbkxheWVyKCkKICAgICAgICAgLy8gc28gdGhlIGNvb3JkaW5hdGUg
c3lzdGVtIHdpbGwgbWF0Y2ggdGhlIGV2ZW50IGNvb3JkaW5hdGUgc3lzdGVtLgogICAgICAgICBt
X3BsdWdpbkxheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKICAgICAgICAg
W21fcGx1Z2luTGF5ZXIgc2V0R2VvbWV0cnlGbGlwcGVkOllFU107Ci0KLSAgICAgICAgaWYgKG1f
aXNSZXN0YXJ0ZWRQcm9jZXNzKSB7Ci0gICAgICAgICAgICBDQUJhc2ljQW5pbWF0aW9uICpmYWRl
SW5BbmltYXRpb24gPSBbQ0FCYXNpY0FuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDpAIm9w
YWNpdHkiXTsKLSAgICAgICAgICAgIGZhZGVJbkFuaW1hdGlvbi5mcm9tVmFsdWUgPSBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEZsb2F0OjBdOwotICAgICAgICAgICAgZmFkZUluQW5pbWF0aW9uLnRvVmFs
dWUgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OjFdOwotICAgICAgICAgICAgZmFkZUluQW5p
bWF0aW9uLmR1cmF0aW9uID0gZmFkZUluRHVyYXRpb247Ci0gICAgICAgICAgICBmYWRlSW5Bbmlt
YXRpb24ucmVtb3ZlZE9uQ29tcGxldGlvbiA9IE5POwotICAgICAgICAgICAgW21fcGx1Z2luTGF5
ZXIgYWRkQW5pbWF0aW9uOmZhZGVJbkFuaW1hdGlvbiBmb3JLZXk6QCJyZXN0YXJ0ZWQtcGx1Z2lu
LWZhZGUtaW4iXTsKLSAgICAgICAgfQotCiAgICAgICAgIG1ha2VSZW5kZXJMYXllcihtX3BsdWdp
bkxheWVyLmdldCgpLCBtX3JlbW90ZUxheWVyQ2xpZW50SUQpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4IDNjNmY1
MjMwNGI5NWZhYmNkYjczODEyZjc5OGY5ZTFkMzc0MjM5NDQuLmVhNTM1OTYwMTA5ZmVlNmRjNDgw
NWNmNjg5MTI3OThlZTlhYjZmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTIzMCw3ICsyMzAsNiBAQCBwcml2YXRlOgogCiAg
ICAgYm9vbCBzaG91bGRBbGxvd1NjcmlwdGluZygpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgYm9vbCBzaG91bGRBbGxvd05hdmlnYXRpb25Gcm9tRHJhZ3MoKSBmaW5hbCB7IHJldHVybiB0
cnVlOyB9Ci0gICAgYm9vbCBzaG91bGRBbHdheXNBdXRvU3RhcnQoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9CiAKICAgICAvLyBTY3JvbGxhYmxlQXJlYSBmdW5jdGlvbnMuCiAgICAgYm9v
bCBpc1BERlBsdWdpbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggYzZkNjRiZTQxMzhkYWVkNDQwNzMw
ZDBhNDgzNDA2Y2QxYjgzY2I4YS4uZGM1NTc5ZmQzMTk1MjQ4Y2RlZTliMDE1NmFmNzgwOTdmOGVh
YWY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTI4
NSw4ICsyODUsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGNv
bnZlcnRUb1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludEluTG9jYWxDb29y
ZGluYXRlcykgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQWx3YXlzQXV0b1N0YXJ0
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQogICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1
YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5LmNwcAppbmRleCA3Mjc0ZTZmMDc0N2I3YTM0OTdlNDBhZjIxNTBkZDIyOGQ5
ZTVkZDU0Li5iZmY4MDRiMzg4NWFhNThiYTQ2YzFmMjM4NzBhNjA5ZTMzOTM5YWNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC01
NiwyMiArNTYsMTUgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlUGx1Z2luSW5zdGFuY2VJRCgp
CiAgICAgcmV0dXJuICsrdW5pcXVlUGx1Z2luSW5zdGFuY2VJRDsKIH0KIAotUmVmPFBsdWdpblBy
b3h5PiBQbHVnaW5Qcm94eTo6Y3JlYXRlKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgYm9v
bCBpc1Jlc3RhcnRlZFByb2Nlc3MpCitSZWY8UGx1Z2luUHJveHk+IFBsdWdpblByb3h5OjpjcmVh
dGUodWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFBsdWdpblByb3h5KHBsdWdpblByb2Nlc3NUb2tlbiwgaXNSZXN0YXJ0ZWRQcm9jZXNzKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGx1Z2luUHJveHkocGx1Z2luUHJvY2Vzc1Rva2Vu
KSk7CiB9CiAKLVBsdWdpblByb3h5OjpQbHVnaW5Qcm94eSh1aW50NjRfdCBwbHVnaW5Qcm9jZXNz
VG9rZW4sIGJvb2wgaXNSZXN0YXJ0ZWRQcm9jZXNzKQorUGx1Z2luUHJveHk6OlBsdWdpblByb3h5
KHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbikKICAgICA6IFBsdWdpbihQbHVnaW5Qcm94eVR5
cGUpCiAgICAgLCBtX3BsdWdpblByb2Nlc3NUb2tlbihwbHVnaW5Qcm9jZXNzVG9rZW4pCiAgICAg
LCBtX3BsdWdpbkluc3RhbmNlSUQoZ2VuZXJhdGVQbHVnaW5JbnN0YW5jZUlEKCkpCi0gICAgLCBt
X3BsdWdpbkJhY2tpbmdTdG9yZUNvbnRhaW5zVmFsaWREYXRhKGZhbHNlKQotICAgICwgbV9pc1N0
YXJ0ZWQoZmFsc2UpCi0gICAgLCBtX3dhaXRpbmdGb3JQYWludEluUmVzcG9uc2VUb1VwZGF0ZShm
YWxzZSkKLSAgICAsIG1fd2FudHNXaGVlbEV2ZW50cyhmYWxzZSkKLSAgICAsIG1fcmVtb3RlTGF5
ZXJDbGllbnRJRCgwKQotICAgICwgbV93YWl0aW5nT25Bc3luY2hyb25vdXNJbml0aWFsaXphdGlv
bihmYWxzZSkKLSAgICAsIG1faXNSZXN0YXJ0ZWRQcm9jZXNzKGlzUmVzdGFydGVkUHJvY2VzcykK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmgKaW5kZXggOTEzOWE5MjdkYWI3MjMxNzZjOTU0YzI2MDU2MGQxOTMzYzU4MDA3My4uYTYzZDc0
ODA1YmZlODZhMzM0YjYxZWI0ZGY0ZjVhNTY2NDc5YTI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCkBAIC01NSw3ICs1NSw3IEBAIHN0cnVj
dCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIFBsdWdpblByb3h5IDogcHVibGlj
IFBsdWdpbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxQbHVnaW5Qcm94eT4gY3JlYXRlKHVp
bnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgYm9vbCBpc1Jlc3RhcnRlZFByb2Nlc3MpOworICAg
IHN0YXRpYyBSZWY8UGx1Z2luUHJveHk+IGNyZWF0ZSh1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9r
ZW4pOwogICAgIH5QbHVnaW5Qcm94eSgpOwogCiAgICAgdWludDY0X3QgcGx1Z2luSW5zdGFuY2VJ
RCgpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luSW5zdGFuY2VJRDsgfQpAQCAtNjUsNyArNjUsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY1BsdWdpblByb3h5TWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFBsdWdpblByb3h5KHVpbnQ2NF90IHBsdWdp
blByb2Nlc3NUb2tlbiwgYm9vbCBpc1Jlc3RhcnRlZFByb2Nlc3MpOworICAgIGV4cGxpY2l0IFBs
dWdpblByb3h5KHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbik7CiAKICAgICAvLyBQbHVnaW4K
ICAgICBib29sIGluaXRpYWxpemUoY29uc3QgUGFyYW1ldGVycyYpIG92ZXJyaWRlOwpAQCAtMTg0
LDEwICsxODQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENyZWF0ZVBsdWdpbkludGVybmFs
KGJvb2wgd2FudHNXaGVlbEV2ZW50cywgdWludDMyX3QgcmVtb3RlTGF5ZXJDbGllbnRJRCk7CiAg
ICAgdm9pZCBkaWRGYWlsVG9DcmVhdGVQbHVnaW5JbnRlcm5hbCgpOwogCi0gICAgdWludDY0X3Qg
bV9wbHVnaW5Qcm9jZXNzVG9rZW47CisgICAgdWludDY0X3QgbV9wbHVnaW5Qcm9jZXNzVG9rZW4g
eyAwIH07CiAKICAgICBSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+IG1fY29ubmVjdGlv
bjsKLSAgICB1aW50NjRfdCBtX3BsdWdpbkluc3RhbmNlSUQ7CisgICAgdWludDY0X3QgbV9wbHVn
aW5JbnN0YW5jZUlEIHsgMCB9OwogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3BsdWdpblNpemU7
CiAKQEAgLTIwNSwyNyArMjA1LDI1IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gbV9wbHVnaW5CYWNraW5nU3RvcmU7CiAgICAgCiAgICAgLy8gV2hldGhlciBhbGwgb2Yg
dGhlIHBsdWctaW4gYmFja2luZyBzdG9yZSBjb250YWlucyB2YWxpZCBkYXRhLgotICAgIGJvb2wg
bV9wbHVnaW5CYWNraW5nU3RvcmVDb250YWluc1ZhbGlkRGF0YTsKKyAgICBib29sIG1fcGx1Z2lu
QmFja2luZ1N0b3JlQ29udGFpbnNWYWxpZERhdGEgeyBmYWxzZSB9OwogCi0gICAgYm9vbCBtX2lz
U3RhcnRlZDsKKyAgICBib29sIG1faXNTdGFydGVkIHsgZmFsc2UgfTsKIAogICAgIC8vIFdoZXRo
ZXIgd2UncmUgY2FsbGVkIGludmFsaWRhdGUgaW4gcmVzcG9uc2UgdG8gYW4gdXBkYXRlIGNhbGws
IGFuZCBhcmUgbm93IHdhaXRpbmcgZm9yIGEgcGFpbnQgY2FsbC4KLSAgICBib29sIG1fd2FpdGlu
Z0ZvclBhaW50SW5SZXNwb25zZVRvVXBkYXRlOworICAgIGJvb2wgbV93YWl0aW5nRm9yUGFpbnRJ
blJlc3BvbnNlVG9VcGRhdGUgeyBmYWxzZSB9OwogCiAgICAgLy8gV2hldGhlciB3ZSBzaG91bGQg
c2VuZCB3aGVlbCBldmVudHMgdG8gdGhpcyBwbHVnLWluIG9yIG5vdC4KLSAgICBib29sIG1fd2Fu
dHNXaGVlbEV2ZW50czsKKyAgICBib29sIG1fd2FudHNXaGVlbEV2ZW50cyB7IGZhbHNlIH07CiAK
ICAgICAvLyBUaGUgY2xpZW50IElEIGZvciB0aGUgQ0EgbGF5ZXIgaW4gdGhlIHBsdWctaW4gcHJv
Y2Vzcy4gV2lsbCBiZSAwIGlmIHRoZSBwbHVnLWluIGlzIG5vdCBhIENBIHBsdWctaW4uCi0gICAg
dWludDMyX3QgbV9yZW1vdGVMYXllckNsaWVudElEOwotICAgIAorICAgIHVpbnQzMl90IG1fcmVt
b3RlTGF5ZXJDbGllbnRJRCB7IDAgfTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5DcmVh
dGlvblBhcmFtZXRlcnM+IG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVyczsKLSAgICBi
b29sIG1fd2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb247CisgICAgYm9vbCBtX3dh
aXRpbmdPbkFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uIHsgZmFsc2UgfTsKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3BsdWdpbkxheWVyOwogI2VuZGlm
Ci0KLSAgICBib29sIG1faXNSZXN0YXJ0ZWRQcm9jZXNzOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCmluZGV4IDkyOTc2MGUyZGY2YmUzY2IyN2QwZTVlZjZmZWMyMzNmZjc5ODE5ZTAuLmNjZGRk
ZjViOTk1ZTMxYzFiMjVhZDRkYzdmYzhjZmZjMzA4YTVjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC01Myw3ICs1Myw2IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
Q29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTFBsdWdJbkVsZW1lbnQuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0hUVFBIZWFkZXJOYW1lcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSG9zdFdpbmRvdy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgpAQCAtNzksOSArNzgsNiBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAotLy8gVGhpcyBzaW11bGF0ZWQgbW91c2UgY2xpY2sgZGVsYXkgaW4gSFRNTFBsdWdJ
bkltYWdlRWxlbWVudC5jcHAgc2hvdWxkIGdlbmVyYWxseSBiZSB0aGUgc2FtZSBvciBzaG9ydGVy
IHRoYW4gdGhpcyBkZWxheS4KLXN0YXRpYyBjb25zdCBTZWNvbmRzIHBsdWdpblNuYXBzaG90VGlt
ZXJEZWxheSB7IDExMDBfbXMgfTsKLQogY2xhc3MgUGx1Z2luVmlldzo6VVJMUmVxdWVzdCA6IHB1
YmxpYyBSZWZDb3VudGVkPFVSTFJlcXVlc3Q+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFBs
dWdpblZpZXc6OlVSTFJlcXVlc3Q+IGNyZWF0ZSh1aW50NjRfdCByZXF1ZXN0SUQsIEZyYW1lTG9h
ZFJlcXVlc3QmJiByZXF1ZXN0LCBib29sIGFsbG93UG9wdXBzKQpAQCAtMzA2LDcgKzMwMiw2IEBA
IFBsdWdpblZpZXc6OlBsdWdpblZpZXcoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbkVsZW1lbnQs
IFJlZjxQbHVnaW4+JiYgcGx1Z2luLCBjCiAgICAgLCBtX3dlYlBhZ2Uod2ViUGFnZShtX3BsdWdp
bkVsZW1lbnQuZ2V0KCkpKQogICAgICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiAgICAgLCBt
X3BlbmRpbmdVUkxSZXF1ZXN0c1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlBsdWdpblZp
ZXc6OnBlbmRpbmdVUkxSZXF1ZXN0c1RpbWVyRmlyZWQpCi0gICAgLCBtX3BsdWdpblNuYXBzaG90
VGltZXIoKnRoaXMsICZQbHVnaW5WaWV3OjpwbHVnaW5TbmFwc2hvdFRpbWVyRmlyZWQsIHBsdWdp
blNuYXBzaG90VGltZXJEZWxheSkKIHsKICAgICBtX3dlYlBhZ2UtPmFkZFBsdWdpblZpZXcodGhp
cyk7CiB9CkBAIC0zNTgsMTEgKzM1Myw4IEBAIHZvaWQgUGx1Z2luVmlldzo6ZGVzdHJveVBsdWdp
bkFuZFJlc2V0KCkKIAogdm9pZCBQbHVnaW5WaWV3OjpyZWNyZWF0ZUFuZEluaXRpYWxpemUoUmVm
PFBsdWdpbj4mJiBwbHVnaW4pCiB7Ci0gICAgaWYgKG1fcGx1Z2luKSB7Ci0gICAgICAgIGlmICht
X3BsdWdpblNuYXBzaG90VGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgICAgIG1fcGx1Z2luU25h
cHNob3RUaW1lci5zdG9wKCk7CisgICAgaWYgKG1fcGx1Z2luKQogICAgICAgICBkZXN0cm95UGx1
Z2luQW5kUmVzZXQoKTsKLSAgICB9CiAKICAgICBtX3BsdWdpbiA9IFdURk1vdmUocGx1Z2luKTsK
ICAgICBtX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKQEAgLTU5NywxMCArNTg5LDYgQEAgdm9pZCBQ
bHVnaW5WaWV3Ojppbml0aWFsaXplUGx1Z2luKCkKIAogICAgIG1fcGx1Z2luRWxlbWVudC0+ZG9j
dW1lbnQoKS5hZGRBdWRpb1Byb2R1Y2VyKCp0aGlzKTsKIAotI2lmIEVOQUJMRShQUklNQVJZX1NO
QVBTSE9UVEVEX1BMVUdJTl9IRVVSSVNUSUMpCi0gICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudCYg
cGx1Z0luSW1hZ2VFbGVtZW50ID0gZG93bmNhc3Q8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4oKm1f
cGx1Z2luRWxlbWVudCk7Ci0gICAgbV9kaWRQbHVnSW5TdGFydE9mZlNjcmVlbiA9ICFtX3dlYlBh
Z2UtPnBsdWdJbkludGVyc2VjdHNTZWFyY2hSZWN0KHBsdWdJbkltYWdlRWxlbWVudCk7Ci0jZW5k
aWYKICAgICBtX3BsdWdpbi0+aW5pdGlhbGl6ZSgqdGhpcywgbV9wYXJhbWV0ZXJzKTsKICAgICAK
ICAgICAvLyBQbHVnLWluIGluaXRpYWxpemF0aW9uIGNvbnRpbnVlZCBpbiBkaWRGYWlsVG9Jbml0
aWFsaXplUGx1Z2luKCkgb3IgZGlkSW5pdGlhbGl6ZVBsdWdpbigpLgpAQCAtNjE0LDcgKzYwMiw3
IEBAIHZvaWQgUGx1Z2luVmlldzo6ZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbigpCiAgICAgU3Ry
aW5nIGZyYW1lVVJMU3RyaW5nID0gZnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+
cmVzcG9uc2VVUkwoKS5zdHJpbmcoKTsKICAgICBTdHJpbmcgcGFnZVVSTFN0cmluZyA9IG1fd2Vi
UGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+
cmVzcG9uc2VVUkwoKS5zdHJpbmcoKTsKICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihtX3BhcmFtZXRlcnMubWltZVR5
cGUsIGZyYW1lVVJMU3RyaW5nLCBwYWdlVVJMU3RyaW5nKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCisjZW5kaWYKIH0KIAogdm9pZCBQbHVnaW5WaWV3OjpkaWRJbml0
aWFsaXplUGx1Z2luKCkKQEAgLTYzNCwyNSArNjIyLDEwIEBAIHZvaWQgUGx1Z2luVmlldzo6ZGlk
SW5pdGlhbGl6ZVBsdWdpbigpCiAgICAgcmVkZWxpdmVyTWFudWFsU3RyZWFtKCk7CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBpZiAobV9wbHVnaW5FbGVtZW50LT5kaXNwbGF5U3RhdGUoKSA8
IEhUTUxQbHVnSW5FbGVtZW50OjpSZXN0YXJ0aW5nKSB7Ci0gICAgICAgIGlmIChtX3BsdWdpbi0+
cGx1Z2luTGF5ZXIoKSAmJiBmcmFtZSgpKSB7Ci0gICAgICAgICAgICBmcmFtZSgpLT52aWV3KCkt
PmVudGVyQ29tcG9zaXRpbmdNb2RlKCk7Ci0gICAgICAgICAgICBtX3BsdWdpbkVsZW1lbnQtPmlu
dmFsaWRhdGVTdHlsZUFuZExheWVyQ29tcG9zaXRpb24oKTsKLSAgICAgICAgfQotICAgICAgICBp
ZiAoZnJhbWUoKSAmJiAhZnJhbWUoKS0+c2V0dGluZ3MoKS5tYXhpbXVtUGx1Z0luU25hcHNob3RB
dHRlbXB0cygpKSB7Ci0gICAgICAgICAgICBiZWdpblNuYXBzaG90dGluZ1J1bm5pbmdQbHVnaW4o
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX3BsdWdpblNuYXBz
aG90VGltZXIucmVzdGFydCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChtX3BsdWdpbi0+
cGx1Z2luTGF5ZXIoKSAmJiBmcmFtZSgpKSB7Ci0gICAgICAgICAgICBmcmFtZSgpLT52aWV3KCkt
PmVudGVyQ29tcG9zaXRpbmdNb2RlKCk7Ci0gICAgICAgICAgICBtX3BsdWdpbkVsZW1lbnQtPmlu
dmFsaWRhdGVTdHlsZUFuZExheWVyQ29tcG9zaXRpb24oKTsKLSAgICAgICAgfQotICAgICAgICBp
ZiAobV9wbHVnaW5FbGVtZW50LT5kaXNwbGF5U3RhdGUoKSA9PSBIVE1MUGx1Z0luRWxlbWVudDo6
UmVzdGFydGluZ1dpdGhQZW5kaW5nTW91c2VDbGljaykKLSAgICAgICAgICAgIG1fcGx1Z2luRWxl
bWVudC0+ZGlzcGF0Y2hQZW5kaW5nTW91c2VDbGljaygpOworICAgIGlmIChtX3BsdWdpbi0+cGx1
Z2luTGF5ZXIoKSAmJiBmcmFtZSgpKSB7CisgICAgICAgIGZyYW1lKCktPnZpZXcoKS0+ZW50ZXJD
b21wb3NpdGluZ01vZGUoKTsKKyAgICAgICAgbV9wbHVnaW5FbGVtZW50LT5pbnZhbGlkYXRlU3R5
bGVBbmRMYXllckNvbXBvc2l0aW9uKCk7CiAgICAgfQotCiAgICAgbV9wbHVnaW4tPnZpc2liaWxp
dHlEaWRDaGFuZ2UoaXNWaXNpYmxlKCkpOwogICAgIG1fcGx1Z2luLT53aW5kb3dWaXNpYmlsaXR5
Q2hhbmdlZChtX3dlYlBhZ2UtPmlzVmlzaWJsZU9yT2NjbHVkZWQoKSk7CiAgICAgbV9wbHVnaW4t
PndpbmRvd0ZvY3VzQ2hhbmdlZChtX3dlYlBhZ2UtPndpbmRvd0lzRm9jdXNlZCgpKTsKQEAgLTc4
Myw3ICs3NTYsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnNldEZyYW1lUmVjdChjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiByZWN0KQogCiB2b2lkIFBsdWdpblZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgLypkaXJ0eVJlY3QqLywgV2lkZ2V0OjpTZWN1cml0
eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQogewotICAgIGlmICghbV9w
bHVnaW4gfHwgIW1faXNJbml0aWFsaXplZCB8fCBtX3BsdWdpbkVsZW1lbnQtPmRpc3BsYXlTdGF0
ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlJlc3RhcnRpbmcpCisgICAgaWYgKCFtX3BsdWdpbiB8
fCAhbV9pc0luaXRpYWxpemVkKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoY29udGV4dC5w
YWludGluZ0Rpc2FibGVkKCkpIHsKQEAgLTkyNiwyNCArODk5LDE4IEBAIHZvaWQgUGx1Z2luVmll
dzo6aGFuZGxlRXZlbnQoRXZlbnQmIGV2ZW50KQogICAgICAgICAgICAgZnJhbWUoKS0+ZXZlbnRI
YW5kbGVyKCkuc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50KG51bGxwdHIpOwogCiAgICAg
ICAgIGRpZEhhbmRsZUV2ZW50ID0gbV9wbHVnaW4tPmhhbmRsZU1vdXNlRXZlbnQoc3RhdGljX2Nh
c3Q8Y29uc3QgV2ViTW91c2VFdmVudCY+KCpjdXJyZW50RXZlbnQpKTsKLSAgICAgICAgaWYgKGV2
ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQpCi0gICAgICAgICAgICBw
bHVnaW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKCk7CiAgICAgfSBlbHNlIGlmIChldmVudE5h
bWVzKCkuaXNXaGVlbEV2ZW50VHlwZShldmVudC50eXBlKCkpCi0gICAgICAgICYmIGN1cnJlbnRF
dmVudC0+dHlwZSgpID09IFdlYkV2ZW50OjpXaGVlbCAmJiBtX3BsdWdpbi0+d2FudHNXaGVlbEV2
ZW50cygpKSB7CisgICAgICAgICYmIGN1cnJlbnRFdmVudC0+dHlwZSgpID09IFdlYkV2ZW50OjpX
aGVlbCAmJiBtX3BsdWdpbi0+d2FudHNXaGVlbEV2ZW50cygpKQogICAgICAgICBkaWRIYW5kbGVF
dmVudCA9IG1fcGx1Z2luLT5oYW5kbGVXaGVlbEV2ZW50KHN0YXRpY19jYXN0PGNvbnN0IFdlYldo
ZWVsRXZlbnQmPigqY3VycmVudEV2ZW50KSk7Ci0gICAgICAgIHBsdWdpbkRpZFJlY2VpdmVVc2Vy
SW50ZXJhY3Rpb24oKTsKLSAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVz
KCkubW91c2VvdmVyRXZlbnQgJiYgY3VycmVudEV2ZW50LT50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1v
dXNlTW92ZSkKKyAgICBlbHNlIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNl
b3ZlckV2ZW50ICYmIGN1cnJlbnRFdmVudC0+dHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZU1vdmUp
CiAgICAgICAgIGRpZEhhbmRsZUV2ZW50ID0gbV9wbHVnaW4tPmhhbmRsZU1vdXNlRW50ZXJFdmVu
dChzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Jj4oKmN1cnJlbnRFdmVudCkpOwogICAg
IGVsc2UgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdXRFdmVudCAmJiBj
dXJyZW50RXZlbnQtPnR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VNb3ZlKQogICAgICAgICBkaWRI
YW5kbGVFdmVudCA9IG1fcGx1Z2luLT5oYW5kbGVNb3VzZUxlYXZlRXZlbnQoc3RhdGljX2Nhc3Q8
Y29uc3QgV2ViTW91c2VFdmVudCY+KCpjdXJyZW50RXZlbnQpKTsKLSAgICBlbHNlIGlmIChldmVu
dC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNvbnRleHRtZW51RXZlbnQgJiYgY3VycmVudEV2ZW50
LT50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlRG93bikgeworICAgIGVsc2UgaWYgKGV2ZW50LnR5
cGUoKSA9PSBldmVudE5hbWVzKCkuY29udGV4dG1lbnVFdmVudCAmJiBjdXJyZW50RXZlbnQtPnR5
cGUoKSA9PSBXZWJFdmVudDo6TW91c2VEb3duKQogICAgICAgICBkaWRIYW5kbGVFdmVudCA9IG1f
cGx1Z2luLT5oYW5kbGVDb250ZXh0TWVudUV2ZW50KHN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNl
RXZlbnQmPigqY3VycmVudEV2ZW50KSk7Ci0gICAgICAgIHBsdWdpbkRpZFJlY2VpdmVVc2VySW50
ZXJhY3Rpb24oKTsKLSAgICB9IGVsc2UgaWYgKChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygp
LmtleWRvd25FdmVudCAmJiBjdXJyZW50RXZlbnQtPnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5RG93
bikKLSAgICAgICAgICAgICAgIHx8IChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXVw
RXZlbnQgJiYgY3VycmVudEV2ZW50LT50eXBlKCkgPT0gV2ViRXZlbnQ6OktleVVwKSkgeworICAg
IGVsc2UgaWYgKChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBj
dXJyZW50RXZlbnQtPnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5RG93bikKKyAgICAgICAgfHwgKGV2
ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5dXBFdmVudCAmJiBjdXJyZW50RXZlbnQtPnR5
cGUoKSA9PSBXZWJFdmVudDo6S2V5VXApKQogICAgICAgICBkaWRIYW5kbGVFdmVudCA9IG1fcGx1
Z2luLT5oYW5kbGVLZXlib2FyZEV2ZW50KHN0YXRpY19jYXN0PGNvbnN0IFdlYktleWJvYXJkRXZl
bnQmPigqY3VycmVudEV2ZW50KSk7Ci0gICAgICAgIHBsdWdpbkRpZFJlY2VpdmVVc2VySW50ZXJh
Y3Rpb24oKTsKLSAgICB9CiAKICAgICBpZiAoZGlkSGFuZGxlRXZlbnQpCiAgICAgICAgIGV2ZW50
LnNldERlZmF1bHRIYW5kbGVkKCk7CkBAIC05ODMsNyArOTUwLDcgQEAgYm9vbCBQbHVnaW5WaWV3
OjpzaG91bGRBbGxvd05hdmlnYXRpb25Gcm9tRHJhZ3MoKSBjb25zdAogCiBib29sIFBsdWdpblZp
ZXc6OnNob3VsZE5vdEFkZExheWVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wbHVnaW5FbGVt
ZW50LT5kaXNwbGF5U3RhdGUoKSA8IEhUTUxQbHVnSW5FbGVtZW50OjpSZXN0YXJ0aW5nICYmICFt
X3BsdWdpbi0+c3VwcG9ydHNTbmFwc2hvdHRpbmcoKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAK
IHZvaWQgUGx1Z2luVmlldzo6d2lsbERldGFjaFJlbmRlcmVyKCkKQEAgLTEzMzAsOSArMTI5Nyw2
IEBAIHZvaWQgUGx1Z2luVmlldzo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgZGlydHlS
ZWN0KQogICAgICAgICByZXR1cm47CiAjZW5kaWYKIAotICAgIGlmIChtX3BsdWdpbkVsZW1lbnQt
PmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlJlc3RhcnRpbmcpCi0gICAgICAg
IHJldHVybjsKLQogICAgIGF1dG8qIHJlbmRlcmVyID0gbV9wbHVnaW5FbGVtZW50LT5yZW5kZXJl
cigpOwogICAgIGlmICghaXM8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KHJlbmRlcmVyKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTUxOSwxMyArMTQ4Myw2IEBAIGJvb2wgUGx1Z2luVmlldzo6aXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCgpCiAgICAgaWYgKCFmcmFtZSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgLy8gV2Uga25vdyB0aGF0IHNvbWUgcGx1Zy1pbnMgY2Fu
IHN1cHBvcnQgc25hcHNob3R0aW5nIHdpdGhvdXQgbmVlZGluZwotICAgIC8vIGFjY2VsZXJhdGVk
IGNvbXBvc2l0aW5nLiBTaW5jZSB3ZSdyZSB0cnlpbmcgdG8gc25hcHNob3QgdGhlbSBhbnl3YXks
Ci0gICAgLy8gcHV0IHRoZW0gaW50byBub3JtYWwgY29tcG9zaXRpbmcgbW9kZS4gQSBzaWRlIGJl
bmVmaXQgaXMgdGhhdCB0aGlzIG1pZ2h0Ci0gICAgLy8gYWxsb3cgdGhlIGVudGlyZSBwYWdlIHRv
IHN0YXkgaW4gdGhhdCBtb2RlLgotICAgIGlmIChtX3BsdWdpbkVsZW1lbnQtPmRpc3BsYXlTdGF0
ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlJlc3RhcnRpbmcgJiYgbV9wYXJhbWV0ZXJzLm1pbWVU
eXBlID09ICJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQogICAgIHJldHVybiBmcmFtZSgpLT5zZXR0aW5ncygpLmFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdFbmFibGVkKCk7CiB9CiAKQEAgLTE2ODAsMTQ5ICsxNjM3LDYgQEAgdm9pZCBQbHVnaW5W
aWV3OjpkaWRGYWlsTG9hZChXZWJGcmFtZSogd2ViRnJhbWUsIGJvb2wgd2FzQ2FuY2VsbGVkKQog
ICAgIG1fcGx1Z2luLT5mcmFtZURpZEZhaWwocmVxdWVzdC0+cmVxdWVzdElEKCksIHdhc0NhbmNl
bGxlZCk7CiB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLXN0YXRpYyBib29sIGlzQWxtb3N0U29s
aWRDb2xvcihCaXRtYXBJbWFnZSogYml0bWFwKQotewotICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBi
aXRtYXAtPm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKLSAgICBBU1NFUlQo
Q0dJbWFnZUdldEJpdHNQZXJDb21wb25lbnQoaW1hZ2UpID09IDgpOwotCi0gICAgQ0dCaXRtYXBJ
bmZvIGltYWdlSW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKGltYWdlKTsKLSAgICBpZiAoIShp
bWFnZUluZm8gJiBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSkgfHwgKGltYWdlSW5mbyAmIGtD
R0JpdG1hcEFscGhhSW5mb01hc2spICE9IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3Qp
IHsKLSAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIGJlaW5nIGFibGUgdG8gaGFuZGxlIG90aGVy
IHBpeGVsIGZvcm1hdHMuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgc2l6ZV90IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRo
KGltYWdlKTsKLSAgICBzaXplX3QgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZSk7Ci0g
ICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVzUGVyUm93KGltYWdlKTsKLQot
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIoaW1hZ2UpKSk7Ci0gICAgY29uc3QgVUlu
dDgqIGRhdGEgPSBDRkRhdGFHZXRCeXRlUHRyKHByb3ZpZGVyLmdldCgpKTsKLQotICAgIC8vIE92
ZXJsYXkgYSBncmlkIG9mIHNhbXBsaW5nIGRvdHMgb24gdG9wIG9mIGEgZ3JheXNjYWxlIHZlcnNp
b24gb2YgdGhlIGltYWdlLgotICAgIC8vIEZvciB0aGUgaW50ZXJpb3IgcG9pbnRzLCBjYWxjdWxh
dGUgdGhlIGRpZmZlcmVuY2UgaW4gbHVtaW5hbmNlIGFtb25nIHRoZSBzYW1wbGUgcG9pbnQKLSAg
ICAvLyBhbmQgaXRzIHN1cnJvdW5kcyBwb2ludHMsIHNjYWxlZCBieSB0cmFuc3BhcmVuY3kuCi0g
ICAgY29uc3QgdW5zaWduZWQgc2FtcGxlUm93cyA9IDc7Ci0gICAgY29uc3QgdW5zaWduZWQgc2Ft
cGxlQ29scyA9IDc7Ci0gICAgLy8gRklYTUU6IFJlZmluZSB0aGUgcHJvcGVyIG51bWJlciBvZiBz
YW1wbGVzLCBhbmQgYWNjb21tb2RhdGUgZGlmZmVyZW50IGFzcGVjdCByYXRpb3MuCi0gICAgaWYg
KHdpZHRoIDwgc2FtcGxlQ29scyB8fCBoZWlnaHQgPCBzYW1wbGVSb3dzKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAvLyBFbnN1cmUgdGhhdCB0aGUgbGFzdCByb3cvY29sdW1uIGxhbmQg
b24gdGhlIGltYWdlIHBlcmltZXRlci4KLSAgICBjb25zdCBmbG9hdCBzdHJpZGVXaWR0aCA9IHN0
YXRpY19jYXN0PGZsb2F0Pih3aWR0aCAtIDEpIC8gKHNhbXBsZUNvbHMgLSAxKTsKLSAgICBjb25z
dCBmbG9hdCBzdHJpZGVIZWlnaHQgPSBzdGF0aWNfY2FzdDxmbG9hdD4oaGVpZ2h0IC0gMSkgLyAo
c2FtcGxlUm93cyAtIDEpOwotICAgIGZsb2F0IHNhbXBsZXNbc2FtcGxlUm93c11bc2FtcGxlQ29s
c107Ci0KLSAgICAvLyBGaW5kIHRoZSBsdW1pbmFuY2Ugb2YgdGhlIHNhbXBsZSBwb2ludHMuCi0g
ICAgZmxvYXQgeSA9IDA7Ci0gICAgY29uc3QgVUludDgqIHJvdyA9IGRhdGE7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHNhbXBsZVJvd3M7ICsraSkgewotICAgICAgICBmbG9hdCB4ID0g
MDsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHNhbXBsZUNvbHM7ICsraikgewot
ICAgICAgICAgICAgY29uc3QgVUludDgqIHAwID0gcm93ICsgKHN0YXRpY19jYXN0PGludD4oeCAr
IC41KSkgKiA0OwotICAgICAgICAgICAgLy8gUiBHIEIgQQotICAgICAgICAgICAgc2FtcGxlc1tp
XVtqXSA9ICgwLjIxMjUgKiAqcDAgKyAwLjcxNTQgKiAqKHAwKzEpICsgMC4wNzIxICogKihwMCsy
KSkgKiAqKHAwKzMpIC8gMjU1OwotICAgICAgICAgICAgeCArPSBzdHJpZGVXaWR0aDsKLSAgICAg
ICAgfQotICAgICAgICB5ICs9IHN0cmlkZUhlaWdodDsKLSAgICAgICAgcm93ID0gZGF0YSArIChz
dGF0aWNfY2FzdDxpbnQ+KHkgKyAuNSkpICogYnl0ZXNQZXJSb3c7Ci0gICAgfQotCi0gICAgLy8g
RGV0ZXJtaW5lIHRoZSBpbWFnZSBzY29yZS4KLSAgICBmbG9hdCBhY2N1bVNjb3JlID0gMDsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgc2FtcGxlUm93cyAtIDE7ICsraSkgewotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGogPSAxOyBqIDwgc2FtcGxlQ29scyAtIDE7ICsraikgewotICAgICAg
ICAgICAgZmxvYXQgZGlmZiA9IHNhbXBsZXNbaSAtIDFdW2pdICsgc2FtcGxlc1tpICsgMV1bal0g
KyBzYW1wbGVzW2ldW2ogLSAxXSArIHNhbXBsZXNbaV1baiArIDFdIC0gNCAqIHNhbXBsZXNbaV1b
al07Ci0gICAgICAgICAgICBhY2N1bVNjb3JlICs9IGRpZmYgKiBkaWZmOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgLy8gVGhlIHNjb3JlIGZvciBhIGdpdmVuIHNhbXBsZSBjYW4gYmUgd2l0aGlu
IHRoZSByYW5nZSBvZiAwIGFuZCAyNTVeMi4KLSAgICByZXR1cm4gYWNjdW1TY29yZSA8IDI1MDAg
KiAoc2FtcGxlUm93cyAtIDIpICogKHNhbXBsZUNvbHMgLSAyKTsKLX0KLSNlbmRpZgotCi12b2lk
IFBsdWdpblZpZXc6OnBsdWdpblNuYXBzaG90VGltZXJGaXJlZCgpCi17Ci0jaWYgRU5BQkxFKFBS
SU1BUllfU05BUFNIT1RURURfUExVR0lOX0hFVVJJU1RJQykKLSAgICBIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50JiBwbHVnSW5JbWFnZUVsZW1lbnQgPSBkb3duY2FzdDxIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50PigqbV9wbHVnaW5FbGVtZW50KTsKLSAgICBib29sIGlzUGx1Z0luT25TY3JlZW4gPSBtX3dl
YlBhZ2UtPnBsdWdJbkludGVyc2VjdHNTZWFyY2hSZWN0KHBsdWdJbkltYWdlRWxlbWVudCk7Ci0g
ICAgYm9vbCBwbHVnSW5DYW1lT25TY3JlZW4gPSBpc1BsdWdJbk9uU2NyZWVuICYmIG1fZGlkUGx1
Z0luU3RhcnRPZmZTY3JlZW47Ci0gICAgYm9vbCBzbmFwc2hvdEZvdW5kID0gZmFsc2U7Ci0jZW5k
aWYKLQotICAgIGlmIChtX3BsdWdpbiAmJiBtX3BsdWdpbi0+c3VwcG9ydHNTbmFwc2hvdHRpbmco
KSkgewotICAgICAgICAvLyBTbmFwc2hvdCBtaWdodCBiZSAwIGlmIHBsdWdpbiBzaXplIGlzIDB4
MC4KLSAgICAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3QgPSBtX3BsdWdpbi0+
c25hcHNob3QoKTsKLSAgICAgICAgUmVmUHRyPEltYWdlPiBzbmFwc2hvdEltYWdlOwotICAgICAg
ICBpZiAoc25hcHNob3QpCi0gICAgICAgICAgICBzbmFwc2hvdEltYWdlID0gc25hcHNob3QtPmNy
ZWF0ZUltYWdlKCk7Ci0gICAgICAgIG1fcGx1Z2luRWxlbWVudC0+dXBkYXRlU25hcHNob3Qoc25h
cHNob3RJbWFnZS5nZXQoKSk7Ci0KLSAgICAgICAgaWYgKHNuYXBzaG90SW1hZ2UpIHsKLSNpZiBF
TkFCTEUoUFJJTUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElDKQotICAgICAgICAgICAg
Ym9vbCBzbmFwc2hvdElzQWxtb3N0U29saWRDb2xvciA9IGlzQWxtb3N0U29saWRDb2xvcihkb3du
Y2FzdDxCaXRtYXBJbWFnZT4oc25hcHNob3RJbWFnZS5nZXQoKSkpOwotICAgICAgICAgICAgc25h
cHNob3RGb3VuZCA9ICFzbmFwc2hvdElzQWxtb3N0U29saWRDb2xvcjsKLSNlbmRpZgotCi0jaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgICAgICAgICB1bnNpZ25lZCBtYXhpbXVtU25hcHNob3RSZXRy
aWVzID0gZnJhbWUoKSA/IGZyYW1lKCktPnNldHRpbmdzKCkubWF4aW11bVBsdWdJblNuYXBzaG90
QXR0ZW1wdHMoKSA6IDA7Ci0gICAgICAgICAgICBpZiAoc25hcHNob3RJc0FsbW9zdFNvbGlkQ29s
b3IgJiYgbV9jb3VudFNuYXBzaG90UmV0cmllcyA8IG1heGltdW1TbmFwc2hvdFJldHJpZXMgJiYg
IXBsdWdJbkNhbWVPblNjcmVlbikgewotICAgICAgICAgICAgICAgICsrbV9jb3VudFNuYXBzaG90
UmV0cmllczsKLSAgICAgICAgICAgICAgICBtX3BsdWdpblNuYXBzaG90VGltZXIucmVzdGFydCgp
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSNlbmRpZgotICAgICAg
ICB9Ci0gICAgfQotCi0jaWYgRU5BQkxFKFBSSU1BUllfU05BUFNIT1RURURfUExVR0lOX0hFVVJJ
U1RJQykKLSAgICB1bnNpZ25lZCBjYW5kaWRhdGVBcmVhID0gMDsKLSAgICB1bnNpZ25lZCBtYXhp
bXVtU25hcHNob3RSZXRyaWVzID0gZnJhbWUoKSA/IGZyYW1lKCktPnNldHRpbmdzKCkubWF4aW11
bVBsdWdJblNuYXBzaG90QXR0ZW1wdHMoKSA6IDA7Ci0gICAgYm9vbCBub1NuYXBzaG90Rm91bmRB
ZnRlck1heFJldHJpZXMgPSBtX2NvdW50U25hcHNob3RSZXRyaWVzID09IG1heGltdW1TbmFwc2hv
dFJldHJpZXMgJiYgIWlzUGx1Z0luT25TY3JlZW4gJiYgIXNuYXBzaG90Rm91bmQ7Ci0gICAgaWYg
KG1fd2ViUGFnZS0+cGx1Z0luSXNQcmltYXJ5U2l6ZShwbHVnSW5JbWFnZUVsZW1lbnQsIGNhbmRp
ZGF0ZUFyZWEpCi0gICAgICAgICYmIChub1NuYXBzaG90Rm91bmRBZnRlck1heFJldHJpZXMgfHwg
cGx1Z0luQ2FtZU9uU2NyZWVuKSkKLSAgICAgICAgbV9wbHVnaW5FbGVtZW50LT5zZXREaXNwbGF5
U3RhdGUoSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmcpOwotICAgIGVsc2UKLSNlbmRpZgotICAg
ICAgICBtX3BsdWdpbkVsZW1lbnQtPnNldERpc3BsYXlTdGF0ZShIVE1MUGx1Z0luRWxlbWVudDo6
RGlzcGxheWluZ1NuYXBzaG90KTsKLX0KLQotdm9pZCBQbHVnaW5WaWV3OjpiZWdpblNuYXBzaG90
dGluZ1J1bm5pbmdQbHVnaW4oKQotewotICAgIG1fcGx1Z2luU25hcHNob3RUaW1lci5yZXN0YXJ0
KCk7Ci19Ci0KLWJvb2wgUGx1Z2luVmlldzo6c2hvdWxkQWx3YXlzQXV0b1N0YXJ0KCkgY29uc3QK
LXsKLSAgICBpZiAoIW1fcGx1Z2luKQotICAgICAgICByZXR1cm4gUGx1Z2luVmlld0Jhc2U6OnNo
b3VsZEFsd2F5c0F1dG9TdGFydCgpOwotCi0gICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzSmF2
YUFwcGxldE1JTUVUeXBlKG1fcGFyYW1ldGVycy5taW1lVHlwZSkpCi0gICAgICAgIHJldHVybiB0
cnVlOwotCi0gICAgcmV0dXJuIG1fcGx1Z2luLT5zaG91bGRBbHdheXNBdXRvU3RhcnQoKTsKLX0K
LQotdm9pZCBQbHVnaW5WaWV3OjpwbHVnaW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKCkKLXsK
LSAgICBpZiAoZnJhbWUoKSAmJiAhZnJhbWUoKS0+c2V0dGluZ3MoKS5wbHVnSW5TbmFwc2hvdHRp
bmdFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2RpZFJlY2VpdmVVc2Vy
SW50ZXJhY3Rpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZGlkUmVjZWl2ZVVzZXJJbnRl
cmFjdGlvbiA9IHRydWU7Ci0KLSAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBwbHVnSW5JbWFn
ZUVsZW1lbnQgPSBkb3duY2FzdDxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PigqbV9wbHVnaW5FbGVt
ZW50KTsKLSAgICBTdHJpbmcgcGFnZU9yaWdpbiA9IHBsdWdJbkltYWdlRWxlbWVudC5kb2N1bWVu
dCgpLnBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+YmFzZVVSTCgpLmhvc3QoKS50b1N0
cmluZygpOwotICAgIFN0cmluZyBwbHVnaW5PcmlnaW4gPSBwbHVnSW5JbWFnZUVsZW1lbnQubG9h
ZGVkVXJsKCkuaG9zdCgpLnRvU3RyaW5nKCk7Ci0gICAgU3RyaW5nIG1pbWVUeXBlID0gcGx1Z0lu
SW1hZ2VFbGVtZW50LnNlcnZpY2VUeXBlKCk7Ci0KLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHBhZ2VPcmlnaW4sIHBsdWdpbk9yaWdp
biwgbWltZVR5cGUpOwotfQotCiBib29sIFBsdWdpblZpZXc6OnNob3VsZENyZWF0ZVRyYW5zaWVu
dFBhaW50aW5nU25hcHNob3QoKSBjb25zdAogewogICAgIGlmICghbV9wbHVnaW4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggYTY1MDliNGY4
YWRhNWE2ZGE3N2VhYjdmOWQ2N2E2YjczMzgxYTYyOC4uZmU2MWYxNTU4NDQwOTMwYmU4Mjg2Yzlh
NzUwY2M4OGJiZDYwMDEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuaApAQCAtMTQ4LDkgKzE0OCw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJl
ZGVsaXZlck1hbnVhbFN0cmVhbSgpOwogCi0gICAgdm9pZCBwbHVnaW5TbmFwc2hvdFRpbWVyRmly
ZWQoKTsKLSAgICB2b2lkIHBsdWdpbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24oKTsKLQogICAg
IGJvb2wgc2hvdWxkQ3JlYXRlVHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdCgpIGNvbnN0OwogCiAg
ICAgLy8gV2ViQ29yZTo6UGx1Z2luVmlld0Jhc2UKQEAgLTE2NSw4ICsxNjIsNiBAQCBwcml2YXRl
OgogICAgIFdlYkNvcmU6OlNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhcigpIG92ZXJyaWRl
OwogICAgIFdlYkNvcmU6OlNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBvdmVycmlkZTsK
ICAgICBib29sIHdhbnRzV2hlZWxFdmVudHMoKSBvdmVycmlkZTsKLSAgICBib29sIHNob3VsZEFs
d2F5c0F1dG9TdGFydCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYmVnaW5TbmFwc2hvdHRp
bmdSdW5uaW5nUGx1Z2luKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRBbGxvd05hdmlnYXRp
b25Gcm9tRHJhZ3MoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHNob3VsZE5vdEFkZExheWVy
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsRGV0YWNoUmVuZGVyZXIoKSBvdmVycmlk
ZTsKQEAgLTI0NywxMCArMjQyLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNXYWl0aW5nVW50
aWxNZWRpYUNhblN0YXJ0IHsgZmFsc2UgfTsKICAgICBib29sIG1fcGx1Z2luUHJvY2Vzc0hhc0Ny
YXNoZWQgeyBmYWxzZSB9OwogCi0jaWYgRU5BQkxFKFBSSU1BUllfU05BUFNIT1RURURfUExVR0lO
X0hFVVJJU1RJQykKLSAgICBib29sIG1fZGlkUGx1Z0luU3RhcnRPZmZTY3JlZW4geyBmYWxzZSB9
OwotI2VuZGlmCi0KICAgICAvLyBQZW5kaW5nIFVSTFJlcXVlc3RzIHRoYXQgdGhlIHBsdWctaW4g
aGFzIG1hZGUuCiAgICAgRGVxdWU8UmVmUHRyPFVSTFJlcXVlc3Q+PiBtX3BlbmRpbmdVUkxSZXF1
ZXN0czsKICAgICBSdW5Mb29wOjpUaW1lcjxQbHVnaW5WaWV3PiBtX3BlbmRpbmdVUkxSZXF1ZXN0
c1RpbWVyOwpAQCAtMjc4LDEyICsyNjksNiBAQCBwcml2YXRlOgogCiAgICAgLy8gVGhpcyBzbmFw
c2hvdCBpcyB1c2VkIHRvIGF2b2lkIHNpZGUgZWZmZWN0cyBzaG91bGQgdGhlIHBsdWdpbiBydW4g
SlMgZHVyaW5nIHBhaW50aW5nLgogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fdHJhbnNp
ZW50UGFpbnRpbmdTbmFwc2hvdDsKLSAgICAvLyBUaGlzIHRpbWVyIGlzIHVzZWQgd2hlbiBwbHVn
aW4gc25hcHNob3R0aW5nIGlzIGVuYWJsZWQsIHRvIGNhcHR1cmUgYSBwbHVnaW4gcGxhY2Vob2xk
ZXIuCi0gICAgV2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1lciBtX3BsdWdpblNuYXBzaG90
VGltZXI7Ci0jaWYgRU5BQkxFKFBSSU1BUllfU05BUFNIT1RURURfUExVR0lOX0hFVVJJU1RJQykg
fHwgUExBVEZPUk0oQ09DT0EpCi0gICAgdW5zaWduZWQgbV9jb3VudFNuYXBzaG90UmV0cmllcyB7
IDAgfTsKLSNlbmRpZgotICAgIGJvb2wgbV9kaWRSZWNlaXZlVXNlckludGVyYWN0aW9uIHsgZmFs
c2UgfTsKIAogICAgIGRvdWJsZSBtX3BhZ2VTY2FsZUZhY3RvciB7IDEgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92
aWRlci5jcHAKaW5kZXggODBkZTRkN2RjMmFmNjU3NDQwY2JlMTA0ODVhMGNhYTRhZmJjNDQzZS4u
MjNjMjg1NGJkNzRhOWIxZWYyYTFhZWEzMWJmNWY3YmRkYTJkNDIxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlk
ZXIuY3BwCkBAIC02MSwzNSArNjEsNiBAQCBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6On5XZWJQbHVn
aW5JbmZvUHJvdmlkZXIoKQogewogfQogCi0jaWYgUExBVEZPUk0oTUFDKQotdm9pZCBXZWJQbHVn
aW5JbmZvUHJvdmlkZXI6OnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koV2ViQ29yZTo6UGx1Z2lu
TG9hZENsaWVudFBvbGljeSBjbGllbnRQb2xpY3ksIGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3Qg
U3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpCi17
Ci0gICAgU3RyaW5nIGhvc3RUb1NldCA9IGhvc3QuaXNOdWxsKCkgfHwgIWhvc3QubGVuZ3RoKCkg
PyAiKiIgOiBob3N0OwotICAgIFN0cmluZyBidW5kbGVJZGVudGlmaWVyVG9TZXQgPSBidW5kbGVJ
ZGVudGlmaWVyLmlzTnVsbCgpIHx8ICFidW5kbGVJZGVudGlmaWVyLmxlbmd0aCgpID8gIioiIDog
YnVuZGxlSWRlbnRpZmllcjsKLSAgICBTdHJpbmcgdmVyc2lvblN0cmluZ1RvU2V0ID0gdmVyc2lv
blN0cmluZy5pc051bGwoKSB8fCAhdmVyc2lvblN0cmluZy5sZW5ndGgoKSA/ICIqIiA6IHZlcnNp
b25TdHJpbmc7Ci0KLSAgICBQbHVnaW5Qb2xpY3lNYXBzQnlJZGVudGlmaWVyIHBvbGljaWVzQnlJ
ZGVudGlmaWVyOwotICAgIGlmIChtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5jb250YWlu
cyhob3N0VG9TZXQpKQotICAgICAgICBwb2xpY2llc0J5SWRlbnRpZmllciA9IG1faG9zdHNUb1Bs
dWdpbklkZW50aWZpZXJEYXRhLmdldChob3N0VG9TZXQpOwotCi0gICAgUGx1Z2luTG9hZENsaWVu
dFBvbGljaWVzQnlCdW5kbGVWZXJzaW9uIHZlcnNpb25zVG9Qb2xpY2llczsKLSAgICBpZiAocG9s
aWNpZXNCeUlkZW50aWZpZXIuY29udGFpbnMoYnVuZGxlSWRlbnRpZmllclRvU2V0KSkKLSAgICAg
ICAgdmVyc2lvbnNUb1BvbGljaWVzID0gcG9saWNpZXNCeUlkZW50aWZpZXIuZ2V0KGJ1bmRsZUlk
ZW50aWZpZXJUb1NldCk7Ci0KLSAgICB2ZXJzaW9uc1RvUG9saWNpZXMuc2V0KHZlcnNpb25TdHJp
bmdUb1NldCwgY2xpZW50UG9saWN5KTsKLSAgICBwb2xpY2llc0J5SWRlbnRpZmllci5zZXQoYnVu
ZGxlSWRlbnRpZmllclRvU2V0LCBXVEZNb3ZlKHZlcnNpb25zVG9Qb2xpY2llcykpOwotICAgIG1f
aG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLnNldChob3N0VG9TZXQsIHBvbGljaWVzQnlJZGVu
dGlmaWVyKTsKLQotICAgIGNsZWFyUGFnZXNQbHVnaW5EYXRhKCk7Ci19Ci0KLXZvaWQgV2ViUGx1
Z2luSW5mb1Byb3ZpZGVyOjpjbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCkKLXsKLSAgICBtX2hv
c3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5jbGVhcigpOwotICAgIGNsZWFyUGFnZXNQbHVnaW5E
YXRhKCk7Ci19Ci0jZW5kaWYKLQogdm9pZCBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnJlZnJlc2hQ
bHVnaW5zKCkKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKQEAgLTE0Myw3ICsx
MTQsNyBAQCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVy
Ojp3ZWJWaXNpYmxlUGx1Z2luSW5mbyhQYWdlJiBwYQogfQogCiAjaWYgRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCi12b2lkIFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6cG9wdWxhdGVQbHVnaW5D
YWNoZShjb25zdCBXZWJDb3JlOjpQYWdlJiBwYWdlKQordm9pZCBXZWJQbHVnaW5JbmZvUHJvdmlk
ZXI6OnBvcHVsYXRlUGx1Z2luQ2FjaGUoY29uc3QgV2ViQ29yZTo6UGFnZSYpCiB7CiAgICAgaWYg
KCFtX3BsdWdpbkNhY2hlSXNQb3B1bGF0ZWQpIHsKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTE2
MiwxMDEgKzEzMyw2IEBAIHZvaWQgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpwb3B1bGF0ZVBsdWdp
bkNhY2hlKGNvbnN0IFdlYkNvcmU6OlBhZ2UmIHBhZ2UpCiAgICAgICAgIG1fc2hvdWxkUmVmcmVz
aFBsdWdpbnMgPSBmYWxzZTsKICAgICAgICAgbV9wbHVnaW5DYWNoZUlzUG9wdWxhdGVkID0gdHJ1
ZTsKICAgICB9Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgU3RyaW5nIHBhZ2VIb3N0ID0gcGFn
ZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZVVSTCgpLmhv
c3QoKS50b1N0cmluZygpOwotICAgIGlmIChwYWdlSG9zdC5pc051bGwoKSkKLSAgICAgICAgcmV0
dXJuOwotICAgIGZvciAoYXV0byYgaW5mbyA6IG1fY2FjaGVkUGx1Z2lucykgewotICAgICAgICBp
ZiAoYXV0byBjbGllbnRQb2xpY3kgPSBwbHVnaW5Mb2FkQ2xpZW50UG9saWN5Rm9ySG9zdChwYWdl
SG9zdCwgaW5mbykpCi0gICAgICAgICAgICBpbmZvLmNsaWVudExvYWRQb2xpY3kgPSAqY2xpZW50
UG9saWN5OwotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwotI2VuZGlmIC8v
IG5vdCBQTEFURk9STShNQUMpCi19Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKLU9wdGlv
bmFsPFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+IFdlYlBsdWdpbkluZm9Qcm92aWRl
cjo6cGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0LCBjb25z
dCBXZWJDb3JlOjpQbHVnaW5JbmZvJiBpbmZvKSBjb25zdAotewotICAgIFN0cmluZyBob3N0VG9M
b29rVXAgPSBob3N0OwotICAgIFN0cmluZyBpZGVudGlmaWVyID0gaW5mby5idW5kbGVJZGVudGlm
aWVyOwotCi0gICAgYXV0byBwb2xpY2llc0J5SWRlbnRpZmllckl0ZXJhdG9yID0gbV9ob3N0c1Rv
UGx1Z2luSWRlbnRpZmllckRhdGEuZmluZChob3N0VG9Mb29rVXApOwotCi0gICAgaWYgKCFpZGVu
dGlmaWVyLmlzTnVsbCgpICYmIHBvbGljaWVzQnlJZGVudGlmaWVySXRlcmF0b3IgPT0gbV9ob3N0
c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuZW5kKCkpIHsKLSAgICAgICAgaWYgKCFyZXBsYWNlSG9z
dFdpdGhNYXRjaGVkV2lsZGNhcmRIb3N0KGhvc3RUb0xvb2tVcCwgaWRlbnRpZmllcikpCi0gICAg
ICAgICAgICBob3N0VG9Mb29rVXAgPSAiKiI7Ci0gICAgICAgIHBvbGljaWVzQnlJZGVudGlmaWVy
SXRlcmF0b3IgPSBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5maW5kKGhvc3RUb0xvb2tV
cCk7Ci0gICAgICAgIGlmIChob3N0VG9Mb29rVXAgIT0gIioiICYmIHBvbGljaWVzQnlJZGVudGlm
aWVySXRlcmF0b3IgPT0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuZW5kKCkpIHsKLSAg
ICAgICAgICAgIGhvc3RUb0xvb2tVcCA9ICIqIjsKLSAgICAgICAgICAgIHBvbGljaWVzQnlJZGVu
dGlmaWVySXRlcmF0b3IgPSBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5maW5kKGhvc3RU
b0xvb2tVcCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKHBvbGljaWVzQnlJZGVudGlmaWVy
SXRlcmF0b3IgPT0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuZW5kKCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBhdXRvJiBwb2xpY2llc0J5SWRlbnRpZmllciA9
IHBvbGljaWVzQnlJZGVudGlmaWVySXRlcmF0b3ItPnZhbHVlOwotCi0gICAgaWYgKCFpZGVudGlm
aWVyKQotICAgICAgICBpZGVudGlmaWVyID0gIioiOwotCi0gICAgYXV0byBpZGVudGlmaWVyUG9s
aWN5SXRlcmF0b3IgPSBwb2xpY2llc0J5SWRlbnRpZmllci5maW5kKGlkZW50aWZpZXIpOwotICAg
IGlmIChpZGVudGlmaWVyICE9ICIqIiAmJiBpZGVudGlmaWVyUG9saWN5SXRlcmF0b3IgPT0gcG9s
aWNpZXNCeUlkZW50aWZpZXIuZW5kKCkpIHsKLSAgICAgICAgaWRlbnRpZmllciA9ICIqIjsKLSAg
ICAgICAgaWRlbnRpZmllclBvbGljeUl0ZXJhdG9yID0gcG9saWNpZXNCeUlkZW50aWZpZXIuZmlu
ZChpZGVudGlmaWVyKTsKLSAgICB9Ci0KLSAgICBpZiAoaWRlbnRpZmllclBvbGljeUl0ZXJhdG9y
ID09IHBvbGljaWVzQnlJZGVudGlmaWVyLmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotCi0gICAgYXV0byYgdmVyc2lvbnNUb1BvbGljaWVzID0gaWRlbnRpZmllclBvbGljeUl0
ZXJhdG9yLT52YWx1ZTsKLQotICAgIFN0cmluZyB2ZXJzaW9uID0gaW5mby52ZXJzaW9uU3RyaW5n
OwotICAgIGlmICghdmVyc2lvbikKLSAgICAgICAgdmVyc2lvbiA9ICIqIjsKLSAgICBhdXRvIHBv
bGljeUl0ZXJhdG9yID0gdmVyc2lvbnNUb1BvbGljaWVzLmZpbmQodmVyc2lvbik7Ci0gICAgaWYg
KHZlcnNpb24gIT0gIioiICYmIHBvbGljeUl0ZXJhdG9yID09IHZlcnNpb25zVG9Qb2xpY2llcy5l
bmQoKSkgewotICAgICAgICB2ZXJzaW9uID0gIioiOwotICAgICAgICBwb2xpY3lJdGVyYXRvciA9
IHZlcnNpb25zVG9Qb2xpY2llcy5maW5kKHZlcnNpb24pOwotICAgIH0KLQotICAgIGlmIChwb2xp
Y3lJdGVyYXRvciA9PSB2ZXJzaW9uc1RvUG9saWNpZXMuZW5kKCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gcG9saWN5SXRlcmF0b3ItPnZhbHVlOwotfQotCi1T
dHJpbmcgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpsb25nZXN0TWF0Y2hlZFdpbGRjYXJkSG9zdEZv
ckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KSBjb25zdAotewotICAgIFN0cmluZyBsb25nZXN0TWF0
Y2hlZEhvc3Q7Ci0KLSAgICBmb3IgKGF1dG8mIGtleSA6IG1faG9zdHNUb1BsdWdpbklkZW50aWZp
ZXJEYXRhLmtleXMoKSkgewotICAgICAgICBpZiAoa2V5LmNvbnRhaW5zKCcqJykgJiYga2V5ICE9
ICIqIiAmJiBzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoaG9zdCwga2V5KSkgewotICAgICAg
ICAgICAgaWYgKGtleS5sZW5ndGgoKSA+IGxvbmdlc3RNYXRjaGVkSG9zdC5sZW5ndGgoKSkKLSAg
ICAgICAgICAgICAgICBsb25nZXN0TWF0Y2hlZEhvc3QgPSBrZXk7Ci0gICAgICAgICAgICBlbHNl
IGlmIChrZXkubGVuZ3RoKCkgPT0gbG9uZ2VzdE1hdGNoZWRIb3N0Lmxlbmd0aCgpICYmIGNvZGVQ
b2ludENvbXBhcmVMZXNzVGhhbihrZXksIGxvbmdlc3RNYXRjaGVkSG9zdCkpCi0gICAgICAgICAg
ICAgICAgbG9uZ2VzdE1hdGNoZWRIb3N0ID0ga2V5OwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
cmV0dXJuIGxvbmdlc3RNYXRjaGVkSG9zdDsKLX0KLQotYm9vbCBXZWJQbHVnaW5JbmZvUHJvdmlk
ZXI6OnJlcGxhY2VIb3N0V2l0aE1hdGNoZWRXaWxkY2FyZEhvc3QoU3RyaW5nJiBob3N0LCBjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0Ci17Ci0gICAgU3RyaW5nIG1hdGNoZWRXaWxkY2Fy
ZEhvc3QgPSBsb25nZXN0TWF0Y2hlZFdpbGRjYXJkSG9zdEZvckhvc3QoaG9zdCk7Ci0KLSAgICBp
ZiAobWF0Y2hlZFdpbGRjYXJkSG9zdC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgYXV0byBwbHVnSW5JZGVudGlmaWVyRGF0YSA9IG1faG9zdHNUb1BsdWdpbklkZW50aWZp
ZXJEYXRhLmZpbmQobWF0Y2hlZFdpbGRjYXJkSG9zdCk7Ci0gICAgaWYgKHBsdWdJbklkZW50aWZp
ZXJEYXRhID09IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmVuZCgpIHx8ICFwbHVnSW5J
ZGVudGlmaWVyRGF0YS0+dmFsdWUuY29udGFpbnMoaWRlbnRpZmllcikpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGhvc3QgPSBtYXRjaGVkV2lsZGNhcmRIb3N0OwotICAgIHJldHVybiB0
cnVlOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKaW5kZXggM2Y5YTBiOGY4YmU4OGJlZjJl
MmEyYjBiZDNiNTUwNmY1MTllZWQ0MS4uNDgzODNiMzYzZjU5MmVhNDAwOTg2OTFlNGI4OTk4MDgx
ZjYwZDQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2Vi
UGx1Z2luSW5mb1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKQEAgLTM3LDExICszNyw2IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyJiBzaW5nbGV0b24oKTsKICAgICB2aXJ0dWFs
IH5XZWJQbHVnaW5JbmZvUHJvdmlkZXIoKTsKIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lk
IHNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGlj
eSwgY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgdmVyc2lvblN0cmluZyk7Ci0gICAgdm9pZCBjbGVhclBsdWdpbkNsaWVudFBv
bGljaWVzKCk7Ci0jZW5kaWYKLQogcHJpdmF0ZToKICAgICBXZWJQbHVnaW5JbmZvUHJvdmlkZXIo
KTsKIApAQCAtNTEsMTYgKzQ2LDYgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKQogICAgIHZvaWQgcG9wdWxhdGVQbHVnaW5DYWNoZShjb25zdCBXZWJDb3JlOjpQ
YWdlJik7Ci0jZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0KLSNpZiBQTEFU
Rk9STShNQUMpCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeT4g
cGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QoY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29y
ZTo6UGx1Z2luSW5mbyYpIGNvbnN0OwotICAgIFN0cmluZyBsb25nZXN0TWF0Y2hlZFdpbGRjYXJk
SG9zdEZvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KSBjb25zdDsKLSAgICBib29sIHJlcGxhY2VI
b3N0V2l0aE1hdGNoZWRXaWxkY2FyZEhvc3QoU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIpIGNvbnN0OwotCi0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgV2ViQ29yZTo6
UGx1Z2luTG9hZENsaWVudFBvbGljeT4gUGx1Z2luTG9hZENsaWVudFBvbGljaWVzQnlCdW5kbGVW
ZXJzaW9uOwotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFBsdWdpbkxvYWRDbGllbnRQb2xp
Y2llc0J5QnVuZGxlVmVyc2lvbj4gUGx1Z2luUG9saWN5TWFwc0J5SWRlbnRpZmllcjsKLSAgICBI
YXNoTWFwPFN0cmluZywgUGx1Z2luUG9saWN5TWFwc0J5SWRlbnRpZmllcj4gbV9ob3N0c1RvUGx1
Z2luSWRlbnRpZmllckRhdGE7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsdWdJbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ODM2Nzg5ZDkzNDE0MmQyN2M1N2M0ZmYxZmE3NmZhY2I1ZjUyMDNhNS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU2
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2Vi
UGx1Z0luQ2xpZW50LmgiCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiV2ViUHJv
Y2Vzcy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYlBsdWdJbkNsaWVudDo6
V2ViUGx1Z0luQ2xpZW50KFdlYlBhZ2UmIHdlYlBhZ2UpCi0gICAgOiBtX3dlYlBhZ2Uod2ViUGFn
ZSkKLQotewotfQotCi1XZWJQbHVnSW5DbGllbnQ6On5XZWJQbHVnSW5DbGllbnQoKQotewotfQot
Ci1ib29sIFdlYlBsdWdJbkNsaWVudDo6c2hvdWxkQXV0b1N0YXJ0RnJvbU9yaWdpbihjb25zdCBT
dHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKQotewotICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91
bGRQbHVnSW5BdXRvU3RhcnRGcm9tT3JpZ2luKG1fd2ViUGFnZSwgcGFnZU9yaWdpbiwgcGx1Z2lu
T3JpZ2luLCBtaW1lVHlwZSk7Ci19Ci0KLXZvaWQgV2ViUGx1Z0luQ2xpZW50OjpkaWRTdGFydEZy
b21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9y
aWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wbHVnSW5EaWRTdGFydEZyb21PcmlnaW4ocGFnZU9yaWdpbiwgcGx1Z2luT3JpZ2luLCBt
aW1lVHlwZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDMzYTU4Y2QwOThkNTZhYzE2NzlkYTE2Y2Rk
MDc1NDJmOTRjMGJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGll
bnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IFdlYlBsdWdJbkNsaWVudF9oCi0jZGVmaW5lIFdlYlBsdWdJbkNsaWVudF9oCi0KLSNpbmNsdWRl
IDxXZWJDb3JlL1BsdWdJbkNsaWVudC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3Mg
V2ViUGFnZTsKLQotY2xhc3MgV2ViUGx1Z0luQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OlBsdWdJ
bkNsaWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgZXhw
bGljaXQgV2ViUGx1Z0luQ2xpZW50KFdlYlBhZ2UmKTsKLSAgICB2aXJ0dWFsIH5XZWJQbHVnSW5D
bGllbnQoKTsKLQotcHJpdmF0ZToKLSAgICBib29sIHNob3VsZEF1dG9TdGFydEZyb21PcmlnaW4o
Y29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRTdGFydEZyb21Pcmln
aW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgb3ZlcnJpZGU7Ci0KLSAgICBXZWJQYWdlJiBtX3dlYlBh
Z2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8qIFdlYlBsdWdJbkNs
aWVudCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCAxOWEyMGI3NmE2YmUxNzY1NGI1NzgxZDEzYjY4YTA5NWJjY2NiZTAwLi5hZWFlYmJmMGE0
NDRiNzM3NjIwZGZkMjYyNGMxMmVmYjY5YThjNWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTE1LDcgKzExNSw2IEBACiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYXltZW50Q29vcmRpbmF0b3Iu
aCIKICNpbmNsdWRlICJXZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuaCIKLSNpbmNsdWRlICJX
ZWJQbHVnSW5DbGllbnQuaCIKICNpbmNsdWRlICJXZWJQbHVnaW5JbmZvUHJvdmlkZXIuaCIKICNp
bmNsdWRlICJXZWJQb3B1cE1lbnUuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc0RlZmluaXRp
b25zLmgiCkBAIC0xODQsNyArMTgzLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNZW51RWxl
bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE1lbnVJdGVtRWxlbWVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvSFRNTFBsdWdJbkVsZW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxTZWxlY3RFbGVtZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSGlzdG9yeUNvbnRyb2xsZXIuaD4KQEAgLTQyNSw5ICs0MjMsNiBAQCBX
ZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgLCBtX3Nob3VsZFBsYXlNZWRpYUluR1BVUHJvY2Vz
cyB7IHBhcmFtZXRlcnMuc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzIH0KICNpZiBFTkFCTEUo
QVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgLCBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJr
cyB7IHBhcmFtZXRlcnMubmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIH0KLSNlbmRpZgot
I2lmIEVOQUJMRShQUklNQVJZX1NOQVBTSE9UVEVEX1BMVUdJTl9IRVVSSVNUSUMpCi0gICAgLCBt
X2RldGVybWluZVByaW1hcnlTbmFwc2hvdHRlZFBsdWdJblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwg
dGhpcywgJldlYlBhZ2U6OmRldGVybWluZVByaW1hcnlTbmFwc2hvdHRlZFBsdWdJblRpbWVyRmly
ZWQpCiAjZW5kaWYKICAgICAsIG1fbGF5ZXJIb3N0aW5nTW9kZShwYXJhbWV0ZXJzLmxheWVySG9z
dGluZ01vZGUpCiAjaWYgRU5BQkxFKFBMQVRGT1JNX0RSSVZFTl9URVhUX0NIRUNLSU5HKQpAQCAt
NTIxLDcgKzUxNiw2IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBwYWdlQ29uZmlndXJh
dGlvbi5hbHRlcm5hdGl2ZVRleHRDbGllbnQgPSBtYWtlVW5pcXVlPFdlYkFsdGVybmF0aXZlVGV4
dENsaWVudD4odGhpcyk7CiAjZW5kaWYKIAotICAgIHBhZ2VDb25maWd1cmF0aW9uLnBsdWdJbkNs
aWVudCA9IG1ha2VVbmlxdWU8V2ViUGx1Z0luQ2xpZW50PigqdGhpcyk7CiAgICAgcGFnZUNvbmZp
Z3VyYXRpb24uZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgPSBtYWtlVW5pcXVlPFdlYkRpYWdub3N0
aWNMb2dnaW5nQ2xpZW50PigqdGhpcyk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ucGVyZm9ybWFu
Y2VMb2dnaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQ+
KCp0aGlzKTsKIApAQCAtMTA3MiwyMSArMTA2NiwxMyBAQCBSZWZQdHI8UGx1Z2luPiBXZWJQYWdl
OjpjcmVhdGVQbHVnaW4oV2ViRnJhbWUqIGZyYW1lLCBIVE1MUGx1Z0luRWxlbWVudCogcGx1Z2lu
RQogICAgIFN0cmluZyBmcmFtZVVSTFN0cmluZyA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVy
KCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2VVUkwoKS5zdHJpbmcoKTsKICAgICBTdHJpbmcg
cGFnZVVSTFN0cmluZyA9IG1fcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuZG9jdW1lbnRMb2Fk
ZXIoKS0+cmVzcG9uc2VVUkwoKS5zdHJpbmcoKTsKIAotI2lmIEVOQUJMRShQUklNQVJZX1NOQVBT
SE9UVEVEX1BMVUdJTl9IRVVSSVNUSUMpCi0gICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgcGx1
Z2luSW1hZ2VFbGVtZW50ID0gZG93bmNhc3Q8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4oKnBsdWdp
bkVsZW1lbnQpOwotICAgIHVuc2lnbmVkIHBsdWdpbkFyZWEgPSAwOwotICAgIFBsdWdpblByb2Nl
c3NUeXBlIHByb2Nlc3NUeXBlID0gcGx1Z2luRWxlbWVudC0+ZGlzcGxheVN0YXRlKCkgPT0gSFRN
TFBsdWdJbkVsZW1lbnQ6OldhaXRpbmdGb3JTbmFwc2hvdCAmJiAhKHBsdWdJbklzUHJpbWFyeVNp
emUocGx1Z2luSW1hZ2VFbGVtZW50LCBwbHVnaW5BcmVhKSAmJiAhcGx1Z0luSW50ZXJzZWN0c1Nl
YXJjaFJlY3QocGx1Z2luSW1hZ2VFbGVtZW50KSkgPyBQbHVnaW5Qcm9jZXNzVHlwZTo6U25hcHNo
b3QgOiBQbHVnaW5Qcm9jZXNzVHlwZTo6Tm9ybWFsOwotI2Vsc2UKLSAgICBQbHVnaW5Qcm9jZXNz
VHlwZSBwcm9jZXNzVHlwZSA9IHBsdWdpbkVsZW1lbnQtPmRpc3BsYXlTdGF0ZSgpID09IEhUTUxQ
bHVnSW5FbGVtZW50OjpXYWl0aW5nRm9yU25hcHNob3QgPyBQbHVnaW5Qcm9jZXNzVHlwZTo6U25h
cHNob3QgOiBQbHVnaW5Qcm9jZXNzVHlwZTo6Tm9ybWFsOwotI2VuZGlmCi0KICAgICBib29sIGFs
bG93T25seUFwcGxpY2F0aW9uUGx1Z2lucyA9ICFmcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigp
LmFyZVBsdWdpbnNFbmFibGVkKCk7CiAKICAgICB1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW47
CiAgICAgdWludDMyX3QgcGx1Z2luTG9hZFBvbGljeTsKICAgICBTdHJpbmcgdW5hdmFpbGFiaWxp
dHlEZXNjcmlwdGlvbjsKICAgICBib29sIGlzVW5zdXBwb3J0ZWQ7Ci0gICAgaWYgKCFzZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5kUGx1Z2luKHBhcmFtZXRlcnMubWltZVR5cGUs
IHByb2Nlc3NUeXBlLCBwYXJhbWV0ZXJzLnVybC5zdHJpbmcoKSwgZnJhbWVVUkxTdHJpbmcsIHBh
Z2VVUkxTdHJpbmcsIGFsbG93T25seUFwcGxpY2F0aW9uUGx1Z2lucyksIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkZpbmRQbHVnaW46OlJlcGx5KHBsdWdpblByb2Nlc3NUb2tlbiwgbmV3TUlNRVR5
cGUsIHBsdWdpbkxvYWRQb2xpY3ksIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24sIGlzVW5zdXBw
b3J0ZWQpKSkKKyAgICBpZiAoIXNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmRQ
bHVnaW4ocGFyYW1ldGVycy5taW1lVHlwZSwgcGFyYW1ldGVycy51cmwuc3RyaW5nKCksIGZyYW1l
VVJMU3RyaW5nLCBwYWdlVVJMU3RyaW5nLCBhbGxvd09ubHlBcHBsaWNhdGlvblBsdWdpbnMpLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5kUGx1Z2luOjpSZXBseShwbHVnaW5Qcm9jZXNzVG9r
ZW4sIG5ld01JTUVUeXBlLCBwbHVnaW5Mb2FkUG9saWN5LCB1bmF2YWlsYWJpbGl0eURlc2NyaXB0
aW9uLCBpc1Vuc3VwcG9ydGVkKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUGx1
Z2luTW9kdWxlTG9hZFBvbGljeSBsb2FkUG9saWN5ID0gc3RhdGljX2Nhc3Q8UGx1Z2luTW9kdWxl
TG9hZFBvbGljeT4ocGx1Z2luTG9hZFBvbGljeSk7CkBAIC0xMTIwLDggKzExMDYsNyBAQCBSZWZQ
dHI8UGx1Z2luPiBXZWJQYWdlOjpjcmVhdGVQbHVnaW4oV2ViRnJhbWUqIGZyYW1lLCBIVE1MUGx1
Z0luRWxlbWVudCogcGx1Z2luRQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAg
ICBib29sIGlzUmVzdGFydGVkUHJvY2VzcyA9IChwbHVnaW5FbGVtZW50LT5kaXNwbGF5U3RhdGUo
KSA9PSBIVE1MUGx1Z0luRWxlbWVudDo6UmVzdGFydGluZyB8fCBwbHVnaW5FbGVtZW50LT5kaXNw
bGF5U3RhdGUoKSA9PSBIVE1MUGx1Z0luRWxlbWVudDo6UmVzdGFydGluZ1dpdGhQZW5kaW5nTW91
c2VDbGljayk7Ci0gICAgcmV0dXJuIFBsdWdpblByb3h5OjpjcmVhdGUocGx1Z2luUHJvY2Vzc1Rv
a2VuLCBpc1Jlc3RhcnRlZFByb2Nlc3MpOworICAgIHJldHVybiBQbHVnaW5Qcm94eTo6Y3JlYXRl
KHBsdWdpblByb2Nlc3NUb2tlbik7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCiAKQEAgLTE0ODMsMTAgKzE0NjgsNiBAQCB2b2lkIFdlYlBhZ2U6OmNsb3NlKCkKIAog
ICAgIG1fc2FuZGJveEV4dGVuc2lvblRyYWNrZXIuaW52YWxpZGF0ZSgpOwogCi0jaWYgRU5BQkxF
KFBSSU1BUllfU05BUFNIT1RURURfUExVR0lOX0hFVVJJU1RJQykKLSAgICBtX2RldGVybWluZVBy
aW1hcnlTbmFwc2hvdHRlZFBsdWdJblRpbWVyLnN0b3AoKTsKLSNlbmRpZgotCiAjaWYgRU5BQkxF
KFRFWFRfQVVUT1NJWklORykKICAgICBtX3RleHRBdXRvU2l6aW5nQWRqdXN0bWVudFRpbWVyLnN0
b3AoKTsKICNlbmRpZgpAQCAtNDY1MywxMCArNDYzNCw2IEBAIHZvaWQgV2ViUGFnZTo6YWRkUGx1
Z2luVmlldyhQbHVnaW5WaWV3KiBwbHVnaW5WaWV3KQogCiAgICAgbV9wbHVnaW5WaWV3cy5hZGQo
cGx1Z2luVmlldyk7CiAgICAgbV9oYXNTZWVuUGx1Z2luID0gdHJ1ZTsKLSNpZiBFTkFCTEUoUFJJ
TUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElDKQotICAgIExPRyhQbHVnaW5zLCAiUHJp
bWFyeSBQbHVnLUluIERldGVjdGlvbjogdHJpZ2dlcmluZyBkZXRlY3Rpb24gZnJvbSBhZGRQbHVn
aW5WaWV3KCVwKSIsIHBsdWdpblZpZXcpOwotICAgIG1fZGV0ZXJtaW5lUHJpbWFyeVNuYXBzaG90
dGVkUGx1Z0luVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJQ
YWdlOjpyZW1vdmVQbHVnaW5WaWV3KFBsdWdpblZpZXcqIHBsdWdpblZpZXcpCkBAIC00NjY0LDkg
KzQ2NDEsNiBAQCB2b2lkIFdlYlBhZ2U6OnJlbW92ZVBsdWdpblZpZXcoUGx1Z2luVmlldyogcGx1
Z2luVmlldykKICAgICBBU1NFUlQobV9wbHVnaW5WaWV3cy5jb250YWlucyhwbHVnaW5WaWV3KSk7
CiAKICAgICBtX3BsdWdpblZpZXdzLnJlbW92ZShwbHVnaW5WaWV3KTsKLSNpZiBFTkFCTEUoUFJJ
TUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElDKQotICAgIExPRyhQbHVnaW5zLCAiUHJp
bWFyeSBQbHVnLUluIERldGVjdGlvbjogcmVtb3ZlUGx1Z2luVmlldyglcCkiLCBwbHVnaW5WaWV3
KTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYlBhZ2U6OnNlbmRTZXRXaW5kb3dGcmFtZShjb25zdCBG
bG9hdFJlY3QmIHdpbmRvd0ZyYW1lKQpAQCAtNTQzNSw3ICs1NDA5LDcgQEAgYm9vbCBXZWJQYWdl
OjpjYW5QbHVnaW5IYW5kbGVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKICAgICBTdHJpbmcgbmV3TUlNRVR5cGU7CiAgICAgU3RyaW5nIHVuYXZhaWxhYmlsaXR5RGVz
Y3JpcHRpb247CiAgICAgYm9vbCBpc1Vuc3VwcG9ydGVkID0gZmFsc2U7Ci0gICAgaWYgKCFzZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5kUGx1Z2luKHJlc3BvbnNlLm1pbWVUeXBl
KCksIFBsdWdpblByb2Nlc3NUeXBlOjpOb3JtYWwsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBy
ZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIGFsbG93T25s
eUFwcGxpY2F0aW9uUGx1Z2lucyksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmRQbHVnaW46
OlJlcGx5KHBsdWdpblByb2Nlc3NUb2tlbiwgbmV3TUlNRVR5cGUsIHBsdWdpbkxvYWRQb2xpY3ks
IHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24sIGlzVW5zdXBwb3J0ZWQpKSkKKyAgICBpZiAoIXNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmRQbHVnaW4ocmVzcG9uc2UubWltZVR5
cGUoKSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBy
ZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgYWxsb3dPbmx5QXBwbGljYXRpb25QbHVnaW5zKSwgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RmluZFBsdWdpbjo6UmVwbHkocGx1Z2luUHJvY2Vzc1Rva2Vu
LCBuZXdNSU1FVHlwZSwgcGx1Z2luTG9hZFBvbGljeSwgdW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlv
biwgaXNVbnN1cHBvcnRlZCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBBU1NFUlQo
IWlzVW5zdXBwb3J0ZWQpOwpAQCAtNjEwOCwxMCArNjA4Miw2IEBAIHZvaWQgV2ViUGFnZTo6ZGlk
Q29tbWl0TG9hZChXZWJGcmFtZSogZnJhbWUpCiAgICAgbV90ZXh0QXV0b1NpemluZ0FkanVzdG1l
bnRUaW1lci5zdG9wKCk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShQUklNQVJZX1NOQVBTSE9UVEVE
X1BMVUdJTl9IRVVSSVNUSUMpCi0gICAgcmVzZXRQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW4oKTsK
LSNlbmRpZgotCiAjaWYgVVNFKE9TX1NUQVRFKQogICAgIG1fbG9hZENvbW1pdFRpbWUgPSBXYWxs
VGltZTo6bm93KCk7CiAjZW5kaWYKQEAgLTYxNDAsMTIgKzYxMTAsNiBAQCB2b2lkIFdlYlBhZ2U6
OmRpZEZpbmlzaExvYWQoV2ViRnJhbWUmIGZyYW1lKQogCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuc2VuZFByZXdhcm1JbmZvcm1hdGlvbihmcmFtZS51cmwoKSk7CiAKLSNpZiBFTkFCTEUo
UFJJTUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElDKQotICAgIG1fcmVhZHlUb0ZpbmRQ
cmltYXJ5U25hcHNob3R0ZWRQbHVnaW4gPSB0cnVlOwotICAgIExPRyhQbHVnaW5zLCAiUHJpbWFy
eSBQbHVnLUluIERldGVjdGlvbjogdHJpZ2dlcmluZyBkZXRlY3Rpb24gZnJvbSBkaWRGaW5pc2hM
b2FkIChtYXJraW5nIGFzIHJlYWR5IHRvIGRldGVjdCkuIik7Ci0gICAgbV9kZXRlcm1pbmVQcmlt
YXJ5U25hcHNob3R0ZWRQbHVnSW5UaW1lci5zdGFydE9uZVNob3QoMF9zKTsKLSNlbmRpZgotCiAj
aWYgRU5BQkxFKFZJRVdQT1JUX1JFU0laSU5HKQogICAgIHNocmlua1RvRml0Q29udGVudChab29t
VG9Jbml0aWFsU2NhbGU6Olllcyk7CiAjZW5kaWYKQEAgLTYxOTMsMTk3ICs2MTU3LDYgQEAgdm9p
ZCBXZWJQYWdlOjp0ZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2VzV2hlbldhaXRpbmdGb3JT
eW5jUmVwbHkoTWVzc2FnZXM6OlcKICAgICByZXBseSh0cnVlKTsKIH0KIAotI2lmIEVOQUJMRShQ
UklNQVJZX1NOQVBTSE9UVEVEX1BMVUdJTl9IRVVSSVNUSUMpCi1zdGF0aWMgY29uc3QgaW50IHBy
aW1hcnlTbmFwc2hvdHRlZFBsdWdJblNlYXJjaExpbWl0ID0gMzAwMDsKLXN0YXRpYyBjb25zdCBm
bG9hdCBwcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5TZWFyY2hCdWNrZXRTaXplID0gMS4xOwotc3Rh
dGljIGNvbnN0IGludCBwcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5NaW5pbXVtV2lkdGggPSA0MDA7
Ci1zdGF0aWMgY29uc3QgaW50IHByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbk1pbmltdW1IZWlnaHQg
PSAzMDA7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4UHJpbWFyeVNuYXBzaG90dGVkUGx1Z0lu
RGV0ZWN0aW9uQXR0ZW1wdHMgPSAyOwotc3RhdGljIGNvbnN0IFNlY29uZHMgZGVmZXJyZWRQcmlt
YXJ5U25hcHNob3R0ZWRQbHVnSW5EZXRlY3Rpb25EZWxheSA9IDNfczsKLXN0YXRpYyBjb25zdCBm
bG9hdCBvdmVybGFwcGluZ0ltYWdlQm91bmRzU2NhbGUgPSAxLjE7Ci1zdGF0aWMgY29uc3QgZmxv
YXQgbWluaW11bU92ZXJsYXBwaW5nSW1hZ2VUb1BsdWdpbkRpbWVuc2lvblNjYWxlID0gLjk7Ci0K
LSNpZiBFTkFCTEUoUFJJTUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElDKQotdm9pZCBX
ZWJQYWdlOjpkZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5UaW1lckZpcmVkKCkKLXsK
LSAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIFNldHRpbmdzJiBz
ZXR0aW5ncyA9IG1fcGFnZS0+c2V0dGluZ3MoKTsKLSAgICBpZiAoIXNldHRpbmdzLnNuYXBzaG90
QWxsUGx1Z0lucygpICYmIHNldHRpbmdzLnByaW1hcnlQbHVnSW5TbmFwc2hvdERldGVjdGlvbkVu
YWJsZWQoKSkKLSAgICAgICAgZGV0ZXJtaW5lUHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luKCk7Ci19
Ci0jZW5kaWYKLQotdm9pZCBXZWJQYWdlOjpkZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVn
SW4oKQotewotICAgIGlmICghbV9wYWdlLT5zZXR0aW5ncygpLnBsdWdJblNuYXBzaG90dGluZ0Vu
YWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTE9HKFBsdWdpbnMsICJQcmltYXJ5IFBs
dWctSW4gRGV0ZWN0aW9uOiBiZWdhbi4iKTsKLQotICAgIGlmICghbV9yZWFkeVRvRmluZFByaW1h
cnlTbmFwc2hvdHRlZFBsdWdpbikgewotICAgICAgICBMT0coUGx1Z2lucywgIlByaW1hcnkgUGx1
Zy1JbiBEZXRlY3Rpb246IGV4aXRpbmcgLSBub3QgcmVhZHkgdG8gZmluZCBwbHVnaW5zLiIpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFtX2hhc1NlZW5QbHVnaW4pIHsKLSAg
ICAgICAgTE9HKFBsdWdpbnMsICJQcmltYXJ5IFBsdWctSW4gRGV0ZWN0aW9uOiBleGl0aW5nIC0g
d2UgbmV2ZXIgc2F3IGEgcGx1Zy1pbiBnZXQgYWRkZWQgdG8gdGhlIHBhZ2UuIik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobV9kaWRGaW5kUHJpbWFyeVNuYXBzaG90dGVkUGx1
Z2luKSB7Ci0gICAgICAgIExPRyhQbHVnaW5zLCAiUHJpbWFyeSBQbHVnLUluIERldGVjdGlvbjog
ZXhpdGluZyAtIHdlJ3ZlIGFscmVhZHkgZm91bmQgYSBwcmltYXJ5IHBsdWctaW4uIik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICArK21fbnVtYmVyT2ZQcmltYXJ5U25hcHNob3REZXRl
Y3Rpb25BdHRlbXB0czsKLQotICAgIGxheW91dElmTmVlZGVkKCk7Ci0KLSAgICBSZWZQdHI8RnJh
bWVWaWV3PiBtYWluRnJhbWVWaWV3ID0gY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpOwot
ICAgIGlmICghbWFpbkZyYW1lVmlldykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgSW50UmVjdCBz
ZWFyY2hSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBjb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52
aWV3KCktPmNvbnRlbnRzU2l6ZSgpKTsKLSAgICBzZWFyY2hSZWN0LmludGVyc2VjdChJbnRSZWN0
KEludFBvaW50KCksIEludFNpemUocHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luU2VhcmNoTGltaXQs
IHByaW1hcnlTbmFwc2hvdHRlZFBsdWdJblNlYXJjaExpbWl0KSkpOwotCi0gICAgSGl0VGVzdFJl
cXVlc3QgcmVxdWVzdCh7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6
OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQsIEhpdFRlc3RS
ZXF1ZXN0OjpJZ25vcmVDbGlwcGluZywgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50
U2hhZG93Q29udGVudCB9KTsKLQotICAgIFJlZlB0cjxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PiBj
YW5kaWRhdGVQbHVnSW47Ci0gICAgdW5zaWduZWQgY2FuZGlkYXRlUGx1Z0luQXJlYSA9IDA7Ci0K
LSAgICBmb3IgKFJlZlB0cjxGcmFtZT4gZnJhbWUgPSAmY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCk7
IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0UmVuZGVyZWQoKSkgewot
ICAgICAgICBpZiAoIWZyYW1lLT5sb2FkZXIoKS5zdWJmcmFtZUxvYWRlcigpLmNvbnRhaW5zUGx1
Z2lucygpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghZnJhbWUtPmRvY3Vt
ZW50KCkgfHwgIWZyYW1lLT52aWV3KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAg
ICBWZWN0b3I8UmVmPEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+PiBub25QbGF5aW5nUGx1Z0luSW1h
Z2VFbGVtZW50czsKLSAgICAgICAgZm9yIChhdXRvJiBwbHVnSW5JbWFnZUVsZW1lbnQgOiBkZXNj
ZW5kYW50c09mVHlwZTxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PigqZnJhbWUtPmRvY3VtZW50KCkp
KSB7Ci0gICAgICAgICAgICBpZiAocGx1Z0luSW1hZ2VFbGVtZW50LmRpc3BsYXlTdGF0ZSgpID09
IEhUTUxQbHVnSW5FbGVtZW50OjpQbGF5aW5nKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgbm9uUGxheWluZ1BsdWdJbkltYWdlRWxlbWVudHMuYXBwZW5kKHBsdWdJbklt
YWdlRWxlbWVudCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKGF1dG8mIHBsdWdJbkltYWdl
RWxlbWVudCA6IG5vblBsYXlpbmdQbHVnSW5JbWFnZUVsZW1lbnRzKSB7Ci0gICAgICAgICAgICBh
dXRvIHBsdWdpblJlbmRlcmVyID0gcGx1Z0luSW1hZ2VFbGVtZW50LT5yZW5kZXJlcigpOwotICAg
ICAgICAgICAgaWYgKCFwbHVnaW5SZW5kZXJlciB8fCAhcGx1Z2luUmVuZGVyZXItPmlzQm94KCkp
Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBhdXRvJiBwbHVnaW5SZW5k
ZXJCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KCpwbHVnaW5SZW5kZXJlcik7Ci0gICAgICAgICAg
ICBpZiAoIXBsdWdJbkludGVyc2VjdHNTZWFyY2hSZWN0KHBsdWdJbkltYWdlRWxlbWVudC5nZXQo
KSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIEludFJlY3QgcGx1
Z0luUmVjdFJlbGF0aXZlVG9WaWV3ID0gcGx1Z0luSW1hZ2VFbGVtZW50LT5jbGllbnRSZWN0KCk7
Ci0gICAgICAgICAgICBTY3JvbGxQb3NpdGlvbiBzY3JvbGxQb3NpdGlvbiA9IG1haW5GcmFtZVZp
ZXctPmRvY3VtZW50U2Nyb2xsUG9zaXRpb25SZWxhdGl2ZVRvVmlld09yaWdpbigpOwotICAgICAg
ICAgICAgSW50UmVjdCBwbHVnSW5SZWN0UmVsYXRpdmVUb1RvcERvY3VtZW50KHBsdWdJblJlY3RS
ZWxhdGl2ZVRvVmlldy5sb2NhdGlvbigpICsgc2Nyb2xsUG9zaXRpb24sIHBsdWdJblJlY3RSZWxh
dGl2ZVRvVmlldy5zaXplKCkpOwotICAgICAgICAgICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVz
dWx0KHBsdWdJblJlY3RSZWxhdGl2ZVRvVG9wRG9jdW1lbnQuY2VudGVyKCkpOwotCi0gICAgICAg
ICAgICBpZiAoIW1haW5GcmFtZSgpIHx8ICFtYWluRnJhbWUoKS0+ZG9jdW1lbnQoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+
aGl0VGVzdChyZXF1ZXN0LCBoaXRUZXN0UmVzdWx0KTsKLQotICAgICAgICAgICAgUmVmUHRyPEVs
ZW1lbnQ+IGVsZW1lbnQgPSBoaXRUZXN0UmVzdWx0LnRhcmdldEVsZW1lbnQoKTsKLSAgICAgICAg
ICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAg
ICAgSW50UmVjdCBlbGVtZW50UmVjdFJlbGF0aXZlVG9WaWV3ID0gZWxlbWVudC0+Y2xpZW50UmVj
dCgpOwotICAgICAgICAgICAgSW50UmVjdCBlbGVtZW50UmVjdFJlbGF0aXZlVG9Ub3BEb2N1bWVu
dChlbGVtZW50UmVjdFJlbGF0aXZlVG9WaWV3LmxvY2F0aW9uKCkgKyBzY3JvbGxQb3NpdGlvbiwg
ZWxlbWVudFJlY3RSZWxhdGl2ZVRvVmlldy5zaXplKCkpOwotICAgICAgICAgICAgTGF5b3V0UmVj
dCBpbmZsYXRlZFBsdWdpblJlY3QgPSBwbHVnSW5SZWN0UmVsYXRpdmVUb1RvcERvY3VtZW50Owot
ICAgICAgICAgICAgTGF5b3V0VW5pdCB4T2Zmc2V0IHsgKGluZmxhdGVkUGx1Z2luUmVjdC53aWR0
aCgpICogb3ZlcmxhcHBpbmdJbWFnZUJvdW5kc1NjYWxlIC0gaW5mbGF0ZWRQbHVnaW5SZWN0Lndp
ZHRoKCkpIC8gMiB9OwotICAgICAgICAgICAgTGF5b3V0VW5pdCB5T2Zmc2V0IHsgKGluZmxhdGVk
UGx1Z2luUmVjdC5oZWlnaHQoKSAqIG92ZXJsYXBwaW5nSW1hZ2VCb3VuZHNTY2FsZSAtIGluZmxh
dGVkUGx1Z2luUmVjdC5oZWlnaHQoKSkgLyAyIH07Ci0gICAgICAgICAgICBpbmZsYXRlZFBsdWdp
blJlY3QuaW5mbGF0ZVgoeE9mZnNldCk7Ci0gICAgICAgICAgICBpbmZsYXRlZFBsdWdpblJlY3Qu
aW5mbGF0ZVkoeU9mZnNldCk7Ci0KLSAgICAgICAgICAgIGlmIChlbGVtZW50ICE9IHBsdWdJbklt
YWdlRWxlbWVudC5wdHIoKSkgewotICAgICAgICAgICAgICAgIGlmICghKGlzPEhUTUxJbWFnZUVs
ZW1lbnQ+KCplbGVtZW50KQotICAgICAgICAgICAgICAgICAgICAmJiBpbmZsYXRlZFBsdWdpblJl
Y3QuY29udGFpbnMoZWxlbWVudFJlY3RSZWxhdGl2ZVRvVG9wRG9jdW1lbnQpCi0gICAgICAgICAg
ICAgICAgICAgICYmIGVsZW1lbnRSZWN0UmVsYXRpdmVUb1RvcERvY3VtZW50LndpZHRoKCkgPiBw
bHVnaW5SZW5kZXJCb3gud2lkdGgoKSAqIG1pbmltdW1PdmVybGFwcGluZ0ltYWdlVG9QbHVnaW5E
aW1lbnNpb25TY2FsZQotICAgICAgICAgICAgICAgICAgICAmJiBlbGVtZW50UmVjdFJlbGF0aXZl
VG9Ub3BEb2N1bWVudC5oZWlnaHQoKSA+IHBsdWdpblJlbmRlckJveC5oZWlnaHQoKSAqIG1pbmlt
dW1PdmVybGFwcGluZ0ltYWdlVG9QbHVnaW5EaW1lbnNpb25TY2FsZSkpCi0gICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIExPRyhQbHVnaW5zLCAiUHJpbWFyeSBQ
bHVnLUluIERldGVjdGlvbjogUGx1Zy1pbiBpcyBoaWRkZW4gYnkgYW4gaW1hZ2UgdGhhdCBpcyBy
b3VnaGx5IGFsaWduZWQgd2l0aCBpdCwgYXV0b3BsYXlpbmcgcmVnYXJkbGVzcyBvZiB3aGV0aGVy
IG9yIG5vdCBpdCdzIGFjdHVhbGx5IHRoZSBwcmltYXJ5IHBsdWctaW4uIik7Ci0gICAgICAgICAg
ICAgICAgcGx1Z0luSW1hZ2VFbGVtZW50LT5yZXN0YXJ0U25hcHNob3R0ZWRQbHVnSW4oKTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHBsdWdJbklzUHJpbWFyeVNpemUocGx1Z0lu
SW1hZ2VFbGVtZW50LCBjYW5kaWRhdGVQbHVnSW5BcmVhKSkKLSAgICAgICAgICAgICAgICBjYW5k
aWRhdGVQbHVnSW4gPSBXVEZNb3ZlKHBsdWdJbkltYWdlRWxlbWVudCk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgaWYgKCFjYW5kaWRhdGVQbHVnSW4pIHsKLSAgICAgICAgTE9HKFBsdWdpbnMsICJQ
cmltYXJ5IFBsdWctSW4gRGV0ZWN0aW9uOiBmYWlsIC0gZGlkIG5vdCBmaW5kIGEgY2FuZGlkYXRl
IHBsdWctaW4uIik7Ci0gICAgICAgIGlmIChtX251bWJlck9mUHJpbWFyeVNuYXBzaG90RGV0ZWN0
aW9uQXR0ZW1wdHMgPCBtYXhQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5EZXRlY3Rpb25BdHRlbXB0
cykgewotICAgICAgICAgICAgTE9HKFBsdWdpbnMsICJQcmltYXJ5IFBsdWctSW4gRGV0ZWN0aW9u
OiB3aWxsIGF0dGVtcHQgYWdhaW4gaW4gJS4xZiBzLiIsIGRlZmVycmVkUHJpbWFyeVNuYXBzaG90
dGVkUGx1Z0luRGV0ZWN0aW9uRGVsYXkudmFsdWUoKSk7Ci0gICAgICAgICAgICBtX2RldGVybWlu
ZVByaW1hcnlTbmFwc2hvdHRlZFBsdWdJblRpbWVyLnN0YXJ0T25lU2hvdChkZWZlcnJlZFByaW1h
cnlTbmFwc2hvdHRlZFBsdWdJbkRldGVjdGlvbkRlbGF5KTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgTE9HKFBsdWdpbnMsICJQcmltYXJ5IFBsdWctSW4gRGV0ZWN0
aW9uOiBzdWNjZXNzIC0gZm91bmQgYSBjYW5kaWRhdGUgcGx1Zy1pbiAtIGluZm9ybSBpdC4iKTsK
LSAgICBtX2RpZEZpbmRQcmltYXJ5U25hcHNob3R0ZWRQbHVnaW4gPSB0cnVlOwotICAgIG1fcHJp
bWFyeVBsdWdJblBhZ2VPcmlnaW4gPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmJh
c2VVUkwoKS5ob3N0KCkudG9TdHJpbmcoKTsKLSAgICBtX3ByaW1hcnlQbHVnSW5PcmlnaW4gPSBj
YW5kaWRhdGVQbHVnSW4tPmxvYWRlZFVybCgpLmhvc3QoKS50b1N0cmluZygpOwotICAgIG1fcHJp
bWFyeVBsdWdJbk1pbWVUeXBlID0gY2FuZGlkYXRlUGx1Z0luLT5zZXJ2aWNlVHlwZSgpOwotCi0g
ICAgY2FuZGlkYXRlUGx1Z0luLT5zZXRJc1ByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbih0cnVlKTsK
LX0KLQotdm9pZCBXZWJQYWdlOjpyZXNldFByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbigpCi17Ci0g
ICAgbV9yZWFkeVRvRmluZFByaW1hcnlTbmFwc2hvdHRlZFBsdWdpbiA9IGZhbHNlOwotICAgIG1f
ZGlkRmluZFByaW1hcnlTbmFwc2hvdHRlZFBsdWdpbiA9IGZhbHNlOwotICAgIG1fbnVtYmVyT2ZQ
cmltYXJ5U25hcHNob3REZXRlY3Rpb25BdHRlbXB0cyA9IDA7Ci0gICAgbV9oYXNTZWVuUGx1Z2lu
ID0gZmFsc2U7Ci19Ci0KLWJvb2wgV2ViUGFnZTo6bWF0Y2hlc1ByaW1hcnlQbHVnSW4oY29uc3Qg
U3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkgY29uc3QKLXsKLSAgICBpZiAoIW1fZGlkRmluZFByaW1hcnlTbmFwc2hv
dHRlZFBsdWdpbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIChwYWdlT3Jp
Z2luID09IG1fcHJpbWFyeVBsdWdJblBhZ2VPcmlnaW4gJiYgcGx1Z2luT3JpZ2luID09IG1fcHJp
bWFyeVBsdWdJbk9yaWdpbiAmJiBtaW1lVHlwZSA9PSBtX3ByaW1hcnlQbHVnSW5NaW1lVHlwZSk7
Ci19Ci0KLWJvb2wgV2ViUGFnZTo6cGx1Z0luSW50ZXJzZWN0c1NlYXJjaFJlY3QoSFRNTFBsdWdJ
bkltYWdlRWxlbWVudCYgcGx1Z0luSW1hZ2VFbGVtZW50KQotewotICAgIGF1dG8mIG1haW5GcmFt
ZSA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpOwotICAgIGlmICghbWFpbkZyYW1lLnZpZXcoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghbWFpbkZyYW1lLnZpZXcoKS0+cmVuZGVy
VmlldygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBJbnRSZWN0IHNlYXJjaFJlY3Qg
PSBJbnRSZWN0KEludFBvaW50KCksIGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+Y29u
dGVudHNTaXplKCkpOwotICAgIHNlYXJjaFJlY3QuaW50ZXJzZWN0KEludFJlY3QoSW50UG9pbnQo
KSwgSW50U2l6ZShwcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5TZWFyY2hMaW1pdCwgcHJpbWFyeVNu
YXBzaG90dGVkUGx1Z0luU2VhcmNoTGltaXQpKSk7Ci0KLSAgICBJbnRSZWN0IHBsdWdJblJlY3RS
ZWxhdGl2ZVRvVmlldyA9IHBsdWdJbkltYWdlRWxlbWVudC5jbGllbnRSZWN0KCk7Ci0gICAgaWYg
KHBsdWdJblJlY3RSZWxhdGl2ZVRvVmlldy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBTY3JvbGxQb3NpdGlvbiBzY3JvbGxQb3NpdGlvbiA9IG1haW5GcmFtZS52aWV3KCkt
PmRvY3VtZW50U2Nyb2xsUG9zaXRpb25SZWxhdGl2ZVRvVmlld09yaWdpbigpOwotICAgIEludFJl
Y3QgcGx1Z0luUmVjdFJlbGF0aXZlVG9Ub3BEb2N1bWVudChwbHVnSW5SZWN0UmVsYXRpdmVUb1Zp
ZXcubG9jYXRpb24oKSArIHRvSW50U2l6ZShzY3JvbGxQb3NpdGlvbiksIHBsdWdJblJlY3RSZWxh
dGl2ZVRvVmlldy5zaXplKCkpOwotCi0gICAgcmV0dXJuIHBsdWdJblJlY3RSZWxhdGl2ZVRvVG9w
RG9jdW1lbnQuaW50ZXJzZWN0cyhzZWFyY2hSZWN0KTsKLX0KLQotYm9vbCBXZWJQYWdlOjpwbHVn
SW5Jc1ByaW1hcnlTaXplKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBsdWdJbklt
YWdlRWxlbWVudCwgdW5zaWduZWQmIGNhbmRpZGF0ZVBsdWdJbkFyZWEpCi17Ci0gICAgYXV0byog
cmVuZGVyZXIgPSBwbHVnSW5JbWFnZUVsZW1lbnQucmVuZGVyZXIoKTsKLSAgICBpZiAoIWlzPFJl
bmRlckJveD4ocmVuZGVyZXIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvJiBi
b3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KCpyZW5kZXJlcik7Ci0gICAgaWYgKGJveC5jb250ZW50
V2lkdGgoKSA8IHByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbk1pbmltdW1XaWR0aCB8fCBib3guY29u
dGVudEhlaWdodCgpIDwgcHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luTWluaW11bUhlaWdodCkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgTGF5b3V0VW5pdCBjb250ZW50QXJlYSA9IGJveC5j
b250ZW50V2lkdGgoKSAqIGJveC5jb250ZW50SGVpZ2h0KCk7Ci0gICAgaWYgKGNvbnRlbnRBcmVh
ID4gY2FuZGlkYXRlUGx1Z0luQXJlYSAqIHByaW1hcnlTbmFwc2hvdHRlZFBsdWdJblNlYXJjaEJ1
Y2tldFNpemUpIHsKLSAgICAgICAgY2FuZGlkYXRlUGx1Z0luQXJlYSA9IGNvbnRlbnRBcmVhLnRv
VW5zaWduZWQoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFBSSU1BUllfU05BUFNIT1RURURfUExVR0lOX0hF
VVJJU1RJQykKLQogT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IFdlYlBhZ2U6OmN1cnJlbnRTZWxlY3Rp
b25Bc1JhbmdlKCkKIHsKICAgICBhdXRvKiBmcmFtZSA9IGZyYW1lV2l0aFNlbGVjdGlvbihtX3Bh
Z2UuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmlu
ZGV4IDI2M2ZmN2U1NGRmNmE4MzQwOTljOWEzMDBmYmQ3ZjU1NDhkOGRiMjQuLjZkOTExNTkwOWM0
ZWY3NzBmMzNkNWZmZTI4NDBkZWFmOTE0YWY2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE4MCw3ICsxODAsNiBAQCBjbGFzcyBIVE1MSW1hZ2VF
bGVtZW50OwogY2xhc3MgSFRNTE1lbnVFbGVtZW50OwogY2xhc3MgSFRNTE1lbnVJdGVtRWxlbWVu
dDsKIGNsYXNzIEhUTUxQbHVnSW5FbGVtZW50OwotY2xhc3MgSFRNTFBsdWdJbkltYWdlRWxlbWVu
dDsKIGNsYXNzIEludFBvaW50OwogY2xhc3MgS2V5Ym9hcmRFdmVudDsKIGNsYXNzIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0OwpAQCAtMTExOCwxNSArMTExNyw2IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpZEZpbmlzaENoZWNraW5nVGV4dCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+Jik7CiAgICAgdm9pZCBkaWRDYW5jZWxDaGVj
a2luZ1RleHQodWludDY0X3QgcmVxdWVzdElEKTsKIAotI2lmIEVOQUJMRShQUklNQVJZX1NOQVBT
SE9UVEVEX1BMVUdJTl9IRVVSSVNUSUMpCi0gICAgdm9pZCBkZXRlcm1pbmVQcmltYXJ5U25hcHNo
b3R0ZWRQbHVnSW4oKTsKLSAgICB2b2lkIGRldGVybWluZVByaW1hcnlTbmFwc2hvdHRlZFBsdWdJ
blRpbWVyRmlyZWQoKTsKLSAgICB2b2lkIHJlc2V0UHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luKCk7
Ci0gICAgYm9vbCBtYXRjaGVzUHJpbWFyeVBsdWdJbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4s
IGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25z
dDsKLSAgICBib29sIHBsdWdJbkludGVyc2VjdHNTZWFyY2hSZWN0KFdlYkNvcmU6OkhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQmIHBsdWdpbkltYWdlRWxlbWVudCk7Ci0gICAgYm9vbCBwbHVnSW5Jc1By
aW1hcnlTaXplKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBsdWdpbkltYWdlRWxl
bWVudCwgdW5zaWduZWQgJnBsdWdpbkFyZWEpOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoREFUQV9E
RVRFQ1RJT04pCiAgICAgdm9pZCBzZXREYXRhRGV0ZWN0aW9uUmVzdWx0cyhOU0FycmF5ICopOwog
ICAgIHZvaWQgZGV0ZWN0RGF0YUluQWxsRnJhbWVzKHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IERhdGFEZXRlY3Rpb25SZXN1bHQmKT4mJik7CkBAIC0xODM1LDE1ICsxODI1
LDYgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgYm9vbCBt
X25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IGZhbHNlIH07CiAjZW5kaWYKLSNpZiBF
TkFCTEUoUFJJTUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElDKQotICAgIGJvb2wgbV9y
ZWFkeVRvRmluZFByaW1hcnlTbmFwc2hvdHRlZFBsdWdpbiB7IGZhbHNlIH07Ci0gICAgYm9vbCBt
X2RpZEZpbmRQcmltYXJ5U25hcHNob3R0ZWRQbHVnaW4geyBmYWxzZSB9OwotICAgIHVuc2lnbmVk
IG1fbnVtYmVyT2ZQcmltYXJ5U25hcHNob3REZXRlY3Rpb25BdHRlbXB0cyB7IDAgfTsKLSAgICBT
dHJpbmcgbV9wcmltYXJ5UGx1Z0luUGFnZU9yaWdpbjsKLSAgICBTdHJpbmcgbV9wcmltYXJ5UGx1
Z0luT3JpZ2luOwotICAgIFN0cmluZyBtX3ByaW1hcnlQbHVnSW5NaW1lVHlwZTsKLSAgICBSdW5M
b29wOjpUaW1lcjxXZWJQYWdlPiBtX2RldGVybWluZVByaW1hcnlTbmFwc2hvdHRlZFBsdWdJblRp
bWVyOwotI2VuZGlmCiAKICAgICAvLyBUaGUgbGF5ZXIgaG9zdGluZyBtb2RlLgogICAgIExheWVy
SG9zdGluZ01vZGUgbV9sYXllckhvc3RpbmdNb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCmluZGV4IGI3NmYxMTk1Y2VlNjk2Yjc1ODFiMTY1NjNiZTMzNTI2ZmFjOWRh
MWMuLjA2YTI5ZDczNTg3MjExMDM3NDJiNWViZjgxNWM2OWU5MTg2NWRjYWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ1Nyw5ICs0NTcsNiBAQCB2b2lkIFdl
YlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQogCiAgICAgc2V0VGVybWluYXRpb25UaW1lb3V0KHBhcmFtZXRlcnMu
dGVybWluYXRpb25UaW1lb3V0KTsKIAotICAgIGZvciAoYXV0byYgb3JpZ2luIDogcGFyYW1ldGVy
cy5wbHVnSW5BdXRvU3RhcnRPcmlnaW5zKQotICAgICAgICBtX3BsdWdJbkF1dG9TdGFydE9yaWdp
bnMuYWRkKG9yaWdpbik7Ci0KICAgICBzZXRNZW1vcnlDYWNoZURpc2FibGVkKHBhcmFtZXRlcnMu
bWVtb3J5Q2FjaGVEaXNhYmxlZCk7CiAKICAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldEF0dHJTdHlsZUVuYWJsZWQocGFyYW1ldGVycy5hdHRy
U3R5bGVFbmFibGVkKTsKQEAgLTQ3OCwxMCArNDc1LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0
aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cykKICAgICB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSAmJiBQ
TEFURk9STShNQUMpCi0gICAgcmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMocGFyYW1ldGVy
cy5wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMpOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoR0FNRVBB
RCkKICAgICBHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNldFNoYXJlZFByb3ZpZGVyKFdl
YkdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkpOwogI2VuZGlmCkBAIC01MzIsOCArNTI1LDYg
QEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQcm9j
ZXNzRGF0YVN0b3JlUGFyYW1ldGVycyYmIHAKICAgICAKICNlbmRpZgogCi0gICAgcmVzZXRQbHVn
SW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoV1RGTW92ZShwYXJhbWV0ZXJzLnBsdWdJbkF1dG9TdGFy
dE9yaWdpbkhhc2hlcykpOwotCiAgICAgZm9yIChhdXRvJiBzdXBwbGVtZW50IDogbV9zdXBwbGVt
ZW50cy52YWx1ZXMoKSkKICAgICAgICAgc3VwcGxlbWVudC0+c2V0V2Vic2l0ZURhdGFTdG9yZShw
YXJhbWV0ZXJzKTsKIApAQCAtODk0LDE0MyArODg1LDExIEBAIHZvaWQgV2ViUHJvY2Vzczo6dXNl
ckdlc3R1cmVUb2tlbkRlc3Ryb3llZChVc2VyR2VzdHVyZVRva2VuJiB0b2tlbikKICAgICBwYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkRp
ZERlc3Ryb3lVc2VyR2VzdHVyZVRva2VuKGlkZW50aWZpZXIpLCAwKTsKIH0KIAotc3RhdGljIGlu
bGluZSB2b2lkIGFkZENhc2VGb2xkZWRDaGFyYWN0ZXJzKFN0cmluZ0hhc2hlciYgaGFzaGVyLCBj
b25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpIHsKLSAgICAgICAgaGFzaGVyLmFk
ZENoYXJhY3RlcnM8TENoYXIsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaDo6Rm9sZENhc2U8TENo
YXI+PihzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyczxVQ2hhciwgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoOjpGb2xkQ2FzZTxVQ2hhcj4+KHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3Ry
aW5nLmxlbmd0aCgpKTsKLX0KLQotc3RhdGljIHVuc2lnbmVkIGhhc2hGb3JQbHVnSW5PcmlnaW4o
Y29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKLXsKLSAgICAvLyBXZSB3YW50IHRvIGF2b2lkIGNvbmNhdGVu
YXRpbmcgdGhlIHN0cmluZ3MgYW5kIHRoZW4gdGFraW5nIHRoZSBoYXNoLCBzaW5jZSB0aGF0IGNv
dWxkIGxlYWQgdG8gYW4gZXhwZW5zaXZlIGNvbnZlcnNpb24uCi0gICAgLy8gV2UgYWxzbyB3YW50
IHRvIGF2b2lkIHVzaW5nIHRoZSBoYXNoKCkgZnVuY3Rpb24gaW4gU3RyaW5nSW1wbCBvciBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2ggYmVjYXVzZSB0aGF0IG1hc2tzIG91dCBiaXRzIGZvciB0aGUg
dXNlIG9mIGZsYWdzLgotICAgIFN0cmluZ0hhc2hlciBoYXNoZXI7Ci0gICAgYWRkQ2FzZUZvbGRl
ZENoYXJhY3RlcnMoaGFzaGVyLCBwYWdlT3JpZ2luKTsKLSAgICBoYXNoZXIuYWRkQ2hhcmFjdGVy
KDApOwotICAgIGFkZENhc2VGb2xkZWRDaGFyYWN0ZXJzKGhhc2hlciwgcGx1Z2luT3JpZ2luKTsK
LSAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyKDApOwotICAgIGFkZENhc2VGb2xkZWRDaGFyYWN0ZXJz
KGhhc2hlciwgbWltZVR5cGUpOwotICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOwotfQotCi1ib29s
IFdlYlByb2Nlc3M6OmlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCh1bnNpZ25lZCBwbHVnSW5P
cmlnaW5IYXNoKQotewotICAgIGF1dG8gaXQgPSBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hl
cy5maW5kKHBsdWdJbk9yaWdpbkhhc2gpOwotICAgIGlmIChpdCA9PSBtX3BsdWdJbkF1dG9TdGFy
dE9yaWdpbkhhc2hlcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJu
IFdhbGxUaW1lOjpub3coKSA8IGl0LT52YWx1ZTsKLX0KLQotYm9vbCBXZWJQcm9jZXNzOjpzaG91
bGRQbHVnSW5BdXRvU3RhcnRGcm9tT3JpZ2luKFdlYlBhZ2UmIHdlYlBhZ2UsIGNvbnN0IFN0cmlu
ZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCi17Ci0gICAgaWYgKCFwbHVnaW5PcmlnaW4uaXNFbXB0eSgpICYmIG1fcGx1Z0lu
QXV0b1N0YXJ0T3JpZ2lucy5jb250YWlucyhwbHVnaW5PcmlnaW4pKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotI2lmIEVOQUJMRShQUklNQVJZX1NOQVBTSE9UVEVEX1BMVUdJTl9IRVVSSVNUSUMp
Ci0gICAgLy8gVGhlIHBsdWdpbiB3YXNuJ3QgaW4gdGhlIGdlbmVyYWwgbGlzdCwgc28gY2hlY2sg
aWYgaXQgc2ltaWxhciB0byB0aGUgcHJpbWFyeSBwbHVnaW4gZm9yIHRoZSBwYWdlIChpZiB3ZSd2
ZSBmb3VuZCBvbmUpLgotICAgIGlmICh3ZWJQYWdlLm1hdGNoZXNQcmltYXJ5UGx1Z0luKHBhZ2VP
cmlnaW4sIHBsdWdpbk9yaWdpbiwgbWltZVR5cGUpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSNl
bHNlCi0gICAgVU5VU0VEX1BBUkFNKHdlYlBhZ2UpOwotI2VuZGlmCi0KLSAgICAvLyBMYXN0bHkg
Y2hlY2sgYWdhaW5zdCB0aGUgbW9yZSBleHBsaWNpdCBoYXNoIGxpc3QuCi0gICAgcmV0dXJuIGlz
UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChoYXNoRm9yUGx1Z0luT3JpZ2luKHBhZ2VPcmlnaW4s
IHBsdWdpbk9yaWdpbiwgbWltZVR5cGUpKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzOjpwbHVnSW5E
aWRTdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcm
IHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKLXsKLSAgICBpZiAocGFnZU9y
aWdpbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgTE9HKFBsdWdpbnMsICJOb3QgYWRkaW5nIGVtcHR5
IHBhZ2Ugb3JpZ2luIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBw
bHVnSW5PcmlnaW5IYXNoID0gaGFzaEZvclBsdWdJbk9yaWdpbihwYWdlT3JpZ2luLCBwbHVnaW5P
cmlnaW4sIG1pbWVUeXBlKTsKLSAgICBpZiAoaXNQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHBs
dWdJbk9yaWdpbkhhc2gpKSB7Ci0gICAgICAgIExPRyhQbHVnaW5zLCAiSGFzaCAleCBhbHJlYWR5
IGV4aXN0cyBhcyBhdXRvLXN0YXJ0IG9yaWdpbiAocmVxdWVzdCBmb3IgJXMpIiwgcGx1Z0luT3Jp
Z2luSGFzaCwgcGFnZU9yaWdpbi51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIC8vIFdlIG1pZ2h0IGF0dGVtcHQgdG8gc3RhcnQgYW5vdGhlciBwbHVnaW4gYmVm
b3JlIHRoZSBkaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW4gbWVzc2FnZQotICAgIC8vIGNvbWVz
IGJhY2sgZnJvbSB0aGUgcGFyZW50IHByb2Nlc3MuIFRlbXBvcmFyaWx5IGFkZCB0aGlzIGhhc2gg
dG8gdGhlIGxpc3Qgd2l0aCBhIHRoaXJ0eQotICAgIC8vIHNlY29uZCB0aW1lb3V0LiBUaGF0IHdh
eSwgZXZlbiBpZiB0aGUgcGFyZW50IGRlY2lkZXMgbm90IHRvIGFkZCBpdCwgd2UnbGwgb25seSBi
ZQotICAgIC8vIGluY29ycmVjdCBmb3IgYSBsaXR0bGUgd2hpbGUuCi0gICAgbV9wbHVnSW5BdXRv
U3RhcnRPcmlnaW5IYXNoZXMuc2V0KHBsdWdJbk9yaWdpbkhhc2gsIFdhbGxUaW1lOjpub3coKSAr
IDMwX3MgKiAxMDAwKTsKLQotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6QWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChwYWdl
T3JpZ2luLCBwbHVnSW5PcmlnaW5IYXNoKSwgMCk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzczo6ZGlk
QWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCh1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoLCBX
YWxsVGltZSBleHBpcmF0aW9uVGltZSkKLXsKLSAgICAvLyBXaGVuIGNhbGxlZCwgc29tZSB3ZWIg
cHJvY2VzcyAod2hpY2ggYWxzbyBtaWdodCBiZSB0aGlzIG9uZSkgYWRkZWQgdGhlIG9yaWdpbiBm
b3IgYXV0by1zdGFydGluZywKLSAgICAvLyBvciByZWNlaXZlZCB1c2VyIGludGVyYWN0aW9uLgot
ICAgIC8vIFNldCB0aGUgYml0IHRvIGF2b2lkIGhhdmluZyByZWR1bmRhbnRseSBjYWxsIGludG8g
dGhlIFVJIHByb2Nlc3MgdXBvbiB1c2VyIGludGVyYWN0aW9uLgotICAgIG1fcGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaGVzLnNldChwbHVnSW5PcmlnaW5IYXNoLCBleHBpcmF0aW9uVGltZSk7Ci19
Ci0KLXZvaWQgV2ViUHJvY2Vzczo6cmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoSGFz
aE1hcDx1bnNpZ25lZCwgV2FsbFRpbWU+JiYgaGFzaGVzKQotewotICAgIG1fcGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaGVzID0gV1RGTW92ZShoYXNoZXMpOwotfQotCi12b2lkIFdlYlByb2Nlc3M6
OnBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2lu
LCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKLXsK
LSAgICBpZiAocGFnZU9yaWdpbi5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHVu
c2lnbmVkIHBsdWdJbk9yaWdpbkhhc2ggPSBoYXNoRm9yUGx1Z0luT3JpZ2luKHBhZ2VPcmlnaW4s
IHBsdWdpbk9yaWdpbiwgbWltZVR5cGUpOwotICAgIGlmICghcGx1Z0luT3JpZ2luSGFzaCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBpdCA9IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFz
aGVzLmZpbmQocGx1Z0luT3JpZ2luSGFzaCk7Ci0gICAgaWYgKGl0ID09IG1fcGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaGVzLmVuZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoaXQtPnZh
bHVlIC0gV2FsbFRpbWU6Om5vdygpID4gcGx1Z0luQXV0b1N0YXJ0RXhwaXJhdGlvblRpbWVVcGRh
dGVUaHJlc2hvbGQpCi0gICAgICAgIHJldHVybjsKLQotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6UGx1Z0luRGlkUmVjZWl2ZVVz
ZXJJbnRlcmFjdGlvbihwbHVnSW5PcmlnaW5IYXNoKSwgMCk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vz
czo6c2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9s
aWN5IHBvbGljeSwgY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZykKLXsKLSNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkgJiYgUExBVEZPUk0oTUFDKQotICAgIFdlYlBsdWdpbkluZm9Qcm92aWRl
cjo6c2luZ2xldG9uKCkuc2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShwb2xpY3ksIGhvc3QsIGJ1
bmRsZUlkZW50aWZpZXIsIHZlcnNpb25TdHJpbmcpOwotI2VuZGlmCi19Ci0KLXZvaWQgV2ViUHJv
Y2Vzczo6cmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMoY29uc3QgSGFzaE1hcDxXVEY6OlN0
cmluZywgSGFzaE1hcDxXVEY6OlN0cmluZywgSGFzaE1hcDxXVEY6OlN0cmluZywgV2ViQ29yZTo6
UGx1Z2luTG9hZENsaWVudFBvbGljeT4+PiYgcGx1Z2luTG9hZENsaWVudFBvbGljaWVzKQotewot
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSAmJiBQTEFURk9STShNQUMpCi0gICAgY2xl
YXJQbHVnaW5DbGllbnRQb2xpY2llcygpOwotCi0gICAgZm9yIChhdXRvJiBob3N0UGFpciA6IHBs
dWdpbkxvYWRDbGllbnRQb2xpY2llcykgewotICAgICAgICBmb3IgKGF1dG8mIGJ1bmRsZUlkZW50
aWZpZXJQYWlyIDogaG9zdFBhaXIudmFsdWUpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgdmVy
c2lvblBhaXIgOiBidW5kbGVJZGVudGlmaWVyUGFpci52YWx1ZSkKLSAgICAgICAgICAgICAgICBX
ZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNldFBsdWdpbkxvYWRDbGllbnRQb2xp
Y3kodmVyc2lvblBhaXIudmFsdWUsIGhvc3RQYWlyLmtleSwgYnVuZGxlSWRlbnRpZmllclBhaXIu
a2V5LCB2ZXJzaW9uUGFpci5rZXkpOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi19Ci0KIHZv
aWQgV2ViUHJvY2Vzczo6aXNKSVRFbmFibGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoSlNDOjpPcHRp
b25zOjp1c2VKSVQoKSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6Y2xlYXJQbHVnaW5DbGllbnRQ
b2xpY2llcygpCi17Ci0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpICYmIFBMQVRGT1JN
KE1BQykKLSAgICBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnNpbmdsZXRvbigpLmNsZWFyUGx1Z2lu
Q2xpZW50UG9saWNpZXMoKTsKLSNlbmRpZgotfQotCiB2b2lkIFdlYlByb2Nlc3M6OnJlZnJlc2hQ
bHVnaW5zKCkKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDRkZTI2MTQ5NTQ0ZmRlM2Q4NmQzOTBlOGRlZmRk
ODIzZmQwODkyZjkuLmU5NDg2NzBlNGU1OTgzYmZkOTU2ZGVhNmJjOGY2MjllMjBiM2ZlNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMjcsOSArMjcsNiBAQAogCiAj
aW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzcy5oIgogI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKLSNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotI2luY2x1ZGUgIk1lZGlhRGV2aWNlU2FuZGJveEV4dGVu
c2lvbnMuaCIKLSNlbmRpZgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdl
ci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTdG9yYWdlQXJl
YUlkZW50aWZpZXIuaCIKQEAgLTU5LDYgKzU2LDEwIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQXRv
bVN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdIYXNoLmg+CiAKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIk1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lv
bnMuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8V2ViQ29yZS9T
Y3JlZW5Qcm9wZXJ0aWVzLmg+CiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KQEAgLTE3
OSwxMiArMTgwLDYgQEAgcHVibGljOgogICAgIGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgY29t
cG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0KCkgY29uc3QgeyByZXR1cm4gbV9jb21wb3NpdGluZ1Jl
bmRlclNlcnZlclBvcnQ7IH0KICNlbmRpZgogCi0gICAgYm9vbCBzaG91bGRQbHVnSW5BdXRvU3Rh
cnRGcm9tT3JpZ2luKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0
cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKLSAgICB2b2lkIHBs
dWdJbkRpZFN0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0
cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKLSAgICB2b2lkIHBs
dWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBj
b25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7Ci0gICAg
dm9pZCBzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQ
b2xpY3ksIGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpOwotICAgIHZvaWQgcmVzZXRQbHVnaW5Mb2Fk
Q2xpZW50UG9saWNpZXMoY29uc3QgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNo
TWFwPFN0cmluZywgV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeT4+PiYpOwotICAgIHZv
aWQgY2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpOwogICAgIHZvaWQgcmVmcmVzaFBsdWdpbnMo
KTsKIAogICAgIGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZDsgfQpAQCAtNDE0LDEwICs0MDksNiBAQCBwcml2
YXRlOgogICAgIHZvaWQgdXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQoKSBjb25zdDsKICAg
ICB2b2lkIGZ1bGxLZXlib2FyZEFjY2Vzc01vZGVDaGFuZ2VkKGJvb2wgZnVsbEtleWJvYXJkQWNj
ZXNzRW5hYmxlZCk7CiAKLSAgICBib29sIGlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCh1bnNp
Z25lZCBwbHVnSW5PcmlnaW5IYXNoKTsKLSAgICB2b2lkIGRpZEFkZFBsdWdJbkF1dG9TdGFydE9y
aWdpbkhhc2godW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgV2FsbFRpbWUgZXhwaXJhdGlvblRp
bWUpOwotICAgIHZvaWQgcmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoSGFzaE1hcDx1
bnNpZ25lZCwgV2FsbFRpbWU+JiYgaGFzaGVzKTsKLQogICAgIHZvaWQgcGxhdGZvcm1TZXRDYWNo
ZU1vZGVsKENhY2hlTW9kZWwpOwogCiAgICAgdm9pZCBzZXRFbmhhbmNlZEFjY2Vzc2liaWxpdHko
Ym9vbCk7CkBAIC01NjEsOSArNTUyLDYgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIFJlZlB0cjxX
ZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyPiBtX3dlYkluc3BlY3RvckludGVycnVwdERp
c3BhdGNoZXI7CiAKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBXYWxsVGltZT4gbV9wbHVnSW5BdXRv
U3RhcnRPcmlnaW5IYXNoZXM7Ci0gICAgSGFzaFNldDxTdHJpbmc+IG1fcGx1Z0luQXV0b1N0YXJ0
T3JpZ2luczsKLQogICAgIGJvb2wgbV9oYXNTZXRDYWNoZU1vZGVsIHsgZmFsc2UgfTsKICAgICBD
YWNoZU1vZGVsIG1fY2FjaGVNb2RlbCB7IENhY2hlTW9kZWw6OkRvY3VtZW50Vmlld2VyIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5k
ZXggM2U1ZTcxMTM1ZjliZTQ3ZTM5NTA2NTQxNDFlODI0MjZlMGQwZjE3ZS4uOWQ5NjJhMjdkMDVj
YWFmZDJhZGE4NTIzYmZlNTEyMjY2NzU3ODE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTU3LDExICs1Nyw2IEBAIG1lc3NhZ2Vz
IC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAKICAgICBTZXRI
YXNTdHlsdXNEZXZpY2UoYm9vbCBoYXNTdHlsdXNEZXZpY2UpCiAKLSAgICBEaWRBZGRQbHVnSW5B
dXRvU3RhcnRPcmlnaW5IYXNoKHVpbnQzMl90IGhhc2gsIFdhbGxUaW1lIGV4cGlyYXRpb25UaW1l
KQotICAgIFJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKEhhc2hNYXA8dWludDMyX3Qs
V2FsbFRpbWU+IGhhc2hlcykKLSAgICBTZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KFdlYkNvcmU6
OlBsdWdpbkxvYWRDbGllbnRQb2xpY3kgcG9saWN5LCBTdHJpbmcgaG9zdCwgU3RyaW5nIGJ1bmRs
ZUlkZW50aWZpZXIsIFN0cmluZyB2ZXJzaW9uU3RyaW5nKQotICAgIFJlc2V0UGx1Z2luTG9hZENs
aWVudFBvbGljaWVzKEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJp
bmcsIFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+Pj4gcGx1Z2luTG9hZENsaWVudFBv
bGljaWVzKQotICAgIENsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKQogICAgIFJlZnJlc2hQbHVn
aW5zKCkKIAogICAgIHZvaWQgU3RhcnRNZW1vcnlTYW1wbGVyKFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIHNhbXBsZUxvZ0ZpbGVIYW5kbGUsIFN0cmluZyBzYW1wbGVMb2dGaWxlUGF0
aCwgZG91YmxlIGludGVydmFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VzLm1tCmluZGV4IGUzMjcwYmQ5MTY1MTgzMGI1YzU3NjllMjA0YmIx
N2YyZDIzZjVkMTYuLjg0YjM2NDVmZWFjMTc5YmM2YmNkMzk4ZTkxMGYwMjQxMmZkNzM5YmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5t
bQpAQCAtMjM3MSwxMiArMjM3MSwxMSBAQCAtIChXZWJTdG9yYWdlQmxvY2tpbmdQb2xpY3kpc3Rv
cmFnZUJsb2NraW5nUG9saWN5CiAKIC0gKEJPT0wpcGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZAog
ewotICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdFBsdWdJblNuYXBzaG90
dGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5XTsKKyAgICByZXR1cm4gTk87CiB9CiAKIC0gKHZvaWQp
c2V0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZDooQk9PTCllbmFibGVkCiB7Ci0gICAgW3NlbGYg
X3NldEJvb2xWYWx1ZTplbmFibGVkIGZvcktleTpXZWJLaXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFi
bGVkUHJlZmVyZW5jZUtleV07CiB9CiAKIC0gKEJPT0wpaGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0
bGluZ0VuYWJsZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA3YzhhZDI1MTYzOWY2ZjFjOTk2MjgyNTQwNzViMzE4N2FjM2Q5M2M5Li5lYTEyZDRj
M2VhNmFmNmM0NjkzYjIzN2I1MGViNmM5ZmQxZTY2YTExIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMTEtMTIg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQg
YWR2YW5jZWQgcGx1Zy1pbiBmZWF0dXJlczogc25hcHNob3R0aW5nIGFuZCBwbHVnLWluIGxvYWQg
cG9saWN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTg4MzUKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFJlbW92
ZWQKKyAgICAgICAgUGx1Z2luTG9hZENsaWVudFBvbGljaWVzLm1tLgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGx1Z2luTG9hZENsaWVudFBvbGljaWVzLm1tOiBS
ZW1vdmVkLgorICAgICAgICBUaGlzIHRlc3RlZCBhIGZlYXR1cmUgdGhhdCBpcyBub3cgcmVtb3Zl
ZC4KKwogMjAyMC0xMS0xMiAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgW2J1aWxkLndlYmtpdC5vcmddIHJlcGxhY2UgY1snc2xhdmVQb3J0bnVtJ10gd2l0
aCBjWydwcm90b2NvbHMnXSBpbiBtYXN0ZXJfYnVpbGRib3QyLmNmZwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA4OTdmODIzYTUxZTc2MGE0MWM2ZTM2ZGFkOTU0NWY4NjIyOGJmYTg5Li45Zjk2
NTMxNDgwOTcwYzUzMzRjNzYzMzk3NGJiZTFlMjdkMzAzNTNhIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNzg2LDcgKzc4Niw2IEBACiAJCTgzOUFBMzVGMjFBMjZCMDMwMDk4MERENiAvKiBj
bGllbnQtc2lkZS1yZWRpcmVjdC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzOUFBMzVFMjFBMjZBQ0QwMDk4MERENiAvKiBjbGllbnQt
c2lkZS1yZWRpcmVjdC5odG1sICovOyB9OwogCQk4M0EyQ0ZERTI0ODFCMzUyMDAxOEIyRDMgLyog
UHJvY2Vzc1N1c3BlbnNpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4M0EyQ0ZEQzI0ODFCMzJGMDAxOEIyRDMgLyogUHJvY2Vzc1N1c3BlbnNpb24u
bW0gKi87IH07CiAJCTgzQjZERTZGMUVFNzUyMjEwMDFFNzkyRiAvKiBSZXN0b3JlU2Vzc2lvblN0
YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
QjZERTZFMUVFNzUyMEYwMDFFNzkyRiAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlLmNwcCAqLzsgfTsK
LQkJODNCQUVFOEQxRUY0NjI1NTAwRERFODk0IC8qIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQkFFRThD
MUVGNDYyNTUwMERERTg5NCAvKiBQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMubW0gKi87IH07CiAJ
CTgzQkM1QUMwMjBFNkMwREYwMEY1ODc5RiAvKiBTdGFydExvYWRJbkRpZEZhaWxQcm92aXNpb25h
bExvYWQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
M0JDNUFCRjIwRTZDMEQzMDBGNTg3OUYgLyogU3RhcnRMb2FkSW5EaWRGYWlsUHJvdmlzaW9uYWxM
b2FkLm1tICovOyB9OwogCQk4M0RCNzk2OTFFRjYzQjNDMDBCRkE1RTUgLyogRnVuY3Rpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNEQjc5Njcx
RUY2M0IzQzAwQkZBNUU1IC8qIEZ1bmN0aW9uLmNwcCAqLzsgfTsKIAkJODNGMjJDNjQyMEIzNTVG
ODAwMzQyNzdFIC8qIE5vUG9saWN5RGVsZWdhdGVSZXNwb25zZS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRjIyQzYzMjBCMzU1RUIwMDM0Mjc3RSAv
KiBOb1BvbGljeURlbGVnYXRlUmVzcG9uc2UubW0gKi87IH07CkBAIC0yMzgzLDcgKzIzODIsNiBA
QAogCQk4M0EyQ0ZEQzI0ODFCMzJGMDAxOEIyRDMgLyogUHJvY2Vzc1N1c3BlbnNpb24ubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm9jZXNzU3VzcGVuc2lvbi5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCNkRFNkUxRUU3NTIwRjAwMUU3OTJG
IC8qIFJlc3RvcmVTZXNzaW9uU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVzdG9yZVNlc3Npb25TdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzQjg4QTMzMUM4MDA1NkQwMEJCMjQxOCAvKiBIVE1MUGFyc2VySWRpb21zLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxQYXJzZXJJZGlvbXMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4M0JBRUU4QzFFRjQ2MjU1MDBEREU4OTQg
LyogUGx1Z2luTG9hZENsaWVudFBvbGljaWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gUGx1Z2luTG9hZENsaWVudFBvbGljaWVzLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4M0JDNUFCRjIwRTZDMEQzMDBGNTg3OUYgLyogU3RhcnRMb2FkSW5E
aWRGYWlsUHJvdmlzaW9uYWxMb2FkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gU3RhcnRMb2FkSW5EaWRGYWlsUHJvdmlzaW9uYWxMb2FkLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4M0RCNzk2NzFFRjYzQjNDMDBCRkE1RTUgLyogRnVuY3Rpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnVuY3Rpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0YyMkM2MzIwQjM1NUVCMDAzNDI3N0UgLyog
Tm9Qb2xpY3lEZWxlZ2F0ZVJlc3BvbnNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gTm9Qb2xpY3lEZWxlZ2F0ZVJlc3BvbnNlLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMzM0Miw3ICszMzQwLDYgQEAKIAkJCQk1MUQ4QzE4RjIyNjdCMjY3MDA3
OTdFNDAgLyogUERGTGlua1JlZmVycmVyLm1tICovLAogCQkJCTUxNjI4MTI2MjMyNUMxOTEwMEJC
N0U0MiAvKiBQREZTbmFwc2hvdC5tbSAqLywKIAkJCQkzRkNDNEZFNDFFQzRFODUyMDA3NkUzN0Mg
LyogUGljdHVyZUluUGljdHVyZURlbGVnYXRlLm1tICovLAotCQkJCTgzQkFFRThDMUVGNDYyNTUw
MERERTg5NCAvKiBQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMubW0gKi8sCiAJCQkJREZCOEZGMzEy
NDkyRjUxQTAwRjAwQjBEIC8qIFByZWNvbm5lY3QubW0gKi8sCiAJCQkJQzk1NTAxQkUxOUFEMkZB
RjAwNDlCRTNFIC8qIFByZWZlcmVuY2VzLm1tICovLAogCQkJCUNEMjI3RTQzMjExQTRENUQwMEQy
ODVBRiAvKiBQcmVmZXJyZWRBdWRpb0J1ZmZlclNpemUubW0gKi8sCkBAIC01MzcwLDcgKzUzNjcs
NiBAQAogCQkJCUUzMjVDOTA3MjNFMzg3MDIwMEJDN0QzQiAvKiBQaWN0dXJlSW5QaWN0dXJlU3Vw
cG9ydC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUE2MUE0MTFBMEYwMDQ0N0M0QyAvKiBQ
bGF0Zm9ybVV0aWxpdGllc01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUE3MUE0MTFB
MTMwMDQ0N0M0QyAvKiBQbGF0Zm9ybVdlYlZpZXdNYWMubW0gaW4gU291cmNlcyAqLywKLQkJCQk4
M0JBRUU4RDFFRjQ2MjU1MDBEREU4OTQgLyogUGx1Z2luTG9hZENsaWVudFBvbGljaWVzLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRjQwMTBCODMyNERBMjY3RjAwQTg3NkUyIC8qIFBvc2VBc0NsYXNz
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJREZCOEZGMzIyNDkyRjUyNDAwRjAwQjBEIC8qIFByZWNv
bm5lY3QubW0gaW4gU291cmNlcyAqLywKIAkJCQkxRDY3QkZEQzI0MzNFMEE3MDA2QjUwNDcgLyog
UHJlZW1wdFZpZGVvRnVsbHNjcmVlbi5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QbHVnaW5Mb2FkQ2xpZW50UG9saWNp
ZXMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BsdWdpbkxvYWRD
bGllbnRQb2xpY2llcy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVjZDkyODI3
YzM5MTA3ZDE3MGUwNWNjMjg4YzEzMDQyNjg0ZjFlYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1BsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEzMiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0KLSNpZiBQTEFURk9STShN
QUMpCi0KLSNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybVdl
YlZpZXcuaCIKLSNpbXBvcnQgIlRlc3QuaCIKLSNpbXBvcnQgIlRlc3RCcm93c2luZ0NvbnRleHRM
b2FkRGVsZWdhdGUuaCIKLSNpbXBvcnQgPFdlYktpdC9XS0NvbnRleHRQcml2YXRlTWFjLmg+Ci0j
aW1wb3J0IDxXZWJLaXQvV0tQbHVnaW5JbmZvcm1hdGlvbi5oPgotI2ltcG9ydCA8V2ViS2l0L1dL
UHJvY2Vzc1Bvb2xQcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV0tWaWV3UHJpdmF0ZS5oPgot
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotCi1URVNUKFdLUHJvY2Vzc1Bvb2wsIHJlc2V0UGx1
Z2luTG9hZENsaWVudFBvbGljaWVzKQotewotICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdFdL
KFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gaW5pdF0pOwotICAgIFdLQ29udGV4dFJlZiB3a0NvbnRl
eHQgPSAoV0tDb250ZXh0UmVmKXByb2Nlc3NQb29sLmdldCgpOwotICAgIAotICAgIGF1dG8gZW1w
dHlIb3N0ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiIikpOwotICAg
IGF1dG8gYXBwbGVIb3N0ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
YXBwbGUuY29tIikpOwotICAgIGF1dG8gZmxhc2hJZGVudGlmaWVyID0gYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyLnBsdWdp
biIpKTsKLSAgICBhdXRvIGZsYXNoVmVyc2lvbiA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIjI2LjAuMC4xMjYiKSk7Ci0gICAgYXV0byBzaWx2ZXJsaWdodElkZW50aWZp
ZXIgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJjb20ubWljcm9zb2Z0
LlNpbHZlcmxpZ2h0UGx1Z2luIikpOwotICAgIGF1dG8gc2lsdmVybGlnaHRWZXJzaW9uID0gYWRv
cHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiNS4xLjUwOTAxLjAiKSk7Ci0gICAg
V0tDb250ZXh0U2V0UGx1Z2luTG9hZENsaWVudFBvbGljeSh3a0NvbnRleHQsIGtXS1BsdWdpbkxv
YWRDbGllbnRQb2xpY3lBc2ssIGVtcHR5SG9zdC5nZXQoKSwgZmxhc2hJZGVudGlmaWVyLmdldCgp
LCBmbGFzaFZlcnNpb24uZ2V0KCkpOwotICAgIFdLQ29udGV4dFNldFBsdWdpbkxvYWRDbGllbnRQ
b2xpY3kod2tDb250ZXh0LCBrV0tQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QWxsb3dBbHdheXMsIGFw
cGxlSG9zdC5nZXQoKSwgZmxhc2hJZGVudGlmaWVyLmdldCgpLCBmbGFzaFZlcnNpb24uZ2V0KCkp
OwotICAgIFdLQ29udGV4dFNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kod2tDb250ZXh0LCBrV0tQ
bHVnaW5Mb2FkQ2xpZW50UG9saWN5QmxvY2ssIGVtcHR5SG9zdC5nZXQoKSwgc2lsdmVybGlnaHRJ
ZGVudGlmaWVyLmdldCgpLCBzaWx2ZXJsaWdodFZlcnNpb24uZ2V0KCkpOwotICAgIFdLQ29udGV4
dFNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kod2tDb250ZXh0LCBrV0tQbHVnaW5Mb2FkQ2xpZW50
UG9saWN5QWxsb3csIGFwcGxlSG9zdC5nZXQoKSwgc2lsdmVybGlnaHRJZGVudGlmaWVyLmdldCgp
LCBzaWx2ZXJsaWdodFZlcnNpb24uZ2V0KCkpOwotICAgIAotICAgIE5TRGljdGlvbmFyeSAqcG9s
aWNpZXMgPSBwcm9jZXNzUG9vbC5nZXQoKS5fcGx1Z2luTG9hZENsaWVudFBvbGljaWVzOwotICAg
IEVYUEVDVF9FUSgyVSwgcG9saWNpZXMuY291bnQpOwotICAgIE5TRGljdGlvbmFyeSAqcG9saWNp
ZXNGb3JFbXB0eUhvc3QgPSBwb2xpY2llc1tAIiJdOwotICAgIEVYUEVDVF9FUSgyVSwgcG9saWNp
ZXNGb3JFbXB0eUhvc3QuY291bnQpOwotICAgIEVYUEVDVF9FUSgxVSwgKChOU0RpY3Rpb25hcnkg
Kilwb2xpY2llc0ZvckVtcHR5SG9zdFtAImNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllci5wbHVn
aW4iXSkuY291bnQpOwotICAgIEVYUEVDVF9FUShrV0tQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QXNr
LCBbcG9saWNpZXNGb3JFbXB0eUhvc3RbQCJjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIucGx1
Z2luIl1bQCIyNi4wLjAuMTI2Il0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdKTsKLSAgICBFWFBFQ1Rf
RVEoMVUsICgoTlNEaWN0aW9uYXJ5ICopcG9saWNpZXNGb3JFbXB0eUhvc3RbQCJjb20ubWljcm9z
b2Z0LlNpbHZlcmxpZ2h0UGx1Z2luIl0pLmNvdW50KTsKLSAgICBFWFBFQ1RfRVEoa1dLUGx1Z2lu
TG9hZENsaWVudFBvbGljeUJsb2NrLCBbcG9saWNpZXNGb3JFbXB0eUhvc3RbQCJjb20ubWljcm9z
b2Z0LlNpbHZlcmxpZ2h0UGx1Z2luIl1bQCI1LjEuNTA5MDEuMCJdIHVuc2lnbmVkSW50ZWdlclZh
bHVlXSk7Ci0gICAgCi0gICAgTlNEaWN0aW9uYXJ5ICpwb2xpY2llc0ZvckFwcGxlSG9zdCA9IHBv
bGljaWVzW0AiYXBwbGUuY29tIl07Ci0gICAgRVhQRUNUX0VRKDJVLCBwb2xpY2llc0ZvckFwcGxl
SG9zdC5jb3VudCk7Ci0gICAgRVhQRUNUX0VRKDFVLCAoKE5TRGljdGlvbmFyeSAqKXBvbGljaWVz
Rm9yQXBwbGVIb3N0W0AiY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyLnBsdWdpbiJdKS5jb3Vu
dCk7Ci0gICAgRVhQRUNUX0VRKGtXS1BsdWdpbkxvYWRDbGllbnRQb2xpY3lBbGxvd0Fsd2F5cywg
W3BvbGljaWVzRm9yQXBwbGVIb3N0W0AiY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyLnBsdWdp
biJdW0AiMjYuMC4wLjEyNiJdIHVuc2lnbmVkSW50ZWdlclZhbHVlXSk7Ci0gICAgRVhQRUNUX0VR
KDFVLCAoKE5TRGljdGlvbmFyeSAqKXBvbGljaWVzRm9yQXBwbGVIb3N0W0AiY29tLm1pY3Jvc29m
dC5TaWx2ZXJsaWdodFBsdWdpbiJdKS5jb3VudCk7Ci0gICAgRVhQRUNUX0VRKGtXS1BsdWdpbkxv
YWRDbGllbnRQb2xpY3lBbGxvdywgW3BvbGljaWVzRm9yQXBwbGVIb3N0W0AiY29tLm1pY3Jvc29m
dC5TaWx2ZXJsaWdodFBsdWdpbiJdW0AiNS4xLjUwOTAxLjAiXSB1bnNpZ25lZEludGVnZXJWYWx1
ZV0pOwotICAgIAotICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBuZXdQb2xpY2ll
cyA9IGFkb3B0TlMoW3BvbGljaWVzIG11dGFibGVDb3B5XSk7Ci0gICAgW25ld1BvbGljaWVzLmdl
dCgpIHJlbW92ZU9iamVjdEZvcktleTpAImFwcGxlLmNvbSJdOwotICAgIG5ld1BvbGljaWVzLmdl
dCgpW0AiZ29vZ2xlLmNvbSJdID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2Nd
IGluaXRXaXRoQ2FwYWNpdHk6Ml0pLmdldCgpOwotICAgIG5ld1BvbGljaWVzLmdldCgpW0AiZ29v
Z2xlLmNvbSJdW0AiY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyLnBsdWdpbiJdID0gYWRvcHRO
UyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6MV0pLmdldCgp
OwotICAgIG5ld1BvbGljaWVzLmdldCgpW0AiZ29vZ2xlLmNvbSJdW0AiY29tLm1hY3JvbWVkaWEu
Rmxhc2ggUGxheWVyLnBsdWdpbiJdW0AiMjYuMC4wLjEyNiJdID0gYWRvcHROUyhbW05TTnVtYmVy
IGFsbG9jXSBpbml0V2l0aFVuc2lnbmVkSW50OmtXS1BsdWdpbkxvYWRDbGllbnRQb2xpY3lBbGxv
d0Fsd2F5c10pLmdldCgpOwotICAgIG5ld1BvbGljaWVzLmdldCgpW0AiZ29vZ2xlLmNvbSJdW0Ai
Y29tLmFwcGxlLlF1aWNrVGltZS5wbHVnaW4iXSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OjJdKS5nZXQoKTsKLSAgICBuZXdQb2xpY2llcy5n
ZXQoKVtAImdvb2dsZS5jb20iXVtAImNvbS5hcHBsZS5RdWlja1RpbWUucGx1Z2luIl1bQCIxLjAi
XSA9IGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhVbnNpZ25lZEludDprV0tQbHVn
aW5Mb2FkQ2xpZW50UG9saWN5QmxvY2tdKS5nZXQoKTsKLSAgICBuZXdQb2xpY2llcy5nZXQoKVtA
Imdvb2dsZS5jb20iXVtAImNvbS5hcHBsZS5RdWlja1RpbWUucGx1Z2luIl1bQCIxLjEiXSA9IGFk
b3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhVbnNpZ25lZEludDprV0tQbHVnaW5Mb2Fk
Q2xpZW50UG9saWN5QWxsb3ddKS5nZXQoKTsKLSAgICAKLSAgICBbcHJvY2Vzc1Bvb2wuZ2V0KCkg
X3Jlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzOm5ld1BvbGljaWVzLmdldCgpXTsKLSAgICAK
LSAgICBwb2xpY2llcyA9IHByb2Nlc3NQb29sLmdldCgpLl9wbHVnaW5Mb2FkQ2xpZW50UG9saWNp
ZXM7Ci0gICAgRVhQRUNUX0VRKDJVLCBwb2xpY2llcy5jb3VudCk7Ci0gICAgcG9saWNpZXNGb3JF
bXB0eUhvc3QgPSBwb2xpY2llc1tAIiJdOwotICAgIEVYUEVDVF9FUSgyVSwgcG9saWNpZXNGb3JF
bXB0eUhvc3QuY291bnQpOwotICAgIEVYUEVDVF9FUSgxVSwgKChOU0RpY3Rpb25hcnkgKilwb2xp
Y2llc0ZvckVtcHR5SG9zdFtAImNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllci5wbHVnaW4iXSku
Y291bnQpOwotICAgIEVYUEVDVF9FUShrV0tQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QXNrLCBbcG9s
aWNpZXNGb3JFbXB0eUhvc3RbQCJjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIucGx1Z2luIl1b
QCIyNi4wLjAuMTI2Il0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdKTsKLSAgICBFWFBFQ1RfRVEoMVUs
ICgoTlNEaWN0aW9uYXJ5ICopcG9saWNpZXNGb3JFbXB0eUhvc3RbQCJjb20ubWljcm9zb2Z0LlNp
bHZlcmxpZ2h0UGx1Z2luIl0pLmNvdW50KTsKLSAgICBFWFBFQ1RfRVEoa1dLUGx1Z2luTG9hZENs
aWVudFBvbGljeUJsb2NrLCBbcG9saWNpZXNGb3JFbXB0eUhvc3RbQCJjb20ubWljcm9zb2Z0LlNp
bHZlcmxpZ2h0UGx1Z2luIl1bQCI1LjEuNTA5MDEuMCJdIHVuc2lnbmVkSW50ZWdlclZhbHVlXSk7
Ci0gICAgCi0gICAgRVhQRUNUX0VRKHRydWUsICFwb2xpY2llc1tAImFwcGxlLmNvbSJdKTsKLSAg
ICAKLSAgICBOU0RpY3Rpb25hcnkgKnBvbGljaWVzRm9yR29vZ2xlSG9zdCA9IHBvbGljaWVzW0Ai
Z29vZ2xlLmNvbSJdOwotICAgIEVYUEVDVF9FUSgyVSwgcG9saWNpZXNGb3JHb29nbGVIb3N0LmNv
dW50KTsKLSAgICBFWFBFQ1RfRVEoMVUsICgoTlNEaWN0aW9uYXJ5ICopcG9saWNpZXNGb3JHb29n
bGVIb3N0W0AiY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyLnBsdWdpbiJdKS5jb3VudCk7Ci0g
ICAgRVhQRUNUX0VRKGtXS1BsdWdpbkxvYWRDbGllbnRQb2xpY3lBbGxvd0Fsd2F5cywgW3BvbGlj
aWVzRm9yR29vZ2xlSG9zdFtAImNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllci5wbHVnaW4iXVtA
IjI2LjAuMC4xMjYiXSB1bnNpZ25lZEludGVnZXJWYWx1ZV0pOwotICAgIEVYUEVDVF9FUSgyVSwg
KChOU0RpY3Rpb25hcnkgKilwb2xpY2llc0Zvckdvb2dsZUhvc3RbQCJjb20uYXBwbGUuUXVpY2tU
aW1lLnBsdWdpbiJdKS5jb3VudCk7Ci0gICAgRVhQRUNUX0VRKGtXS1BsdWdpbkxvYWRDbGllbnRQ
b2xpY3lCbG9jaywgW3BvbGljaWVzRm9yR29vZ2xlSG9zdFtAImNvbS5hcHBsZS5RdWlja1RpbWUu
cGx1Z2luIl1bQCIxLjAiXSB1bnNpZ25lZEludGVnZXJWYWx1ZV0pOwotICAgIEVYUEVDVF9FUShr
V0tQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QWxsb3csIFtwb2xpY2llc0Zvckdvb2dsZUhvc3RbQCJj
b20uYXBwbGUuUXVpY2tUaW1lLnBsdWdpbiJdW0AiMS4xIl0gdW5zaWduZWRJbnRlZ2VyVmFsdWVd
KTsKLSAgICAKLSAgICBXS0NvbnRleHRDbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKHdrQ29udGV4
dCk7Ci0gICAgcG9saWNpZXMgPSBwcm9jZXNzUG9vbC5nZXQoKS5fcGx1Z2luTG9hZENsaWVudFBv
bGljaWVzOwotICAgIEVYUEVDVF9FUSgwVSwgcG9saWNpZXMuY291bnQpOwotfQotCi0jaWYgV0tf
SEFWRV9DX1NQSQotc3RhdGljIGJvb2wgdGVzdEZpbmlzaGVkID0gZmFsc2U7Ci0KLVRFU1QoV2Vi
S2l0LCBQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXNXaXRoTnVsbEhvc3QpCi17Ci0gICAgV0tSZXRh
aW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhUZXN0V2ViS2l0QVBJOjpVdGls
OjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJEZW55V2lsbFNlbmRSZXF1ZXN0
VGVzdCIpKTsKLQotICAgIGF1dG8gYXBwbGVIb3N0ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiYXBwbGUuY29tIikpOwotICAgIGF1dG8gZmxhc2hJZGVudGlmaWVyID0g
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiY29tLm1hY3JvbWVkaWEuRmxh
c2ggUGxheWVyLnBsdWdpbiIpKTsKLSAgICBhdXRvIGZsYXNoVmVyc2lvbiA9IGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIjI2LjAuMC4xMjYiKSk7Ci0gICAgV0tDb250ZXh0
U2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShjb250ZXh0LmdldCgpLCBrV0tQbHVnaW5Mb2FkQ2xp
ZW50UG9saWN5QWxsb3dBbHdheXMsIGFwcGxlSG9zdC5nZXQoKSwgZmxhc2hJZGVudGlmaWVyLmdl
dCgpLCBmbGFzaFZlcnNpb24uZ2V0KCkpOwotCi0gICAgVGVzdFdlYktpdEFQSTo6UGxhdGZvcm1X
ZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7Ci0KLSAgICB3ZWJWaWV3LnBsYXRmb3JtVmll
dygpLm1pbmltdW1TaXplRm9yQXV0b0xheW91dCA9IE5TTWFrZVNpemUoNDAwLCAzMDApOwotICAg
IHdlYlZpZXcucGxhdGZvcm1WaWV3KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVs
ZWdhdGUgPSBbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRo
QmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7
Ci0gICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7Ci0gICAgfV07Ci0gICAgW3dlYlZpZXcucGxh
dGZvcm1WaWV3KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkSFRNTFN0cmluZzpAIjxo
dG1sPjxib2R5PjxzY3JpcHQ+bmF2aWdhdG9yLnBsdWdpbnMubGVuZ3RoOzwvc2NyaXB0PjwvYm9k
eT48L2h0bWw+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiYWJvdXQ6YmxhbmsiXV07
Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7Ci19Ci0KLSNl
bmRpZiAvLyBXS19IQVZFX0NfU1BJCi0KLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NzJjZDkzYjBmMTJkMWE3ZjUzYjE4ZjRhYzdhODYxMTBhMThhMTQzMS4uMzAyOGMwOWQyNmQxMmE1
NTBiZmEwY2M2YWZhZGI1ODZmNjAwZjY0YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIwLTEx
LTEyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdW51
c2VkIGFkdmFuY2VkIHBsdWctaW4gZmVhdHVyZXM6IHNuYXBzaG90dGluZyBhbmQgcGx1Zy1pbiBs
b2FkIHBvbGljeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE4ODM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICAq
IGh0dHAvdGVzdHMvcGx1Z2lucy9wbHVnaW4tYWxsb3ctdGhlbi1yZWxvYWQtZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcGx1Z2lucy9wbHVnaW4tYWxsb3ctdGhl
bi1yZWxvYWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgVGhpcyB3YXMgdGVzdGluZyBhIGJlaGF2
aW9yIHRoYXQncyBubyBsb25nZXIgc3VwcG9ydGVkLCBibG9ja2luZyBhIHBsdWctaW4gc28KKyAg
ICAgICAgY29tcGxldGVseSB0aGF0IGl0IGRvZXNuJ3Qgc2hvdyB1cCBpbiB0aGUgcGx1Zy1pbiBs
aXN0LgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOiBSZW1v
dmVkIHNuYXBzaG90dGluZyBleHBlY3RhdGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdr
Mi9UZXN0RXhwZWN0YXRpb25zOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVzdEV4
cGVjdGF0aW9uczogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVj
dGF0aW9uczogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25h
cHNob3R0aW5nOiBSZW1vdmVkLgorICAgICAgICAqIHBsdWdpbnMvc25hcHNob3R0aW5nOiBSZW1v
dmVkLgorCiAyMDIwLTExLTEyICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNv
bT4KIAogICAgICAgICBTaW1wbGlmeSBtYWluZnJhbWUgdGVzdHMgdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDZkYzBl
NTc3ZTU2NDE4Y2E1MTA2NmU5MzExNTE2MGMxODEzYzY0NzEuLmQ0MzVlNmQ3MTYzMTc3MzBjNWNj
ZTgzYjhiYjAxY2ZlN2ZmMjcxZGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDIwLTExLTEyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW1vdmUgdW51c2VkIGFkdmFuY2VkIHBsdWctaW4gZmVhdHVyZXM6IHNuYXBz
aG90dGluZyBhbmQgcGx1Zy1pbiBsb2FkIHBvbGljeQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGlt
IEhvcnRvbi4KKworICAgICAgICAqIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy11aS9hcHBlYXJhbmNlLWNzc29tLTAwMS1leHBlY3RlZC50eHQ6Cisg
ICAgICAgIFVwZGF0ZWQgZm9yIHByb2dyZXNzaW9uLgorCiAyMDIwLTExLTExICBSb2IgQnVpcyAg
PHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVzeW5jIHdlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXNpemluZy9hc3BlY3QtcmF0aW8gZnJvbSB1cHN0cmVhbQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9wbHVnaW5zL3BsdWdpbi1hbGxvdy10aGVuLXJlbG9hZC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BsdWdpbnMvcGx1Z2luLWFsbG93LXRo
ZW4tcmVsb2FkLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTdk
N2M4MGUyNzQ3ODVkM2E3ODk2OWU5ZDM5YjM5MjM5Y2IwMTBkZi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BsdWdp
bnMvcGx1Z2luLWFsbG93LXRoZW4tcmVsb2FkLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDMgKzAsMCBAQAotbnVtYmVyIG9mIHBsdWdpbnMgZGVjcmVhc2VkIGFmdGVyIGJsb2NraW5n
OiBQQVNTCi1udW1iZXIgb2YgcGx1Z2lucyBpbmNyZWFzZWQgYWZ0ZXIgYWxsb3dpbmc6IFBBU1MK
LVBBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGx1Z2lucy9wbHVnaW4t
YWxsb3ctdGhlbi1yZWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGx1Z2lucy9w
bHVnaW4tYWxsb3ctdGhlbi1yZWxvYWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYzc1ZGMyZTAwMzRhNTUzYzdiMmI1ZDBjNjU1YjE1ODE2MjA3ZWEwYi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3BsdWdpbnMvcGx1Z2luLWFsbG93LXRoZW4tcmVsb2FkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSw0NyArMCwwIEBACi08aHRtbD4KLTxib2R5PgotPHNjcmlwdD4KLWZ1bmN0aW9uIGRvVGVzdCgp
Ci17Ci0gICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhd2luZG93LmludGVybmFscykgewot
ICAgICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICJGQUlMOiByZXF1aXJlcyBpbnRlcm5h
bHMgQVBJIjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIXdpbmRvdy5sb2NhbFN0
b3JhZ2Uuc3RlcCkgewotICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0KLSAgICAgICAgd2luZG93LmxvY2FsU3RvcmFn
ZS5zdGVwID0gMTsKLSAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zdGVwMFZhbHVlID0gd2lu
ZG93LmludGVybmFscy5wbHVnaW5Db3VudCgpOwotCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0Qmxv
Y2tBbGxQbHVnaW5zKHRydWUpOwotCi0gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAod2luZG93LmxvY2FsU3RvcmFnZS5zdGVw
ID09IDEpIHsKLSAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zdGVwID0gMjsKLSAgICAgICAg
d2luZG93LmxvY2FsU3RvcmFnZS5zdGVwMVZhbHVlID0gd2luZG93LmludGVybmFscy5wbHVnaW5D
b3VudCgpOwotCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0QmxvY2tBbGxQbHVnaW5zKGZhbHNlKTsK
LQotICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgd2luZG93LmxvY2FsU3RvcmFnZS5zdGVwMlZhbHVlID0gd2luZG93LmludGVybmFs
cy5wbHVnaW5Db3VudCgpOwotICAgIHZhciB0ZXN0MSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc3Rl
cDBWYWx1ZSA+IHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc3RlcDFWYWx1ZTsKLSAgICB2YXIgdGVzdDIg
PSB3aW5kb3cubG9jYWxTdG9yYWdlLnN0ZXAyVmFsdWUgPiB3aW5kb3cubG9jYWxTdG9yYWdlLnN0
ZXAxVmFsdWU7Ci0KLSAgICB2YXIgbWVzc2FnZSA9ICJudW1iZXIgb2YgcGx1Z2lucyBkZWNyZWFz
ZWQgYWZ0ZXIgYmxvY2tpbmc6ICIgKyAodGVzdDEgPyAiUEFTUyIgOiAiRkFJTCIpOwotICAgIG1l
c3NhZ2UgKz0gIjxicj4iOwotICAgIG1lc3NhZ2UgKz0gIm51bWJlciBvZiBwbHVnaW5zIGluY3Jl
YXNlZCBhZnRlciBhbGxvd2luZzogIiArICh0ZXN0MiA/ICJQQVNTIiA6ICJGQUlMIik7Ci0gICAg
bWVzc2FnZSArPSAiPGJyPiI7Ci0gICAgbWVzc2FnZSArPSB0ZXN0MSAmJiB0ZXN0MiA/ICJQQVNT
IiA6ICJGQUlMIjsKLSAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9IG1lc3NhZ2U7Ci0KLSAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLWRvVGVzdCgpOwotPC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtdWkvYXBwZWFyYW5jZS1jc3NvbS0wMDEtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXVp
L2FwcGVhcmFuY2UtY3Nzb20tMDAxLWV4cGVjdGVkLnR4dAppbmRleCBkZGQ4OTkyZTA2YWRkZDIy
Y2IwNjFiMWM2YzYyOTAzY2JlYjliYTNiLi42MzZiYzBmOTczNDY3NjlmMDhmY2YzZmU5MmM1NmYy
YTU3NzE1N2U2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtdWkvYXBwZWFyYW5jZS1jc3NvbS0wMDEtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy11
aS9hcHBlYXJhbmNlLWNzc29tLTAwMS1leHBlY3RlZC50eHQKQEAgLTExNiw3ICsxMTYsNyBAQCBQ
QVNTIC13ZWJraXQtYXBwZWFyYW5jZTogc2hlZXQgKGludmFsaWQpCiBGQUlMIC13ZWJraXQtYXBw
ZWFyYW5jZTogc2xpZGVyLXZlcnRpY2FsIChpbnZhbGlkKSBhc3NlcnRfZXF1YWxzOiBzdHlsZS5X
ZWJraXRBcHBlYXJhbmNlICh1cHBlcmNhc2UgVykgZXhwZWN0ZWQgIiIgYnV0IGdvdCAic2xpZGVy
LXZlcnRpY2FsIgogRkFJTCAtd2Via2l0LWFwcGVhcmFuY2U6IHNsaWRlcnRodW1iLWhvcml6b250
YWwgKGludmFsaWQpIGFzc2VydF9lcXVhbHM6IHN0eWxlLldlYmtpdEFwcGVhcmFuY2UgKHVwcGVy
Y2FzZSBXKSBleHBlY3RlZCAiIiBidXQgZ290ICJzbGlkZXJ0aHVtYi1ob3Jpem9udGFsIgogRkFJ
TCAtd2Via2l0LWFwcGVhcmFuY2U6IHNsaWRlcnRodW1iLXZlcnRpY2FsIChpbnZhbGlkKSBhc3Nl
cnRfZXF1YWxzOiBzdHlsZS5XZWJraXRBcHBlYXJhbmNlICh1cHBlcmNhc2UgVykgZXhwZWN0ZWQg
IiIgYnV0IGdvdCAic2xpZGVydGh1bWItdmVydGljYWwiCi1GQUlMIC13ZWJraXQtYXBwZWFyYW5j
ZTogc25hcHNob3R0ZWQtcGx1Z2luLW92ZXJsYXkgKGludmFsaWQpIGFzc2VydF9lcXVhbHM6IHN0
eWxlLldlYmtpdEFwcGVhcmFuY2UgKHVwcGVyY2FzZSBXKSBleHBlY3RlZCAiIiBidXQgZ290ICJz
bmFwc2hvdHRlZC1wbHVnaW4tb3ZlcmxheSIKK1BBU1MgLXdlYmtpdC1hcHBlYXJhbmNlOiBzbmFw
c2hvdHRlZC1wbHVnaW4tb3ZlcmxheSAoaW52YWxpZCkKIFBBU1MgLXdlYmtpdC1hcHBlYXJhbmNl
OiBzcGlubmVyIChpbnZhbGlkKQogUEFTUyAtd2Via2l0LWFwcGVhcmFuY2U6IHNwaW5uZXItZG93
bmJ1dHRvbiAoaW52YWxpZCkKIFBBU1MgLXdlYmtpdC1hcHBlYXJhbmNlOiBzcGlubmVyLXRleHRm
aWVsZCAoaW52YWxpZCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCA4YzU3NDgzYzU3OTY1ZGUyZGQ1YzNlZGI1OGQyMWFmYjY1NWQ2MTE3Li5m
NDYxYTM5Nzg4ZDBhOGI5MzZlZWZiYjExMDc5MzNiNzYxMzViZDA0IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC0yOTAsMTAgKzI5MCw2IEBA
IHdlYmtpdC5vcmcvYi8xODcyMzAgZWRpdGluZy9tYWMvc3R5bGUvZG8tbm90LWNyYXNoLXdoZW4t
c2hvd2luZy1mb250LXBhbmVsLmh0bWwKICMgRmFpbHMgd2l0aCBXZWJLaXQxIG9ubHkuCiBlZGl0
aW5nL3NlY3VyZS1pbnB1dC9yZXNldC1zdGF0ZS1vbi1uYXZpZ2F0aW9uLmh0bWwgWyBGYWlsdXJl
IF0KIAotIyBQbHVnLWluIGJsb2NraW5nIGNhbGxiYWNrIGRvZXNuJ3QgZXhpc3QgaW4gV2ViS2l0
MS4KLXBsdWdpbnMvdW5hdmFpbGFibGUtcGx1Z2luLWluZGljYXRvci1vYnNjdXJpdHkuaHRtbAot
aHR0cC90ZXN0cy9wbHVnaW5zL3BsdWdpbi1hbGxvdy10aGVuLXJlbG9hZC5odG1sIFsgU2tpcCBd
Ci0KIGh0dHAvdGVzdHMvcGx1Z2lucy9ub3Vuc3VwcG9ydGVkLXBsdWdpbi5odG1sIFsgU2tpcCBd
CiBodHRwL3Rlc3RzL3BsdWdpbnMvc3VwcG9ydGVkLXBsdWdpbi1hbGwtb3JpZ2luLXZpc2liaWxp
dHkuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9wbHVnaW5zL3N1cHBvcnRlZC1wbHVnaW4tb3Jp
Z2luLXNwZWNpZmljLXZpc2liaWxpdHkuaHRtbCBbIFNraXAgXQpAQCAtMzg0LDkgKzM4MCw2IEBA
IGZhc3QvZm9ybXMvdmFsaWRhdGlvbi1tZXNzYWdlLWluLXJlbGF0aXZlLWJvZHkuaHRtbAogZmFz
dC9mb3Jtcy92YWxpZGF0aW9uLW1lc3NhZ2UtYXBwZWFyYW5jZS5odG1sCiBmYXN0L2Zvcm1zL3Zh
bGlkYXRpb24tbWVzc2FnZS1vbi10ZXh0YXJlYS5odG1sCiAKLSMgRGlzYWJsZSBzbmFwc2hvdHRp
bmcgdGVzdHMgb24gV0sxIG9ubHkKLXBsdWdpbnMvc25hcHNob3R0aW5nCi0KICMgRGlzYWJsZSBz
bWFsbCBwbHVnaW4gYmxvY2tpbmcgb24gV0sxCiBwbHVnaW5zL3NtYWxsLXBsdWdpbi1ibG9ja2Vk
Lmh0bWwgWyBTa2lwIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IGYzY2Q2M2ZmZjA0ODM5MzgxY2U5MDhmNWZmMTNhYzM0MGM2NzUyZWMu
Ljg3YmRjOWMzN2VjYWZjZmFmNWNhOGM5OWJlNzJhZGFhZDFhYTMyNzYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTM5OSwxNyArMzk5LDYg
QEAgd2Via2l0Lm9yZy9iLzEzMjc2NiBmYXN0L2hpZHBpL2ZpbHRlcnMtaW52ZXJ0Lmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMzI3NjYgZmFzdC9oaWRwaS9maWx0ZXJz
LW11bHRpcGxlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMzI3NjYg
ZmFzdC9oaWRwaS9maWx0ZXJzLXJlZmVyZW5jZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAK
LSMgUGx1Zy1pbiBzbmFwc2hvdHRpbmcgdGVzdHMgZG8gbm90IG1ha2UgbXVjaCBzZW5zZToKLSMg
LSBzbmFwc2hvdHRpbmcgaXMgb25seSBzdXBwb3J0ZWQgZm9yIEZsYXNoLCBidXQgd2UgY2FuJ3Qg
dXNlIEZsYXNoIGJlY2F1c2UgaXQgaXNuJ3QgaW5zdGFsbGVkIGV2ZXJ5d2hlcmU7Ci0jIC0gc28g
bW9zdCBvZiB0aGUgdGVzdHMgdXNlIFF1aWNrVGltZSwgd2hpY2ggZG9lc24ndCBzdXBwb3J0IHNu
YXBzaG90dGluZywgYW5kIGlzIDMyLWJpdCBvbmx5LCB0aHVzIGZhaWxpbmcgdG8gbG9hZCBpbiBl
bmdpbmVlcmluZyBidWlsZHMuCi1wbHVnaW5zL3NuYXBzaG90dGluZyBbIFBhc3MgRmFpbHVyZSBd
Ci0jIFRoZXNlIHR3byB0ZXN0cyB1c2UgRmxhc2gsIHNvIHRoZXkgdHJpZ2dlciBhIHJlbGVhc2Ug
YXNzZXJ0aW9uLgotcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktc2ltaWxhci10by1kb21p
bmFudC1hZnRlci1kZWxheS5odG1sIFsgU2tpcCBdCi1wbHVnaW5zL3NuYXBzaG90dGluZy9wcmlu
dC1zbmFwc2hvdHRlZC1wbHVnaW4uaHRtbCBbIFNraXAgXQotCi13ZWJraXQub3JnL2IvMTMzMjI3
IHBsdWdpbnMvc25hcHNob3R0aW5nL3NldC1wbHVnaW4tc2l6ZS10by10aW55Lmh0bWwgWyBGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8xMzMyMjcgcGx1Z2lucy9zbmFwc2hvdHRpbmcvcXVpY2t0aW1l
LXBsdWdpbi1zbmFwc2hvdHRlZC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLQogZmFzdC9kb20vZnJh
bWUtbG9hZGluZy12aWEtZG9jdW1lbnQtd3JpdGUuaHRtbCBbIFRpbWVvdXQgXQogCiBmYXN0L3Nw
ZWVjaHN5bnRoZXNpcy9zcGVlY2gtc3ludGhlc2lzLWNhbmNlbC5odG1sIFsgUGFzcyBUaW1lb3V0
IF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFw
c2hvdHRpbmcvYXV0b3BsYXktZG9taW5hbnQtYmxhbmstcGx1Z2luLW1vdmVkLWludG8tdmlldy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNo
b3R0aW5nL2F1dG9wbGF5LWRvbWluYW50LWJsYW5rLXBsdWdpbi1tb3ZlZC1pbnRvLXZpZXctZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTdlNTc4MDgxNDU0OTU2
NTgxNWRmYjE3MDA0MDNiN2ZjNWE1MGI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFw
c2hvdHRpbmcvYXV0b3BsYXktZG9taW5hbnQtYmxhbmstcGx1Z2luLW1vdmVkLWludG8tdmlldy1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVRoaXMgdGVzdHMgdGhh
dCBhIGRvbWluYW50IGJsYW5rIHBsdWdpbiB0aGF0IHN0YXJ0cyBvZmYgc2NyZWVuIGFuZCBpcyBt
b3ZlZCBpbiB0byB2aWV3IGF1dG9wbGF5cwotCi1QQVNTCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktZG9taW5h
bnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3Nu
YXBzaG90dGluZy9hdXRvcGxheS1kb21pbmFudC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGY3ZmJiZWI2MmYyOTI0MWFhYzE0YWJmYjk0ZTU1NzM2NDkzZjNiZTUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1kb21pbmFu
dC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVRoaXMgdGVzdCdz
IGRvbWluYW50IHBsdWdpbiBzaG91bGQgcGxheSBhdXRvbWF0aWNhbGx5Ci0KLVBBU1MKLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGlu
Zy9hdXRvcGxheS1wbHVnaW4tYmxvY2tlZC1ieS1pbWFnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXBsdWdp
bi1ibG9ja2VkLWJ5LWltYWdlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNWRlNDkxNmE5ZjI1MTRhYjRjNDEzNmNkYzhmZThlNjM4NmI0YWYyNi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXBsdWdpbi1ibG9ja2VkLWJ5
LWltYWdlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotVGhpcyB0
ZXN0cyB0aGF0IGEgZG9taW5hbnQgcGx1Z2luIHNob3VsZCBwbGF5IGF1dG9tYXRpY2FsbHkgZXZl
biBpZiBhbiBpbWFnZSBpcyBvbiB0b3Agb2YgdGhlIHBsdWdpbi4KLQotUEFTUwotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1
dG9wbGF5LXBsdWdpbi1tb3N0bHktYmxvY2tlZC1ieS1pbWFnZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXBs
dWdpbi1tb3N0bHktYmxvY2tlZC1ieS1pbWFnZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDhlOWM5YjhiYzc2M2U0NTBhOTM1NDQ4MDg2NWQ1NDMzNzZjZDgzOGMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4t
bW9zdGx5LWJsb2NrZWQtYnktaW1hZ2UtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
NCArMCwwIEBACi1UaGlzIHRlc3RzIHRoYXQgYSBkb21pbmFudCBwbHVnaW4gc2hvdWxkIHBsYXkg
YXV0b21hdGljYWxseSBpZiBhbiBpbWFnZSBpcyBtb3N0bHkgb24gdG9wIG9mIHRoZSBwbHVnaW4u
Ci0KLVBBU1MKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVn
aW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1zaW1pbGFyLXRvLWRvbWluYW50LWFmdGVyLWRlbGF5
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFw
c2hvdHRpbmcvYXV0b3BsYXktc2ltaWxhci10by1kb21pbmFudC1hZnRlci1kZWxheS1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkZmJjMDNjMzM2Y2E0NTk3MTY1
ZTZmMDQ5NTE2MDBjZDM0OGY3NjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90
dGluZy9hdXRvcGxheS1zaW1pbGFyLXRvLWRvbWluYW50LWFmdGVyLWRlbGF5LWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotVGhlIGRvbWluYW50IHBsdWdpbiBzaG91
bGQgcGxheSBhdXRvbWF0aWNhbGx5LCBhbmQgdGhlbiBzbyBzaG91bGQgdGhlIGlkZW50aWNhbCBw
bHVnaW4gdGhhdCBpcyBhZGRlZCBhIGJpdCBsYXRlci4KLQotUEFTUwotCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3Bs
YXktc2ltaWxhci10by1kb21pbmFudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXNpbWlsYXItdG8tZG9taW5h
bnQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDlkMzU3ODRk
M2ZiYzQ2MTE5YTg1MmRlNzM3MDNhNWI1NzVkN2Q4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lu
cy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktc2ltaWxhci10by1kb21pbmFudC1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLVRoZSBkb21pbmFudCBwbHVnaW4gc2hvdWxk
IHBsYXkgYXV0b21hdGljYWxseSwgYW5kIHRyaWdnZXIgYWxsIHRoZSBvdGhlcnMgdG8gcGxheSBh
cyB3ZWxsLCBzaW5jZSB0aGV5IGFyZSB0aGUgc2FtZSBvcmlnaW4uCi0KLVBBU1MKLQotCi0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRp
bmcvcGx1Z2luLXJlY2VpdmVzLWNsaWNrLWV2ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvcGx1Z2luLXJlY2VpdmVzLWNs
aWNrLWV2ZW50LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjU5
M2U1NmY5NDJiM2FlODJlYjI2ZDE1MjYxMzhiOTg2ZDA1ZGE0OC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L3BsdWdpbnMvc25hcHNob3R0aW5nL3BsdWdpbi1yZWNlaXZlcy1jbGljay1ldmVudC1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLQotUEFTUywgcGx1Z2luIGRpZCBy
ZWNlaXZlIG1vdXNlIGNsaWNrIGV2ZW50LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9xdWlja3RpbWUtcGx1Z2luLXNuYXBzaG90
dGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9z
bmFwc2hvdHRpbmcvcXVpY2t0aW1lLXBsdWdpbi1zbmFwc2hvdHRlZC1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4MzY4OWNhZGIzZWQ2ZDZhNDU4YzVhZDAzMThi
NGI4OTVlOTIyNTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9xdWlj
a3RpbWUtcGx1Z2luLXNuYXBzaG90dGVkLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDQgKzAsMCBAQAotVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBxdWlja3RpbWUgcGx1Z2lucyBjYW4g
YWxzbyBiZSBzbmFwc2hvdHRlZC4gV2UgbWFrZSB0aGUgcGx1Z2luIGhlcmUgdG9vIHNtYWxsIHRv
IGJlIHRoZSBwcmltYXJ5IHBsdWdpbiwgdGh1cyBpdCBzaG91bGQgZ2V0IHNuYXBzaG90dGVkLgot
Ci1QQVNTCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lu
cy9zbmFwc2hvdHRpbmcvcmVzdGFydC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL3Jlc3RhcnQtZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzQ1NmFiOTE4ZTE2OTQwYjBmNWJlMTQ4NGZhYWY5
MTg3MDRkYjQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvcmVzdGFy
dC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVRoaXMgdGVzdCBm
b3JjZXMgYSBwbHVnaW4gdG8gc25hcHNob3QgaW1tZWRpYXRlbHksIHRoZW4gdHJpZXMgdG8gcmVz
dGFydCBpdC4KLQotUEFTUwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL3BsdWdpbnMvc25hcHNob3R0aW5nL3NldC1wbHVnaW4tc2l6ZS10by10aW55LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcv
c2V0LXBsdWdpbi1zaXplLXRvLXRpbnktZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBmZDE1Yjk3Zjk1YmJhYTYyYTNjMmM0ZGFjZGZiYmNkYTZjZWIyNDI1Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvc2V0LXBsdWdpbi1zaXplLXRvLXRp
bnktZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1UaGlzIHRlc3Qg
ZW5zdXJlcyB0aGF0IGlmIHdlIGhhdmUgc2V0IGEgcGx1Z2luIHRvIGJlIHRvbyBzbWFsbCBhZnRl
ciB0aGUgaW5pdGlhbCBsb2FkIHRoYXQgaXQgc3RpbGwgZ2V0cyBwbGF5ZWQuCi0KLUFsc28gZW5z
dXJlIHRoYXQgdGhlIHBsdWdpbiByZW1haW5zIHNuYXBzaG90dGVkIGlmIHRoZSBzaXplIHdhcyBp
bml0aWFsbHkgc3BlY2lmaWVkIGJ1dCBtYWRlIHRvbyBzbWFsbCBhZnRlcndhcmRzLgotCi1QQVNT
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFw
c2hvdHRpbmcvc2ltcGxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvc2ltcGxlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMTdiMDAwYzM1YTg2ZDNkN2Y1YjRkOGVjMzAwNzI3NjEwMGZkMDg2
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL3NpbXBsZS1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVRoaXMgdGVzdCBmb3JjZXMgYSBw
bHVnaW4gdG8gc25hcHNob3QgaW1tZWRpYXRlbHkKLQotUEFTUwotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL3NuYXBzaG90LXBs
dWdpbi1ub3QtcXVpdGUtYmxvY2tlZC1ieS1pbWFnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL3NuYXBzaG90LXBsdWdpbi1u
b3QtcXVpdGUtYmxvY2tlZC1ieS1pbWFnZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGRhNjc3NTcwNDUwNjNmMWU2NTc5MDc0MmRlMGMzZDFhYjFiMzVlYTAuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9zbmFwc2hvdC1wbHVnaW4tbm90
LXF1aXRlLWJsb2NrZWQtYnktaW1hZ2UtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
NyArMCwwIEBACi1UaGlzIHRlc3RzIHRoYXQgYSBwbHVnaW4gc2hvdWxkIGJlIHNuYXBzaG90dGVk
IGlmIGl0IGlzIHBhcnRpYWxseSBjb3ZlcmVkIGJ5IGFuIGltYWdlIGJ1dCBub3QgZW5vdWdoIHRv
IGJlIGNvbnNpZGVyZWQgYmxvY2tpbmcuCi0KLUl0IGFkZGl0aW9uYWxseSB0ZXN0cyB0aGF0IHdl
IHRha2UgdHJhbnNmb3JtcyBpbnRvIGFjY291bnQuCi0KLVBBU1MKLQotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGQzYjZiOTI1Njk1NTI2MzY4NTY5MmI4
YzdkMjY4NDRkNjYwNzJhM2UuLmVjYmE1MmM5ZDUzMTg3NmVhYzY2YTI2YjMyNDcxN2Q5YzRmNTkx
ZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC02Mzks
OSArNjM5LDYgQEAgZmFzdC9ldmVudHMvY2xlYXItZHJhZy1zdGF0ZS5odG1sIFsgRmFpbHVyZSBd
CiAjIE5lZWQgc3VwcG9ydCBmb3IgUmVzb3VyY2VIYW5kbGU6OmRpZENoYW5nZVByaW9yaXR5IGFu
ZCBEUlQgc3VwcG9ydAogd2Via2l0Lm9yZy9iLzExMTAxNiBodHRwL3Rlc3RzL2xvYWRpbmcvcHJv
bW90ZS1pbWctcHJlbG9hZC1wcmlvcml0eS5odG1sIFsgU2tpcCBdICMgQ3Jhc2gKIAotIyBUT0RP
IFNuYXBzaG90dGVkIHBsdWdpbnMgbm90IGVuYWJsZWQgb24gV0sxCi13ZWJraXQub3JnL2IvOTg2
OTYgcGx1Z2lucy9zbmFwc2hvdHRpbmcgWyBTa2lwIF0KLQogIyBUT0RPIEV4Y2x1ZGUgV2ViU1FM
IHRlc3RzOgogd2Via2l0Lm9yZy9iLzExNjU1OSBzdG9yYWdlL3dlYnNxbC8gWyBTa2lwIF0KIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
ZGRmYWE0Y2M0Njg3NDEwNzYxNWQ3Yzk1NzQ5MGVkNmE5ZGMzMDdmOC4uNTgwNWM3NzQ1MzdjZTdm
MDAzM2JkZjk1MGQ1YTkwODI0YzFjMzFiOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCkBAIC0zNzIsOSArMzcyLDYgQEAgc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L3BsdWdpbnMtdHlwZXMtYmxvY2tzLXlvdXR1YmUtcGx1Z2luLXJl
cGxhY2VtZW50LmgKICMgT3BlcmEtc3VibWl0dGVkIHRlc3RzIHRvIFczQyBmb3IgPHRyYWNrPiwg
YSBsb3Qgb2YgZmFpbHVyZXMgc3RpbGwuCiB3ZWJraXQub3JnL2IvMTAzOTI2IG1lZGlhL3RyYWNr
L29wZXJhIFsgU2tpcCBdCiAKLSMgU25hcHNob3R0ZWQgcGx1Z2lucyBub3QgZW5hYmxlZAotd2Vi
a2l0Lm9yZy9iLzk4Njk2IHBsdWdpbnMvc25hcHNob3R0aW5nIFsgU2tpcCBdCi0KICMgVE9ETyBJ
bXBvc3NpYmxlIHRvIHRlc3QgdGV4dC1vbmx5LXpvb20gZnJvbSBEUlQgb24gV2luZG93cwogd2Vi
a2l0Lm9yZy9iLzM1MDEzIHN2Zy96b29tL3RleHQvIFsgU2tpcCBdCiAKQEAgLTQ3OSw5ICs0NzYs
NiBAQCBmYXN0L3RleHQvdXNlci1pbnN0YWxsZWQtZm9udHMvc2hhZG93Lmh0bWwgWyBTa2lwIF0K
ICMgdGVzdFJ1bm5lci5kdW1wUG9saWN5RGVsZWdhdGVDYWxsYmFja3MgaXMgbm90IGEgZnVuY3Rp
b24KIGxvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzIFsg
U2tpcCBdCiAKLSMgdGVzdFJ1bm5lci5zZXRCbG9ja0FsbFBsdWdpbnMgaXMgbm90IGEgZnVuY3Rp
b24uCi1wbHVnaW5zL3VuYXZhaWxhYmxlLXBsdWdpbi1pbmRpY2F0b3Itb2JzY3VyaXR5Lmh0bWwg
WyBTa2lwIF0KLQogIyB0ZXN0UnVubmVyLnNldFBsdWdpblN1cHBvcnRlZE1vZGUgaXMgbm90IGEg
ZnVuY3Rpb24KIHBsdWdpbnMvdW5zdXBwb3J0ZWQtcGx1Z2luLmh0bWwgWyBTa2lwIF0KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktZG9taW5h
bnQtYmxhbmstcGx1Z2luLW1vdmVkLWludG8tdmlldy5odG1sIGIvTGF5b3V0VGVzdHMvcGx1Z2lu
cy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktZG9taW5hbnQtYmxhbmstcGx1Z2luLW1vdmVkLWludG8t
dmlldy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTViNGNkZmIxZTA0OGUw
YzY1MDljYjFlZmFhODQ5MDAwODM1MmIzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5
LWRvbWluYW50LWJsYW5rLXBsdWdpbi1tb3ZlZC1pbnRvLXZpZXcuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDIwICswLDAgQEAKLTxwPlRoaXMgdGVzdHMgdGhhdCBhIGRvbWluYW50IGJsYW5rIHBs
dWdpbiB0aGF0IHN0YXJ0cyBvZmYgc2NyZWVuIGFuZCBpcyBtb3ZlZCBpbiB0byB2aWV3IGF1dG9w
bGF5czwvcD4KLTxkaXYgaWQ9InJlc3VsdCI+RkFJTDwvZGl2PgotPHNjcmlwdD4KLSAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
Ci0gICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgdmFyIGVtYmVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInBsdWdpbiIpOwotICAgICAgICAgICAgZW1iZWQuc3R5bGUubGVmdCA9ICIwcHgiOwotICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHJl
c3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKLSAgICAgICAgICAgICAg
ICB2YXIgZW1iZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGx1Z2luIik7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFpbnRlcm5hbHMuaXNQbHVnaW5TbmFwc2hvdHRlZChlbWJlZCkpCi0gICAg
ICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lckhUTUwgPSAiUEFTUyI7Ci0gICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgICAgICAgICB9LCA1MDApOyAKLSAgICAg
ICAgfSwgNTAwICk7Ci0gICAgfQotPC9zY3JpcHQ+Ci08ZW1iZWQgaWQ9InBsdWdpbiIgc3JjPSIu
Li9yZXNvdXJjZXMvb3JhbmdlLm1vdiIgd2lkdGg9IjYwMCIgaGVpZ2h0PSI2MDAiIHN0eWxlPSJw
b3NpdGlvbjpyZWxhdGl2ZTsgbGVmdDotNjAwcHg7Ij48L2VtYmVkPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktZG9taW5hbnQuaHRtbCBiL0xh
eW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LWRvbWluYW50Lmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjMzE5ZjI2MjlmNDEzOGMwNjhjYzJmNjRkMWY5
YWU3ZGQ2NmUzYzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktZG9taW5hbnQuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLTxwPlRoaXMgdGVzdCdzIGRvbWluYW50
IHBsdWdpbiBzaG91bGQgcGxheSBhdXRvbWF0aWNhbGx5PC9wPgotPGRpdiBpZD0icmVzdWx0Ij5G
QUlMPC9kaXY+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgaW50ZXJu
YWxzLnNldHRpbmdzLnNldFBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQodHJ1ZSk7Ci0gICAgaW50
ZXJuYWxzLnNldHRpbmdzLnNldE1heGltdW1QbHVnSW5TbmFwc2hvdEF0dGVtcHRzKDApOwotICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewotICAgICAgICB2YXIgcmVzdWx0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOwotICAgICAgICB2YXIgZW1iZWQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicGx1Z2luIik7Ci0gICAgICAgIGlmICghaW50ZXJuYWxzLmlz
UGx1Z2luU25hcHNob3R0ZWQoZW1iZWQpKQotICAgICAgICAgICAgcmVzdWx0LmlubmVySFRNTCA9
ICJQQVNTIjsKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSwgMTAwMCk7
Ci19Ci08L3NjcmlwdD4KLTxlbWJlZCBpZD0icGx1Z2luIiBzcmM9Ii4uL3Jlc291cmNlcy9vcmFu
Z2UubW92IiB3aWR0aD0iNjAwIiBoZWlnaHQ9IjYwMCI+PC9lbWJlZD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXBsdWdpbi1ibG9ja2VkLWJ5
LWltYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1w
bHVnaW4tYmxvY2tlZC1ieS1pbWFnZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjMWU0OGViOTc0OTY2YjM5ODg0MjQ3ZDk5MDhhYjViOTVkZmQ1MDZkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsdWdpbnMvc25h
cHNob3R0aW5nL2F1dG9wbGF5LXBsdWdpbi1ibG9ja2VkLWJ5LWltYWdlLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxOSArMCwwIEBACi08cD5UaGlzIHRlc3RzIHRoYXQgYSBkb21pbmFudCBwbHVn
aW4gc2hvdWxkIHBsYXkgYXV0b21hdGljYWxseSBldmVuIGlmIGFuIGltYWdlIGlzIG9uIHRvcCBv
ZiB0aGUgcGx1Z2luLjwvcD4KLTxkaXYgaWQ9InJlc3VsdCI+RkFJTDwvZGl2PgotPHNjcmlwdD4K
LWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRQbHVn
SW5TbmFwc2hvdHRpbmdFbmFibGVkKHRydWUpOwotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRN
YXhpbXVtUGx1Z0luU25hcHNob3RBdHRlbXB0cygwKTsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uICgpIHsKLSAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQiKTsKLSAgICAgICAgdmFyIGVtYmVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InBsdWdpbiIpOwotICAgICAgICBpZiAoIWludGVybmFscy5pc1BsdWdpblNuYXBzaG90dGVkKGVt
YmVkKSkKLSAgICAgICAgICAgIHJlc3VsdC5pbm5lckhUTUwgPSAiUEFTUyI7Ci0gICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIDEwMDApOwotfQotPC9zY3JpcHQ+Ci08ZW1i
ZWQgaWQ9InBsdWdpbiIgc3JjPSIuLi9yZXNvdXJjZXMvb3JhbmdlLm1vdiIgd2lkdGg9IjYwMCIg
aGVpZ2h0PSI2MDAiPjwvZW1iZWQ+Ci08aW1nIHNyYz0iLi4vcmVzb3VyY2VzL2FwcGxlLmdpZiIg
d2lkdGg9IjYwMCIgaGVpZ2h0PSI2MDAiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjYw
cHg7IGxlZnQ6MHB4OyI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90
dGluZy9hdXRvcGxheS1wbHVnaW4tbW9zdGx5LWJsb2NrZWQtYnktaW1hZ2UuaHRtbCBiL0xheW91
dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXBsdWdpbi1tb3N0bHktYmxvY2tl
ZC1ieS1pbWFnZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDYyODY2NTlh
OTVkNWZiOGY0MTkyNGRjNTc1MmRjNjMxZjM1NjdjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1
dG9wbGF5LXBsdWdpbi1tb3N0bHktYmxvY2tlZC1ieS1pbWFnZS5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTkgKzAsMCBAQAotPHA+VGhpcyB0ZXN0cyB0aGF0IGEgZG9taW5hbnQgcGx1Z2luIHNo
b3VsZCBwbGF5IGF1dG9tYXRpY2FsbHkgaWYgYW4gaW1hZ2UgaXMgbW9zdGx5IG9uIHRvcCBvZiB0
aGUgcGx1Z2luLjwvcD4KLTxkaXYgaWQ9InJlc3VsdCI+RkFJTDwvZGl2PgotPHNjcmlwdD4KLWlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRQbHVnSW5T
bmFwc2hvdHRpbmdFbmFibGVkKHRydWUpOwotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRNYXhp
bXVtUGx1Z0luU25hcHNob3RBdHRlbXB0cygwKTsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uICgpIHsKLSAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQiKTsKLSAgICAgICAgdmFyIGVtYmVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBs
dWdpbiIpOwotICAgICAgICBpZiAoIWludGVybmFscy5pc1BsdWdpblNuYXBzaG90dGVkKGVtYmVk
KSkKLSAgICAgICAgICAgIHJlc3VsdC5pbm5lckhUTUwgPSAiUEFTUyI7Ci0gICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIDEwMDApOwotfQotPC9zY3JpcHQ+Ci08ZW1iZWQg
aWQ9InBsdWdpbiIgc3JjPSIuLi9yZXNvdXJjZXMvb3JhbmdlLm1vdiIgd2lkdGg9IjYwMCIgaGVp
Z2h0PSI2MDAiPjwvZW1iZWQ+Ci08aW1nIHNyYz0iLi4vcmVzb3VyY2VzL2FwcGxlLmdpZiIgd2lk
dGg9IjYwMCIgaGVpZ2h0PSI2MDAiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjQ1cHg7
IGxlZnQ6MHB4OyI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGlu
Zy9hdXRvcGxheS1zaW1pbGFyLXRvLWRvbWluYW50LWFmdGVyLWRlbGF5Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1zaW1pbGFyLXRvLWRvbWluYW50LWFm
dGVyLWRlbGF5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhOWU0MDgxZjM3
ODY0NDEzZjI0YmQyMjcyMDg3ZmI1ZWI2NDIzMjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0
b3BsYXktc2ltaWxhci10by1kb21pbmFudC1hZnRlci1kZWxheS5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMjcgKzAsMCBAQAotPHA+VGhlIGRvbWluYW50IHBsdWdpbiBzaG91bGQgcGxheSBhdXRv
bWF0aWNhbGx5LCBhbmQgdGhlbiBzbyBzaG91bGQgdGhlIGlkZW50aWNhbCBwbHVnaW4gdGhhdCBp
cyBhZGRlZCBhIGJpdCBsYXRlci48L3A+Ci08ZGl2IGlkPSJyZXN1bHQiPkZBSUw8L2Rpdj4KLTxz
Y3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICBpbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCh0cnVlKTsKLSAgICBpbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0TWF4aW11bVBsdWdJblNuYXBzaG90QXR0ZW1wdHMoMCk7Ci0gICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgc2V0VGlt
ZW91dChmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKLSAgICAgICAgZGl2LmlubmVySFRNTCA9ICc8ZW1iZWQgaWQ9InBsdWdpbjIi
IHNyYz0iLi4vcmVzb3VyY2VzL2xpbmVzLnN3ZiIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiPjwv
ZW1iZWQ+JzsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOwotICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHZhciByZXN1bHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7Ci0gICAgICAgICAgICB2YXIgZW1iZWQxID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBsdWdpbjEiKTsKLQkJCXZhciBlbWJlZDIgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicGx1Z2luMiIpOwotICAgICAgICAgICAgaWYgKCEoaW50ZXJu
YWxzLmlzUGx1Z2luU25hcHNob3R0ZWQoZW1iZWQxKQotICAgICAgICAgICAgICAgIHx8IGludGVy
bmFscy5pc1BsdWdpblNuYXBzaG90dGVkKGVtYmVkMikpKQotICAgICAgICAgICAgICAgIHJlc3Vs
dC5pbm5lckhUTUwgPSAiUEFTUyI7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLSAgICAgICAgfSwgMTAwMCk7Ci0gICAgfSwgNTAwKTsKLX0KLTwvc2NyaXB0PgotPGRpdj4K
LTxlbWJlZCBpZD0icGx1Z2luMSIgc3JjPSIuLi9yZXNvdXJjZXMvbGluZXMuc3dmIiB3aWR0aD0i
NjAwIiBoZWlnaHQ9IjYwMCI+PC9lbWJlZD4KLTwvZGl2PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktc2ltaWxhci10by1kb21pbmFudC5odG1s
IGIvTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktc2ltaWxhci10by1k
b21pbmFudC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDI4OTllYzYzY2Q3
M2I5YzM4ODhkZGE1ZDg5YWM5MzY3MzQyMWZjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9w
bGF5LXNpbWlsYXItdG8tZG9taW5hbnQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAg
QEAKLTxwPlRoZSBkb21pbmFudCBwbHVnaW4gc2hvdWxkIHBsYXkgYXV0b21hdGljYWxseSwgYW5k
IHRyaWdnZXIgYWxsIHRoZSBvdGhlcnMgdG8gcGxheSBhcyB3ZWxsLCBzaW5jZSB0aGV5IGFyZSB0
aGUgc2FtZSBvcmlnaW4uPC9wPgotPGRpdiBpZD0icmVzdWx0Ij5GQUlMPC9kaXY+Ci08c2NyaXB0
PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFBs
dWdJblNuYXBzaG90dGluZ0VuYWJsZWQodHJ1ZSk7Ci0gICAgaW50ZXJuYWxzLnNldHRpbmdzLnNl
dE1heGltdW1QbHVnSW5TbmFwc2hvdEF0dGVtcHRzKDApOwotICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24gKCkgewotICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlc3VsdCIpOwotICAgICAgICB2YXIgZW1iZWQxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInBsdWdpbjEiKTsKLSAgICAgICAgdmFyIGVtYmVkMiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJwbHVnaW4yIik7Ci0gICAgICAgIGlmICghaW50ZXJuYWxzLmlzUGx1Z2luU25hcHNob3R0
ZWQoZW1iZWQxKQotICAgICAgICAgICAgJiYgIWludGVybmFscy5pc1BsdWdpblNuYXBzaG90dGVk
KGVtYmVkMikpCi0gICAgICAgIAlyZXN1bHQuaW5uZXJIVE1MID0gIlBBU1MiOwotICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCAxMDAwKTsKLX0KLTwvc2NyaXB0PgotPHA+
Ci08ZW1iZWQgaWQ9InBsdWdpbjEiIHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QubW92IiB3aWR0aD0i
NDAwIiBoZWlnaHQ9IjQwMCI+PC9lbWJlZD4KLTwvcD4KLTxwPgotPGVtYmVkIGlkPSJwbHVnaW4y
IiBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0Lm1vdiIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIj48L2Vt
YmVkPgotPC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcv
ZGV0ZXJtaW5lLXByaW1hcnktc25hcHNob3R0ZWQtcGx1Z2luLWNyYXNoLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL2RldGVybWluZS1wcmltYXJ5LXNuYXBz
aG90dGVkLXBsdWdpbi1jcmFzaC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDA4MDg4ODJiZmJmY2VhN2ViOTdhMjgyZTQ3M2NmMzM0MjhmZmUwNTYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGx1Z2lu
cy9zbmFwc2hvdHRpbmcvZGV0ZXJtaW5lLXByaW1hcnktc25hcHNob3R0ZWQtcGx1Z2luLWNyYXNo
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotVGhpcyB0ZXN0cyBk
ZXRlcm1pbmluZyB0aGUgcHJpbWFyeSBzbmFwc2hvdHRlZCBwbHVnaW4gZG9lcyBub3QgaGl0IGFu
IGFzc2VydGlvbi4KLQotUEFTUwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbHVnaW5zL3Nu
YXBzaG90dGluZy9kZXRlcm1pbmUtcHJpbWFyeS1zbmFwc2hvdHRlZC1wbHVnaW4tY3Jhc2guaHRt
bCBiL0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL2RldGVybWluZS1wcmltYXJ5LXNu
YXBzaG90dGVkLXBsdWdpbi1jcmFzaC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBhZmU1MmUyNGU3YWNiMGI3MmI0MTY5ZGJhZWQ0M2FhNjc2N2JmMDllLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsdWdpbnMvc25h
cHNob3R0aW5nL2RldGVybWluZS1wcmltYXJ5LXNuYXBzaG90dGVkLXBsdWdpbi1jcmFzaC5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4K
LTxib2R5PgotPHA+VGhpcyB0ZXN0cyBkZXRlcm1pbmluZyB0aGUgcHJpbWFyeSBzbmFwc2hvdHRl
ZCBwbHVnaW4gZG9lcyBub3QgaGl0IGFuIGFzc2VydGlvbi48L3A+Ci08ZGl2IGlkPSJyZXN1bHQi
PkZBSUw8L2Rpdj4KLTxlbWJlZCBpZD0idGVzdFBsdWdpbiIgc3JjPSJ3ZWJraXQtdGVzdC1uZXRz
Y2FwZSIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSI+PC9lbWJlZD4K
LTxzY3JpcHQ+Ci1pZiAoIXdpbmRvdy50ZXN0UnVubmVyKQotICAgIHJlc3VsdC50ZXh0Q29udGVu
dCA9ICdUaGlzIHRlc3QgcmVxdWlyZXMgV2ViS2l0VGVzdFJ1bm5lci4nOwotZWxzZSB7Ci0gICAg
aW50ZXJuYWxzLnNldHRpbmdzLnNldFBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQodHJ1ZSk7Ci0g
ICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldE1heGltdW1QbHVnSW5TbmFwc2hvdEF0dGVtcHRzKDAp
OwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwotICAgIHNldFRpbWVvdXQoKCkgPT4gewotICAgICAgICBjb25zdCB0ZXN0UGx1Z2lu
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RQbHVnaW4iKTsKLSAgICAgICAgaWYgKGlu
dGVybmFscy5pc1BsdWdpblNuYXBzaG90dGVkKHRlc3RQbHVnaW4pKQotICAgICAgICAgICAgcmVz
dWx0LnRleHRDb250ZW50ID0gJ1BBU1MnOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1
bHQudGV4dENvbnRlbnQgPSAnRkFJTCAtIG5vdCBzbmFwc2hvdCc7Ci0gICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIDUwMCk7Ci19Ci0KLTwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvcGx1Z2luLXJlY2VpdmVzLWNsaWNr
LWV2ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9wbHVnaW4tcmVj
ZWl2ZXMtY2xpY2stZXZlbnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzIz
YjRiNGFlZDY0OTIzMzhhMmUxZDZlYjdlZTk5ODU2YTQ0YWZhZC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90
dGluZy9wbHVnaW4tcmVjZWl2ZXMtY2xpY2stZXZlbnQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDI2ICswLDAgQEAKLTxlbWJlZCBpZD0icGx1Z2luIiBzcmM9Ii4uL3Jlc291cmNlcy9vcmFuZ2Uu
bW92Ij48L2VtYmVkPgotPGRpdiBpZD0icmVzdWx0Ij5GQUlMLCBwbHVnaW4gZGlkIG5vdCByZWNl
aXZlIG1vdXNlIGNsaWNrIGV2ZW50LjwvZGl2PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1
bm5lcikgewotICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0UGx1Z0luU25hcHNob3R0
aW5nRW5hYmxlZCh0cnVlKTsKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldE1heGlt
dW1QbHVnSW5TbmFwc2hvdEF0dGVtcHRzKDApOwotCXZhciBlbWJlZCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJwbHVnaW4iKTsKLQl2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlc3VsdCIpOwotCWVtYmVkLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7
Ci0JCWRpdi5pbm5lckhUTUwgPSAiUEFTUywgcGx1Z2luIGRpZCByZWNlaXZlIG1vdXNlIGNsaWNr
IGV2ZW50LiI7Ci0JCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotCQl9KTsKLQl0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKLSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICB2
YXIgZW1iZWQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJlbWJlZCIpOwotICAgICAgICB2YXIg
cmVjdCA9IGVtYmVkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhyZWN0LmxlZnQgKyAxMCwgcmVjdC50b3AgKyAxMCk7Ci0gICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlRG93bigpOwotICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Ci0g
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLSAgICAgICAgfSwgNTAwKTsKLSAgICB9LCA1MDApOwotCXRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwotfQotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbHVn
aW5zL3NuYXBzaG90dGluZy9wcmludC1zbmFwc2hvdHRlZC1wbHVnaW4tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvcHJpbnQtc25hcHNob3R0ZWQtcGx1Z2lu
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc1NTdlZDNhN2Qy
OTNhYWFkMjk1M2NkOWMxOTcwYTA5NzhlMjE1ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9wcmlu
dC1zbmFwc2hvdHRlZC1wbHVnaW4tZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEgKzAs
MCBAQAotVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHByaW50aW5nIGEgc25hcHNob3R0ZWQgcGx1Z2lu
IHdpdGggdGV4dCBjaGlsZHJlbiBkb2VzIG5vdCBjcmFzaCBvciBjYXVzZSBhc3NlcnRpb24gZmFp
bHVyZXMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9wcmlu
dC1zbmFwc2hvdHRlZC1wbHVnaW4uaHRtbCBiL0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0
aW5nL3ByaW50LXNuYXBzaG90dGVkLXBsdWdpbi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBiNjFmYTk1ZTY2NTM5MWNhMDIyMWJlN2FkMWZkZDA5N2IyZmI2ZjAwLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsdWdp
bnMvc25hcHNob3R0aW5nL3ByaW50LXNuYXBzaG90dGVkLXBsdWdpbi5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMjkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08c2NyaXB0PgotaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7Ci0gICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFBsdWdJblNuYXBzaG90
dGluZ0VuYWJsZWQodHJ1ZSk7Ci0gICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldE1heGltdW1QbHVn
SW5TbmFwc2hvdEF0dGVtcHRzKDApOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwot
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotfSAgICAgCi08L3NjcmlwdD4KLQotVGhpcyB0
ZXN0IGNoZWNrcyB0aGF0IHByaW50aW5nIGEgc25hcHNob3R0ZWQgcGx1Z2luIHdpdGggdGV4dCBj
aGlsZHJlbgotZG9lcyBub3QgY3Jhc2ggb3IgY2F1c2UgYXNzZXJ0aW9uIGZhaWx1cmVzLgotCi08
b2JqZWN0ICBpZD0iZm9vIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgZGF0
YT0iLi4vcmVzb3VyY2VzL2xpbmVzLnN3ZiI+Ci0gPC9vYmplY3Q+Ci0KLTxzY3JpcHQ+Ci1mdW5j
dGlvbiBib29tKCkKLXsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgdGVz
dFJ1bm5lci5zZXRQcmludGluZygpOwotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LSAgICB9IGVsc2UgewotICAgICAgICB3aW5kb3cucHJpbnQoKTsKLSAgICB9Ci19Ci1zZXRUaW1l
b3V0KGJvb20sIDMwMDApOwotPC9zY3JpcHQ+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
dWdpbnMvc25hcHNob3R0aW5nL3F1aWNrdGltZS1wbHVnaW4tc25hcHNob3R0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL3F1aWNrdGltZS1wbHVnaW4tc25hcHNob3R0
ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE0YjU0MTQyMmU4ODFlYTJm
N2JhMGZkYmNiNWVmOTZhZWIyZDYwZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9xdWlja3RpbWUt
cGx1Z2luLXNuYXBzaG90dGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi08
cD5UaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHF1aWNrdGltZSBwbHVnaW5zIGNhbiBhbHNvIGJlIHNu
YXBzaG90dGVkLiAKLVdlIG1ha2UgdGhlIHBsdWdpbiBoZXJlIHRvbyBzbWFsbCB0byBiZSB0aGUg
cHJpbWFyeSBwbHVnaW4sIHRodXMgaXQgc2hvdWxkIGdldCBzbmFwc2hvdHRlZC48L3A+Ci08ZGl2
IGlkPSJyZXN1bHQiPkZBSUw8L2Rpdj4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKLSAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCh0
cnVlKTsKLSAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0TWF4aW11bVBsdWdJblNuYXBzaG90QXR0
ZW1wdHMoMCk7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7Ci0gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHZh
ciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7Ci0gICAgICAgIHZh
ciBlbWJlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwbHVnaW4iKTsKLSAgICAgICAgaWYg
KGludGVybmFscy5pc1BsdWdpblNuYXBzaG90dGVkKGVtYmVkKSkKLSAgICAgICAgICAgIHJlc3Vs
dC5pbm5lckhUTUwgPSAiUEFTUyI7Ci0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwot
ICAgIH0sIDUwMCk7Ci19Ci08L3NjcmlwdD4KLTxlbWJlZCBpZD0icGx1Z2luIiBzcmM9Ii4uL3Jl
c291cmNlcy9vcmFuZ2UubW92IiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+PC9lbWJlZD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL3Jlc3RhcnQuaHRtbCBi
L0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL3Jlc3RhcnQuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZTJiNjU5NzNjYzEzYmM5MDQ2Nzk4NDEwMzljMGI2ZWRmYzlk
NTc5YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9yZXN0YXJ0Lmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwyNSArMCwwIEBACi08cD5UaGlzIHRlc3QgZm9yY2VzIGEgcGx1Z2luIHRvIHNuYXBzaG90
IGltbWVkaWF0ZWx5LCB0aGVuIHRyaWVzIHRvIHJlc3RhcnQgaXQuPC9wPgotPGRpdiBpZD0icmVz
dWx0Ij5GQUlMPC9kaXY+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAg
aW50ZXJuYWxzLnNldHRpbmdzLnNldFBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQodHJ1ZSk7Ci0g
ICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldE1heGltdW1QbHVnSW5TbmFwc2hvdEF0dGVtcHRzKDAp
OwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewotICAgICAgICB2YXIgZW1iZWQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGx1Z2luIik7Ci0gICAgICAgIHZhciByZWN0ID0g
ZW1iZWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Ci0gICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHJlY3QubGVmdCArIDEwLCByZWN0LnRvcCArIDEwKTsKLSAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VEb3duKCk7Ci0gICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKLSAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOwotICAgICAgICAgICAgdmFyIGVtYmVkID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBsdWdpbiIpOwotICAgICAgICAgICAgaWYgKCFpbnRlcm5h
bHMuaXNQbHVnaW5TbmFwc2hvdHRlZChlbWJlZCkpCi0gICAgICAgICAgICAgICAgcmVzdWx0Lmlu
bmVySFRNTCA9ICJQQVNTIjsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwot
ICAgICAgICB9LCAxMDAwKTsKLSAgICB9LCAxMDAwKTsKLX0KLTwvc2NyaXB0PgotPGVtYmVkIGlk
PSJwbHVnaW4iIHNyYz0iLi4vcmVzb3VyY2VzL29yYW5nZS5tb3YiPjwvZW1iZWQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9zZXQtcGx1Z2luLXNpemUtdG8t
dGlueS5odG1sIGIvTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvc2V0LXBsdWdpbi1z
aXplLXRvLXRpbnkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjEzZmRiMjQz
YjUyYjAxNTkzZTQ0ZTUzYTk1MjFkOTBkMzczNmM0Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9z
ZXQtcGx1Z2luLXNpemUtdG8tdGlueS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBA
QAotPHA+VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBpZiB3ZSBoYXZlIHNldCBhIHBsdWdpbiB0byBi
ZSB0b28gc21hbGwgYWZ0ZXIgdGhlIGluaXRpYWwgbG9hZCB0aGF0IGl0IHN0aWxsIGdldHMgcGxh
eWVkLjwvcD4KLTxwPkFsc28gZW5zdXJlIHRoYXQgdGhlIHBsdWdpbiByZW1haW5zIHNuYXBzaG90
dGVkIGlmIHRoZSBzaXplIHdhcyBpbml0aWFsbHkgc3BlY2lmaWVkIGJ1dCBtYWRlIHRvbyBzbWFs
bCBhZnRlcndhcmRzLjwvcD4KLTxkaXYgaWQ9InJlc3VsdCI+RkFJTDwvZGl2PgotPHNjcmlwdD4K
LWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRQbHVn
SW5TbmFwc2hvdHRpbmdFbmFibGVkKHRydWUpOwotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRN
YXhpbXVtUGx1Z0luU25hcHNob3RBdHRlbXB0cygwKTsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uICgpIHsKLSAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQiKTsKLSAgICAgICAgdmFyIGVtYmVkMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJwbHVnaW4xIik7Ci0gICAgICAgIGVtYmVkMS5zdHlsZS53aWR0aCA9IDQwOwotICAgICAgICBl
bWJlZDEuc3R5bGUuaGVpZ2h0ID0gNDA7Ci0gICAgICAgIHZhciBlbWJlZDIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicGx1Z2luMiIpOwotICAgICAgICBlbWJlZDIuc3R5bGUud2lkdGggPSA0
MDsKLSAgICAgICAgZW1iZWQyLnN0eWxlLmhlaWdodCA9IDQwOwotICAgICAgICBpZiAoIWludGVy
bmFscy5pc1BsdWdpblNuYXBzaG90dGVkKGVtYmVkMSkgJiYgaW50ZXJuYWxzLmlzUGx1Z2luU25h
cHNob3R0ZWQoZW1iZWQyKSkKLSAgICAgICAgICAgIHJlc3VsdC5pbm5lckhUTUwgPSAiUEFTUyI7
Ci0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIDEwMDApOwotfQotPC9z
Y3JpcHQ+Ci08ZW1iZWQgaWQ9InBsdWdpbjEiIHNyYz0iLi4vcmVzb3VyY2VzL29yYW5nZS5tb3Yi
PjwvZW1iZWQ+Ci08ZW1iZWQgaWQ9InBsdWdpbjIiIHNyYz0iLi4vcmVzb3VyY2VzL29yYW5nZS5t
b3YiIHN0eWxlPSJ3aWR0aDo1MHB4OyBoZWlnaHQ6NTBweCI+PC9lbWJlZD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL3NpbXBsZS5odG1sIGIvTGF5b3V0VGVz
dHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvc2ltcGxlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDk4ZTk4ZDYzMzhiY2M2NGQyOGNjYjAwMzlkMjY2ZGI2NmU3MDExYjQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGx1
Z2lucy9zbmFwc2hvdHRpbmcvc2ltcGxlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCww
IEBACi08cD5UaGlzIHRlc3QgZm9yY2VzIGEgcGx1Z2luIHRvIHNuYXBzaG90IGltbWVkaWF0ZWx5
PC9wPgotPGRpdiBpZD0icmVzdWx0Ij5GQUlMPC9kaXY+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7Ci0gICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFBsdWdJblNuYXBzaG90dGlu
Z0VuYWJsZWQodHJ1ZSk7Ci0gICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldE1heGltdW1QbHVnSW5T
bmFwc2hvdEF0dGVtcHRzKDApOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewot
ICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOwot
ICAgICAgICB2YXIgZW1iZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGx1Z2luIik7Ci0g
ICAgICAgIGlmIChpbnRlcm5hbHMuaXNQbHVnaW5TbmFwc2hvdHRlZChlbWJlZCkpCi0gICAgICAg
ICAgICByZXN1bHQuaW5uZXJIVE1MID0gIlBBU1MiOwotICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKLSAgICB9LCAxMDAwKTsKLX0KLTwvc2NyaXB0PgotPGVtYmVkIGlkPSJwbHVnaW4i
IHNyYz0iLi4vcmVzb3VyY2VzL29yYW5nZS5tb3YiPjwvZW1iZWQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9zbmFwc2hvdC1wbHVnaW4tbm90LXF1aXRlLWJs
b2NrZWQtYnktaW1hZ2UuaHRtbCBiL0xheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL3Nu
YXBzaG90LXBsdWdpbi1ub3QtcXVpdGUtYmxvY2tlZC1ieS1pbWFnZS5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiYTIwNjE3OGI0NWRhYTc4MGE4ODNmOTNmMzRmNjFmOTMyYTgw
MDkwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL3NuYXBzaG90LXBsdWdpbi1ub3QtcXVpdGUtYmxv
Y2tlZC1ieS1pbWFnZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotPHAgc3R5
bGUgPSAid2hpdGUtc3BhY2U6IG5vd3JhcDsiPlRoaXMgdGVzdHMgdGhhdCBhIHBsdWdpbiBzaG91
bGQgYmUgc25hcHNob3R0ZWQgaWYgaXQgaXMgcGFydGlhbGx5IGNvdmVyZWQgYnkgYW4gaW1hZ2Ug
YnV0IG5vdCBlbm91Z2ggdG8gYmUgY29uc2lkZXJlZCBibG9ja2luZy48L3A+Ci08cD4gSXQgYWRk
aXRpb25hbGx5IHRlc3RzIHRoYXQgd2UgdGFrZSB0cmFuc2Zvcm1zIGludG8gYWNjb3VudC4gPC9w
PgotPGRpdiBpZD0icmVzdWx0Ij5GQUlMPC9kaXY+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7Ci0gICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFBsdWdJblNuYXBzaG90dGluZ0Vu
YWJsZWQodHJ1ZSk7Ci0gICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldE1heGltdW1QbHVnSW5TbmFw
c2hvdEF0dGVtcHRzKDApOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewotICAg
ICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOwotICAg
ICAgICB2YXIgZW1iZWQxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBsdWdpbjEiKTsKLSAg
ICAgICAgdmFyIGVtYmVkMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwbHVnaW4yIik7Ci0g
ICAgICAgIGlmIChpbnRlcm5hbHMuaXNQbHVnaW5TbmFwc2hvdHRlZChlbWJlZDEpICYmIGludGVy
bmFscy5pc1BsdWdpblNuYXBzaG90dGVkKGVtYmVkMikpCi0gICAgICAgICAgICByZXN1bHQuaW5u
ZXJIVE1MID0gIlBBU1MiOwotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9
LCAxNTAwKTsKLX0KLTwvc2NyaXB0PgotPGVtYmVkIGlkPSJwbHVnaW4xIiBzcmM9Ii4uL3Jlc291
cmNlcy9vcmFuZ2UubW92IiB3aWR0aD0iNjAwIiBoZWlnaHQ9IjYwMCI+PC9lbWJlZD4KLTxpbWcg
c3JjPSIuLi9yZXNvdXJjZXMvYXBwbGUuZ2lmIiB3aWR0aD0iNjAwIiBoZWlnaHQ9IjYwMCIgc3R5
bGU9InBvc2l0aW9uOmFic29sdXRlOyB0b3A6MjVweDsgbGVmdDowcHgiPgotPGJyPgotPGVtYmVk
IGlkPSJwbHVnaW4yIiBzcmM9Ii4uL3Jlc291cmNlcy9vcmFuZ2UubW92IiB3aWR0aD0iNjAwIiBo
ZWlnaHQ9IjYwMCI+PC9lbWJlZD4KLTxpbWcgc3JjPSIuLi9yZXNvdXJjZXMvYXBwbGUuZ2lmIiB3
aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9Ii13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0
ZSgyMDBweCwtNTAwcHgpIj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsdWdpbnMvdW5hdmFp
bGFibGUtcGx1Z2luLWluZGljYXRvci1vYnNjdXJpdHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGx1Z2lucy91bmF2YWlsYWJsZS1wbHVnaW4taW5kaWNhdG9yLW9ic2N1cml0eS1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwY2YxODU2NTkyODU3MGIxOGIw
YTExYWNiMDVjN2RmODNkNGYzNzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGx1Z2lucy91bmF2YWlsYWJsZS1wbHVnaW4taW5kaWNh
dG9yLW9ic2N1cml0eS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBA
Ci1FeHBlY3RlZCB0byBiZSBvYnNjdXJlZDoKLSd0b29TbWFsbCcgd2FzIG9ic2N1cmVkOiB0cnVl
IChleHBlY3RlZCB0cnVlOyBQQVNTKQotJ2VtcHR5UmVjdCcgd2FzIG9ic2N1cmVkOiB0cnVlIChl
eHBlY3RlZCB0cnVlOyBQQVNTKQotJ2xvd09wYWNpdHknIHdhcyBvYnNjdXJlZDogdHJ1ZSAoZXhw
ZWN0ZWQgdHJ1ZTsgUEFTUykKLSdsb3dPcGFjaXR5UGFyZW50JyB3YXMgb2JzY3VyZWQ6IHRydWUg
KGV4cGVjdGVkIHRydWU7IFBBU1MpCi0nc3RhY2tlZExvd09wYWNpdHlQYXJlbnRzJyB3YXMgb2Jz
Y3VyZWQ6IHRydWUgKGV4cGVjdGVkIHRydWU7IFBBU1MpCi0nY2xpcHBlZEJ5UGFyZW50JyB3YXMg
b2JzY3VyZWQ6IHRydWUgKGV4cGVjdGVkIHRydWU7IFBBU1MpCi0ndmlzaWJpbGl0eUhpZGRlbicg
d2FzIG9ic2N1cmVkOiB0cnVlIChleHBlY3RlZCB0cnVlOyBQQVNTKQotJ3Zpc2liaWxpdHlIaWRk
ZW5PblBhcmVudCcgd2FzIG9ic2N1cmVkOiB0cnVlIChleHBlY3RlZCB0cnVlOyBQQVNTKQotJ3Bv
aW50ZXJFdmVudHNCbG9ja2VkJyB3YXMgb2JzY3VyZWQ6IHRydWUgKGV4cGVjdGVkIHRydWU7IFBB
U1MpCi0ncG9pbnRlckV2ZW50c0Jsb2NrZWRPblBhcmVudCcgd2FzIG9ic2N1cmVkOiB0cnVlIChl
eHBlY3RlZCB0cnVlOyBQQVNTKQotJ3BvaW50ZXJFdmVudHNCbG9ja2VkT25PYnNjdXJpbmdTaWJs
aW5nJyB3YXMgb2JzY3VyZWQ6IGZhbHNlIChleHBlY3RlZCB0cnVlOyBGQUlMKQotJ2xlZnRIYWxm
T2JzY3VyZWQnIHdhcyBvYnNjdXJlZDogdHJ1ZSAoZXhwZWN0ZWQgdHJ1ZTsgUEFTUykKLSdyaWdo
dEhhbGZPYnNjdXJlZCcgd2FzIG9ic2N1cmVkOiB0cnVlIChleHBlY3RlZCB0cnVlOyBQQVNTKQot
J3RvcEhhbGZPYnNjdXJlZCcgd2FzIG9ic2N1cmVkOiB0cnVlIChleHBlY3RlZCB0cnVlOyBQQVNT
KQotJ2JvdHRvbUhhbGZPYnNjdXJlZCcgd2FzIG9ic2N1cmVkOiB0cnVlIChleHBlY3RlZCB0cnVl
OyBQQVNTKQotJ2NlbnRlck9ic2N1cmVkJyB3YXMgb2JzY3VyZWQ6IHRydWUgKGV4cGVjdGVkIHRy
dWU7IFBBU1MpCi0nb2ZmU2NyZWVuVG9wTGVmdCcgd2FzIG9ic2N1cmVkOiB0cnVlIChleHBlY3Rl
ZCB0cnVlOyBQQVNTKQotJ29mZlNjcmVlblRvcCcgd2FzIG9ic2N1cmVkOiB0cnVlIChleHBlY3Rl
ZCB0cnVlOyBQQVNTKQotJ29mZlNjcmVlbkxlZnQnIHdhcyBvYnNjdXJlZDogdHJ1ZSAoZXhwZWN0
ZWQgdHJ1ZTsgUEFTUykKLSdvdmVyZmxvd1Njcm9sbE9ic2N1cmVkJyB3YXMgb2JzY3VyZWQ6IHRy
dWUgKGV4cGVjdGVkIHRydWU7IFBBU1MpCi0nc21hbGxJRnJhbWUnIHdhcyBvYnNjdXJlZDogdHJ1
ZSAoZXhwZWN0ZWQgdHJ1ZTsgUEFTUykKLQotRXhwZWN0ZWQgdG8gbm90IGJlIG9ic2N1cmVkOgot
J2xhcmdlJyB3YXMgb2JzY3VyZWQ6IGZhbHNlIChleHBlY3RlZCBmYWxzZTsgUEFTUykKLSdzdGFj
a2VkSGlnaE9wYWNpdHlQYXJlbnRzJyB3YXMgb2JzY3VyZWQ6IGZhbHNlIChleHBlY3RlZCBmYWxz
ZTsgUEFTUykKLSdub3RDbGlwcGVkQnlQYXJlbnQnIHdhcyBvYnNjdXJlZDogZmFsc2UgKGV4cGVj
dGVkIGZhbHNlOyBQQVNTKQotJ3RvcFF1YXJ0ZXJPYnNjdXJlZCcgd2FzIG9ic2N1cmVkOiBmYWxz
ZSAoZXhwZWN0ZWQgZmFsc2U7IFBBU1MpCi0nYm90dG9tUXVhcnRlck9ic2N1cmVkJyB3YXMgb2Jz
Y3VyZWQ6IGZhbHNlIChleHBlY3RlZCBmYWxzZTsgUEFTUykKLSdsYXJnZUlGcmFtZScgd2FzIG9i
c2N1cmVkOiBmYWxzZSAoZXhwZWN0ZWQgZmFsc2U7IFBBU1MpCi0KLVBhc3NlZCBhbGwgdGVzdHM6
IGZhbHNlCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsdWdpbnMvdW5hdmFpbGFibGUtcGx1
Z2luLWluZGljYXRvci1vYnNjdXJpdHkuaHRtbCBiL0xheW91dFRlc3RzL3BsdWdpbnMvdW5hdmFp
bGFibGUtcGx1Z2luLWluZGljYXRvci1vYnNjdXJpdHkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNjY1YWU5ZDgwNGEyZThlY2EzNTM5YjY1NzAwNTVjNWU1ODU3N2UzZS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9w
bHVnaW5zL3VuYXZhaWxhYmxlLXBsdWdpbi1pbmRpY2F0b3Itb2JzY3VyaXR5Lmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNzQgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLSAgICA8dGl0bGU+VGVz
dCB0aGF0IHRoZSBwbHVnaW4gdW5hdmFpbGFiaWxpdHkgaW5kaWNhdG9yIGFjY3VyYXRlbHkga25v
d3MgaWYgaXQncyBjbGlwcGVkLjwvdGl0bGU+Ci0gICAgPHNjcmlwdD4KLSAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRCbG9ja0FsbFBsdWdpbnModHJ1
ZSk7Ci0gICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBsb2codGV4dCkgewotICAg
ICAgICBsb2dFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQp
KTsKLSAgICAgICAgbG9nRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJiciIpKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiB0ZXN0T2JzY3VyZWRQbHVnaW5zKGNsYXNz
TmFtZSwgZXhwZWN0ZWRPYnNjdXJlZCkgewotICAgICAgICB2YXIgZmFpbGVkQW55VGVzdCA9IGZh
bHNlOwotICAgICAgICB2YXIgZXhwZWN0ZWRPYnNjdXJlZFBsdWdpbnMgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKGNsYXNzTmFtZSk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgZXhwZWN0ZWRPYnNjdXJlZFBsdWdpbnMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIHZh
ciBwbHVnaW4gPSBleHBlY3RlZE9ic2N1cmVkUGx1Z2luc1tpXTsKLSAgICAgICAgICAgIHZhciBw
bHVnaW5OYW1lID0gcGx1Z2luLmlkOwotCi0gICAgICAgICAgICBpZiAocGx1Z2luLnRhZ05hbWUg
PT0gIklGUkFNRSIpCi0gICAgICAgICAgICAgICAgcGx1Z2luID0gcGx1Z2luLmNvbnRlbnREb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdFBsdWdpbiIpOwotCi0gICAgICAgICAgICB2YXIgb2Jz
Y3VyZWQgPSBpbnRlcm5hbHMuaXNQbHVnaW5VbmF2YWlsYWJpbGl0eUluZGljYXRvck9ic2N1cmVk
KHBsdWdpbik7Ci0gICAgICAgICAgICB2YXIgcGFzc2VkID0gZXhwZWN0ZWRPYnNjdXJlZCA9PSBv
YnNjdXJlZDsKLSAgICAgICAgICAgIGlmICghcGFzc2VkKQotICAgICAgICAgICAgICAgIGZhaWxl
ZEFueVRlc3QgPSB0cnVlOwotCi0gICAgICAgICAgICBsb2coIiciICsgcGx1Z2luTmFtZSArICIn
IHdhcyBvYnNjdXJlZDogIiArIG9ic2N1cmVkICsgIiAoZXhwZWN0ZWQgIiArIGV4cGVjdGVkT2Jz
Y3VyZWQgKyAiOyAiICsgKHBhc3NlZCA/ICJQQVNTIiA6ICJGQUlMIikgKyAiKSIpOwotICAgICAg
ICB9OwotCi0gICAgICAgIHJldHVybiBmYWlsZWRBbnlUZXN0OwotICAgIH0KLQotICAgIHdpbmRv
dy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIGxvZ0VsZW1lbnQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibG9nIik7Ci0KLSAgICAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewot
ICAgICAgICAgICAgbG9nKCJFeHBlY3RlZCB0byBiZSBvYnNjdXJlZDoiKTsKLSAgICAgICAgICAg
IHZhciBmYWlsZWRBbnlFeHBlY3RlZE9ic2N1cmVkVGVzdCA9IHRlc3RPYnNjdXJlZFBsdWdpbnMo
InNob3VsZEJlT2JzY3VyZWQiLCB0cnVlKTsKLSAgICAgICAgICAgIGxvZygiIikKLSAgICAgICAg
ICAgIGxvZygiRXhwZWN0ZWQgdG8gbm90IGJlIG9ic2N1cmVkOiIpOwotICAgICAgICAgICAgdmFy
IGZhaWxlZEFueUV4cGVjdGVkVmlzaWJsZVRlc3QgPSB0ZXN0T2JzY3VyZWRQbHVnaW5zKCJzaG91
bGROb3RCZU9ic2N1cmVkIiwgZmFsc2UpOwotICAgICAgICAgICAgbG9nKCIiKTsKLSAgICAgICAg
ICAgIGxvZygiUGFzc2VkIGFsbCB0ZXN0czogIiArICEoZmFpbGVkQW55RXhwZWN0ZWRWaXNpYmxl
VGVzdCB8fCBmYWlsZWRBbnlFeHBlY3RlZE9ic2N1cmVkVGVzdCkpOwotCi0gICAgICAgICAgICAv
LyBSZW1vdmUgdGhlIHBsdWdpbnMgc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvbnMgb2Ygd2hpdGVz
cGFjZSBpbiB0aGUgb3V0cHV0LgotICAgICAgICAgICAgd2hpbGUoZG9jdW1lbnQuYm9keS5maXJz
dENoaWxkICYmIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZC5pZCAhPSAibG9nIikgewotICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuYm9keS5maXJzdENo
aWxkKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICB9LCAw
KTsKLSAgICB9Ci0gICAgPC9zY3JpcHQ+Ci0gICAgPHN0eWxlPgotICAgIGVtYmVkIHsKLSAgICAg
ICAgZGlzcGxheTogYmxvY2s7Ci0gICAgICAgIHdpZHRoOiA1MDBweDsKLSAgICAgICAgaGVpZ2h0
OiA1MDBweDsKLSAgICB9Ci0KLSAgICAuY292ZXIgewotICAgICAgICAgYmFja2dyb3VuZC1jb2xv
cjogZ3JlZW47Ci0gICAgICAgICB3aWR0aDogMTAwJTsKLSAgICAgICAgIGhlaWdodDogMTAwJTsK
LSAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICAgICAgIHRvcDogMDsKLSAgICB9Ci0K
LSAgICAuY29udGFpbmVyIHsKLSAgICAgICAgd2lkdGg6IDUwMHB4OwotICAgICAgICBoZWlnaHQ6
IDUwMHB4OwotICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgfQotICAgIDwvc3R5bGU+
Ci0gICAgPGJvZHk+Ci0gICAgICAgIDxlbWJlZCBpZD0ibGFyZ2UiIGNsYXNzPSJzaG91bGROb3RC
ZU9ic2N1cmVkIiB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5ldHNjYXBlIj48L2Vt
YmVkPgotICAgICAgICA8ZW1iZWQgaWQ9InRvb1NtYWxsIiBjbGFzcz0ic2hvdWxkQmVPYnNjdXJl
ZCIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSIgc3R5bGU9IndpZHRo
OiAxMHB4OyBoZWlnaHQ6IDEwcHg7Ij48L2VtYmVkPgotICAgICAgICA8ZW1iZWQgaWQ9ImVtcHR5
UmVjdCIgY2xhc3M9InNob3VsZEJlT2JzY3VyZWQiIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0
LXRlc3QtbmV0c2NhcGUiIHN0eWxlPSJ3aWR0aDogMDsgaGVpZ2h0OiAwOyI+PC9lbWJlZD4KLQot
ICAgICAgICA8IS0tIE9ic2N1cmVkIGJ5IG9wYWNpdHkgLS0+Ci0gICAgICAgIDxlbWJlZCBpZD0i
bG93T3BhY2l0eSIgY2xhc3M9InNob3VsZEJlT2JzY3VyZWQiIHR5cGU9ImFwcGxpY2F0aW9uL3gt
d2Via2l0LXRlc3QtbmV0c2NhcGUiIHN0eWxlPSJvcGFjaXR5OiAwLjA1OyI+PC9lbWJlZD4KLSAg
ICAgICAgPGRpdiBzdHlsZT0ib3BhY2l0eTogMC4wNTsiPgotICAgICAgICAgICAgPGVtYmVkIGlk
PSJsb3dPcGFjaXR5UGFyZW50IiBjbGFzcz0ic2hvdWxkQmVPYnNjdXJlZCIgdHlwZT0iYXBwbGlj
YXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSI+PC9lbWJlZD4KLSAgICAgICAgPC9kaXY+Ci0g
ICAgICAgIDxkaXYgc3R5bGU9Im9wYWNpdHk6IDAuMjsiPgotICAgICAgICAgICAgPGRpdiBzdHls
ZT0ib3BhY2l0eTogMC4yOyI+Ci0gICAgICAgICAgICAgICAgPGVtYmVkIGlkPSJzdGFja2VkTG93
T3BhY2l0eVBhcmVudHMiIGNsYXNzPSJzaG91bGRCZU9ic2N1cmVkIiB0eXBlPSJhcHBsaWNhdGlv
bi94LXdlYmtpdC10ZXN0LW5ldHNjYXBlIj48L2VtYmVkPgotICAgICAgICAgICAgPC9kaXY+Ci0g
ICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IHN0eWxlPSJvcGFjaXR5OiAwLjk7Ij4KLSAgICAg
ICAgICAgIDxkaXYgc3R5bGU9Im9wYWNpdHk6IDAuOTsiPgotICAgICAgICAgICAgICAgIDxlbWJl
ZCBpZD0ic3RhY2tlZEhpZ2hPcGFjaXR5UGFyZW50cyIgY2xhc3M9InNob3VsZE5vdEJlT2JzY3Vy
ZWQiIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiPjwvZW1iZWQ+Ci0g
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0KLSAgICAgICAgPCEtLSBDbGlwcGVk
IGJ5IG92ZXJmbG93IC0tPgotICAgICAgICA8ZGl2IHN0eWxlPSJ3aWR0aDogMjBweDsgb3ZlcmZs
b3c6IGhpZGRlbjsiPgotICAgICAgICAgICAgPGVtYmVkIGlkPSJjbGlwcGVkQnlQYXJlbnQiIGNs
YXNzPSJzaG91bGRCZU9ic2N1cmVkIiB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5l
dHNjYXBlIj48L2VtYmVkPgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBzdHlsZT0id2lk
dGg6IDIwcHg7IG92ZXJmbG93OiB2aXNpYmxlOyI+Ci0gICAgICAgICAgICA8ZW1iZWQgaWQ9Im5v
dENsaXBwZWRCeVBhcmVudCIgY2xhc3M9InNob3VsZE5vdEJlT2JzY3VyZWQiIHR5cGU9ImFwcGxp
Y2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiPjwvZW1iZWQ+Ci0gICAgICAgIDwvZGl2Pgot
Ci0gICAgICAgIDwhLS0gSGlkZGVuIC0tPgotICAgICAgICA8ZW1iZWQgaWQ9InZpc2liaWxpdHlI
aWRkZW4iIGNsYXNzPSJzaG91bGRCZU9ic2N1cmVkIiB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtp
dC10ZXN0LW5ldHNjYXBlIiBzdHlsZT0idmlzaWJpbGl0eTogaGlkZGVuOyI+PC9lbWJlZD4KLSAg
ICAgICAgPGRpdiBzdHlsZT0idmlzaWJpbGl0eTogaGlkZGVuOyI+Ci0gICAgICAgICAgICA8ZW1i
ZWQgaWQ9InZpc2liaWxpdHlIaWRkZW5PblBhcmVudCIgY2xhc3M9InNob3VsZEJlT2JzY3VyZWQi
IHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiPjwvZW1iZWQ+Ci0gICAg
ICAgIDwvZGl2PgotCi0gICAgICAgIDwhLS0gQ2xpY2tzIGJsb2NrZWQgdmlhIHBvaW50ZXItZXZl
bnRzOiBub25lIC0tPgotICAgICAgICA8ZW1iZWQgaWQ9InBvaW50ZXJFdmVudHNCbG9ja2VkIiBj
bGFzcz0ic2hvdWxkQmVPYnNjdXJlZCIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1u
ZXRzY2FwZSIgc3R5bGU9InBvaW50ZXItZXZlbnRzOiBub25lOyI+PC9lbWJlZD4KLSAgICAgICAg
PGRpdiBzdHlsZT0icG9pbnRlci1ldmVudHM6IG5vbmU7Ij4KLSAgICAgICAgICAgIDxlbWJlZCBp
ZD0icG9pbnRlckV2ZW50c0Jsb2NrZWRPblBhcmVudCIgY2xhc3M9InNob3VsZEJlT2JzY3VyZWQi
IHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiPjwvZW1iZWQ+Ci0gICAg
ICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgotICAgICAgICAgICAg
PGVtYmVkIGlkPSJwb2ludGVyRXZlbnRzQmxvY2tlZE9uT2JzY3VyaW5nU2libGluZyIgY2xhc3M9
InNob3VsZEJlT2JzY3VyZWQiIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2Nh
cGUiPjwvZW1iZWQ+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb3ZlciIgc3R5bGU9InBvaW50
ZXItZXZlbnRzOiBub25lOyI+PC9kaXY+Ci0gICAgICAgIDwvZGl2PgotCi0gICAgICAgIDwhLS0g
T2JzY3VyZWQgYnkgc2libGluZ3MgLS0+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+
Ci0gICAgICAgICAgICA8ZW1iZWQgaWQ9ImxlZnRIYWxmT2JzY3VyZWQiIGNsYXNzPSJzaG91bGRC
ZU9ic2N1cmVkIiB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5ldHNjYXBlIj48L2Vt
YmVkPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iY292ZXIiIHN0eWxlPSJ3aWR0aDogNTAlOyI+
PC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgot
ICAgICAgICAgICAgPGVtYmVkIGlkPSJyaWdodEhhbGZPYnNjdXJlZCIgY2xhc3M9InNob3VsZEJl
T2JzY3VyZWQiIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiPjwvZW1i
ZWQ+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb3ZlciIgc3R5bGU9IndpZHRoOiA1MCU7IGxl
ZnQ6IDUwJTsiPjwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0iY29u
dGFpbmVyIj4KLSAgICAgICAgICAgIDxlbWJlZCBpZD0idG9wSGFsZk9ic2N1cmVkIiBjbGFzcz0i
c2hvdWxkQmVPYnNjdXJlZCIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2Fw
ZSI+PC9lbWJlZD4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvdmVyIiBzdHlsZT0iaGVpZ2h0
OiA1MCU7Ij48L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9ImNvbnRh
aW5lciI+Ci0gICAgICAgICAgICA8ZW1iZWQgaWQ9ImJvdHRvbUhhbGZPYnNjdXJlZCIgY2xhc3M9
InNob3VsZEJlT2JzY3VyZWQiIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2Nh
cGUiPjwvZW1iZWQ+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb3ZlciIgc3R5bGU9ImhlaWdo
dDogNTAlOyB0b3A6IDUwJTsiPjwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBj
bGFzcz0iY29udGFpbmVyIj4KLSAgICAgICAgICAgIDxlbWJlZCBpZD0idG9wUXVhcnRlck9ic2N1
cmVkIiBjbGFzcz0ic2hvdWxkTm90QmVPYnNjdXJlZCIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJr
aXQtdGVzdC1uZXRzY2FwZSI+PC9lbWJlZD4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvdmVy
IiBzdHlsZT0iaGVpZ2h0OiAyNSU7Ij48L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxk
aXYgY2xhc3M9ImNvbnRhaW5lciI+Ci0gICAgICAgICAgICA8ZW1iZWQgaWQ9ImJvdHRvbVF1YXJ0
ZXJPYnNjdXJlZCIgY2xhc3M9InNob3VsZE5vdEJlT2JzY3VyZWQiIHR5cGU9ImFwcGxpY2F0aW9u
L3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiPjwvZW1iZWQ+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNz
PSJjb3ZlciIgc3R5bGU9ImhlaWdodDogMjUlOyB0b3A6IDc1JTsiPjwvZGl2PgotICAgICAgICA8
L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KLSAgICAgICAgICAgIDxlbWJl
ZCBpZD0iY2VudGVyT2JzY3VyZWQiIGNsYXNzPSJzaG91bGRCZU9ic2N1cmVkIiB0eXBlPSJhcHBs
aWNhdGlvbi94LXdlYmtpdC10ZXN0LW5ldHNjYXBlIj48L2VtYmVkPgotICAgICAgICAgICAgPGRp
diBjbGFzcz0iY292ZXIiIHN0eWxlPSJ3aWR0aDogMjAlOyBoZWlnaHQ6IDIwJTsgdG9wOiA0MCU7
IGxlZnQ6IDQwJTsiPjwvZGl2PgotICAgICAgICA8L2Rpdj4KLQotICAgICAgICA8IS0tIE9ic2N1
cmVkIGJ5IHNjcm9sbCBjbGlwcGluZyAtLT4KLSAgICAgICAgPGVtYmVkIGlkPSJvZmZTY3JlZW5U
b3BMZWZ0IiBjbGFzcz0ic2hvdWxkQmVPYnNjdXJlZCIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJr
aXQtdGVzdC1uZXRzY2FwZSIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAtMTAwMHB4
OyBsZWZ0OiAtMTAwMHB4OyI+PC9lbWJlZD4KLSAgICAgICAgPGVtYmVkIGlkPSJvZmZTY3JlZW5U
b3AiIGNsYXNzPSJzaG91bGRCZU9ic2N1cmVkIiB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10
ZXN0LW5ldHNjYXBlIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IC0xMDAwcHg7IGxl
ZnQ6IDA7Ij48L2VtYmVkPgotICAgICAgICA8ZW1iZWQgaWQ9Im9mZlNjcmVlbkxlZnQiIGNsYXNz
PSJzaG91bGRCZU9ic2N1cmVkIiB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5ldHNj
YXBlIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IC0xMDAwcHg7Ij48
L2VtYmVkPgotCi0gICAgICAgIDwhLS0gT2JzY3VyZWQgYnkgb3ZlcmZsb3cgY2xpcHBpbmcgLS0+
Ci0gICAgICAgIDxkaXYgc3R5bGU9Im92ZXJmbG93OiBzY3JvbGw7IHdpZHRoOiAxMDBweDsgaGVp
Z2h0OiAxMDBweDsiPgotICAgICAgICAgICAgPGVtYmVkIGlkPSJvdmVyZmxvd1Njcm9sbE9ic2N1
cmVkIiBjbGFzcz0ic2hvdWxkQmVPYnNjdXJlZCIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQt
dGVzdC1uZXRzY2FwZSI+PC9lbWJlZD4KLSAgICAgICAgPC9kaXY+Ci0KLSAgICAgICAgPCEtLSBP
YnNjdXJlZCBieSBpZnJhbWUgY2xpcHBpbmcgLS0+Ci0gICAgICAgIDxpZnJhbWUgaWQ9InNtYWxs
SUZyYW1lIiBzcmM9InJlc291cmNlcy9wbHVnaW4tcGFnZS5odG1sIiBzdHlsZT0id2lkdGg6IDEw
MHB4OyBoZWlnaHQ6IDEwMHB4OyIgY2xhc3M9InNob3VsZEJlT2JzY3VyZWQiPjwvaWZyYW1lPgot
ICAgICAgICA8aWZyYW1lIGlkPSJsYXJnZUlGcmFtZSIgc3JjPSJyZXNvdXJjZXMvcGx1Z2luLXBh
Z2UuaHRtbCIgc3R5bGU9IndpZHRoOiA1MDBweDsgaGVpZ2h0OiA1MDBweDsiIGNsYXNzPSJzaG91
bGROb3RCZU9ic2N1cmVkIj48L2lmcmFtZT4KLQotICAgICAgICA8ZGl2IGlkPSJsb2ciPjwvZGl2
PgotICAgIDwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>
<flag name="commit-queue"
          id="430720"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>