<?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>230067</bug_id>
          
          <creation_ts>2021-09-08 15:06:59 -0700</creation_ts>
          <short_desc>Implement a WebProcess cap</short_desc>
          <delta_ts>2021-09-09 09:40:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>ggaren</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1791637</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-08 15:06:59 -0700</bug_when>
    <thetext>Implement a WebProcess cap to avoid getting into a state where we run out of resources and crash in various ways.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791638</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-08 15:07:11 -0700</bug_when>
    <thetext>&lt;rdar://79479244&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791642</commentid>
    <comment_count>2</comment_count>
      <attachid>437668</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-08 15:24:42 -0700</bug_when>
    <thetext>Created attachment 437668
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791737</commentid>
    <comment_count>3</comment_count>
      <attachid>437668</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-09-08 19:55:16 -0700</bug_when>
    <thetext>Comment on attachment 437668
Patch

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

Does moving to foreground mark a process as recently used? (Would be nice to add that, if not.)

&gt; Source/WebKit/Shared/ProcessTerminationReason.h:33
&gt; +    ExceededProcessLimit,

Let&apos;s call this ExceededProcessCountLimit, since we call it a process count limit elsewhere.

&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:111
&gt; +static unsigned maxProcessCount { 400 };

s_maxProcessCount</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791885</commentid>
    <comment_count>4</comment_count>
      <attachid>437668</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-09 07:22:06 -0700</bug_when>
    <thetext>Comment on attachment 437668
Patch

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

&gt;&gt; Source/WebKit/Shared/ProcessTerminationReason.h:33
&gt;&gt; +    ExceededProcessLimit,
&gt; 
&gt; Let&apos;s call this ExceededProcessCountLimit, since we call it a process count limit elsewhere.

OK.

&gt;&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:111
&gt;&gt; +static unsigned maxProcessCount { 400 };
&gt; 
&gt; s_maxProcessCount

I thought the s_ prefix was only used for static data members but OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791886</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-09 07:22:31 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #3)
&gt; Comment on attachment 437668 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=437668&amp;action=review
&gt; 
&gt; Does moving to foreground mark a process as recently used? (Would be nice to
&gt; add that, if not.)

It currently doesn&apos;t but this is a good point and I&apos;ll fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791889</commentid>
    <comment_count>6</comment_count>
      <attachid>437742</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-09 07:47:30 -0700</bug_when>
    <thetext>Created attachment 437742
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791936</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-09 09:40:54 -0700</bug_when>
    <thetext>Committed r282218 (241505@main): &lt;https://commits.webkit.org/241505@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 437742.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437668</attachid>
            <date>2021-09-08 15:24:42 -0700</date>
            <delta_ts>2021-09-09 07:47:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230067-20210908152441.patch</filename>
            <type>text/plain</type>
            <size>20246</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI2ZDdiNmU0OGI2YWIyNzBi
MmY2ZDRjMzQ4MmY5M2E1Zjk3YWFkOTYuLjllM2M5NDQ0ZWZhNDdhZmFlYjg5MDljMmFjZmM5YjJi
Y2EyYzE1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjEtMDktMDggIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYSBXZWJQcm9jZXNz
IGNhcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMw
MDY3CisgICAgICAgIDxyZGFyOi8vNzk0NzkyNDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGEgV2ViUHJvY2VzcyBjYXAgdG8gYXZv
aWQgZ2V0dGluZyBpbnRvIGEgc3RhdGUgd2hlcmUgd2UgcnVuIG91dCBvZiByZXNvdXJjZXMgYW5k
IGNyYXNoIGluIHZhcmlvdXMgd2F5cy4KKyAgICAgICAgVGhlIGN1cnJlbnQgbGltaXQgaXMgNDAw
IGFuZCBjYW4gYmUgY2hhbmdlZCB2aWEgYW4gU1BJLiBUaGUgbGltaXQgaXMgcGVyIFVJUHJvY2Vz
cyAobm90IHBlciBwcm9jZXNzIHBvb2wpLgorICAgICAgICBXaGVuIHdlIHRyeSBhbmQgbGF1bmNo
IGEgbmV3IFdlYlByb2Nlc3MgYW5kIHRoZSBsaW1pdCBoYXMgYmVlbiByZWFjaGVkLCB3ZSB0ZXJt
aW5hdGUgdGhlIGxlYXN0IHJlY2VudGx5IHVzZWQKKyAgICAgICAgV2ViUHJvY2VzcyB0byBhdm9p
ZCBnb2luZyBvdmVyIHRoZSBsaW1pdC4KKworICAgICAgICAqIFNoYXJlZC9Qcm9jZXNzVGVybWlu
YXRpb25SZWFzb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OnRvQVBJKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgrW1dLUHJvY2Vzc1Bvb2wgX3NldFdlYlByb2Nlc3ND
b3VudExpbWl0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1t
OgorICAgICAgICAoV2ViS2l0Ojp3a1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6bG9hZEZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmxvYWRTaW11bGF0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
bG9hZFdlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWxv
YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0p
OgorICAgICAgICAoV2ViS2l0OjpzaG91bGRSZWxvYWRBZnRlclByb2Nlc3NUZXJtaW5hdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6c2V0UHJvY2Vzc0NvdW50TGltaXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6fldlYlByb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6YWRkUHJvdmlzaW9uYWxQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OmFkZEV4aXN0aW5nV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZU9yRmFpbGVkVG9MYXVuY2gpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjptYXJrUHJvY2Vzc0FzUmVjZW50bHlV
c2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisKIDIwMjEtMDkt
MDggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBTYWZhcmkg
VFAgMTMxIGF1ZGlvIGNhblBsYXlUeXBlKCkgcmVwb3J0cyBmYWxzZSBuZWdhdGl2ZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmgKaW5kZXggMjE5
YWNmYzI2NzRmZGY0ZjhlNzMyMmRkZjM5NDY5YzRlYmNhMzVkZS4uMzY5ZDg5YjU4YmVjNDE1YWQ5
YmZjYTBhYTc0OTMzZThiMzhlNjk2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUHJv
Y2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmgKQEAgLTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBlbnVtIGNsYXNzIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiB7CiAgICAgRXhjZWVkZWRN
ZW1vcnlMaW1pdCwKICAgICBFeGNlZWRlZENQVUxpbWl0LAorICAgIEV4Y2VlZGVkUHJvY2Vzc0xp
bWl0LAogICAgIFJlcXVlc3RlZEJ5Q2xpZW50LAogICAgIENyYXNoLAogICAgIE5hdmlnYXRpb25T
d2FwLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAppbmRleCAyZWFi
NzdlODA0YTU1OGU3ZmJhMjViNzlkNDc0ZjczMDFiMTBmMzI5Li5mOTI4OTg5MTkwMjAzYzE3MjVi
MzRhZjNhMjEwMzUwZGYzOTI4NDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0FQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0FQSUNhc3QuaApAQCAtMjQzLDYgKzI0Myw3IEBAIGlubGluZSBXS1Byb2Nlc3NUZXJtaW5hdGlv
blJlYXNvbiB0b0FQSShQcm9jZXNzVGVybWluYXRpb25SZWFzb24gcmVhc29uKQogICAgICAgICBG
QUxMVEhST1VHSDsKICAgICBjYXNlIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6UmVxdWVzdGVk
QnlDbGllbnQ6CiAgICAgICAgIHJldHVybiBrV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb25SZXF1
ZXN0ZWRCeUNsaWVudDsKKyAgICBjYXNlIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6RXhjZWVk
ZWRQcm9jZXNzTGltaXQ6CiAgICAgY2FzZSBQcm9jZXNzVGVybWluYXRpb25SZWFzb246OlJlcXVl
c3RlZEJ5TmV0d29ya1Byb2Nlc3M6CiAgICAgY2FzZSBQcm9jZXNzVGVybWluYXRpb25SZWFzb246
OlJlcXVlc3RlZEJ5R1BVUHJvY2VzczoKICAgICBjYXNlIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNv
bjo6Q3Jhc2g6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sLm1tCmluZGV4IDgwMjRiZWNmNGZkZGFiNTQwZGQ5NzQ3Yzc1NGY4YTVkYjA3OWZh
YmMuLmMxYmY5NGNmMzY3ODY2OTZmNzk4MzkzODQ0Yzk2NzAwMmNhY2RmODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC01
NjUsNiArNTY1LDExIEBAIC0gKHZvaWQpX3NlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVz
dGluZ1dpdGhGaXJzdFBhcnR5OihOU1VSTCAqKWZpcnN0UGFydHlVCiAjZW5kaWYKIH0KIAorKyAo
dm9pZClfc2V0V2ViUHJvY2Vzc0NvdW50TGltaXQ6KHVuc2lnbmVkKWxpbWl0Cit7CisgICAgV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OnNldFByb2Nlc3NDb3VudExpbWl0KGxpbWl0KTsKK30KKwog
LSAodm9pZClfZ2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0c0ZvclRlc3RpbmcKIHsKICAg
ICBfcHJvY2Vzc1Bvb2wtPmdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQ
cml2YXRlLmgKaW5kZXggODMzOWRiNDdmMGNjODAxZGQxMDliYjVmNTcxZDE2OWFiZGJkNDFmMC4u
NjE4NmZmZGJlZTFmMDAyZTVkZmIxNmQ1MWI0MDA4MWJhMThkYzM3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRl
LmgKQEAgLTczLDYgKzczLDggQEAKICsgKE5TVVJMICopX3dlYnNpdGVEYXRhVVJMRm9yQ29udGFp
bmVyV2l0aFVSTDooTlNVUkwgKiljb250YWluZXJVUkwgYnVuZGxlSWRlbnRpZmllcklmTm90SW5D
b250YWluZXI6KE5TU3RyaW5nICopYnVuZGxlSWRlbnRpZmllcjsKICsgKHBpZF90KV93ZWJBdXRo
blByb2Nlc3NJZGVudGlmaWVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CiAKKysgKHZvaWQpX3NldFdlYlByb2Nlc3NDb3VudExpbWl0Oih1bnNp
Z25lZClsaW1pdCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOworCiAtICh2b2lkKV93YXJtSW5pdGlhbFByb2Nlc3MgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xMiksIGlvcygxMC4wKSk7CiAtICh2b2lkKV9hdXRvbWF0aW9uQ2FwYWJpbGl0aWVz
RGlkQ2hhbmdlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIpLCBpb3MoMTAuMCkpOwogLSAo
dm9pZClfc2V0QXV0b21hdGlvblNlc3Npb246KF9XS0F1dG9tYXRpb25TZXNzaW9uICopYXV0b21h
dGlvblNlc3Npb24gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMiksIGlvcygxMC4wKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5k
ZXggMDczYTdiN2M0Y2UzNjM0NTRmMmM4ZDQ4NjY2OTA3NzFjYmQ0NGMxYS4uZDFlMjA2YmVhN2Yy
OGVlZGFhYzUxM2Q2MmJhODA5NjBkYzAyZTNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTA2MCw2ICsxMDYwLDcgQEAgc3Rh
dGljIF9XS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiB3a1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNv
bihQcm9jZXNzVGVybWluYXRpb24KICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBQcm9j
ZXNzVGVybWluYXRpb25SZWFzb246OlJlcXVlc3RlZEJ5Q2xpZW50OgogICAgICAgICByZXR1cm4g
X1dLUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uUmVxdWVzdGVkQnlDbGllbnQ7CisgICAgY2FzZSBQ
cm9jZXNzVGVybWluYXRpb25SZWFzb246OkV4Y2VlZGVkUHJvY2Vzc0xpbWl0OgogICAgIGNhc2Ug
UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpSZXF1ZXN0ZWRCeU5ldHdvcmtQcm9jZXNzOgogICAg
IGNhc2UgUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpSZXF1ZXN0ZWRCeUdQVVByb2Nlc3M6CiAg
ICAgY2FzZSBQcm9jZXNzVGVybWluYXRpb25SZWFzb246OkNyYXNoOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMmZlOTNhNTkxNTZlOGIwZTY5ODdjMDg4NTVk
M2QwYWQzMjljODA2NS4uNmRiMDQxYzJhYTdmM2NmZWI1OTliOWQwNzIxZDRkYmQ0YTdiMjYyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xNDEzLDYgKzE0
MTMsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogCiAgICAgbmF2aWdhdGlvbi5zZXRJc0xv
YWRlZFdpdGhOYXZpZ2F0aW9uU2hhcmVkKHRydWUpOwogCisgICAgcHJvY2Vzcy0+bWFya1Byb2Nl
c3NBc1JlY2VudGx5VXNlZCgpOworCiAgICAgaWYgKCFwcm9jZXNzLT5pc0xhdW5jaGluZygpIHx8
ICF1cmwuaXNMb2NhbEZpbGUoKSkKICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRlcnMpLCB3ZWJQYWdlSUQpOwogICAgIGVsc2UK
QEAgLTE0NzQsNiArMTQ3Niw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94
eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zCiAgICAgbWF5YmVJ
bml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShtX3Byb2Nlc3MsIGZpbGVVUkwsIHJlc291
cmNlRGlyZWN0b3J5VVJMLCBsb2FkUGFyYW1ldGVycy5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBj
aGVja0Fzc3VtZWRSZWFkQWNjZXNzVG9SZXNvdXJjZVVSTCk7CiAgICAgYWRkUGxhdGZvcm1Mb2Fk
UGFyYW1ldGVycyhtX3Byb2Nlc3MsIGxvYWRQYXJhbWV0ZXJzKTsKIAorICAgIG1fcHJvY2Vzcy0+
bWFya1Byb2Nlc3NBc1JlY2VudGx5VXNlZCgpOwogICAgIGlmIChtX3Byb2Nlc3MtPmlzTGF1bmNo
aW5nKCkpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRSZXF1ZXN0V2FpdGlu
Z0ZvclByb2Nlc3NMYXVuY2gobG9hZFBhcmFtZXRlcnMsIHJlc291cmNlRGlyZWN0b3J5VVJMLCBt
X2lkZW50aWZpZXIsIGNoZWNrQXNzdW1lZFJlYWRBY2Nlc3NUb1Jlc291cmNlVVJMKSk7CiAgICAg
ZWxzZQpAQCAtMTUzMyw2ICsxNTM2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0
aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgIGxv
YWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluOwogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMocHJvY2Vzcywg
bG9hZFBhcmFtZXRlcnMpOwogCisgICAgcHJvY2Vzcy0+bWFya1Byb2Nlc3NBc1JlY2VudGx5VXNl
ZCgpOwogICAgIHByb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKnRoaXMsIGJhc2VV
UkwpOwogICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhKGxvYWRQ
YXJhbWV0ZXJzKSwgd2ViUGFnZUlEKTsKICAgICBwcm9jZXNzLT5zdGFydFJlc3BvbnNpdmVuZXNz
VGltZXIoKTsKQEAgLTE1OTAsNiArMTU5NCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdl
YlBhZ2VQcm94eTo6bG9hZFNpbXVsYXRlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1CiAK
ICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKG1fcHJvY2VzcywgbG9hZFBhcmFtZXRlcnMp
OwogCisgICAgbV9wcm9jZXNzLT5tYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7CiAgICAgbV9w
cm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCp0aGlzLCBiYXNlVVJMKTsKICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTaW11bGF0ZWRSZXF1ZXN0QW5k
UmVzcG9uc2UobG9hZFBhcmFtZXRlcnMsIHNpbXVsYXRlZFJlc3BvbnNlKSwgbV93ZWJQYWdlSUQp
OwogICAgIG1fcHJvY2Vzcy0+c3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CkBAIC0xNjMzLDYg
KzE2MzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgUwogICAgIGxvYWRQYXJhbWV0ZXJzLnVz
ZXJEYXRhID0gVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNl
ckRhdGEpLmdldCgpKTsKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKHByb2Nlc3MoKSwg
bG9hZFBhcmFtZXRlcnMpOwogCisgICAgbV9wcm9jZXNzLT5tYXJrUHJvY2Vzc0FzUmVjZW50bHlV
c2VkKCk7CiAgICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCp0aGlzLCBi
YXNlVVJMLnN0cmluZygpKTsKICAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VV
UkwoKnRoaXMsIHVucmVhY2hhYmxlVVJMLnN0cmluZygpKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpMb2FkQWx0ZXJuYXRlSFRNTChsb2FkUGFyYW1ldGVycykpOwpAQCAtMTY2Miw2ICsx
NjY4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YShBUEk6OkRhdGEq
IHdlYkFyY2hpdmVEYXRhLCBBUEk6Ok9iamVjdCogdXMKICAgICBsb2FkUGFyYW1ldGVycy51c2Vy
RGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJE
YXRhKS5nZXQoKSk7CiAgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhwcm9jZXNzKCksIGxv
YWRQYXJhbWV0ZXJzKTsKIAorICAgIG1fcHJvY2Vzcy0+bWFya1Byb2Nlc3NBc1JlY2VudGx5VXNl
ZCgpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhKGxvYWRQYXJhbWV0ZXJz
KSk7CiAgICAgbV9wcm9jZXNzLT5zdGFydFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKIH0KQEAgLTE3
MzcsNiArMTc0NCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVs
b2FkKE9wdGlvblNldDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+IG9wCiAgICAgaWYgKG9wdGlvbnMu
Y29udGFpbnMoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpEaXNhYmxlQ29udGVudEJsb2NrZXJzKSkK
ICAgICAgICAgbmF2aWdhdGlvbi0+c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZChmYWxz
ZSk7CiAKKyAgICBtX3Byb2Nlc3MtPm1hcmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWxvYWQobmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCks
IG9wdGlvbnMudG9SYXcoKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgIG1fcHJvY2Vz
cy0+c3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiAKQEAgLTE4MTUsNiArMTgyMyw3IEBAIFJl
ZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRT
dGF0ZS50cmFuc2FjdGlvbigpOwogICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVx
dWVzdCh0cmFuc2FjdGlvbiwgeyBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklE
KCkgOiAwLCBpdGVtLnVybCgpIH0pOwogCisgICAgbV9wcm9jZXNzLT5tYXJrUHJvY2Vzc0FzUmVj
ZW50bHlVc2VkKCk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJk
SXRlbShuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCBpdGVtLml0
ZW1JRCgpLCBmcmFtZUxvYWRUeXBlLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBz
dGQ6Om51bGxvcHQsIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpKTsKICAgICBtX3By
b2Nlc3MtPnN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcigpOwogCkBAIC03NzM5LDYgKzc3NDgsNyBA
QCBzdGF0aWMgYm9vbCBzaG91bGRSZWxvYWRBZnRlclByb2Nlc3NUZXJtaW5hdGlvbihQcm9jZXNz
VGVybWluYXRpb25SZWFzb24gcmVhc29uKQogICAgIGNhc2UgUHJvY2Vzc1Rlcm1pbmF0aW9uUmVh
c29uOjpSZXF1ZXN0ZWRCeUdQVVByb2Nlc3M6CiAgICAgY2FzZSBQcm9jZXNzVGVybWluYXRpb25S
ZWFzb246OkNyYXNoOgogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIFByb2Nlc3NUZXJt
aW5hdGlvblJlYXNvbjo6RXhjZWVkZWRQcm9jZXNzTGltaXQ6CiAgICAgY2FzZSBQcm9jZXNzVGVy
bWluYXRpb25SZWFzb246Ok5hdmlnYXRpb25Td2FwOgogICAgIGNhc2UgUHJvY2Vzc1Rlcm1pbmF0
aW9uUmVhc29uOjpSZXF1ZXN0ZWRCeUNsaWVudDoKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggOWYyYmI3NGJmNGExOTFiNWE1
ZWMwYjBmNjI5OGQyYjBjZWIwMGVlNC4uZmNlZjQzMDVjODgyMjI3MWM5MThlY2EwODE5NjRjZTQy
YTc5YTk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApA
QCAtODY2LDYgKzg2Niw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByZXdhcm1Qcm9jZXNzKCkK
ICAgICBpZiAobV9wcmV3YXJtZWRQcm9jZXNzKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAo
V2ViUHJvY2Vzc1Byb3h5OjpoYXNSZWFjaGVkUHJvY2Vzc0NvdW50TGltaXQoKSkKKyAgICAgICAg
cmV0dXJuOworCiAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0coUGVyZm9ybWFuY2VMb2dn
aW5nLCAicHJld2FybVByb2Nlc3M6IFByZXdhcm1pbmcgYSBXZWJQcm9jZXNzIGZvciBwZXJmb3Jt
YW5jZSIpOwogICAgIGNyZWF0ZU5ld1dlYlByb2Nlc3MobnVsbHB0ciwgV2ViUHJvY2Vzc1Byb3h5
OjpJc1ByZXdhcm1lZDo6WWVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCmluZGV4IDQzZDlkNDkxOGIxNDlhODE1NWY3NDQwM2ZkOTY1ZGNlZTJmNGVl
M2YuLmE3ZTc1NTYzMDEyNjdiYWE1NmY4MzJlMTllNzgwMjQ3MzI0MmNkZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTA4LDYgKzEwOCwyNSBA
QAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorc3RhdGlj
IHVuc2lnbmVkIG1heFByb2Nlc3NDb3VudCB7IDQwMCB9OworCitzdGF0aWMgTGlzdEhhc2hTZXQ8
V2ViUHJvY2Vzc1Byb3h5Kj4mIGxpdmVQcm9jZXNzZXNMUlUoKQoreworICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExpc3RIYXNoU2V0PFdl
YlByb2Nlc3NQcm94eSo+PiBwcm9jZXNzZXM7CisgICAgcmV0dXJuIHByb2Nlc3NlczsKK30KKwor
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldFByb2Nlc3NDb3VudExpbWl0KHVuc2lnbmVkIGxpbWl0
KQoreworICAgIG1heFByb2Nlc3NDb3VudCA9IGxpbWl0OworfQorCitib29sIFdlYlByb2Nlc3NQ
cm94eTo6aGFzUmVhY2hlZFByb2Nlc3NDb3VudExpbWl0KCkKK3sKKyAgICByZXR1cm4gbGl2ZVBy
b2Nlc3Nlc0xSVSgpLnNpemUoKSA+PSBtYXhQcm9jZXNzQ291bnQ7Cit9CisKIHN0YXRpYyBib29s
IGlzTWFpblRocmVhZE9yQ2hlY2tEaXNhYmxlZCgpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKQEAgLTE1MCw4ICsxNjksMTcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmZvcldlYlBhZ2Vz
V2l0aE9yaWdpbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlY3UKIFJlZjxXZWJQ
cm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sJiBwcm9j
ZXNzUG9vbCwgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSwgSXNQcmV3YXJtZWQg
aXNQcmV3YXJtZWQsIENyb3NzT3JpZ2luTW9kZSBjcm9zc09yaWdpbk1vZGUsIFNob3VsZExhdW5j
aFByb2Nlc3Mgc2hvdWxkTGF1bmNoUHJvY2VzcykKIHsKICAgICBhdXRvIHByb3h5ID0gYWRvcHRS
ZWYoKm5ldyBXZWJQcm9jZXNzUHJveHkocHJvY2Vzc1Bvb2wsIHdlYnNpdGVEYXRhU3RvcmUsIGlz
UHJld2FybWVkLCBjcm9zc09yaWdpbk1vZGUpKTsKLSAgICBpZiAoc2hvdWxkTGF1bmNoUHJvY2Vz
cyA9PSBTaG91bGRMYXVuY2hQcm9jZXNzOjpZZXMpCisgICAgaWYgKHNob3VsZExhdW5jaFByb2Nl
c3MgPT0gU2hvdWxkTGF1bmNoUHJvY2Vzczo6WWVzKSB7CisgICAgICAgIGlmIChsaXZlUHJvY2Vz
c2VzTFJVKCkuc2l6ZSgpID49IG1heFByb2Nlc3NDb3VudCkgeworICAgICAgICAgICAgZm9yIChh
dXRvJiBwcm9jZXNzUG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMoKSkKKyAg
ICAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCkuY2xlYXIoKTsKKyAg
ICAgICAgICAgIGlmIChsaXZlUHJvY2Vzc2VzTFJVKCkuc2l6ZSgpID49IG1heFByb2Nlc3NDb3Vu
dCkKKyAgICAgICAgICAgICAgICBsaXZlUHJvY2Vzc2VzTFJVKCkuZmlyc3QoKS0+cmVxdWVzdFRl
cm1pbmF0aW9uKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6RXhjZWVkZWRQcm9jZXNzTGltaXQp
OworICAgICAgICB9CisgICAgICAgIEFTU0VSVChsaXZlUHJvY2Vzc2VzTFJVKCkuc2l6ZSgpIDwg
bWF4UHJvY2Vzc0NvdW50KTsKKyAgICAgICAgbGl2ZVByb2Nlc3Nlc0xSVSgpLmFkZChwcm94eS5w
dHIoKSk7CiAgICAgICAgIHByb3h5LT5jb25uZWN0KCk7CisgICAgfQogICAgIHJldHVybiBwcm94
eTsKIH0KIApAQCAtMjM3LDYgKzI2NSw4IEBAIFdlYlByb2Nlc3NQcm94eTo6fldlYlByb2Nlc3NQ
cm94eSgpCiAgICAgQVNTRVJUKG1fcGFnZVVSTFJldGFpbkNvdW50TWFwLmlzRW1wdHkoKSk7CiAg
ICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJkZXN0cnVjdG9yOiIpOwog
CisgICAgbGl2ZVByb2Nlc3Nlc0xSVSgpLnJlbW92ZSh0aGlzKTsKKwogICAgIGZvciAoYXV0byBp
ZGVudGlmaWVyIDogbV9zcGVlY2hSZWNvZ25pdGlvblNlcnZlck1hcC5rZXlzKCkpCiAgICAgICAg
IHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcik7CiAKQEAgLTMzNyw2ICszNjcsNyBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkUHJvdmlzaW9uYWxQYWdlUHJveHkoUHJvdmlzaW9u
YWxQYWdlUHJveHkmIHByb3Zpc2lvbmFsUAogCiAgICAgQVNTRVJUKCFtX2lzSW5Qcm9jZXNzQ2Fj
aGUpOwogICAgIEFTU0VSVCghbV9wcm92aXNpb25hbFBhZ2VzLmNvbnRhaW5zKCZwcm92aXNpb25h
bFBhZ2UpKTsKKyAgICBtYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7CiAgICAgbV9wcm92aXNp
b25hbFBhZ2VzLmFkZCgmcHJvdmlzaW9uYWxQYWdlKTsKICAgICB1cGRhdGVSZWdpc3RyYXRpb25X
aXRoRGF0YVN0b3JlKCk7CiB9CkBAIC01NTgsNiArNTg5LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmFkZEV4aXN0aW5nV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIEJlZ2luc1VzaW5n
RGF0YVMKICAgICAgICAgbV9wcm9jZXNzUG9vbC0+cGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0
b3JlKHdlYlBhZ2UuaWRlbnRpZmllcigpLCB3ZWJQYWdlLndlYnNpdGVEYXRhU3RvcmUoKSk7CiAg
ICAgfQogCisgICAgbWFya1Byb2Nlc3NBc1JlY2VudGx5VXNlZCgpOwogICAgIG1fcGFnZU1hcC5z
ZXQod2ViUGFnZS5pZGVudGlmaWVyKCksICZ3ZWJQYWdlKTsKICAgICBnbG9iYWxQYWdlTWFwKCku
c2V0KHdlYlBhZ2UuaWRlbnRpZmllcigpLCAmd2ViUGFnZSk7CiAKQEAgLTg4OSw2ICs5MjEsOCBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZU9yRmFpbGVkVG9MYXVu
Y2goUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhcwogICAgIC8vIHRvIGJlIGRlbGV0ZWQgYmVmb3JlIHdl
IGNhbiBmaW5pc2ggb3VyIHdvcmsuCiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyk7CiAKKyAgICBsaXZlUHJvY2Vzc2VzTFJVKCkucmVtb3ZlKHRoaXMpOworCiAjaWYgUExB
VEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgbV91c2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5LT5jbGVhcigpOwogI2VuZGlmCkBAIC0xODU2LDYgKzE4OTAsNyBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5kQmFja2dyb3VuZEFjdGl2aXR5Rm9yRnVsbHNjcmVlbklu
cHV0KCkKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4
dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNF
X0xPRyhMb2FkaW5nLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQ6IFN0YXJ0ZWQiKTsK
KyAgICBtYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7CiAgICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3Jv
dXBJRCgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VQcm94
eUlELCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJRCwgc3Rv
cmUsICptX3JlZ2lzdHJhYmxlRG9tYWluLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+aW5p
dGlhbGl6YXRpb25EYXRhIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JF
TEVBU0VfTE9HKExvYWRpbmcsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dDogRmluaXNo
ZWQiKTsKQEAgLTIwMDYsNiArMjA0MSwxMiBAQCBib29sIFdlYlByb2Nlc3NQcm94eTo6aGFzU2xl
ZXBEaXNhYmxlcigpIGNvbnN0CiAgICAgcmV0dXJuICFtX3NsZWVwRGlzYWJsZXJzLmlzRW1wdHko
KTsKIH0KIAordm9pZCBXZWJQcm9jZXNzUHJveHk6Om1hcmtQcm9jZXNzQXNSZWNlbnRseVVzZWQo
KQoreworICAgIGlmIChsaXZlUHJvY2Vzc2VzTFJVKCkuY29udGFpbnModGhpcykpCisgICAgICAg
IGxpdmVQcm9jZXNzZXNMUlUoKS5hcHBlbmRPck1vdmVUb0xhc3QodGhpcyk7Cit9CisKIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpzeXN0ZW1CZWVwKCkKIHsKICAgICBQQUw6OnN5c3RlbUJlZXAoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggOWRjNzI4NDkw
NGNlYWVmMGUwNDRlZjVkMjYyZjQ4ZWU5YTQ5MDRiNy4uMGVhMjU5NGJlYmFhZmY3NjZkYjk0ZGNi
MzY3MmE5NjJjMWI4NDIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmgKQEAgLTE2Niw2ICsxNjYsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKCkgY29uc3Q7CiAKKyAgICBzdGF0aWMgYm9vbCBoYXNSZWFjaGVkUHJvY2Vz
c0NvdW50TGltaXQoKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRQcm9jZXNzQ291bnRMaW1pdCh1bnNp
Z25lZCk7CisKICAgICBzdGF0aWMgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzRm9ySWRlbnRpZmll
cihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAgICAgc3RhdGljIFdlYlBhZ2VQcm94eSog
d2ViUGFnZShXZWJQYWdlUHJveHlJZGVudGlmaWVyKTsKICAgICBSZWY8V2ViUGFnZVByb3h5PiBj
cmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7
CkBAIC00MTAsNiArNDEzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHNob3VsZEVuYWJs
ZVJlbW90ZUluc3BlY3RvcigpOwogI2VuZGlmCiAKKyAgICB2b2lkIG1hcmtQcm9jZXNzQXNSZWNl
bnRseVVzZWQoKTsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHBsYXRmb3JtU3VzcGVu
ZFByb2Nlc3MoKTsKICAgICB2b2lkIHBsYXRmb3JtUmVzdW1lUHJvY2VzcygpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDRlZThjYmNiYWFkNmI5
MDZhNDFhNDBjYjUzZmRlZDg0NzEwNWUwM2MuLjY5ZTNlNzVlNjMzNTg0NDdlZjc0ZjNhNjliZDk1
MDc5ZmFjZjM4ODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wOS0wOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBhIFdlYlByb2Nlc3MgY2FwCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAwNjcKKyAgICAgICAg
PHJkYXI6Ly83OTQ3OTI0ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgQVBJIHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYkNvbnRlbnRQcm9jZXNzRGlkVGVybWluYXRlLm1tOgor
ICAgICAgICAoVEVTVCk6CisKIDIwMjEtMDktMDggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgdGVtcG9yYXJpbHkgcHJlZml4ZWQgcHJvcGVy
dHkgZm9yIG1hc2stbW9kZSwgYWxpYXNlZCB0byAtd2Via2l0LW1hc2stc291cmNlLXR5cGUKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViQ29udGVu
dFByb2Nlc3NEaWRUZXJtaW5hdGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dlYkNvbnRlbnRQcm9jZXNzRGlkVGVybWluYXRlLm1tCmluZGV4IGU0NmZmMjk0Y2Q4
MmNhYzY2YTQyZmY0MzA4MTBmOTg0N2NlYjE1YTEuLjllOWQ5MTEwMjVmYTMyNzA2Y2ExNTUxZDc2
YzJhMjZkMWU0NTY2MDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV2ViQ29udGVudFByb2Nlc3NEaWRUZXJtaW5hdGUubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0
ZS5tbQpAQCAtMzc2LDMgKzM3Niw2NyBAQCBURVNUKFdLTmF2aWdhdGlvbiwgV2ViVmlld1VSTElu
UHJvY2Vzc0RpZFRlcm1pbmF0ZSkKICAgICBraWxsKFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRp
Zmllcl0sIDkpOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CisKK1RF
U1QoV0tOYXZpZ2F0aW9uLCBXZWJQcm9jZXNzTGltaXQpCit7CisgICAgY29uc3RleHByIHVuc2ln
bmVkIG1heFByb2Nlc3NDb3VudCA9IDEwOworICAgIFtXS1Byb2Nlc3NQb29sIF9zZXRXZWJQcm9j
ZXNzQ291bnRMaW1pdDptYXhQcm9jZXNzQ291bnRdOworCisgICAgYXV0byBuYXZpZ2F0aW9uRGVs
ZWdhdGUgPSBhZG9wdE5TKFtbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwor
ICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgc2V0RGlkRmluaXNoTmF2aWdhdGlvbjpeKFdLV2ViVmll
dyAqLCBXS05hdmlnYXRpb24gKikgeworICAgICAgICBmaW5pc2hlZExvYWQgPSB0cnVlOworICAg
IH1dOworICAgIGF1dG8gY3JlYXRlV2ViVmlldyA9IFsmXSB7CisgICAgICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CisgICAgICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpu
YXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOworICAgICAgICBmaW5pc2hlZExvYWQgPSBmYWxzZTsK
KyAgICAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiXTsKKyAgICAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZExvYWQpOworICAgICAgICByZXR1cm4g
d2ViVmlldzsKKyAgICB9OworCisgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSBzZXRXZWJDb250ZW50
UHJvY2Vzc0RpZFRlcm1pbmF0ZTpeKFdLV2ViVmlldyAqKSB7CisgICAgICAgIGRpZENyYXNoID0g
dHJ1ZTsKKyAgICB9XTsKKworICAgIFZlY3RvcjxSZXRhaW5QdHI8V0tXZWJWaWV3Pj4gdmlld3M7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1heFByb2Nlc3NDb3VudDsgKytpKQorICAg
ICAgICB2aWV3cy5hcHBlbmQoY3JlYXRlV2ViVmlldygpKTsKKyAgICBFWFBFQ1RfRkFMU0UoZGlk
Q3Jhc2gpOworICAgIGZvciAoYXV0byYgdmlldyA6IHZpZXdzKQorICAgICAgICBFWFBFQ1RfTkUo
W3ZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSwgMCk7CisKKyAgICAvLyBXZSBoYXZlIG5vdyBy
ZWFjaGVkIHRoZSBXZWJQcm9jZXNzIGNhcCwgbGV0J3MgdHJ5IGFuZCBsYXVuY2ggYSBuZXcgb25l
LgorICAgIF9fYmxvY2sgdW5zaWduZWQgY3Jhc2hDb3VudCA9IDA7CisgICAgW25hdmlnYXRpb25E
ZWxlZ2F0ZSBzZXRXZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0ZTpeKFdLV2ViVmlldyAqIHZp
ZXcpIHsKKyAgICAgICAgRVhQRUNUX0VRKHZpZXdzWzBdLCB2aWV3KTsKKyAgICAgICAgKytjcmFz
aENvdW50OworICAgIH1dOworICAgIHZpZXdzLmFwcGVuZChjcmVhdGVXZWJWaWV3KCkpOworCisg
ICAgRVhQRUNUX0VRKGNyYXNoQ291bnQsIDFVKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgdmlld3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKCFpKQorICAgICAgICAgICAgRVhQ
RUNUX0VRKFt2aWV3c1tpXSBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdLCAwKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgRVhQRUNUX05FKFt2aWV3c1tpXSBfd2ViUHJvY2Vzc0lkZW50aWZpZXJd
LCAwKTsKKyAgICB9CisKKyAgICBjcmFzaENvdW50ID0gMDsKKyAgICBbbmF2aWdhdGlvbkRlbGVn
YXRlIHNldFdlYkNvbnRlbnRQcm9jZXNzRGlkVGVybWluYXRlOl4oV0tXZWJWaWV3ICogdmlldykg
eworICAgICAgICBFWFBFQ1RfRVEodmlld3NbMV0sIHZpZXcpOworICAgICAgICArK2NyYXNoQ291
bnQ7CisgICAgfV07CisgICAgdmlld3MuYXBwZW5kKGNyZWF0ZVdlYlZpZXcoKSk7CisKKyAgICBF
WFBFQ1RfRVEoY3Jhc2hDb3VudCwgMVUpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2
aWV3cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoaSA8IDIpCisgICAgICAgICAgICBFWFBF
Q1RfRVEoW3ZpZXdzW2ldIF93ZWJQcm9jZXNzSWRlbnRpZmllcl0sIDApOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBFWFBFQ1RfTkUoW3ZpZXdzW2ldIF93ZWJQcm9jZXNzSWRlbnRpZmllcl0s
IDApOworICAgIH0KKworICAgIFtXS1Byb2Nlc3NQb29sIF9zZXRXZWJQcm9jZXNzQ291bnRMaW1p
dDo0MDBdOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437742</attachid>
            <date>2021-09-09 07:47:30 -0700</date>
            <delta_ts>2021-09-09 09:40:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230067-20210909074729.patch</filename>
            <type>text/plain</type>
            <size>20608</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI2ZDdiNmU0OGI2YWIyNzBi
MmY2ZDRjMzQ4MmY5M2E1Zjk3YWFkOTYuLmQ5OGRiMWJmNmMzOWVkNDM0YmMzODc2YmYzOTY5ZDMw
MWJmMzZiYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjEtMDktMDkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYSBXZWJQcm9jZXNz
IGNhcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMw
MDY3CisgICAgICAgIDxyZGFyOi8vNzk0NzkyNDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2Vv
ZmZyZXkgR2FyZW4uCisKKyAgICAgICAgSW1wbGVtZW50IGEgV2ViUHJvY2VzcyBjYXAgdG8gYXZv
aWQgZ2V0dGluZyBpbnRvIGEgc3RhdGUgd2hlcmUgd2UgcnVuIG91dCBvZiByZXNvdXJjZXMgYW5k
IGNyYXNoIGluIHZhcmlvdXMgd2F5cy4KKyAgICAgICAgVGhlIGN1cnJlbnQgbGltaXQgaXMgNDAw
IGFuZCBjYW4gYmUgY2hhbmdlZCB2aWEgYW4gU1BJLiBUaGUgbGltaXQgaXMgcGVyIFVJUHJvY2Vz
cyAobm90IHBlciBwcm9jZXNzIHBvb2wpLgorICAgICAgICBXaGVuIHdlIHRyeSBhbmQgbGF1bmNo
IGEgbmV3IFdlYlByb2Nlc3MgYW5kIHRoZSBsaW1pdCBoYXMgYmVlbiByZWFjaGVkLCB3ZSB0ZXJt
aW5hdGUgdGhlIGxlYXN0IHJlY2VudGx5IHVzZWQKKyAgICAgICAgV2ViUHJvY2VzcyB0byBhdm9p
ZCBnb2luZyBvdmVyIHRoZSBsaW1pdC4KKworICAgICAgICAqIFNoYXJlZC9Qcm9jZXNzVGVybWlu
YXRpb25SZWFzb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OnRvQVBJKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgrW1dLUHJvY2Vzc1Bvb2wgX3NldFdlYlByb2Nlc3ND
b3VudExpbWl0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1t
OgorICAgICAgICAoV2ViS2l0Ojp3a1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6bG9hZEZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmxvYWRTaW11bGF0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
bG9hZFdlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWxv
YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0p
OgorICAgICAgICAoV2ViS2l0OjpzaG91bGRSZWxvYWRBZnRlclByb2Nlc3NUZXJtaW5hdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6c2V0UHJvY2Vzc0NvdW50TGltaXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6fldlYlByb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6YWRkUHJvdmlzaW9uYWxQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OmFkZEV4aXN0aW5nV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZU9yRmFpbGVkVG9MYXVuY2gpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjptYXJrUHJvY2Vzc0FzUmVjZW50bHlV
c2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisKIDIwMjEtMDkt
MDggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBTYWZhcmkg
VFAgMTMxIGF1ZGlvIGNhblBsYXlUeXBlKCkgcmVwb3J0cyBmYWxzZSBuZWdhdGl2ZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmgKaW5kZXggMjE5
YWNmYzI2NzRmZGY0ZjhlNzMyMmRkZjM5NDY5YzRlYmNhMzVkZS4uZWQyODc2OTgzMjQ5MmVhOTY2
MDU4OTIwOGUzZTAyYWZlZGRmNDM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUHJv
Y2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmgKQEAgLTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBlbnVtIGNsYXNzIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiB7CiAgICAgRXhjZWVkZWRN
ZW1vcnlMaW1pdCwKICAgICBFeGNlZWRlZENQVUxpbWl0LAorICAgIEV4Y2VlZGVkUHJvY2Vzc0Nv
dW50TGltaXQsCiAgICAgUmVxdWVzdGVkQnlDbGllbnQsCiAgICAgQ3Jhc2gsCiAgICAgTmF2aWdh
dGlvblN3YXAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQ
SUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCmluZGV4
IDJlYWI3N2U4MDRhNTU4ZTdmYmEyNWI3OWQ0NzRmNzMwMWIxMGYzMjkuLmQ4OTg3ZWI5YjdkZjYy
YWE4MDg0NTVmNzVhZWMxMzZjYzUzM2JlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLQVBJQ2FzdC5oCkBAIC0yNDMsNiArMjQzLDcgQEAgaW5saW5lIFdLUHJvY2Vzc1Rlcm1p
bmF0aW9uUmVhc29uIHRvQVBJKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiByZWFzb24pCiAgICAg
ICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpSZXF1
ZXN0ZWRCeUNsaWVudDoKICAgICAgICAgcmV0dXJuIGtXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNv
blJlcXVlc3RlZEJ5Q2xpZW50OworICAgIGNhc2UgUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpF
eGNlZWRlZFByb2Nlc3NDb3VudExpbWl0OgogICAgIGNhc2UgUHJvY2Vzc1Rlcm1pbmF0aW9uUmVh
c29uOjpSZXF1ZXN0ZWRCeU5ldHdvcmtQcm9jZXNzOgogICAgIGNhc2UgUHJvY2Vzc1Rlcm1pbmF0
aW9uUmVhc29uOjpSZXF1ZXN0ZWRCeUdQVVByb2Nlc3M6CiAgICAgY2FzZSBQcm9jZXNzVGVybWlu
YXRpb25SZWFzb246OkNyYXNoOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCA4MDI0YmVjZjRmZGRhYjU0MGRkOTc0N2M3NTRm
OGE1ZGIwNzlmYWJjLi5jMWJmOTRjZjM2Nzg2Njk2Zjc5ODM5Mzg0NGM5NjcwMDJjYWNkZjgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbQpAQCAtNTY1LDYgKzU2NSwxMSBAQCAtICh2b2lkKV9zZWVkUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0ZvclRlc3RpbmdXaXRoRmlyc3RQYXJ0eTooTlNVUkwgKilmaXJzdFBhcnR5VQogI2VuZGlm
CiB9CiAKKysgKHZvaWQpX3NldFdlYlByb2Nlc3NDb3VudExpbWl0Oih1bnNpZ25lZClsaW1pdAor
eworICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRQcm9jZXNzQ291bnRMaW1pdChsaW1p
dCk7Cit9CisKIC0gKHZvaWQpX2dhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHNGb3JUZXN0
aW5nCiB7CiAgICAgX3Byb2Nlc3NQb29sLT5nYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRPYmplY3Rz
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sUHJpdmF0ZS5oCmluZGV4IDgzMzlkYjQ3ZjBjYzgwMWRkMTA5YmI1ZjU3MWQxNjlh
YmRiZDQxZjAuLjYxODZmZmRiZWUxZjAwMmU1ZGZiMTZkNTFiNDAwODFiYTE4ZGMzNzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oCkBAIC03Myw2ICs3Myw4IEBACiArIChOU1VSTCAqKV93ZWJzaXRlRGF0YVVS
TEZvckNvbnRhaW5lcldpdGhVUkw6KE5TVVJMICopY29udGFpbmVyVVJMIGJ1bmRsZUlkZW50aWZp
ZXJJZk5vdEluQ29udGFpbmVyOihOU1N0cmluZyAqKWJ1bmRsZUlkZW50aWZpZXI7CiArIChwaWRf
dClfd2ViQXV0aG5Qcm9jZXNzSWRlbnRpZmllciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCisrICh2b2lkKV9zZXRXZWJQcm9jZXNzQ291bnRM
aW1pdDoodW5zaWduZWQpbGltaXQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKKwogLSAodm9pZClfd2FybUluaXRpYWxQcm9jZXNzIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTIpLCBpb3MoMTAuMCkpOwogLSAodm9pZClfYXV0b21hdGlvbkNh
cGFiaWxpdGllc0RpZENoYW5nZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEyKSwgaW9zKDEw
LjApKTsKIC0gKHZvaWQpX3NldEF1dG9tYXRpb25TZXNzaW9uOihfV0tBdXRvbWF0aW9uU2Vzc2lv
biAqKWF1dG9tYXRpb25TZXNzaW9uIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIpLCBpb3Mo
MTAuMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCmluZGV4IDA3M2E3YjdjNGNlMzYzNDU0ZjJjOGQ0ODY2NjkwNzcxY2JkNDRjMWEuLjhj
MDBmYTdhOTM5ZGMwYjlkNDIzYWU1MjU1MzA5Mjc5NmI3NzgzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTEwNjAsNiArMTA2
MCw3IEBAIHN0YXRpYyBfV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24gd2tQcm9jZXNzVGVybWlu
YXRpb25SZWFzb24oUHJvY2Vzc1Rlcm1pbmF0aW9uCiAgICAgICAgIEZBTExUSFJPVUdIOwogICAg
IGNhc2UgUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpSZXF1ZXN0ZWRCeUNsaWVudDoKICAgICAg
ICAgcmV0dXJuIF9XS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvblJlcXVlc3RlZEJ5Q2xpZW50Owor
ICAgIGNhc2UgUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpFeGNlZWRlZFByb2Nlc3NDb3VudExp
bWl0OgogICAgIGNhc2UgUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpSZXF1ZXN0ZWRCeU5ldHdv
cmtQcm9jZXNzOgogICAgIGNhc2UgUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpSZXF1ZXN0ZWRC
eUdQVVByb2Nlc3M6CiAgICAgY2FzZSBQcm9jZXNzVGVybWluYXRpb25SZWFzb246OkNyYXNoOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMmZlOTNhNTkxNTZl
OGIwZTY5ODdjMDg4NTVkM2QwYWQzMjljODA2NS4uNjMyMjkxYWY5ZjliOWE1YTY4NTViMDUyMjJh
YjczOTQ1NjYwMzc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC0xNDEzLDYgKzE0MTMsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRo
TmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogCiAgICAgbmF2
aWdhdGlvbi5zZXRJc0xvYWRlZFdpdGhOYXZpZ2F0aW9uU2hhcmVkKHRydWUpOwogCisgICAgcHJv
Y2Vzcy0+bWFya1Byb2Nlc3NBc1JlY2VudGx5VXNlZCgpOworCiAgICAgaWYgKCFwcm9jZXNzLT5p
c0xhdW5jaGluZygpIHx8ICF1cmwuaXNMb2NhbEZpbGUoKSkKICAgICAgICAgcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRlcnMpLCB3ZWJQYWdl
SUQpOwogICAgIGVsc2UKQEAgLTE0NzQsNiArMTQ3Niw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBj
b25zCiAgICAgbWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShtX3Byb2Nlc3Ms
IGZpbGVVUkwsIHJlc291cmNlRGlyZWN0b3J5VVJMLCBsb2FkUGFyYW1ldGVycy5zYW5kYm94RXh0
ZW5zaW9uSGFuZGxlLCBjaGVja0Fzc3VtZWRSZWFkQWNjZXNzVG9SZXNvdXJjZVVSTCk7CiAgICAg
YWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhtX3Byb2Nlc3MsIGxvYWRQYXJhbWV0ZXJzKTsKIAor
ICAgIG1fcHJvY2Vzcy0+bWFya1Byb2Nlc3NBc1JlY2VudGx5VXNlZCgpOwogICAgIGlmIChtX3By
b2Nlc3MtPmlzTGF1bmNoaW5nKCkpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxv
YWRSZXF1ZXN0V2FpdGluZ0ZvclByb2Nlc3NMYXVuY2gobG9hZFBhcmFtZXRlcnMsIHJlc291cmNl
RGlyZWN0b3J5VVJMLCBtX2lkZW50aWZpZXIsIGNoZWNrQXNzdW1lZFJlYWRBY2Nlc3NUb1Jlc291
cmNlVVJMKSk7CiAgICAgZWxzZQpAQCAtMTUzMyw2ICsxNTM2LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBw
cm9jZXNzLAogICAgIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4g
PSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFt
ZXRlcnMocHJvY2VzcywgbG9hZFBhcmFtZXRlcnMpOwogCisgICAgcHJvY2Vzcy0+bWFya1Byb2Nl
c3NBc1JlY2VudGx5VXNlZCgpOwogICAgIHByb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VV
UkwoKnRoaXMsIGJhc2VVUkwpOwogICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkxvYWREYXRhKGxvYWRQYXJhbWV0ZXJzKSwgd2ViUGFnZUlEKTsKICAgICBwcm9jZXNzLT5zdGFy
dFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKQEAgLTE1OTAsNiArMTU5NCw3IEBAIFJlZlB0cjxBUEk6
Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFNpbXVsYXRlZFJlcXVlc3QoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1CiAKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKG1fcHJvY2Vzcywg
bG9hZFBhcmFtZXRlcnMpOwogCisgICAgbV9wcm9jZXNzLT5tYXJrUHJvY2Vzc0FzUmVjZW50bHlV
c2VkKCk7CiAgICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCp0aGlzLCBi
YXNlVVJMKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTaW11
bGF0ZWRSZXF1ZXN0QW5kUmVzcG9uc2UobG9hZFBhcmFtZXRlcnMsIHNpbXVsYXRlZFJlc3BvbnNl
KSwgbV93ZWJQYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+c3RhcnRSZXNwb25zaXZlbmVzc1RpbWVy
KCk7CkBAIC0xNjMzLDYgKzE2MzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0
ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgUwogICAgIGxv
YWRQYXJhbWV0ZXJzLnVzZXJEYXRhID0gVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVj
dHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKTsKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0
ZXJzKHByb2Nlc3MoKSwgbG9hZFBhcmFtZXRlcnMpOwogCisgICAgbV9wcm9jZXNzLT5tYXJrUHJv
Y2Vzc0FzUmVjZW50bHlVc2VkKCk7CiAgICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9C
YXNlVVJMKCp0aGlzLCBiYXNlVVJMLnN0cmluZygpKTsKICAgICBtX3Byb2Nlc3MtPmFzc3VtZVJl
YWRBY2Nlc3NUb0Jhc2VVUkwoKnRoaXMsIHVucmVhY2hhYmxlVVJMLnN0cmluZygpKTsKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkQWx0ZXJuYXRlSFRNTChsb2FkUGFyYW1ldGVycykp
OwpAQCAtMTY2Miw2ICsxNjY4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNoaXZl
RGF0YShBUEk6OkRhdGEqIHdlYkFyY2hpdmVEYXRhLCBBUEk6Ok9iamVjdCogdXMKICAgICBsb2Fk
UGFyYW1ldGVycy51c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3Rz
VG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSk7CiAgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVy
cyhwcm9jZXNzKCksIGxvYWRQYXJhbWV0ZXJzKTsKIAorICAgIG1fcHJvY2Vzcy0+bWFya1Byb2Nl
c3NBc1JlY2VudGx5VXNlZCgpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRh
KGxvYWRQYXJhbWV0ZXJzKSk7CiAgICAgbV9wcm9jZXNzLT5zdGFydFJlc3BvbnNpdmVuZXNzVGlt
ZXIoKTsKIH0KQEAgLTE3MzcsNiArMTc0NCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdl
YlBhZ2VQcm94eTo6cmVsb2FkKE9wdGlvblNldDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+IG9wCiAg
ICAgaWYgKG9wdGlvbnMuY29udGFpbnMoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpEaXNhYmxlQ29u
dGVudEJsb2NrZXJzKSkKICAgICAgICAgbmF2aWdhdGlvbi0+c2V0VXNlckNvbnRlbnRFeHRlbnNp
b25zRW5hYmxlZChmYWxzZSk7CiAKKyAgICBtX3Byb2Nlc3MtPm1hcmtQcm9jZXNzQXNSZWNlbnRs
eVVzZWQoKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWxvYWQobmF2aWdhdGlvbi0+
bmF2aWdhdGlvbklEKCksIG9wdGlvbnMudG9SYXcoKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkp
OwogICAgIG1fcHJvY2Vzcy0+c3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiAKQEAgLTE4MTUs
NiArMTgyMyw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0Jh
Y2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAgICAgYXV0byB0cmFuc2FjdGlv
biA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogICAgIG1fcGFnZUxvYWRTdGF0ZS5z
ZXRQZW5kaW5nQVBJUmVxdWVzdCh0cmFuc2FjdGlvbiwgeyBuYXZpZ2F0aW9uID8gbmF2aWdhdGlv
bi0+bmF2aWdhdGlvbklEKCkgOiAwLCBpdGVtLnVybCgpIH0pOwogCisgICAgbV9wcm9jZXNzLT5t
YXJrUHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklE
KCkgOiAwLCBpdGVtLml0ZW1JRCgpLCBmcmFtZUxvYWRUeXBlLCBTaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQ6Ok5vLCBzdGQ6Om51bGxvcHQsIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0
ZWQpKTsKICAgICBtX3Byb2Nlc3MtPnN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcigpOwogCkBAIC01
MTc2LDYgKzUxODUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlTWFpbkRvY3VtZW50
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld0lzQmVj
b21pbmdWaXNpYmxlKCkKIHsKKyAgICBtX3Byb2Nlc3MtPm1hcmtQcm9jZXNzQXNSZWNlbnRseVVz
ZWQoKTsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIGlmIChtX3VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcikKICAgICAgICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXItPnZpZXdJc0JlY29taW5nVmlzaWJsZSgpOwpAQCAtNzczOSw2ICs3NzQ5LDcgQEAg
c3RhdGljIGJvb2wgc2hvdWxkUmVsb2FkQWZ0ZXJQcm9jZXNzVGVybWluYXRpb24oUHJvY2Vzc1Rl
cm1pbmF0aW9uUmVhc29uIHJlYXNvbikKICAgICBjYXNlIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNv
bjo6UmVxdWVzdGVkQnlHUFVQcm9jZXNzOgogICAgIGNhc2UgUHJvY2Vzc1Rlcm1pbmF0aW9uUmVh
c29uOjpDcmFzaDoKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBQcm9jZXNzVGVybWlu
YXRpb25SZWFzb246OkV4Y2VlZGVkUHJvY2Vzc0NvdW50TGltaXQ6CiAgICAgY2FzZSBQcm9jZXNz
VGVybWluYXRpb25SZWFzb246Ok5hdmlnYXRpb25Td2FwOgogICAgIGNhc2UgUHJvY2Vzc1Rlcm1p
bmF0aW9uUmVhc29uOjpSZXF1ZXN0ZWRCeUNsaWVudDoKICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggOWYyYmI3NGJmNGExOTFi
NWE1ZWMwYjBmNjI5OGQyYjBjZWIwMGVlNC4uZmNlZjQzMDVjODgyMjI3MWM5MThlY2EwODE5NjRj
ZTQyYTc5YTk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cApAQCAtODY2LDYgKzg2Niw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByZXdhcm1Qcm9jZXNz
KCkKICAgICBpZiAobV9wcmV3YXJtZWRQcm9jZXNzKQogICAgICAgICByZXR1cm47CiAKKyAgICBp
ZiAoV2ViUHJvY2Vzc1Byb3h5OjpoYXNSZWFjaGVkUHJvY2Vzc0NvdW50TGltaXQoKSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0coUGVyZm9ybWFuY2VM
b2dnaW5nLCAicHJld2FybVByb2Nlc3M6IFByZXdhcm1pbmcgYSBXZWJQcm9jZXNzIGZvciBwZXJm
b3JtYW5jZSIpOwogICAgIGNyZWF0ZU5ld1dlYlByb2Nlc3MobnVsbHB0ciwgV2ViUHJvY2Vzc1By
b3h5OjpJc1ByZXdhcm1lZDo6WWVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IDQzZDlkNDkxOGIxNDlhODE1NWY3NDQwM2ZkOTY1ZGNlZTJm
NGVlM2YuLmQ5YmE2NDgwZjhkNmViZmI4ZGU4NmRiZmJhNmRjNzAxNTE1OWE2MDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTA4LDYgKzEwOCwy
NSBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorc3Rh
dGljIHVuc2lnbmVkIHNfbWF4UHJvY2Vzc0NvdW50IHsgNDAwIH07CisKK3N0YXRpYyBMaXN0SGFz
aFNldDxXZWJQcm9jZXNzUHJveHkqPiYgbGl2ZVByb2Nlc3Nlc0xSVSgpCit7CisgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TGlzdEhhc2hT
ZXQ8V2ViUHJvY2Vzc1Byb3h5Kj4+IHByb2Nlc3NlczsKKyAgICByZXR1cm4gcHJvY2Vzc2VzOwor
fQorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0UHJvY2Vzc0NvdW50TGltaXQodW5zaWduZWQg
bGltaXQpCit7CisgICAgc19tYXhQcm9jZXNzQ291bnQgPSBsaW1pdDsKK30KKworYm9vbCBXZWJQ
cm9jZXNzUHJveHk6Omhhc1JlYWNoZWRQcm9jZXNzQ291bnRMaW1pdCgpCit7CisgICAgcmV0dXJu
IGxpdmVQcm9jZXNzZXNMUlUoKS5zaXplKCkgPj0gc19tYXhQcm9jZXNzQ291bnQ7Cit9CisKIHN0
YXRpYyBib29sIGlzTWFpblRocmVhZE9yQ2hlY2tEaXNhYmxlZCgpCiB7CiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKQEAgLTE1MCw4ICsxNjksMTcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmZv
cldlYlBhZ2VzV2l0aE9yaWdpbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlY3UK
IFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQ
b29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSwgSXNQ
cmV3YXJtZWQgaXNQcmV3YXJtZWQsIENyb3NzT3JpZ2luTW9kZSBjcm9zc09yaWdpbk1vZGUsIFNo
b3VsZExhdW5jaFByb2Nlc3Mgc2hvdWxkTGF1bmNoUHJvY2VzcykKIHsKICAgICBhdXRvIHByb3h5
ID0gYWRvcHRSZWYoKm5ldyBXZWJQcm9jZXNzUHJveHkocHJvY2Vzc1Bvb2wsIHdlYnNpdGVEYXRh
U3RvcmUsIGlzUHJld2FybWVkLCBjcm9zc09yaWdpbk1vZGUpKTsKLSAgICBpZiAoc2hvdWxkTGF1
bmNoUHJvY2VzcyA9PSBTaG91bGRMYXVuY2hQcm9jZXNzOjpZZXMpCisgICAgaWYgKHNob3VsZExh
dW5jaFByb2Nlc3MgPT0gU2hvdWxkTGF1bmNoUHJvY2Vzczo6WWVzKSB7CisgICAgICAgIGlmIChs
aXZlUHJvY2Vzc2VzTFJVKCkuc2l6ZSgpID49IHNfbWF4UHJvY2Vzc0NvdW50KSB7CisgICAgICAg
ICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQ
b29scygpKQorICAgICAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5j
bGVhcigpOworICAgICAgICAgICAgaWYgKGxpdmVQcm9jZXNzZXNMUlUoKS5zaXplKCkgPj0gc19t
YXhQcm9jZXNzQ291bnQpCisgICAgICAgICAgICAgICAgbGl2ZVByb2Nlc3Nlc0xSVSgpLmZpcnN0
KCktPnJlcXVlc3RUZXJtaW5hdGlvbihQcm9jZXNzVGVybWluYXRpb25SZWFzb246OkV4Y2VlZGVk
UHJvY2Vzc0NvdW50TGltaXQpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVChsaXZlUHJvY2Vz
c2VzTFJVKCkuc2l6ZSgpIDwgc19tYXhQcm9jZXNzQ291bnQpOworICAgICAgICBsaXZlUHJvY2Vz
c2VzTFJVKCkuYWRkKHByb3h5LnB0cigpKTsKICAgICAgICAgcHJveHktPmNvbm5lY3QoKTsKKyAg
ICB9CiAgICAgcmV0dXJuIHByb3h5OwogfQogCkBAIC0yMzcsNiArMjY1LDggQEAgV2ViUHJvY2Vz
c1Byb3h5Ojp+V2ViUHJvY2Vzc1Byb3h5KCkKICAgICBBU1NFUlQobV9wYWdlVVJMUmV0YWluQ291
bnRNYXAuaXNFbXB0eSgpKTsKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vz
cywgImRlc3RydWN0b3I6Iik7CiAKKyAgICBsaXZlUHJvY2Vzc2VzTFJVKCkucmVtb3ZlKHRoaXMp
OworCiAgICAgZm9yIChhdXRvIGlkZW50aWZpZXIgOiBtX3NwZWVjaFJlY29nbml0aW9uU2VydmVy
TWFwLmtleXMoKSkKICAgICAgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKTsK
IApAQCAtMzM3LDYgKzM2Nyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRQcm92aXNpb25h
bFBhZ2VQcm94eShQcm92aXNpb25hbFBhZ2VQcm94eSYgcHJvdmlzaW9uYWxQCiAKICAgICBBU1NF
UlQoIW1faXNJblByb2Nlc3NDYWNoZSk7CiAgICAgQVNTRVJUKCFtX3Byb3Zpc2lvbmFsUGFnZXMu
Y29udGFpbnMoJnByb3Zpc2lvbmFsUGFnZSkpOworICAgIG1hcmtQcm9jZXNzQXNSZWNlbnRseVVz
ZWQoKTsKICAgICBtX3Byb3Zpc2lvbmFsUGFnZXMuYWRkKCZwcm92aXNpb25hbFBhZ2UpOwogICAg
IHVwZGF0ZVJlZ2lzdHJhdGlvbldpdGhEYXRhU3RvcmUoKTsKIH0KQEAgLTU1OCw2ICs1ODksNyBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkRXhpc3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94eSYg
d2ViUGFnZSwgQmVnaW5zVXNpbmdEYXRhUwogICAgICAgICBtX3Byb2Nlc3NQb29sLT5wYWdlQmVn
aW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUod2ViUGFnZS5pZGVudGlmaWVyKCksIHdlYlBhZ2Uud2Vi
c2l0ZURhdGFTdG9yZSgpKTsKICAgICB9CiAKKyAgICBtYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2Vk
KCk7CiAgICAgbV9wYWdlTWFwLnNldCh3ZWJQYWdlLmlkZW50aWZpZXIoKSwgJndlYlBhZ2UpOwog
ICAgIGdsb2JhbFBhZ2VNYXAoKS5zZXQod2ViUGFnZS5pZGVudGlmaWVyKCksICZ3ZWJQYWdlKTsK
IApAQCAtODg5LDYgKzkyMSw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRGlkVGVy
bWluYXRlT3JGYWlsZWRUb0xhdW5jaChQcm9jZXNzVGVybWluYXRpb25SZWFzCiAgICAgLy8gdG8g
YmUgZGVsZXRlZCBiZWZvcmUgd2UgY2FuIGZpbmlzaCBvdXIgd29yay4KICAgICBhdXRvIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKIAorICAgIGxpdmVQcm9jZXNzZXNMUlUoKS5yZW1v
dmUodGhpcyk7CisKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
ICAgICBtX3VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHktPmNsZWFyKCk7CiAjZW5kaWYKQEAg
LTE4NTYsNiArMTg5MCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmRCYWNrZ3JvdW5kQWN0
aXZpdHlGb3JGdWxsc2NyZWVuSW5wdXQoKQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlz
aFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV0VC
UFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2Vy
Q29udGV4dDogU3RhcnRlZCIpOworICAgIG1hcmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKICAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVs
dFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5z
ZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQsIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2
aWNlV29ya2VyUGFnZUlELCBzdG9yZSwgKm1fcmVnaXN0cmFibGVEb21haW4sIG1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uLT5pbml0aWFsaXphdGlvbkRhdGEgfSwgW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBpZiAod2Vha1RoaXMpCiAgICAgICAgICAg
ICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImVzdGFibGlzaFNlcnZpY2VX
b3JrZXJDb250ZXh0OiBGaW5pc2hlZCIpOwpAQCAtMjAwNiw2ICsyMDQxLDEyIEBAIGJvb2wgV2Vi
UHJvY2Vzc1Byb3h5OjpoYXNTbGVlcERpc2FibGVyKCkgY29uc3QKICAgICByZXR1cm4gIW1fc2xl
ZXBEaXNhYmxlcnMuaXNFbXB0eSgpOwogfQogCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6bWFya1By
b2Nlc3NBc1JlY2VudGx5VXNlZCgpCit7CisgICAgaWYgKGxpdmVQcm9jZXNzZXNMUlUoKS5jb250
YWlucyh0aGlzKSkKKyAgICAgICAgbGl2ZVByb2Nlc3Nlc0xSVSgpLmFwcGVuZE9yTW92ZVRvTGFz
dCh0aGlzKTsKK30KKwogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnN5c3RlbUJlZXAoKQogewogICAg
IFBBTDo6c3lzdGVtQmVlcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaAppbmRleCA5ZGM3Mjg0OTA0Y2VhZWYwZTA0NGVmNWQyNjJmNDhlZTlhNDkwNGI3Li4wZWEy
NTk0YmViYWFmZjc2NmRiOTRkY2IzNjcyYTk2MmMxYjg0MjM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTY2LDYgKzE2Niw5IEBAIHB1YmxpYzoKICAg
ICAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdDsKIAorICAgIHN0YXRpYyBi
b29sIGhhc1JlYWNoZWRQcm9jZXNzQ291bnRMaW1pdCgpOworICAgIHN0YXRpYyB2b2lkIHNldFBy
b2Nlc3NDb3VudExpbWl0KHVuc2lnbmVkKTsKKwogICAgIHN0YXRpYyBXZWJQcm9jZXNzUHJveHkq
IHByb2Nlc3NGb3JJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKICAgICBz
dGF0aWMgV2ViUGFnZVByb3h5KiB3ZWJQYWdlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpOwogICAg
IFJlZjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIFJlZjxBUEk6OlBh
Z2VDb25maWd1cmF0aW9uPiYmKTsKQEAgLTQxMCw2ICs0MTMsOCBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGJvb2wgc2hvdWxkRW5hYmxlUmVtb3RlSW5zcGVjdG9yKCk7CiAjZW5kaWYKIAorICAgIHZv
aWQgbWFya1Byb2Nlc3NBc1JlY2VudGx5VXNlZCgpOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAg
IHZvaWQgcGxhdGZvcm1TdXNwZW5kUHJvY2VzcygpOwogICAgIHZvaWQgcGxhdGZvcm1SZXN1bWVQ
cm9jZXNzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggNGVlOGNiY2JhYWQ2YjkwNmE0MWE0MGNiNTNmZGVkODQ3MTA1ZTAzYy4uNjZlZTk4MTMw
NTM5ZTNhM2FkZTA2M2U3NTllODI1NmFjYzAzZDZjNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA5LTA5ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGEgV2Vi
UHJvY2VzcyBjYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMDA2NworICAgICAgICA8cmRhcjovLzc5NDc5MjQ0PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgIEFkZCBBUEkgdGVzdCBjb3ZlcmFnZS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViQ29udGVudFByb2Nl
c3NEaWRUZXJtaW5hdGUubW06CisgICAgICAgIChURVNUKToKKwogMjAyMS0wOS0wOCAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSB0ZW1wb3Jh
cmlseSBwcmVmaXhlZCBwcm9wZXJ0eSBmb3IgbWFzay1tb2RlLCBhbGlhc2VkIHRvIC13ZWJraXQt
bWFzay1zb3VyY2UtdHlwZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0ZS5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViQ29udGVudFByb2Nlc3NEaWRUZXJtaW5hdGUu
bW0KaW5kZXggZTQ2ZmYyOTRjZDgyY2FjNjZhNDJmZjQzMDgxMGY5ODQ3Y2ViMTVhMS4uOWU5ZDkx
MTAyNWZhMzI3MDZjYTE1NTFkNzZjMmEyNmQxZTQ1NjYwMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0
ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYkNvbnRl
bnRQcm9jZXNzRGlkVGVybWluYXRlLm1tCkBAIC0zNzYsMyArMzc2LDY3IEBAIFRFU1QoV0tOYXZp
Z2F0aW9uLCBXZWJWaWV3VVJMSW5Qcm9jZXNzRGlkVGVybWluYXRlKQogICAgIGtpbGwoW3dlYlZp
ZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSwgOSk7CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lKTsKIH0KKworVEVTVChXS05hdmlnYXRpb24sIFdlYlByb2Nlc3NMaW1pdCkKK3sK
KyAgICBjb25zdGV4cHIgdW5zaWduZWQgbWF4UHJvY2Vzc0NvdW50ID0gMTA7CisgICAgW1dLUHJv
Y2Vzc1Bvb2wgX3NldFdlYlByb2Nlc3NDb3VudExpbWl0Om1heFByb2Nlc3NDb3VudF07CisKKyAg
ICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0TmF2aWdhdGlvbkRlbGVn
YXRlIGFsbG9jXSBpbml0XSk7CisgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSBzZXREaWRGaW5pc2hO
YXZpZ2F0aW9uOl4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvbiAqKSB7CisgICAgICAgIGZpbmlz
aGVkTG9hZCA9IHRydWU7CisgICAgfV07CisgICAgYXV0byBjcmVhdGVXZWJWaWV3ID0gWyZdIHsK
KyAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICAgICAgW3dlYlZpZXcgc2V0
TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07CisgICAgICAgIGZp
bmlzaGVkTG9hZCA9IGZhbHNlOworICAgICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpA
InNpbXBsZSJdOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkTG9h
ZCk7CisgICAgICAgIHJldHVybiB3ZWJWaWV3OworICAgIH07CisKKyAgICBbbmF2aWdhdGlvbkRl
bGVnYXRlIHNldFdlYkNvbnRlbnRQcm9jZXNzRGlkVGVybWluYXRlOl4oV0tXZWJWaWV3ICopIHsK
KyAgICAgICAgZGlkQ3Jhc2ggPSB0cnVlOworICAgIH1dOworCisgICAgVmVjdG9yPFJldGFpblB0
cjxXS1dlYlZpZXc+PiB2aWV3czsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF4UHJv
Y2Vzc0NvdW50OyArK2kpCisgICAgICAgIHZpZXdzLmFwcGVuZChjcmVhdGVXZWJWaWV3KCkpOwor
ICAgIEVYUEVDVF9GQUxTRShkaWRDcmFzaCk7CisgICAgZm9yIChhdXRvJiB2aWV3IDogdmlld3Mp
CisgICAgICAgIEVYUEVDVF9ORShbdmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdLCAwKTsKKwor
ICAgIC8vIFdlIGhhdmUgbm93IHJlYWNoZWQgdGhlIFdlYlByb2Nlc3MgY2FwLCBsZXQncyB0cnkg
YW5kIGxhdW5jaCBhIG5ldyBvbmUuCisgICAgX19ibG9jayB1bnNpZ25lZCBjcmFzaENvdW50ID0g
MDsKKyAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHNldFdlYkNvbnRlbnRQcm9jZXNzRGlkVGVybWlu
YXRlOl4oV0tXZWJWaWV3ICogdmlldykgeworICAgICAgICBFWFBFQ1RfRVEodmlld3NbMF0sIHZp
ZXcpOworICAgICAgICArK2NyYXNoQ291bnQ7CisgICAgfV07CisgICAgdmlld3MuYXBwZW5kKGNy
ZWF0ZVdlYlZpZXcoKSk7CisKKyAgICBFWFBFQ1RfRVEoY3Jhc2hDb3VudCwgMVUpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCB2aWV3cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAo
IWkpCisgICAgICAgICAgICBFWFBFQ1RfRVEoW3ZpZXdzW2ldIF93ZWJQcm9jZXNzSWRlbnRpZmll
cl0sIDApOworICAgICAgICBlbHNlCisgICAgICAgICAgICBFWFBFQ1RfTkUoW3ZpZXdzW2ldIF93
ZWJQcm9jZXNzSWRlbnRpZmllcl0sIDApOworICAgIH0KKworICAgIGNyYXNoQ291bnQgPSAwOwor
ICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgc2V0V2ViQ29udGVudFByb2Nlc3NEaWRUZXJtaW5hdGU6
XihXS1dlYlZpZXcgKiB2aWV3KSB7CisgICAgICAgIEVYUEVDVF9FUSh2aWV3c1sxXSwgdmlldyk7
CisgICAgICAgICsrY3Jhc2hDb3VudDsKKyAgICB9XTsKKyAgICB2aWV3cy5hcHBlbmQoY3JlYXRl
V2ViVmlldygpKTsKKworICAgIEVYUEVDVF9FUShjcmFzaENvdW50LCAxVSk7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHZpZXdzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChpIDwg
MikKKyAgICAgICAgICAgIEVYUEVDVF9FUShbdmlld3NbaV0gX3dlYlByb2Nlc3NJZGVudGlmaWVy
XSwgMCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEVYUEVDVF9ORShbdmlld3NbaV0gX3dl
YlByb2Nlc3NJZGVudGlmaWVyXSwgMCk7CisgICAgfQorCisgICAgW1dLUHJvY2Vzc1Bvb2wgX3Nl
dFdlYlByb2Nlc3NDb3VudExpbWl0OjQwMF07Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>