<?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>215153</bug_id>
          
          <creation_ts>2020-08-04 18:05:36 -0700</creation_ts>
          <short_desc>[JSC] Use LazyNeverDestroyed &amp; std::call_once for complex singletons</short_desc>
          <delta_ts>2021-04-20 03:15: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>New Bugs</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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1677836</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-04 18:05:36 -0700</bug_when>
    <thetext>[JSC] Use LazyNeverDestroyed &amp; std::call_once for complex singletons</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677839</commentid>
    <comment_count>1</comment_count>
      <attachid>405972</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-04 18:09:18 -0700</bug_when>
    <thetext>Created attachment 405972
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677840</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-04 18:09:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/65718983&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677841</commentid>
    <comment_count>3</comment_count>
      <attachid>405973</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-04 18:14:21 -0700</bug_when>
    <thetext>Created attachment 405973
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677845</commentid>
    <comment_count>4</comment_count>
      <attachid>405975</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-04 18:24:57 -0700</bug_when>
    <thetext>Created attachment 405975
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677853</commentid>
    <comment_count>5</comment_count>
      <attachid>405975</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-08-04 18:37:12 -0700</bug_when>
    <thetext>Comment on attachment 405975
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677872</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-04 20:57:45 -0700</bug_when>
    <thetext>stress/put-by-val-direct-putprivate.js.dfg-eager is failing recently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677880</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-04 21:19:10 -0700</bug_when>
    <thetext>Committed r265276: &lt;https://trac.webkit.org/changeset/265276&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 405975.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677982</commentid>
    <comment_count>8</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-08-05 10:57:24 -0700</bug_when>
    <thetext>Should we have a class that contains the std::once and whatnot? Maybe call it ConcurrentLazyNeverDestroyed or something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752195</commentid>
    <comment_count>9</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-04-20 02:35:03 -0700</bug_when>
    <thetext>What&apos;s the logic in the commit?

&gt; WebKit&apos;s static does not have thread-safety.

Isn&apos;t the deduction against c++11 spec?

Function local static initialization is specified to be thread-safe?

Here is example:
https://godbolt.org/z/jcMz9M11d

Here is discussion:
https://stackoverflow.com/questions/26013650/threadsafe-lazy-initialization-static-vs-stdcall-once-vs-double-checked-locki/27206650

What makes WebKit statics broken? 
Asking because I see plenty of static uses in WebKit that rely on this...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752204</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-20 03:15:56 -0700</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #9)
&gt; What&apos;s the logic in the commit?
&gt; 
&gt; &gt; WebKit&apos;s static does not have thread-safety.
&gt; 
&gt; Isn&apos;t the deduction against c++11 spec?

We are explicitly disabling that in WebKit for performance reason via -fno-threadsafe-statics.
Check GCC_THREADSAFE_STATICS in WebKit tree.


&gt; 
&gt; Function local static initialization is specified to be thread-safe?
&gt; 
&gt; Here is example:
&gt; https://godbolt.org/z/jcMz9M11d
&gt; 
&gt; Here is discussion:
&gt; https://stackoverflow.com/questions/26013650/threadsafe-lazy-initialization-
&gt; static-vs-stdcall-once-vs-double-checked-locki/27206650
&gt; 
&gt; What makes WebKit statics broken? 
&gt; Asking because I see plenty of static uses in WebKit that rely on this...</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405972</attachid>
            <date>2020-08-04 18:09:18 -0700</date>
            <delta_ts>2020-08-04 18:14:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215153-20200804180917.patch</filename>
            <type>text/plain</type>
            <size>17731</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
Njg1MDZkN2QzZjRlMTRhYzkxYjcyNWFjNDVkYzU3YzQzZDM0M2Q3Li4wZTljZWJmZTRiYmJmZTQy
NzNlOTU1YWQ1NzA3NjNhZGE1ZjQxMTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAyMC0wOC0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBMYXp5TmV2ZXJEZXN0cm95ZWQgJiBzdGQ6OmNhbGxfb25j
ZSBmb3IgY29tcGxleCBzaW5nbGV0b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTUxNTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1NzE4OTgz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGFy
ZSBnZXR0aW5nIHNvbWUgY3Jhc2hlcyBpbiBSZW1vdGVJbnNwZWN0b3IgYW5kIHRoaXMgc3BlY3Vs
YXRpdmVseSBmaXhlcyB0aGUgY3Jhc2guCisgICAgICAgIE15IGd1ZXNzIGlzIHRoYXQgTmV2ZXJE
ZXN0cm95ZWQ8UmVtb3RlSW5zcGVjdG9yPiBjYWxscyBjb25zdHJ1Y3RvciB0d2ljZSBpbiBoZWF2
aWx5IGNvbnRlbmRlZCBzaXR1YXRpb246CisgICAgICAgIFdlYktpdCdzIHN0YXRpYyBkb2VzIG5v
dCBoYXZlIHRocmVhZC1zYWZldHkuIElmIHR3byB0aHJlYWRzIGNvbWUgaGVyZSBhdCB0aGUgc2Ft
ZSB0aW1lLCBpdCBpcyBwb3NzaWJsZSB0aGF0CisgICAgICAgIGNvbnN0cnVjdG9yIGlzIGludm9r
ZWQgdHdpY2UuIEluIHRoYXQgY2FzZSwgbGF0ZXIgY29uc3RydWN0b3Igd2lsbCBjbGVhciBtZW1i
ZXJzLCB3aGljaCBpbnZvbHZlcyBjbGVhcmluZworICAgICAgICBMb2NrIG1fbXV0ZXggZmllbGQu
IFRoaXMgbWFrZXMgTG9jaydzIHN0YXR1cyBicm9rZW4uCisgICAgICAgIFRoaXMgcGF0Y2ggdXNl
cyBMYXp5TmV2ZXJEZXN0cm95ZWQgYW5kIHN0ZDo6Y2FsbF9vbmNlIHRvIGVuc3VyZSBpbnZva2lu
ZyBjb25zdHJ1Y3RvciBvbmx5IG9uY2UuCisKKyAgICAgICAgKiBBUEkvZ2xpYi9KU0NWaXJ0dWFs
TWFjaGluZS5jcHA6CisgICAgICAgICogZGZnL0RGR0NvbW1vbkRhdGEuY3BwOgorICAgICAgICAq
IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yLmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9S
ZW1vdGVJbnNwZWN0b3JDb2NvYS5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVj
dG9yOjpzaW5nbGV0b24pOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJ
bnNwZWN0b3JHbGliLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpz
aW5nbGV0b24pOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3Bl
Y3RvclNlcnZlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZl
cjo6c2luZ2xldG9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJ
bnNwZWN0b3JTb2NrZXQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6
OnNpbmdsZXRvbik6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5z
cGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludDo6c2luZ2xldG9uKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpvcGNvZGVJRFRhYmxl
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjppbnRs
QXZhaWxhYmxlTG9jYWxlcyk6CisgICAgICAgIChKU0M6OmludGxDb2xsYXRvckF2YWlsYWJsZUxv
Y2FsZXMpOgorICAgICAgICAoSlNDOjpkZWZhdWx0TG9jYWxlKToKKyAgICAgICAgKEpTQzo6bnVt
YmVyaW5nU3lzdGVtc0ZvckxvY2FsZSk6CisKIDIwMjAtMDgtMDMgIEFsYmVydG8gR2FyY2lhICA8
YmVydG9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSAyLjI5LjQgZmFpbHMgdG8gYnVpbGQg
aW4gYXJtaGYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggZjhjYTFmYTlhYTQzOTQ0MmM1ODc5ZjZkYzY2ODc4NTEwODk3ZTQyNC4u
OTVlZjk0OGQ2N2QwYWQzMGQwNWFmMTk3MjM3YWYzYzhhMzhiN2U4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAyMC0wOC0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisg
ICAgICAgIFtKU0NdIFVzZSBMYXp5TmV2ZXJEZXN0cm95ZWQgJiBzdGQ6OmNhbGxfb25jZSBmb3Ig
Y29tcGxleCBzaW5nbGV0b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTUxNTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1NzE4OTgzPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsb2NrJ3Mg
Yml0cyBpbiBjcmFzaCBpbmZvcm1hdGlvbiB0byBpbnZlc3RpZ2F0ZSBpZiB0aGlzIHNwZWN1bGF0
aXZlIGZpeCBkb2VzIG5vdCB3b3JrLgorCisgICAgICAgICogd3RmL0xvY2tBbGdvcml0aG1Jbmxp
bmVzLmg6CisgICAgICAgIChXVEY6Okhvb2tzPjo6bG9ja1Nsb3cpOgorICAgICAgICAoV1RGOjpI
b29rcz46OnVubG9ja1Nsb3cpOgorCiAyMDIwLTA4LTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgYWJvdXQ6IHNjaGVtZSBVUkwgY29uc3Rh
bnRzIHNob3VsZCBiZSBiYWNrZWQgYnkgU3RhdGljU3RyaW5nSW1wbApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZpcnR1YWxNYWNoaW5lLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWaXJ0dWFsTWFjaGluZS5jcHAKaW5kZXggNmFk
Njk0MGM2NGZmY2EzYjg2NjU4NTJhN2VkMmNhNzM1ZDZmMGM5NC4uMTcxMzI0ODVlNmQ4ZDFhYTgx
NjMwMjY4YWI4YmM3MGExOTMxM2VhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9nbGliL0pTQ1ZpcnR1YWxNYWNoaW5lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL2dsaWIvSlNDVmlydHVhbE1hY2hpbmUuY3BwCkBAIC01MSw4ICs1MSwxMiBAQCBzdGF0
aWMgTG9jayB3cmFwcGVyQ2FjaGVNdXRleDsKIAogc3RhdGljIEhhc2hNYXA8SlNDb250ZXh0R3Jv
dXBSZWYsIEpTQ1ZpcnR1YWxNYWNoaW5lKj4mIHdyYXBwZXJNYXAoKQogewotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxIYXNoTWFwPEpTQ29udGV4dEdyb3VwUmVmLCBKU0NWaXJ0dWFsTWFjaGlu
ZSo+PiBtYXA7Ci0gICAgcmV0dXJuIG1hcDsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVk
PEhhc2hNYXA8SlNDb250ZXh0R3JvdXBSZWYsIEpTQ1ZpcnR1YWxNYWNoaW5lKj4+IHNoYXJlZDsK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShv
bmNlS2V5LCBbJl0geworICAgICAgICBzaGFyZWQuY29uc3RydWN0KCk7CisgICAgfSk7CisgICAg
cmV0dXJuIHNoYXJlZDsKIH0KIAogc3RhdGljIHZvaWQgYWRkV3JhcHBlcihKU0NvbnRleHRHcm91
cFJlZiBncm91cCwgSlNDVmlydHVhbE1hY2hpbmUqIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29tbW9uRGF0YS5jcHAKaW5kZXggNjVlZjU0MDlmNGU5NmU1NTYzNjhlNDY5Mzlk
YzU2ZDA1ZDFkOGI5My4uMGNmZWFkNDIxMGY5ZjBhM2IxMTlhOGY5NTM3N2ZhYjNlNDkzYmU1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuY3BwCkBAIC02MSw3
ICs2MSwxMSBAQCB2b2lkIENvbW1vbkRhdGE6OnNocmlua1RvRml0KCkKIHN0YXRpYyBMb2NrIHBj
Q29kZUJsb2NrTWFwTG9jazsKIGlubGluZSBIYXNoTWFwPHZvaWQqLCBDb2RlQmxvY2sqPiYgcGND
b2RlQmxvY2tNYXAoQWJzdHJhY3RMb2NrZXImKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoTWFwPHZvaWQqLCBDb2RlQmxvY2sqPj4gcGNDb2RlQmxvY2tNYXA7CisgICAgc3RhdGlj
IExhenlOZXZlckRlc3Ryb3llZDxIYXNoTWFwPHZvaWQqLCBDb2RlQmxvY2sqPj4gcGNDb2RlQmxv
Y2tNYXA7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxs
X29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgcGNDb2RlQmxvY2tNYXAuY29uc3RydWN0KCk7
CisgICAgfSk7CiAgICAgcmV0dXJuIHBjQ29kZUJsb2NrTWFwOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAKaW5kZXggODUx
OWZkOThkN2VlMGI4YTRmNTJiYWRkZTllNjI2YjA1NTY4OGQyZC4uZjRmMWMzN2NjMzdhYTZiNTE3
OTViYmU0OTJhOTU2NDRkZWEzZGU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcApAQCAtMTE5LDggKzExOSwxMiBAQCBib29s
IGhhZEFueUFzeW5jaHJvbm91c0Rpc2Fzc2VtYmx5ID0gZmFsc2U7CiAKIEFzeW5jaHJvbm91c0Rp
c2Fzc2VtYmxlciYgYXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyKCkKIHsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyPiBkaXNhc3NlbWJsZXI7Ci0gICAg
aGFkQW55QXN5bmNocm9ub3VzRGlzYXNzZW1ibHkgPSB0cnVlOworICAgIHN0YXRpYyBMYXp5TmV2
ZXJEZXN0cm95ZWQ8QXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyPiBkaXNhc3NlbWJsZXI7CisgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtl
eSwgWyZdIHsKKyAgICAgICAgZGlzYXNzZW1ibGVyLmNvbnN0cnVjdCgpOworICAgICAgICBoYWRB
bnlBc3luY2hyb25vdXNEaXNhc3NlbWJseSA9IHRydWU7CisgICAgfSk7CiAgICAgcmV0dXJuIGRp
c2Fzc2VtYmxlci5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAppbmRleCA0YTYxMGFhMmE4ZGM5
Mjg0OTY5YmU1Zjk1YWM2ZWFhZjAwODBkOTVmLi40MjQ1MWEwNWU4Yzk3MDg2MzQ3N2FmOGExOTIy
MmRkMmYyY2Y4ZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaApAQCAtMTE5LDcgKzExOSw3IEBAIGNsYXNz
IEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3BlY3RvciBmaW5hbAogI2VuZGlmCiAgICAgc3Rh
dGljIHZvaWQgc3RhcnREaXNhYmxlZCgpOwogICAgIHN0YXRpYyBSZW1vdGVJbnNwZWN0b3ImIHNp
bmdsZXRvbigpOwotICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxSZW1vdGVJbnNwZWN0
b3I+OworICAgIGZyaWVuZCBjbGFzcyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UmVtb3RlSW5zcGVjdG9y
PjsKIAogICAgIHZvaWQgcmVnaXN0ZXJUYXJnZXQoUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0Kik7
CiAgICAgdm9pZCB1bnJlZ2lzdGVyVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2Ev
UmVtb3RlSW5zcGVjdG9yQ29jb2EubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbQppbmRleCAzYzVmOWMxYTRmYTVl
MTMxMjBlMTRhYWFkZDY4NzEzNThkMzEwMjNiLi42ZGJiYTMxMmI4OGU4NzNiNzFlNzVkNmMzNTRj
MjNlMjRmMjFkNGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbQpA
QCAtODUsNyArODUsMTEgQEAgc3RhdGljIGJvb2wgZ2xvYmFsQXV0b21hdGljSW5zcGVjdGlvblN0
YXRlKCkKIAogUmVtb3RlSW5zcGVjdG9yJiBSZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpCiB7
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlbW90ZUluc3BlY3Rvcj4gc2hhcmVkOworICAg
IHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UmVtb3RlSW5zcGVjdG9yPiBzaGFyZWQ7CisgICAg
c3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlQ29uc3RydWN0S2V5OworICAgIGRpc3BhdGNoX29u
Y2UoJm9uY2VDb25zdHJ1Y3RLZXksIF57CisgICAgICAgIHNoYXJlZC5jb25zdHJ1Y3QoKTsKKyAg
ICB9KTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChuZWVkTWFjaFNhbmRib3hFeHRl
bnNpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JHbGliLmNwcAppbmRleCA0NzM4ZjUw
NDdiZTkxMDgwNTY3YTM1NzEyMTE4MjBhNjAxNzVkOWIxLi4wNGFiZjU1NTRjNDJiMzk1MGJhYjQx
YmEyNTQ3NDcyYWEzYTBiZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yR2xpYi5j
cHAKQEAgLTQwLDcgKzQwLDExIEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBSZW1vdGVJbnNw
ZWN0b3ImIFJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UmVtb3RlSW5zcGVjdG9yPiBzaGFyZWQ7CisgICAgc3RhdGljIExhenlOZXZlckRl
c3Ryb3llZDxSZW1vdGVJbnNwZWN0b3I+IHNoYXJlZDsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBz
aGFyZWQuY29uc3RydWN0KCk7CisgICAgfSk7CiAgICAgcmV0dXJuIHNoYXJlZDsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1Jl
bW90ZUluc3BlY3RvclNlcnZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcAppbmRleCBhMzhkNmJjNTg5
ZjdlNDRjNTFlMWI2NjM0NjFjMjA3YjY0ODMwZjRiLi5mOTQ4NWJmYTI2YjE3MGVlYThkYjNlMzUz
NzMwNjk3Mjc3NjAyMmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2Vy
dmVyLmNwcApAQCAtMzUsOCArMzUsMTIgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIFJlbW90
ZUluc3BlY3RvclNlcnZlciYgUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzaW5nbGV0b24oKQogewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI+IHNlcnZlcjsK
LSAgICByZXR1cm4gc2VydmVyOworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UmVtb3Rl
SW5zcGVjdG9yU2VydmVyPiBzaGFyZWQ7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VL
ZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgc2hhcmVkLmNv
bnN0cnVjdCgpOworICAgIH0pOworICAgIHJldHVybiBzaGFyZWQ7CiB9CiAKIFJlbW90ZUluc3Bl
Y3RvclNlcnZlcjo6flJlbW90ZUluc3BlY3RvclNlcnZlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29j
a2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9S
ZW1vdGVJbnNwZWN0b3JTb2NrZXQuY3BwCmluZGV4IGRlY2Q4NGZmMjY4Yjk2MDgxZjZlZDZlMDJi
MzYxN2YxMmM3MmI2NzEuLmUzZTA0NTA2ZTk3OGI1MDE5ZDhlMDA1OGU4Nzc5YTQ2Y2IxZjIwMTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tl
dC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuY3BwCkBAIC00MSw3
ICs0MSwxMSBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogUmVtb3RlSW5zcGVjdG9yJiBSZW1v
dGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
bW90ZUluc3BlY3Rvcj4gc2hhcmVkOworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UmVt
b3RlSW5zcGVjdG9yPiBzaGFyZWQ7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7
CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgc2hhcmVkLmNvbnN0
cnVjdCgpOworICAgIH0pOwogICAgIHJldHVybiBzaGFyZWQ7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwCmluZGV4IDM5ZGEx
MmVmYjZhODdlNGFlMWU4ODYwY2E3ZGEwZDRjZmFjMGVmNTguLmE5MTA1Yjk2OWU1ZDA2OTU5ZTQz
YzBmNzczODFlNDU5Y2Y5ZTRjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcApAQCAtMzcsNyArMzcsMTEgQEAgbmFtZXNwYWNl
IEluc3BlY3RvciB7CiAKIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiBSZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludDo6c2luZ2xldG9uKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ+IHNoYXJlZDsKKyAgICBzdGF0aWMg
TGF6eU5ldmVyRGVzdHJveWVkPFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50PiBzaGFyZWQ7
CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUtleSwgWyZdIHsKKyAgICAgICAgc2hhcmVkLmNvbnN0cnVjdCgpOworICAgIH0pOwogICAg
IHJldHVybiBzaGFyZWQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGQxMThiYWMzZjVkYWE4NGIzZGFhNjNiNmU2YmQx
MzVhY2U3ZjFhYmUuLjU2NTBjOThhYWM4ZDFmYTRkYjQ3MDQ2NDQ4NGZjYTliZTA2ZGY2YzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cApAQCAtMzM2LDEzICszMzYsMTQgQEAgSW50ZXJwcmV0ZXI6On5JbnRlcnByZXRlcigpCiAjaWYg
IUVOQUJMRShMTElOVF9FTUJFRERFRF9PUENPREVfSUQpIHx8IEFTU0VSVF9FTkFCTEVECiBIYXNo
TWFwPE9wY29kZSwgT3Bjb2RlSUQ+JiBJbnRlcnByZXRlcjo6b3Bjb2RlSURUYWJsZSgpCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4+IG9wY29k
ZUlEVGFibGU7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxIYXNoTWFwPE9wY29kZSwg
T3Bjb2RlSUQ+PiBvcGNvZGVJRFRhYmxlOwogCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGlu
aXRpYWxpemVLZXk7CiAgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZUtleSwgWyZdIHsKKyAg
ICAgICAgb3Bjb2RlSURUYWJsZS5jb25zdHJ1Y3QoKTsKICAgICAgICAgY29uc3QgT3Bjb2RlKiBv
cGNvZGVUYWJsZSA9IExMSW50OjpvcGNvZGVNYXAoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IE5VTUJFUl9PRl9CWVRFQ09ERV9JRFM7ICsraSkKLSAgICAgICAgICAgIG9wY29k
ZUlEVGFibGUuZ2V0KCkuYWRkKG9wY29kZVRhYmxlW2ldLCBzdGF0aWNfY2FzdDxPcGNvZGVJRD4o
aSkpOworICAgICAgICAgICAgb3Bjb2RlSURUYWJsZS0+YWRkKG9wY29kZVRhYmxlW2ldLCBzdGF0
aWNfY2FzdDxPcGNvZGVJRD4oaSkpOwogICAgIH0pOwogCiAgICAgcmV0dXJuIG9wY29kZUlEVGFi
bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4
IGM1YTYwODk5OGI2NjA2OTRmMmNhOGMwYTIzN2M2ZGY1MzBiMGJmNTguLjlmZGQ4NTUxZjc3N2E3
ZmJlNzYzOTkzNWU0ZWM3OTk1YWZmMzg1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0yNDEsMjAgKzI0MSwxOSBAQCBzdGF0aWMgdm9pZCBh
ZGRTY3JpcHRsZXNzTG9jYWxlSWZOZWVkZWQoSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2Nh
bGVzLCBTdHJpbgogCiBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxBdmFpbGFibGVMb2NhbGVz
KCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBjYWNoZWRB
dmFpbGFibGVMb2NhbGVzOwotICAgIEhhc2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcyA9
IGNhY2hlZEF2YWlsYWJsZUxvY2FsZXMuZ2V0KCk7Ci0KKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVz
dHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4gYXZhaWxhYmxlTG9jYWxlczsKICAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2U7CiAgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6
ZU9uY2UsIFsmXSB7Ci0gICAgICAgIEFTU0VSVChhdmFpbGFibGVMb2NhbGVzLmlzRW1wdHkoKSk7
CisgICAgICAgIGF2YWlsYWJsZUxvY2FsZXMuY29uc3RydWN0KCk7CisgICAgICAgIEFTU0VSVChh
dmFpbGFibGVMb2NhbGVzLT5pc0VtcHR5KCkpOwogICAgICAgICBjb25zdGV4cHIgYm9vbCBpc0lt
bW9ydGFsID0gdHJ1ZTsKICAgICAgICAgaW50MzJfdCBjb3VudCA9IHVsb2NfY291bnRBdmFpbGFi
bGUoKTsKICAgICAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAg
ICAgICAgICAgU3RyaW5nIGxvY2FsZSA9IGxhbmd1YWdlVGFnRm9yTG9jYWxlSUQodWxvY19nZXRB
dmFpbGFibGUoaSksIGlzSW1tb3J0YWwpOwogICAgICAgICAgICAgaWYgKGxvY2FsZS5pc0VtcHR5
KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBhdmFpbGFibGVMb2Nh
bGVzLmFkZChsb2NhbGUpOwotICAgICAgICAgICAgYWRkU2NyaXB0bGVzc0xvY2FsZUlmTmVlZGVk
KGF2YWlsYWJsZUxvY2FsZXMsIGxvY2FsZSk7CisgICAgICAgICAgICBhdmFpbGFibGVMb2NhbGVz
LT5hZGQobG9jYWxlKTsKKyAgICAgICAgICAgIGFkZFNjcmlwdGxlc3NMb2NhbGVJZk5lZWRlZChh
dmFpbGFibGVMb2NhbGVzLmdldCgpLCBsb2NhbGUpOwogICAgICAgICB9CiAgICAgfSk7CiAgICAg
cmV0dXJuIGF2YWlsYWJsZUxvY2FsZXM7CkBAIC0yNjIsMjAgKzI2MSwxOSBAQCBjb25zdCBIYXNo
U2V0PFN0cmluZz4mIGludGxBdmFpbGFibGVMb2NhbGVzKCkKIAogY29uc3QgSGFzaFNldDxTdHJp
bmc+JiBpbnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBjYWNoZWRBdmFpbGFibGVMb2NhbGVzOwotICAgIEhh
c2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcyA9IGNhY2hlZEF2YWlsYWJsZUxvY2FsZXMu
Z2V0KCk7Ci0KKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4g
YXZhaWxhYmxlTG9jYWxlczsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9u
Y2U7CiAgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9uY2UsIFsmXSB7Ci0gICAgICAgIEFT
U0VSVChhdmFpbGFibGVMb2NhbGVzLmlzRW1wdHkoKSk7CisgICAgICAgIGF2YWlsYWJsZUxvY2Fs
ZXMuY29uc3RydWN0KCk7CisgICAgICAgIEFTU0VSVChhdmFpbGFibGVMb2NhbGVzLT5pc0VtcHR5
KCkpOwogICAgICAgICBjb25zdGV4cHIgYm9vbCBpc0ltbW9ydGFsID0gdHJ1ZTsKICAgICAgICAg
aW50MzJfdCBjb3VudCA9IHVjb2xfY291bnRBdmFpbGFibGUoKTsKICAgICAgICAgZm9yIChpbnQz
Ml90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICAgICAgU3RyaW5nIGxvY2FsZSA9
IGxhbmd1YWdlVGFnRm9yTG9jYWxlSUQodWNvbF9nZXRBdmFpbGFibGUoaSksIGlzSW1tb3J0YWwp
OwogICAgICAgICAgICAgaWYgKGxvY2FsZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICBhdmFpbGFibGVMb2NhbGVzLmFkZChsb2NhbGUpOwotICAgICAg
ICAgICAgYWRkU2NyaXB0bGVzc0xvY2FsZUlmTmVlZGVkKGF2YWlsYWJsZUxvY2FsZXMsIGxvY2Fs
ZSk7CisgICAgICAgICAgICBhdmFpbGFibGVMb2NhbGVzLT5hZGQobG9jYWxlKTsKKyAgICAgICAg
ICAgIGFkZFNjcmlwdGxlc3NMb2NhbGVJZk5lZWRlZChhdmFpbGFibGVMb2NhbGVzLmdldCgpLCBs
b2NhbGUpOwogICAgICAgICB9CiAgICAgfSk7CiAgICAgcmV0dXJuIGF2YWlsYWJsZUxvY2FsZXM7
CkBAIC01MjEsMTEgKzUxOSwxMSBAQCBTdHJpbmcgZGVmYXVsdExvY2FsZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogCiAgICAgLy8gSWYgYWxsIGVsc2UgZmFpbHMsIGFzayBJQ1UuIEl0
IHdpbGwgcHJvYmFibHkgc2F5IHNvbWV0aGluZyBib2d1cyBsaWtlIGVuX3VzIGV2ZW4gaWYgdGhl
IHVzZXIKICAgICAvLyBoYXMgY29uZmlndXJlZCBzb21lIG90aGVyIGxhbmd1YWdlLCBidXQgYmVp
bmcgd3JvbmcgaXMgYmV0dGVyIHRoYW4gY3Jhc2hpbmcuCi0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFN0cmluZz4gaWN1RGVmYXVsdExvY2FsU3RyaW5nOworICAgIHN0YXRpYyBMYXp5TmV2ZXJE
ZXN0cm95ZWQ8U3RyaW5nPiBpY3VEZWZhdWx0TG9jYWxTdHJpbmc7CiAgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIGluaXRpYWxpemVPbmNlOwogICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVP
bmNlLCBbJl0gewogICAgICAgICBjb25zdGV4cHIgYm9vbCBpc0ltbW9ydGFsID0gdHJ1ZTsKLSAg
ICAgICAgaWN1RGVmYXVsdExvY2FsU3RyaW5nLmdldCgpID0gbGFuZ3VhZ2VUYWdGb3JMb2NhbGVJ
RCh1bG9jX2dldERlZmF1bHQoKSwgaXNJbW1vcnRhbCk7CisgICAgICAgIGljdURlZmF1bHRMb2Nh
bFN0cmluZy5jb25zdHJ1Y3QobGFuZ3VhZ2VUYWdGb3JMb2NhbGVJRCh1bG9jX2dldERlZmF1bHQo
KSwgaXNJbW1vcnRhbCkpOwogICAgIH0pOwogICAgIGlmICghaWN1RGVmYXVsdExvY2FsU3RyaW5n
LT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBpY3VEZWZhdWx0TG9jYWxTdHJpbmcuZ2V0KCk7
CkBAIC03NzgsMTIgKzc3NiwxMSBAQCBKU1ZhbHVlIHN1cHBvcnRlZExvY2FsZXMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhdgogCiBWZWN0b3I8
U3RyaW5nPiBudW1iZXJpbmdTeXN0ZW1zRm9yTG9jYWxlKGNvbnN0IFN0cmluZyYgbG9jYWxlKQog
ewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3RyaW5nPj4gY2FjaGVkTnVtYmVy
aW5nU3lzdGVtczsKLSAgICBWZWN0b3I8U3RyaW5nPiYgYXZhaWxhYmxlTnVtYmVyaW5nU3lzdGVt
cyA9IGNhY2hlZE51bWJlcmluZ1N5c3RlbXMuZ2V0KCk7Ci0KKyAgICBzdGF0aWMgTGF6eU5ldmVy
RGVzdHJveWVkPFZlY3RvcjxTdHJpbmc+PiBhdmFpbGFibGVOdW1iZXJpbmdTeXN0ZW1zOwogICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZTsKICAgICBzdGQ6OmNhbGxfb25j
ZShpbml0aWFsaXplT25jZSwgWyZdIHsKLSAgICAgICAgQVNTRVJUKGF2YWlsYWJsZU51bWJlcmlu
Z1N5c3RlbXMuaXNFbXB0eSgpKTsKKyAgICAgICAgYXZhaWxhYmxlTnVtYmVyaW5nU3lzdGVtcy5j
b25zdHJ1Y3QoKTsKKyAgICAgICAgQVNTRVJUKGF2YWlsYWJsZU51bWJlcmluZ1N5c3RlbXMtPmlz
RW1wdHkoKSk7CiAgICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAg
ICAgICBVRW51bWVyYXRpb24qIG51bWJlcmluZ1N5c3RlbU5hbWVzID0gdW51bXN5c19vcGVuQXZh
aWxhYmxlTmFtZXMoJnN0YXR1cyk7CiAgICAgICAgIEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7
CkBAIC03OTYsNyArNzkzLDcgQEAgVmVjdG9yPFN0cmluZz4gbnVtYmVyaW5nU3lzdGVtc0Zvckxv
Y2FsZShjb25zdCBTdHJpbmcmIGxvY2FsZSkKICAgICAgICAgICAgIEFTU0VSVChVX1NVQ0NFU1Mo
c3RhdHVzKSk7CiAgICAgICAgICAgICAvLyBPbmx5IHN1cHBvcnQgYWxnb3JpdGhtaWMgaWYgaXQg
aXMgdGhlIGRlZmF1bHQgZm90IHRoZSBsb2NhbGUsIGhhbmRsZWQgYmVsb3cuCiAgICAgICAgICAg
ICBpZiAoIXVudW1zeXNfaXNBbGdvcml0aG1pYyhudW1zeXMpKQotICAgICAgICAgICAgICAgIGF2
YWlsYWJsZU51bWJlcmluZ1N5c3RlbXMuYXBwZW5kKFN0cmluZyhTdHJpbmdJbXBsOjpjcmVhdGVT
dGF0aWNTdHJpbmdJbXBsKHJlc3VsdCwgcmVzdWx0TGVuZ3RoKSkpOworICAgICAgICAgICAgICAg
IGF2YWlsYWJsZU51bWJlcmluZ1N5c3RlbXMtPmFwcGVuZChTdHJpbmcoU3RyaW5nSW1wbDo6Y3Jl
YXRlU3RhdGljU3RyaW5nSW1wbChyZXN1bHQsIHJlc3VsdExlbmd0aCkpKTsKICAgICAgICAgICAg
IHVudW1zeXNfY2xvc2UobnVtc3lzKTsKICAgICAgICAgfQogICAgICAgICB1ZW51bV9jbG9zZShu
dW1iZXJpbmdTeXN0ZW1OYW1lcyk7CkBAIC04MDksNyArODA2LDcgQEAgVmVjdG9yPFN0cmluZz4g
bnVtYmVyaW5nU3lzdGVtc0ZvckxvY2FsZShjb25zdCBTdHJpbmcmIGxvY2FsZSkKICAgICB1bnVt
c3lzX2Nsb3NlKGRlZmF1bHRTeXN0ZW0pOwogCiAgICAgVmVjdG9yPFN0cmluZz4gbnVtYmVyaW5n
U3lzdGVtcyh7IGRlZmF1bHRTeXN0ZW1OYW1lIH0pOwotICAgIG51bWJlcmluZ1N5c3RlbXMuYXBw
ZW5kVmVjdG9yKGF2YWlsYWJsZU51bWJlcmluZ1N5c3RlbXMpOworICAgIG51bWJlcmluZ1N5c3Rl
bXMuYXBwZW5kVmVjdG9yKGF2YWlsYWJsZU51bWJlcmluZ1N5c3RlbXMuZ2V0KCkpOwogICAgIHJl
dHVybiBudW1iZXJpbmdTeXN0ZW1zOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9M
b2NrQWxnb3JpdGhtSW5saW5lcy5oIGIvU291cmNlL1dURi93dGYvTG9ja0FsZ29yaXRobUlubGlu
ZXMuaAppbmRleCBmZjhmMjAwMWViOWRjOTc1ZTMxMjA4ZTFiOGZhOGMxNmRlZWMxMmIxLi42N2Uw
MjdjOWYyYjMzNWNlMDQwOWE3ZWFkOTM5ODY3MjhhMWVhYzlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9Mb2NrQWxnb3JpdGhtSW5saW5lcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0xvY2tB
bGdvcml0aG1JbmxpbmVzLmgKQEAgLTcyLDExICs3MiwxMSBAQCB2b2lkIExvY2tBbGdvcml0aG08
TG9ja1R5cGUsIGlzSGVsZEJpdCwgaGFzUGFya2VkQml0LCBIb29rcz46OmxvY2tTbG93KEF0b21p
YzxMbwogICAgICAgICAKICAgICAgICAgaWYgKCEoY3VycmVudFZhbHVlICYgaXNIZWxkQml0KSkg
ewogICAgICAgICAgICAgZGF0YUxvZygiTG9jayBub3QgaGVsZCFcbiIpOwotICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKGN1cnJlbnRWYWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCEoY3Vy
cmVudFZhbHVlICYgaGFzUGFya2VkQml0KSkgewogICAgICAgICAgICAgZGF0YUxvZygiTG9jayBu
b3QgcGFya2VkIVxuIik7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoY3VycmVudFZhbHVlKTsK
ICAgICAgICAgfQogCiAgICAgICAgIC8vIFdlIG5vdyBleHBlY3QgdGhlIHZhbHVlIHRvIGJlIGlz
SGVsZHxoYXNQYXJrZWQuIFNvIGxvbmcgYXMgdGhhdCdzIHRoZSBjYXNlLCB3ZSBjYW4gcGFyay4K
QEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIExvY2tBbGdvcml0aG08TG9ja1R5cGUsIGlzSGVsZEJp
dCwgaGFzUGFya2VkQml0LCBIb29rcz46OnVubG9ja1Nsb3coQXRvbWljPAogICAgICAgICBpZiAo
KG9sZEJ5dGVWYWx1ZSAmIG1hc2spICE9IGlzSGVsZEJpdAogICAgICAgICAgICAgJiYgKG9sZEJ5
dGVWYWx1ZSAmIG1hc2spICE9IChpc0hlbGRCaXQgfCBoYXNQYXJrZWRCaXQpKSB7CiAgICAgICAg
ICAgICBkYXRhTG9nKCJJbnZhbGlkIHZhbHVlIGZvciBsb2NrOiAiLCBvbGRCeXRlVmFsdWUsICJc
biIpOwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKG9sZEJ5dGVWYWx1ZSk7CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIGlmICgob2xkQnl0ZVZhbHVlICYgbWFzaykgPT0gaXNIZWxkQml0
KSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405973</attachid>
            <date>2020-08-04 18:14:21 -0700</date>
            <delta_ts>2020-08-04 18:24:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215153-20200804181420.patch</filename>
            <type>text/plain</type>
            <size>18618</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
Njg1MDZkN2QzZjRlMTRhYzkxYjcyNWFjNDVkYzU3YzQzZDM0M2Q3Li4xZTkxMzVjMTI3ODUxMDQ2
YjVlMTE5YTJiMzVhYTE0OTMwZDg5N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAyMC0wOC0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBMYXp5TmV2ZXJEZXN0cm95ZWQgJiBzdGQ6OmNhbGxfb25j
ZSBmb3IgY29tcGxleCBzaW5nbGV0b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTUxNTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1NzE4OTgz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGFy
ZSBnZXR0aW5nIHNvbWUgY3Jhc2hlcyBpbiBSZW1vdGVJbnNwZWN0b3IgYW5kIHRoaXMgc3BlY3Vs
YXRpdmVseSBmaXhlcyB0aGUgY3Jhc2guCisgICAgICAgIE15IGd1ZXNzIGlzIHRoYXQgTmV2ZXJE
ZXN0cm95ZWQ8UmVtb3RlSW5zcGVjdG9yPiBjYWxscyBjb25zdHJ1Y3RvciB0d2ljZSBpbiBoZWF2
aWx5IGNvbnRlbmRlZCBzaXR1YXRpb246CisgICAgICAgIFdlYktpdCdzIHN0YXRpYyBkb2VzIG5v
dCBoYXZlIHRocmVhZC1zYWZldHkuIElmIHR3byB0aHJlYWRzIGNvbWUgaGVyZSBhdCB0aGUgc2Ft
ZSB0aW1lLCBpdCBpcyBwb3NzaWJsZSB0aGF0CisgICAgICAgIGNvbnN0cnVjdG9yIGlzIGludm9r
ZWQgdHdpY2UuIEluIHRoYXQgY2FzZSwgbGF0ZXIgY29uc3RydWN0b3Igd2lsbCBjbGVhciBtZW1i
ZXJzLCB3aGljaCBpbnZvbHZlcyBjbGVhcmluZworICAgICAgICBMb2NrIG1fbXV0ZXggZmllbGQu
IFRoaXMgbWFrZXMgTG9jaydzIHN0YXR1cyBicm9rZW4uCisgICAgICAgIFRoaXMgcGF0Y2ggdXNl
cyBMYXp5TmV2ZXJEZXN0cm95ZWQgYW5kIHN0ZDo6Y2FsbF9vbmNlIHRvIGVuc3VyZSBpbnZva2lu
ZyBjb25zdHJ1Y3RvciBvbmx5IG9uY2UuCisKKyAgICAgICAgKiBBUEkvZ2xpYi9KU0NWaXJ0dWFs
TWFjaGluZS5jcHA6CisgICAgICAgICogZGZnL0RGR0NvbW1vbkRhdGEuY3BwOgorICAgICAgICAq
IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yLmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9S
ZW1vdGVJbnNwZWN0b3JDb2NvYS5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVj
dG9yOjpzaW5nbGV0b24pOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJ
bnNwZWN0b3JHbGliLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpz
aW5nbGV0b24pOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3Bl
Y3RvclNlcnZlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZl
cjo6c2luZ2xldG9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJ
bnNwZWN0b3JTZXJ2ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1v
dGVJbnNwZWN0b3JTb2NrZXQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3I6OnNpbmdsZXRvbik6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3Rl
SW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6c2luZ2xldG9uKToKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpvcGNvZGVJRFRh
YmxlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpp
bnRsQXZhaWxhYmxlTG9jYWxlcyk6CisgICAgICAgIChKU0M6OmludGxDb2xsYXRvckF2YWlsYWJs
ZUxvY2FsZXMpOgorICAgICAgICAoSlNDOjpkZWZhdWx0TG9jYWxlKToKKyAgICAgICAgKEpTQzo6
bnVtYmVyaW5nU3lzdGVtc0ZvckxvY2FsZSk6CisKIDIwMjAtMDgtMDMgIEFsYmVydG8gR2FyY2lh
ICA8YmVydG9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSAyLjI5LjQgZmFpbHMgdG8gYnVp
bGQgaW4gYXJtaGYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKaW5kZXggZjhjYTFmYTlhYTQzOTQ0MmM1ODc5ZjZkYzY2ODc4NTEwODk3ZTQy
NC4uOTVlZjk0OGQ2N2QwYWQzMGQwNWFmMTk3MjM3YWYzYzhhMzhiN2U4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAyMC0wOC0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgor
CisgICAgICAgIFtKU0NdIFVzZSBMYXp5TmV2ZXJEZXN0cm95ZWQgJiBzdGQ6OmNhbGxfb25jZSBm
b3IgY29tcGxleCBzaW5nbGV0b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTUxNTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1NzE4OTgzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsb2Nr
J3MgYml0cyBpbiBjcmFzaCBpbmZvcm1hdGlvbiB0byBpbnZlc3RpZ2F0ZSBpZiB0aGlzIHNwZWN1
bGF0aXZlIGZpeCBkb2VzIG5vdCB3b3JrLgorCisgICAgICAgICogd3RmL0xvY2tBbGdvcml0aG1J
bmxpbmVzLmg6CisgICAgICAgIChXVEY6Okhvb2tzPjo6bG9ja1Nsb3cpOgorICAgICAgICAoV1RG
OjpIb29rcz46OnVubG9ja1Nsb3cpOgorCiAyMDIwLTA4LTA0ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgYWJvdXQ6IHNjaGVtZSBVUkwgY29u
c3RhbnRzIHNob3VsZCBiZSBiYWNrZWQgYnkgU3RhdGljU3RyaW5nSW1wbApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZpcnR1YWxNYWNoaW5lLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWaXJ0dWFsTWFjaGluZS5jcHAKaW5kZXgg
NmFkNjk0MGM2NGZmY2EzYjg2NjU4NTJhN2VkMmNhNzM1ZDZmMGM5NC4uMTcxMzI0ODVlNmQ4ZDFh
YTgxNjMwMjY4YWI4YmM3MGExOTMxM2VhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ1ZpcnR1YWxNYWNoaW5lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL2dsaWIvSlNDVmlydHVhbE1hY2hpbmUuY3BwCkBAIC01MSw4ICs1MSwxMiBAQCBz
dGF0aWMgTG9jayB3cmFwcGVyQ2FjaGVNdXRleDsKIAogc3RhdGljIEhhc2hNYXA8SlNDb250ZXh0
R3JvdXBSZWYsIEpTQ1ZpcnR1YWxNYWNoaW5lKj4mIHdyYXBwZXJNYXAoKQogewotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPEpTQ29udGV4dEdyb3VwUmVmLCBKU0NWaXJ0dWFsTWFj
aGluZSo+PiBtYXA7Ci0gICAgcmV0dXJuIG1hcDsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJv
eWVkPEhhc2hNYXA8SlNDb250ZXh0R3JvdXBSZWYsIEpTQ1ZpcnR1YWxNYWNoaW5lKj4+IHNoYXJl
ZDsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlS2V5LCBbJl0geworICAgICAgICBzaGFyZWQuY29uc3RydWN0KCk7CisgICAgfSk7Cisg
ICAgcmV0dXJuIHNoYXJlZDsKIH0KIAogc3RhdGljIHZvaWQgYWRkV3JhcHBlcihKU0NvbnRleHRH
cm91cFJlZiBncm91cCwgSlNDVmlydHVhbE1hY2hpbmUqIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5jcHAKaW5kZXggNjVlZjU0MDlmNGU5NmU1NTYzNjhlNDY5
MzlkYzU2ZDA1ZDFkOGI5My4uMGNmZWFkNDIxMGY5ZjBhM2IxMTlhOGY5NTM3N2ZhYjNlNDkzYmU1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuY3BwCkBAIC02
MSw3ICs2MSwxMSBAQCB2b2lkIENvbW1vbkRhdGE6OnNocmlua1RvRml0KCkKIHN0YXRpYyBMb2Nr
IHBjQ29kZUJsb2NrTWFwTG9jazsKIGlubGluZSBIYXNoTWFwPHZvaWQqLCBDb2RlQmxvY2sqPiYg
cGNDb2RlQmxvY2tNYXAoQWJzdHJhY3RMb2NrZXImKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoTWFwPHZvaWQqLCBDb2RlQmxvY2sqPj4gcGNDb2RlQmxvY2tNYXA7CisgICAgc3Rh
dGljIExhenlOZXZlckRlc3Ryb3llZDxIYXNoTWFwPHZvaWQqLCBDb2RlQmxvY2sqPj4gcGNDb2Rl
QmxvY2tNYXA7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpj
YWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgcGNDb2RlQmxvY2tNYXAuY29uc3RydWN0
KCk7CisgICAgfSk7CiAgICAgcmV0dXJuIHBjQ29kZUJsb2NrTWFwOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAKaW5kZXgg
ODUxOWZkOThkN2VlMGI4YTRmNTJiYWRkZTllNjI2YjA1NTY4OGQyZC4uZjRmMWMzN2NjMzdhYTZi
NTE3OTViYmU0OTJhOTU2NDRkZWEzZGU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcApAQCAtMTE5LDggKzExOSwxMiBAQCBi
b29sIGhhZEFueUFzeW5jaHJvbm91c0Rpc2Fzc2VtYmx5ID0gZmFsc2U7CiAKIEFzeW5jaHJvbm91
c0Rpc2Fzc2VtYmxlciYgYXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyKCkKIHsKLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyPiBkaXNhc3NlbWJsZXI7Ci0g
ICAgaGFkQW55QXN5bmNocm9ub3VzRGlzYXNzZW1ibHkgPSB0cnVlOworICAgIHN0YXRpYyBMYXp5
TmV2ZXJEZXN0cm95ZWQ8QXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyPiBkaXNhc3NlbWJsZXI7Cisg
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUtleSwgWyZdIHsKKyAgICAgICAgZGlzYXNzZW1ibGVyLmNvbnN0cnVjdCgpOworICAgICAgICBo
YWRBbnlBc3luY2hyb25vdXNEaXNhc3NlbWJseSA9IHRydWU7CisgICAgfSk7CiAgICAgcmV0dXJu
IGRpc2Fzc2VtYmxlci5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAppbmRleCA0YTYxMGFhMmE4
ZGM5Mjg0OTY5YmU1Zjk1YWM2ZWFhZjAwODBkOTVmLi40MjQ1MWEwNWU4Yzk3MDg2MzQ3N2FmOGEx
OTIyMmRkMmYyY2Y4ZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaApAQCAtMTE5LDcgKzExOSw3IEBAIGNs
YXNzIEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3BlY3RvciBmaW5hbAogI2VuZGlmCiAgICAg
c3RhdGljIHZvaWQgc3RhcnREaXNhYmxlZCgpOwogICAgIHN0YXRpYyBSZW1vdGVJbnNwZWN0b3Im
IHNpbmdsZXRvbigpOwotICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxSZW1vdGVJbnNw
ZWN0b3I+OworICAgIGZyaWVuZCBjbGFzcyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UmVtb3RlSW5zcGVj
dG9yPjsKIAogICAgIHZvaWQgcmVnaXN0ZXJUYXJnZXQoUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0
Kik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29j
b2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbQppbmRleCAzYzVmOWMxYTRm
YTVlMTMxMjBlMTRhYWFkZDY4NzEzNThkMzEwMjNiLi42ZGJiYTMxMmI4OGU4NzNiNzFlNzVkNmMz
NTRjMjNlMjRmMjFkNGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5t
bQpAQCAtODUsNyArODUsMTEgQEAgc3RhdGljIGJvb2wgZ2xvYmFsQXV0b21hdGljSW5zcGVjdGlv
blN0YXRlKCkKIAogUmVtb3RlSW5zcGVjdG9yJiBSZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRvbigp
CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlbW90ZUluc3BlY3Rvcj4gc2hhcmVkOwor
ICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UmVtb3RlSW5zcGVjdG9yPiBzaGFyZWQ7Cisg
ICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlQ29uc3RydWN0S2V5OworICAgIGRpc3BhdGNo
X29uY2UoJm9uY2VDb25zdHJ1Y3RLZXksIF57CisgICAgICAgIHNoYXJlZC5jb25zdHJ1Y3QoKTsK
KyAgICB9KTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChuZWVkTWFjaFNhbmRib3hF
eHRlbnNpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JHbGliLmNwcAppbmRleCA0NzM4
ZjUwNDdiZTkxMDgwNTY3YTM1NzEyMTE4MjBhNjAxNzVkOWIxLi4wNGFiZjU1NTRjNDJiMzk1MGJh
YjQxYmEyNTQ3NDcyYWEzYTBiZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yR2xp
Yi5jcHAKQEAgLTQwLDcgKzQwLDExIEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBSZW1vdGVJ
bnNwZWN0b3ImIFJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkKIHsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmVtb3RlSW5zcGVjdG9yPiBzaGFyZWQ7CisgICAgc3RhdGljIExhenlOZXZl
ckRlc3Ryb3llZDxSZW1vdGVJbnNwZWN0b3I+IHNoYXJlZDsKKyAgICBzdGF0aWMgc3RkOjpvbmNl
X2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAg
ICBzaGFyZWQuY29uc3RydWN0KCk7CisgICAgfSk7CiAgICAgcmV0dXJuIHNoYXJlZDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0
L1JlbW90ZUluc3BlY3RvclNlcnZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcAppbmRleCBhMzhkNmJj
NTg5ZjdlNDRjNTFlMWI2NjM0NjFjMjA3YjY0ODMwZjRiLi5mOTQ4NWJmYTI2YjE3MGVlYThkYjNl
MzUzNzMwNjk3Mjc3NjAyMmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9y
U2VydmVyLmNwcApAQCAtMzUsOCArMzUsMTIgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIFJl
bW90ZUluc3BlY3RvclNlcnZlciYgUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzaW5nbGV0b24oKQog
ewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI+IHNlcnZl
cjsKLSAgICByZXR1cm4gc2VydmVyOworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UmVt
b3RlSW5zcGVjdG9yU2VydmVyPiBzaGFyZWQ7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9u
Y2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgc2hhcmVk
LmNvbnN0cnVjdCgpOworICAgIH0pOworICAgIHJldHVybiBzaGFyZWQ7CiB9CiAKIFJlbW90ZUlu
c3BlY3RvclNlcnZlcjo6flJlbW90ZUluc3BlY3RvclNlcnZlcigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9y
U2VydmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yU2VydmVyLmgKaW5kZXggMDA4YzZmZDBmMWYwMzQ1NDIyMTcxNjUwZDk0
ZTk0NzNkMDg1NzNlMy4uNGY3M2M2NjI5MmNmNWM2MDlkNTJkNThjNjI3ODYxMWExOTVhNDg1MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0
L1JlbW90ZUluc3BlY3RvclNlcnZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuaApAQCAtNDMsNyArNDMs
NyBAQCBjbGFzcyBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIgZmluYWwgOiBwdWJsaWMgUmVtb3RlSW5z
cGVjdG9yU29ja2V0RW5kcG9pbnQ6Okxpc3RlbgogICAgIGJvb2wgaXNSdW5uaW5nKCkgY29uc3Qg
eyByZXR1cm4gISFtX3NlcnZlcjsgfQogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBOZXZl
ckRlc3Ryb3llZDxSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI+OworICAgIGZyaWVuZCBjbGFzcyBMYXp5
TmV2ZXJEZXN0cm95ZWQ8UmVtb3RlSW5zcGVjdG9yU2VydmVyPjsKICAgICBSZW1vdGVJbnNwZWN0
b3JTZXJ2ZXIoKSB7IFNvY2tldDo6aW5pdCgpOyB9CiAKICAgICBib29sIGRpZEFjY2VwdChDb25u
ZWN0aW9uSUQgYWNjZXB0ZWRJRCwgQ29ubmVjdGlvbklEIGxpc3RlbmVySUQsIFNvY2tldDo6RG9t
YWluKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
aW5kZXggZGVjZDg0ZmYyNjhiOTYwODFmNmVkNmUwMmIzNjE3ZjEyYzcyYjY3MS4uZTNlMDQ1MDZl
OTc4YjUwMTlkOGUwMDU4ZTg3NzlhNDZjYjFmMjAxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1Jl
bW90ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTQxLDcgKzQxLDExIEBAIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCiBSZW1vdGVJbnNwZWN0b3ImIFJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkK
IHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVtb3RlSW5zcGVjdG9yPiBzaGFyZWQ7Cisg
ICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxSZW1vdGVJbnNwZWN0b3I+IHNoYXJlZDsKKyAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNl
S2V5LCBbJl0geworICAgICAgICBzaGFyZWQuY29uc3RydWN0KCk7CisgICAgfSk7CiAgICAgcmV0
dXJuIHNoYXJlZDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludC5jcHAKaW5kZXggMzlkYTEyZWZiNmE4N2U0YWUxZTg4NjBjYTdkYTBk
NGNmYWMwZWY1OC4uYTkxMDViOTY5ZTVkMDY5NTllNDNjMGY3NzM4MWU0NTljZjllNGM3YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1Jl
bW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQu
Y3BwCkBAIC0zNyw3ICszNywxMSBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogUmVtb3RlSW5z
cGVjdG9yU29ja2V0RW5kcG9pbnQmIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpzaW5n
bGV0b24oKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZW1vdGVJbnNwZWN0b3JTb2Nr
ZXRFbmRwb2ludD4gc2hhcmVkOworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UmVtb3Rl
SW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ+IHNoYXJlZDsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBz
aGFyZWQuY29uc3RydWN0KCk7CisgICAgfSk7CiAgICAgcmV0dXJuIHNoYXJlZDsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5k
ZXggZDExOGJhYzNmNWRhYTg0YjNkYWE2M2I2ZTZiZDEzNWFjZTdmMWFiZS4uNTY1MGM5OGFhYzhk
MWZhNGRiNDcwNDY0NDg0ZmNhOWJlMDZkZjZjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0zMzYsMTMgKzMzNiwxNCBAQCBJ
bnRlcnByZXRlcjo6fkludGVycHJldGVyKCkKICNpZiAhRU5BQkxFKExMSU5UX0VNQkVEREVEX09Q
Q09ERV9JRCkgfHwgQVNTRVJUX0VOQUJMRUQKIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4mIElu
dGVycHJldGVyOjpvcGNvZGVJRFRhYmxlKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPj4gb3Bjb2RlSURUYWJsZTsKKyAgICBzdGF0aWMgTGF6
eU5ldmVyRGVzdHJveWVkPEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4+IG9wY29kZUlEVGFibGU7
CiAKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZUtleTsKICAgICBzdGQ6OmNh
bGxfb25jZShpbml0aWFsaXplS2V5LCBbJl0geworICAgICAgICBvcGNvZGVJRFRhYmxlLmNvbnN0
cnVjdCgpOwogICAgICAgICBjb25zdCBPcGNvZGUqIG9wY29kZVRhYmxlID0gTExJbnQ6Om9wY29k
ZU1hcCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTlVNQkVSX09GX0JZVEVD
T0RFX0lEUzsgKytpKQotICAgICAgICAgICAgb3Bjb2RlSURUYWJsZS5nZXQoKS5hZGQob3Bjb2Rl
VGFibGVbaV0sIHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSk7CisgICAgICAgICAgICBvcGNvZGVJ
RFRhYmxlLT5hZGQob3Bjb2RlVGFibGVbaV0sIHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSk7CiAg
ICAgfSk7CiAKICAgICByZXR1cm4gb3Bjb2RlSURUYWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKaW5kZXggYzVhNjA4OTk4YjY2MDY5NGYyY2E4YzBh
MjM3YzZkZjUzMGIwYmY1OC4uOWZkZDg1NTFmNzc3YTdmYmU3NjM5OTM1ZTRlYzc5OTVhZmYzODU2
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAg
LTI0MSwyMCArMjQxLDE5IEBAIHN0YXRpYyB2b2lkIGFkZFNjcmlwdGxlc3NMb2NhbGVJZk5lZWRl
ZChIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMsIFN0cmluCiAKIGNvbnN0IEhhc2hT
ZXQ8U3RyaW5nPiYgaW50bEF2YWlsYWJsZUxvY2FsZXMoKQogewotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IGNhY2hlZEF2YWlsYWJsZUxvY2FsZXM7Ci0gICAgSGFz
aFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzID0gY2FjaGVkQXZhaWxhYmxlTG9jYWxlcy5n
ZXQoKTsKLQorICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBh
dmFpbGFibGVMb2NhbGVzOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25j
ZTsKICAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwgWyZdIHsKLSAgICAgICAgQVNT
RVJUKGF2YWlsYWJsZUxvY2FsZXMuaXNFbXB0eSgpKTsKKyAgICAgICAgYXZhaWxhYmxlTG9jYWxl
cy5jb25zdHJ1Y3QoKTsKKyAgICAgICAgQVNTRVJUKGF2YWlsYWJsZUxvY2FsZXMtPmlzRW1wdHko
KSk7CiAgICAgICAgIGNvbnN0ZXhwciBib29sIGlzSW1tb3J0YWwgPSB0cnVlOwogICAgICAgICBp
bnQzMl90IGNvdW50ID0gdWxvY19jb3VudEF2YWlsYWJsZSgpOwogICAgICAgICBmb3IgKGludDMy
X3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgICAgICBTdHJpbmcgbG9jYWxlID0g
bGFuZ3VhZ2VUYWdGb3JMb2NhbGVJRCh1bG9jX2dldEF2YWlsYWJsZShpKSwgaXNJbW1vcnRhbCk7
CiAgICAgICAgICAgICBpZiAobG9jYWxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXMuYWRkKGxvY2FsZSk7Ci0gICAgICAg
ICAgICBhZGRTY3JpcHRsZXNzTG9jYWxlSWZOZWVkZWQoYXZhaWxhYmxlTG9jYWxlcywgbG9jYWxl
KTsKKyAgICAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXMtPmFkZChsb2NhbGUpOworICAgICAgICAg
ICAgYWRkU2NyaXB0bGVzc0xvY2FsZUlmTmVlZGVkKGF2YWlsYWJsZUxvY2FsZXMuZ2V0KCksIGxv
Y2FsZSk7CiAgICAgICAgIH0KICAgICB9KTsKICAgICByZXR1cm4gYXZhaWxhYmxlTG9jYWxlczsK
QEAgLTI2MiwyMCArMjYxLDE5IEBAIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bEF2YWlsYWJs
ZUxvY2FsZXMoKQogCiBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxDb2xsYXRvckF2YWlsYWJs
ZUxvY2FsZXMoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+
IGNhY2hlZEF2YWlsYWJsZUxvY2FsZXM7Ci0gICAgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVM
b2NhbGVzID0gY2FjaGVkQXZhaWxhYmxlTG9jYWxlcy5nZXQoKTsKLQorICAgIHN0YXRpYyBMYXp5
TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBhdmFpbGFibGVMb2NhbGVzOwogICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZTsKICAgICBzdGQ6OmNhbGxfb25jZShp
bml0aWFsaXplT25jZSwgWyZdIHsKLSAgICAgICAgQVNTRVJUKGF2YWlsYWJsZUxvY2FsZXMuaXNF
bXB0eSgpKTsKKyAgICAgICAgYXZhaWxhYmxlTG9jYWxlcy5jb25zdHJ1Y3QoKTsKKyAgICAgICAg
QVNTRVJUKGF2YWlsYWJsZUxvY2FsZXMtPmlzRW1wdHkoKSk7CiAgICAgICAgIGNvbnN0ZXhwciBi
b29sIGlzSW1tb3J0YWwgPSB0cnVlOwogICAgICAgICBpbnQzMl90IGNvdW50ID0gdWNvbF9jb3Vu
dEF2YWlsYWJsZSgpOwogICAgICAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBjb3VudDsgKytp
KSB7CiAgICAgICAgICAgICBTdHJpbmcgbG9jYWxlID0gbGFuZ3VhZ2VUYWdGb3JMb2NhbGVJRCh1
Y29sX2dldEF2YWlsYWJsZShpKSwgaXNJbW1vcnRhbCk7CiAgICAgICAgICAgICBpZiAobG9jYWxl
LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGF2YWls
YWJsZUxvY2FsZXMuYWRkKGxvY2FsZSk7Ci0gICAgICAgICAgICBhZGRTY3JpcHRsZXNzTG9jYWxl
SWZOZWVkZWQoYXZhaWxhYmxlTG9jYWxlcywgbG9jYWxlKTsKKyAgICAgICAgICAgIGF2YWlsYWJs
ZUxvY2FsZXMtPmFkZChsb2NhbGUpOworICAgICAgICAgICAgYWRkU2NyaXB0bGVzc0xvY2FsZUlm
TmVlZGVkKGF2YWlsYWJsZUxvY2FsZXMuZ2V0KCksIGxvY2FsZSk7CiAgICAgICAgIH0KICAgICB9
KTsKICAgICByZXR1cm4gYXZhaWxhYmxlTG9jYWxlczsKQEAgLTUyMSwxMSArNTE5LDExIEBAIFN0
cmluZyBkZWZhdWx0TG9jYWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKICAgICAv
LyBJZiBhbGwgZWxzZSBmYWlscywgYXNrIElDVS4gSXQgd2lsbCBwcm9iYWJseSBzYXkgc29tZXRo
aW5nIGJvZ3VzIGxpa2UgZW5fdXMgZXZlbiBpZiB0aGUgdXNlcgogICAgIC8vIGhhcyBjb25maWd1
cmVkIHNvbWUgb3RoZXIgbGFuZ3VhZ2UsIGJ1dCBiZWluZyB3cm9uZyBpcyBiZXR0ZXIgdGhhbiBj
cmFzaGluZy4KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBpY3VEZWZhdWx0TG9j
YWxTdHJpbmc7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGljdURlZmF1
bHRMb2NhbFN0cmluZzsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2U7
CiAgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9uY2UsIFsmXSB7CiAgICAgICAgIGNvbnN0
ZXhwciBib29sIGlzSW1tb3J0YWwgPSB0cnVlOwotICAgICAgICBpY3VEZWZhdWx0TG9jYWxTdHJp
bmcuZ2V0KCkgPSBsYW5ndWFnZVRhZ0ZvckxvY2FsZUlEKHVsb2NfZ2V0RGVmYXVsdCgpLCBpc0lt
bW9ydGFsKTsKKyAgICAgICAgaWN1RGVmYXVsdExvY2FsU3RyaW5nLmNvbnN0cnVjdChsYW5ndWFn
ZVRhZ0ZvckxvY2FsZUlEKHVsb2NfZ2V0RGVmYXVsdCgpLCBpc0ltbW9ydGFsKSk7CiAgICAgfSk7
CiAgICAgaWYgKCFpY3VEZWZhdWx0TG9jYWxTdHJpbmctPmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIGljdURlZmF1bHRMb2NhbFN0cmluZy5nZXQoKTsKQEAgLTc3OCwxMiArNzc2LDExIEBAIEpT
VmFsdWUgc3VwcG9ydGVkTG9jYWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBIYXNoU2V0PFN0cmluZz4mIGF2CiAKIFZlY3RvcjxTdHJpbmc+IG51bWJlcmluZ1N5c3RlbXNG
b3JMb2NhbGUoY29uc3QgU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFZlY3RvcjxTdHJpbmc+PiBjYWNoZWROdW1iZXJpbmdTeXN0ZW1zOwotICAgIFZlY3RvcjxT
dHJpbmc+JiBhdmFpbGFibGVOdW1iZXJpbmdTeXN0ZW1zID0gY2FjaGVkTnVtYmVyaW5nU3lzdGVt
cy5nZXQoKTsKLQorICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFN0cmluZz4+
IGF2YWlsYWJsZU51bWJlcmluZ1N5c3RlbXM7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGlu
aXRpYWxpemVPbmNlOwogICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNlLCBbJl0gewot
ICAgICAgICBBU1NFUlQoYXZhaWxhYmxlTnVtYmVyaW5nU3lzdGVtcy5pc0VtcHR5KCkpOworICAg
ICAgICBhdmFpbGFibGVOdW1iZXJpbmdTeXN0ZW1zLmNvbnN0cnVjdCgpOworICAgICAgICBBU1NF
UlQoYXZhaWxhYmxlTnVtYmVyaW5nU3lzdGVtcy0+aXNFbXB0eSgpKTsKICAgICAgICAgVUVycm9y
Q29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgICAgIFVFbnVtZXJhdGlvbiogbnVtYmVy
aW5nU3lzdGVtTmFtZXMgPSB1bnVtc3lzX29wZW5BdmFpbGFibGVOYW1lcygmc3RhdHVzKTsKICAg
ICAgICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsKQEAgLTc5Niw3ICs3OTMsNyBAQCBWZWN0
b3I8U3RyaW5nPiBudW1iZXJpbmdTeXN0ZW1zRm9yTG9jYWxlKGNvbnN0IFN0cmluZyYgbG9jYWxl
KQogICAgICAgICAgICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsKICAgICAgICAgICAgIC8v
IE9ubHkgc3VwcG9ydCBhbGdvcml0aG1pYyBpZiBpdCBpcyB0aGUgZGVmYXVsdCBmb3QgdGhlIGxv
Y2FsZSwgaGFuZGxlZCBiZWxvdy4KICAgICAgICAgICAgIGlmICghdW51bXN5c19pc0FsZ29yaXRo
bWljKG51bXN5cykpCi0gICAgICAgICAgICAgICAgYXZhaWxhYmxlTnVtYmVyaW5nU3lzdGVtcy5h
cHBlbmQoU3RyaW5nKFN0cmluZ0ltcGw6OmNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwocmVzdWx0LCBy
ZXN1bHRMZW5ndGgpKSk7CisgICAgICAgICAgICAgICAgYXZhaWxhYmxlTnVtYmVyaW5nU3lzdGVt
cy0+YXBwZW5kKFN0cmluZyhTdHJpbmdJbXBsOjpjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKHJlc3Vs
dCwgcmVzdWx0TGVuZ3RoKSkpOwogICAgICAgICAgICAgdW51bXN5c19jbG9zZShudW1zeXMpOwog
ICAgICAgICB9CiAgICAgICAgIHVlbnVtX2Nsb3NlKG51bWJlcmluZ1N5c3RlbU5hbWVzKTsKQEAg
LTgwOSw3ICs4MDYsNyBAQCBWZWN0b3I8U3RyaW5nPiBudW1iZXJpbmdTeXN0ZW1zRm9yTG9jYWxl
KGNvbnN0IFN0cmluZyYgbG9jYWxlKQogICAgIHVudW1zeXNfY2xvc2UoZGVmYXVsdFN5c3RlbSk7
CiAKICAgICBWZWN0b3I8U3RyaW5nPiBudW1iZXJpbmdTeXN0ZW1zKHsgZGVmYXVsdFN5c3RlbU5h
bWUgfSk7Ci0gICAgbnVtYmVyaW5nU3lzdGVtcy5hcHBlbmRWZWN0b3IoYXZhaWxhYmxlTnVtYmVy
aW5nU3lzdGVtcyk7CisgICAgbnVtYmVyaW5nU3lzdGVtcy5hcHBlbmRWZWN0b3IoYXZhaWxhYmxl
TnVtYmVyaW5nU3lzdGVtcy5nZXQoKSk7CiAgICAgcmV0dXJuIG51bWJlcmluZ1N5c3RlbXM7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0xvY2tBbGdvcml0aG1JbmxpbmVzLmggYi9T
b3VyY2UvV1RGL3d0Zi9Mb2NrQWxnb3JpdGhtSW5saW5lcy5oCmluZGV4IGZmOGYyMDAxZWI5ZGM5
NzVlMzEyMDhlMWI4ZmE4YzE2ZGVlYzEyYjEuLjY3ZTAyN2M5ZjJiMzM1Y2UwNDA5YTdlYWQ5Mzk4
NjcyOGExZWFjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xvY2tBbGdvcml0aG1Jbmxp
bmVzLmgKKysrIGIvU291cmNlL1dURi93dGYvTG9ja0FsZ29yaXRobUlubGluZXMuaApAQCAtNzIs
MTEgKzcyLDExIEBAIHZvaWQgTG9ja0FsZ29yaXRobTxMb2NrVHlwZSwgaXNIZWxkQml0LCBoYXNQ
YXJrZWRCaXQsIEhvb2tzPjo6bG9ja1Nsb3coQXRvbWljPExvCiAgICAgICAgIAogICAgICAgICBp
ZiAoIShjdXJyZW50VmFsdWUgJiBpc0hlbGRCaXQpKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJM
b2NrIG5vdCBoZWxkIVxuIik7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoY3VycmVudFZhbHVl
KTsKICAgICAgICAgfQogICAgICAgICBpZiAoIShjdXJyZW50VmFsdWUgJiBoYXNQYXJrZWRCaXQp
KSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJMb2NrIG5vdCBwYXJrZWQhXG4iKTsKLSAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRChjdXJyZW50VmFsdWUpOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
V2Ugbm93IGV4cGVjdCB0aGUgdmFsdWUgdG8gYmUgaXNIZWxkfGhhc1BhcmtlZC4gU28gbG9uZyBh
cyB0aGF0J3MgdGhlIGNhc2UsIHdlIGNhbiBwYXJrLgpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQg
TG9ja0FsZ29yaXRobTxMb2NrVHlwZSwgaXNIZWxkQml0LCBoYXNQYXJrZWRCaXQsIEhvb2tzPjo6
dW5sb2NrU2xvdyhBdG9taWM8CiAgICAgICAgIGlmICgob2xkQnl0ZVZhbHVlICYgbWFzaykgIT0g
aXNIZWxkQml0CiAgICAgICAgICAgICAmJiAob2xkQnl0ZVZhbHVlICYgbWFzaykgIT0gKGlzSGVs
ZEJpdCB8IGhhc1BhcmtlZEJpdCkpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkludmFsaWQgdmFs
dWUgZm9yIGxvY2s6ICIsIG9sZEJ5dGVWYWx1ZSwgIlxuIik7Ci0gICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQob2xkQnl0ZVZhbHVlKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKChv
bGRCeXRlVmFsdWUgJiBtYXNrKSA9PSBpc0hlbGRCaXQpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405975</attachid>
            <date>2020-08-04 18:24:57 -0700</date>
            <delta_ts>2020-08-04 21:19:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215153-20200804182456.patch</filename>
            <type>text/plain</type>
            <size>18588</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
Njg1MDZkN2QzZjRlMTRhYzkxYjcyNWFjNDVkYzU3YzQzZDM0M2Q3Li5mMzdmM2YwM2M2OTYyYWY5
ODM0ODlmYjY3NWRiNzZjZTMxOTFlMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAyMC0wOC0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBMYXp5TmV2ZXJEZXN0cm95ZWQgJiBzdGQ6OmNhbGxfb25j
ZSBmb3IgY29tcGxleCBzaW5nbGV0b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTUxNTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1NzE4OTgz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGFy
ZSBnZXR0aW5nIHNvbWUgY3Jhc2hlcyBpbiBSZW1vdGVJbnNwZWN0b3IgYW5kIHRoaXMgc3BlY3Vs
YXRpdmVseSBmaXhlcyB0aGUgY3Jhc2guCisgICAgICAgIE15IGd1ZXNzIGlzIHRoYXQgTmV2ZXJE
ZXN0cm95ZWQ8UmVtb3RlSW5zcGVjdG9yPiBjYWxscyBjb25zdHJ1Y3RvciB0d2ljZSBpbiBoZWF2
aWx5IGNvbnRlbmRlZCBzaXR1YXRpb246CisgICAgICAgIFdlYktpdCdzIHN0YXRpYyBkb2VzIG5v
dCBoYXZlIHRocmVhZC1zYWZldHkuIElmIHR3byB0aHJlYWRzIGNvbWUgaGVyZSBhdCB0aGUgc2Ft
ZSB0aW1lLCBpdCBpcyBwb3NzaWJsZSB0aGF0CisgICAgICAgIGNvbnN0cnVjdG9yIGlzIGludm9r
ZWQgdHdpY2UuIEluIHRoYXQgY2FzZSwgbGF0ZXIgY29uc3RydWN0b3Igd2lsbCBjbGVhciBtZW1i
ZXJzLCB3aGljaCBpbnZvbHZlcyBjbGVhcmluZworICAgICAgICBMb2NrIG1fbXV0ZXggZmllbGQu
IFRoaXMgbWFrZXMgTG9jaydzIGludmFyaWFudCBicm9rZW4uCisgICAgICAgIFRoaXMgcGF0Y2gg
dXNlcyBMYXp5TmV2ZXJEZXN0cm95ZWQgYW5kIHN0ZDo6Y2FsbF9vbmNlIHRvIGVuc3VyZSBpbnZv
a2luZyBjb25zdHJ1Y3RvciBvbmx5IG9uY2UuCisKKyAgICAgICAgKiBBUEkvZ2xpYi9KU0NWaXJ0
dWFsTWFjaGluZS5jcHA6CisgICAgICAgICogZGZnL0RGR0NvbW1vbkRhdGEuY3BwOgorICAgICAg
ICAqIGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2Nv
YS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdG9yOjpzaW5nbGV0b24pOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1v
dGVJbnNwZWN0b3JHbGliLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
OjpzaW5nbGV0b24pOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUlu
c3BlY3RvclNlcnZlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNl
cnZlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1v
dGVJbnNwZWN0b3JTZXJ2ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9S
ZW1vdGVJbnNwZWN0b3JTb2NrZXQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3I6OnNpbmdsZXRvbik6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6c2luZ2xldG9uKToKKyAgICAgICAgKiBpbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpvcGNvZGVJ
RFRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlND
OjppbnRsQXZhaWxhYmxlTG9jYWxlcyk6CisgICAgICAgIChKU0M6OmludGxDb2xsYXRvckF2YWls
YWJsZUxvY2FsZXMpOgorICAgICAgICAoSlNDOjpkZWZhdWx0TG9jYWxlKToKKyAgICAgICAgKEpT
Qzo6bnVtYmVyaW5nU3lzdGVtc0ZvckxvY2FsZSk6CisKIDIwMjAtMDgtMDMgIEFsYmVydG8gR2Fy
Y2lhICA8YmVydG9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSAyLjI5LjQgZmFpbHMgdG8g
YnVpbGQgaW4gYXJtaGYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKaW5kZXggZjhjYTFmYTlhYTQzOTQ0MmM1ODc5ZjZkYzY2ODc4NTEwODk3
ZTQyNC4uOTVlZjk0OGQ2N2QwYWQzMGQwNWFmMTk3MjM3YWYzYzhhMzhiN2U4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wOC0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBMYXp5TmV2ZXJEZXN0cm95ZWQgJiBzdGQ6OmNhbGxfb25j
ZSBmb3IgY29tcGxleCBzaW5nbGV0b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTUxNTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1NzE4OTgz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBs
b2NrJ3MgYml0cyBpbiBjcmFzaCBpbmZvcm1hdGlvbiB0byBpbnZlc3RpZ2F0ZSBpZiB0aGlzIHNw
ZWN1bGF0aXZlIGZpeCBkb2VzIG5vdCB3b3JrLgorCisgICAgICAgICogd3RmL0xvY2tBbGdvcml0
aG1JbmxpbmVzLmg6CisgICAgICAgIChXVEY6Okhvb2tzPjo6bG9ja1Nsb3cpOgorICAgICAgICAo
V1RGOjpIb29rcz46OnVubG9ja1Nsb3cpOgorCiAyMDIwLTA4LTA0ICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgYWJvdXQ6IHNjaGVtZSBVUkwg
Y29uc3RhbnRzIHNob3VsZCBiZSBiYWNrZWQgYnkgU3RhdGljU3RyaW5nSW1wbApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZpcnR1YWxNYWNoaW5lLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWaXJ0dWFsTWFjaGluZS5jcHAKaW5k
ZXggNmFkNjk0MGM2NGZmY2EzYjg2NjU4NTJhN2VkMmNhNzM1ZDZmMGM5NC4uMTcxMzI0ODVlNmQ4
ZDFhYTgxNjMwMjY4YWI4YmM3MGExOTMxM2VhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9nbGliL0pTQ1ZpcnR1YWxNYWNoaW5lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL2dsaWIvSlNDVmlydHVhbE1hY2hpbmUuY3BwCkBAIC01MSw4ICs1MSwxMiBA
QCBzdGF0aWMgTG9jayB3cmFwcGVyQ2FjaGVNdXRleDsKIAogc3RhdGljIEhhc2hNYXA8SlNDb250
ZXh0R3JvdXBSZWYsIEpTQ1ZpcnR1YWxNYWNoaW5lKj4mIHdyYXBwZXJNYXAoKQogewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPEpTQ29udGV4dEdyb3VwUmVmLCBKU0NWaXJ0dWFs
TWFjaGluZSo+PiBtYXA7Ci0gICAgcmV0dXJuIG1hcDsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVz
dHJveWVkPEhhc2hNYXA8SlNDb250ZXh0R3JvdXBSZWYsIEpTQ1ZpcnR1YWxNYWNoaW5lKj4+IHNo
YXJlZDsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxf
b25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBzaGFyZWQuY29uc3RydWN0KCk7CisgICAgfSk7
CisgICAgcmV0dXJuIHNoYXJlZDsKIH0KIAogc3RhdGljIHZvaWQgYWRkV3JhcHBlcihKU0NvbnRl
eHRHcm91cFJlZiBncm91cCwgSlNDVmlydHVhbE1hY2hpbmUqIHZtKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5jcHAKaW5kZXggNjVlZjU0MDlmNGU5NmU1NTYzNjhl
NDY5MzlkYzU2ZDA1ZDFkOGI5My4uMGNmZWFkNDIxMGY5ZjBhM2IxMTlhOGY5NTM3N2ZhYjNlNDkz
YmU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRh
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuY3BwCkBA
IC02MSw3ICs2MSwxMSBAQCB2b2lkIENvbW1vbkRhdGE6OnNocmlua1RvRml0KCkKIHN0YXRpYyBM
b2NrIHBjQ29kZUJsb2NrTWFwTG9jazsKIGlubGluZSBIYXNoTWFwPHZvaWQqLCBDb2RlQmxvY2sq
PiYgcGNDb2RlQmxvY2tNYXAoQWJzdHJhY3RMb2NrZXImKQogewotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxIYXNoTWFwPHZvaWQqLCBDb2RlQmxvY2sqPj4gcGNDb2RlQmxvY2tNYXA7CisgICAg
c3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxIYXNoTWFwPHZvaWQqLCBDb2RlQmxvY2sqPj4gcGND
b2RlQmxvY2tNYXA7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3Rk
OjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgcGNDb2RlQmxvY2tNYXAuY29uc3Ry
dWN0KCk7CisgICAgfSk7CiAgICAgcmV0dXJuIHBjQ29kZUJsb2NrTWFwOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAKaW5k
ZXggODUxOWZkOThkN2VlMGI4YTRmNTJiYWRkZTllNjI2YjA1NTY4OGQyZC4uZjRmMWMzN2NjMzdh
YTZiNTE3OTViYmU0OTJhOTU2NDRkZWEzZGU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcApAQCAtMTE5LDggKzExOSwxMiBA
QCBib29sIGhhZEFueUFzeW5jaHJvbm91c0Rpc2Fzc2VtYmx5ID0gZmFsc2U7CiAKIEFzeW5jaHJv
bm91c0Rpc2Fzc2VtYmxlciYgYXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyKCkKIHsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8QXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyPiBkaXNhc3NlbWJsZXI7
Ci0gICAgaGFkQW55QXN5bmNocm9ub3VzRGlzYXNzZW1ibHkgPSB0cnVlOworICAgIHN0YXRpYyBM
YXp5TmV2ZXJEZXN0cm95ZWQ8QXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyPiBkaXNhc3NlbWJsZXI7
CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUtleSwgWyZdIHsKKyAgICAgICAgZGlzYXNzZW1ibGVyLmNvbnN0cnVjdCgpOworICAgICAg
ICBoYWRBbnlBc3luY2hyb25vdXNEaXNhc3NlbWJseSA9IHRydWU7CisgICAgfSk7CiAgICAgcmV0
dXJuIGRpc2Fzc2VtYmxlci5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAppbmRleCA0YTYxMGFh
MmE4ZGM5Mjg0OTY5YmU1Zjk1YWM2ZWFhZjAwODBkOTVmLi40MjQ1MWEwNWU4Yzk3MDg2MzQ3N2Fm
OGExOTIyMmRkMmYyY2Y4ZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaApAQCAtMTE5LDcgKzExOSw3IEBA
IGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3BlY3RvciBmaW5hbAogI2VuZGlmCiAg
ICAgc3RhdGljIHZvaWQgc3RhcnREaXNhYmxlZCgpOwogICAgIHN0YXRpYyBSZW1vdGVJbnNwZWN0
b3ImIHNpbmdsZXRvbigpOwotICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxSZW1vdGVJ
bnNwZWN0b3I+OworICAgIGZyaWVuZCBjbGFzcyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UmVtb3RlSW5z
cGVjdG9yPjsKIAogICAgIHZvaWQgcmVnaXN0ZXJUYXJnZXQoUmVtb3RlQ29udHJvbGxhYmxlVGFy
Z2V0Kik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdl
dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
Y29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbQppbmRleCAzYzVmOWMx
YTRmYTVlMTMxMjBlMTRhYWFkZDY4NzEzNThkMzEwMjNiLi42ZGJiYTMxMmI4OGU4NzNiNzFlNzVk
NmMzNTRjMjNlMjRmMjFkNGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2Nv
YS5tbQpAQCAtODUsNyArODUsMTEgQEAgc3RhdGljIGJvb2wgZ2xvYmFsQXV0b21hdGljSW5zcGVj
dGlvblN0YXRlKCkKIAogUmVtb3RlSW5zcGVjdG9yJiBSZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRv
bigpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlbW90ZUluc3BlY3Rvcj4gc2hhcmVk
OworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UmVtb3RlSW5zcGVjdG9yPiBzaGFyZWQ7
CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlQ29uc3RydWN0S2V5OworICAgIGRpc3Bh
dGNoX29uY2UoJm9uY2VDb25zdHJ1Y3RLZXksIF57CisgICAgICAgIHNoYXJlZC5jb25zdHJ1Y3Qo
KTsKKyAgICB9KTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChuZWVkTWFjaFNhbmRi
b3hFeHRlbnNpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JHbGliLmNwcAppbmRleCA0
NzM4ZjUwNDdiZTkxMDgwNTY3YTM1NzEyMTE4MjBhNjAxNzVkOWIxLi4wNGFiZjU1NTRjNDJiMzk1
MGJhYjQxYmEyNTQ3NDcyYWEzYTBiZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9y
R2xpYi5jcHAKQEAgLTQwLDcgKzQwLDExIEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBSZW1v
dGVJbnNwZWN0b3ImIFJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkKIHsKLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmVtb3RlSW5zcGVjdG9yPiBzaGFyZWQ7CisgICAgc3RhdGljIExhenlO
ZXZlckRlc3Ryb3llZDxSZW1vdGVJbnNwZWN0b3I+IHNoYXJlZDsKKyAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAg
ICAgICBzaGFyZWQuY29uc3RydWN0KCk7CisgICAgfSk7CiAgICAgcmV0dXJuIHNoYXJlZDsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29j
a2V0L1JlbW90ZUluc3BlY3RvclNlcnZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcAppbmRleCBhMzhk
NmJjNTg5ZjdlNDRjNTFlMWI2NjM0NjFjMjA3YjY0ODMwZjRiLi5mOTQ4NWJmYTI2YjE3MGVlYThk
YjNlMzUzNzMwNjk3Mjc3NjAyMmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVj
dG9yU2VydmVyLmNwcApAQCAtMzUsOCArMzUsMTIgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAK
IFJlbW90ZUluc3BlY3RvclNlcnZlciYgUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzaW5nbGV0b24o
KQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI+IHNl
cnZlcjsKLSAgICByZXR1cm4gc2VydmVyOworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8
UmVtb3RlSW5zcGVjdG9yU2VydmVyPiBzaGFyZWQ7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFn
IG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgc2hh
cmVkLmNvbnN0cnVjdCgpOworICAgIH0pOworICAgIHJldHVybiBzaGFyZWQ7CiB9CiAKIFJlbW90
ZUluc3BlY3RvclNlcnZlcjo6flJlbW90ZUluc3BlY3RvclNlcnZlcigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVj
dG9yU2VydmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2Nr
ZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmgKaW5kZXggMDA4YzZmZDBmMWYwMzQ1NDIyMTcxNjUw
ZDk0ZTk0NzNkMDg1NzNlMy4uNGY3M2M2NjI5MmNmNWM2MDlkNTJkNThjNjI3ODYxMWExOTVhNDg1
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29j
a2V0L1JlbW90ZUluc3BlY3RvclNlcnZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuaApAQCAtNDMsNyAr
NDMsNyBAQCBjbGFzcyBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIgZmluYWwgOiBwdWJsaWMgUmVtb3Rl
SW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6Okxpc3RlbgogICAgIGJvb2wgaXNSdW5uaW5nKCkgY29u
c3QgeyByZXR1cm4gISFtX3NlcnZlcjsgfQogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBO
ZXZlckRlc3Ryb3llZDxSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI+OworICAgIGZyaWVuZCBjbGFzcyBM
YXp5TmV2ZXJEZXN0cm95ZWQ8UmVtb3RlSW5zcGVjdG9yU2VydmVyPjsKICAgICBSZW1vdGVJbnNw
ZWN0b3JTZXJ2ZXIoKSB7IFNvY2tldDo6aW5pdCgpOyB9CiAKICAgICBib29sIGRpZEFjY2VwdChD
b25uZWN0aW9uSUQgYWNjZXB0ZWRJRCwgQ29ubmVjdGlvbklEIGxpc3RlbmVySUQsIFNvY2tldDo6
RG9tYWluKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5j
cHAKaW5kZXggZGVjZDg0ZmYyNjhiOTYwODFmNmVkNmUwMmIzNjE3ZjEyYzcyYjY3MS4uZTNlMDQ1
MDZlOTc4YjUwMTlkOGUwMDU4ZTg3NzlhNDZjYjFmMjAxNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tl
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0
L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTQxLDcgKzQxLDExIEBAIG5hbWVzcGFjZSBJ
bnNwZWN0b3IgewogCiBSZW1vdGVJbnNwZWN0b3ImIFJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9u
KCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVtb3RlSW5zcGVjdG9yPiBzaGFyZWQ7
CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxSZW1vdGVJbnNwZWN0b3I+IHNoYXJlZDsK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShv
bmNlS2V5LCBbJl0geworICAgICAgICBzaGFyZWQuY29uc3RydWN0KCk7CisgICAgfSk7CiAgICAg
cmV0dXJuIHNoYXJlZDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAKaW5kZXggMzlkYTEyZWZiNmE4N2U0YWUxZTg4NjBjYTdk
YTBkNGNmYWMwZWY1OC4uYTkxMDViOTY5ZTVkMDY5NTllNDNjMGY3NzM4MWU0NTljZjllNGM3YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0
L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9p
bnQuY3BwCkBAIC0zNyw3ICszNywxMSBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogUmVtb3Rl
SW5zcGVjdG9yU29ja2V0RW5kcG9pbnQmIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Ojpz
aW5nbGV0b24oKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZW1vdGVJbnNwZWN0b3JT
b2NrZXRFbmRwb2ludD4gc2hhcmVkOworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UmVt
b3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ+IHNoYXJlZDsKKyAgICBzdGF0aWMgc3RkOjpvbmNl
X2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAg
ICBzaGFyZWQuY29uc3RydWN0KCk7CisgICAgfSk7CiAgICAgcmV0dXJuIHNoYXJlZDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
aW5kZXggZDExOGJhYzNmNWRhYTg0YjNkYWE2M2I2ZTZiZDEzNWFjZTdmMWFiZS4uNTY1MGM5OGFh
YzhkMWZhNGRiNDcwNDY0NDg0ZmNhOWJlMDZkZjZjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0zMzYsMTMgKzMzNiwxNCBA
QCBJbnRlcnByZXRlcjo6fkludGVycHJldGVyKCkKICNpZiAhRU5BQkxFKExMSU5UX0VNQkVEREVE
X09QQ09ERV9JRCkgfHwgQVNTRVJUX0VOQUJMRUQKIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4m
IEludGVycHJldGVyOjpvcGNvZGVJRFRhYmxlKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8SGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPj4gb3Bjb2RlSURUYWJsZTsKKyAgICBzdGF0aWMg
TGF6eU5ldmVyRGVzdHJveWVkPEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4+IG9wY29kZUlEVGFi
bGU7CiAKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZUtleTsKICAgICBzdGQ6
OmNhbGxfb25jZShpbml0aWFsaXplS2V5LCBbJl0geworICAgICAgICBvcGNvZGVJRFRhYmxlLmNv
bnN0cnVjdCgpOwogICAgICAgICBjb25zdCBPcGNvZGUqIG9wY29kZVRhYmxlID0gTExJbnQ6Om9w
Y29kZU1hcCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTlVNQkVSX09GX0JZ
VEVDT0RFX0lEUzsgKytpKQotICAgICAgICAgICAgb3Bjb2RlSURUYWJsZS5nZXQoKS5hZGQob3Bj
b2RlVGFibGVbaV0sIHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSk7CisgICAgICAgICAgICBvcGNv
ZGVJRFRhYmxlLT5hZGQob3Bjb2RlVGFibGVbaV0sIHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSk7
CiAgICAgfSk7CiAKICAgICByZXR1cm4gb3Bjb2RlSURUYWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKaW5kZXggYzVhNjA4OTk4YjY2MDY5NGYyY2E4
YzBhMjM3YzZkZjUzMGIwYmY1OC4uOWZkZDg1NTFmNzc3YTdmYmU3NjM5OTM1ZTRlYzc5OTVhZmYz
ODU2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAK
QEAgLTI0MSwyMCArMjQxLDE5IEBAIHN0YXRpYyB2b2lkIGFkZFNjcmlwdGxlc3NMb2NhbGVJZk5l
ZWRlZChIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMsIFN0cmluCiAKIGNvbnN0IEhh
c2hTZXQ8U3RyaW5nPiYgaW50bEF2YWlsYWJsZUxvY2FsZXMoKQogewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IGNhY2hlZEF2YWlsYWJsZUxvY2FsZXM7Ci0gICAg
SGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzID0gY2FjaGVkQXZhaWxhYmxlTG9jYWxl
cy5nZXQoKTsKLQorICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+
PiBhdmFpbGFibGVMb2NhbGVzOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXpl
T25jZTsKICAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwgWyZdIHsKLSAgICAgICAg
QVNTRVJUKGF2YWlsYWJsZUxvY2FsZXMuaXNFbXB0eSgpKTsKKyAgICAgICAgYXZhaWxhYmxlTG9j
YWxlcy5jb25zdHJ1Y3QoKTsKKyAgICAgICAgQVNTRVJUKGF2YWlsYWJsZUxvY2FsZXMtPmlzRW1w
dHkoKSk7CiAgICAgICAgIGNvbnN0ZXhwciBib29sIGlzSW1tb3J0YWwgPSB0cnVlOwogICAgICAg
ICBpbnQzMl90IGNvdW50ID0gdWxvY19jb3VudEF2YWlsYWJsZSgpOwogICAgICAgICBmb3IgKGlu
dDMyX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgICAgICBTdHJpbmcgbG9jYWxl
ID0gbGFuZ3VhZ2VUYWdGb3JMb2NhbGVJRCh1bG9jX2dldEF2YWlsYWJsZShpKSwgaXNJbW1vcnRh
bCk7CiAgICAgICAgICAgICBpZiAobG9jYWxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXMuYWRkKGxvY2FsZSk7Ci0gICAg
ICAgICAgICBhZGRTY3JpcHRsZXNzTG9jYWxlSWZOZWVkZWQoYXZhaWxhYmxlTG9jYWxlcywgbG9j
YWxlKTsKKyAgICAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXMtPmFkZChsb2NhbGUpOworICAgICAg
ICAgICAgYWRkU2NyaXB0bGVzc0xvY2FsZUlmTmVlZGVkKGF2YWlsYWJsZUxvY2FsZXMuZ2V0KCks
IGxvY2FsZSk7CiAgICAgICAgIH0KICAgICB9KTsKICAgICByZXR1cm4gYXZhaWxhYmxlTG9jYWxl
czsKQEAgLTI2MiwyMCArMjYxLDE5IEBAIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bEF2YWls
YWJsZUxvY2FsZXMoKQogCiBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxDb2xsYXRvckF2YWls
YWJsZUxvY2FsZXMoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmlu
Zz4+IGNhY2hlZEF2YWlsYWJsZUxvY2FsZXM7Ci0gICAgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFi
bGVMb2NhbGVzID0gY2FjaGVkQXZhaWxhYmxlTG9jYWxlcy5nZXQoKTsKLQorICAgIHN0YXRpYyBM
YXp5TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBhdmFpbGFibGVMb2NhbGVzOwogICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZTsKICAgICBzdGQ6OmNhbGxfb25j
ZShpbml0aWFsaXplT25jZSwgWyZdIHsKLSAgICAgICAgQVNTRVJUKGF2YWlsYWJsZUxvY2FsZXMu
aXNFbXB0eSgpKTsKKyAgICAgICAgYXZhaWxhYmxlTG9jYWxlcy5jb25zdHJ1Y3QoKTsKKyAgICAg
ICAgQVNTRVJUKGF2YWlsYWJsZUxvY2FsZXMtPmlzRW1wdHkoKSk7CiAgICAgICAgIGNvbnN0ZXhw
ciBib29sIGlzSW1tb3J0YWwgPSB0cnVlOwogICAgICAgICBpbnQzMl90IGNvdW50ID0gdWNvbF9j
b3VudEF2YWlsYWJsZSgpOwogICAgICAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBjb3VudDsg
KytpKSB7CiAgICAgICAgICAgICBTdHJpbmcgbG9jYWxlID0gbGFuZ3VhZ2VUYWdGb3JMb2NhbGVJ
RCh1Y29sX2dldEF2YWlsYWJsZShpKSwgaXNJbW1vcnRhbCk7CiAgICAgICAgICAgICBpZiAobG9j
YWxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGF2
YWlsYWJsZUxvY2FsZXMuYWRkKGxvY2FsZSk7Ci0gICAgICAgICAgICBhZGRTY3JpcHRsZXNzTG9j
YWxlSWZOZWVkZWQoYXZhaWxhYmxlTG9jYWxlcywgbG9jYWxlKTsKKyAgICAgICAgICAgIGF2YWls
YWJsZUxvY2FsZXMtPmFkZChsb2NhbGUpOworICAgICAgICAgICAgYWRkU2NyaXB0bGVzc0xvY2Fs
ZUlmTmVlZGVkKGF2YWlsYWJsZUxvY2FsZXMuZ2V0KCksIGxvY2FsZSk7CiAgICAgICAgIH0KICAg
ICB9KTsKICAgICByZXR1cm4gYXZhaWxhYmxlTG9jYWxlczsKQEAgLTUyMSwxMSArNTE5LDExIEBA
IFN0cmluZyBkZWZhdWx0TG9jYWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKICAg
ICAvLyBJZiBhbGwgZWxzZSBmYWlscywgYXNrIElDVS4gSXQgd2lsbCBwcm9iYWJseSBzYXkgc29t
ZXRoaW5nIGJvZ3VzIGxpa2UgZW5fdXMgZXZlbiBpZiB0aGUgdXNlcgogICAgIC8vIGhhcyBjb25m
aWd1cmVkIHNvbWUgb3RoZXIgbGFuZ3VhZ2UsIGJ1dCBiZWluZyB3cm9uZyBpcyBiZXR0ZXIgdGhh
biBjcmFzaGluZy4KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBpY3VEZWZhdWx0
TG9jYWxTdHJpbmc7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGljdURl
ZmF1bHRMb2NhbFN0cmluZzsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9u
Y2U7CiAgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9uY2UsIFsmXSB7CiAgICAgICAgIGNv
bnN0ZXhwciBib29sIGlzSW1tb3J0YWwgPSB0cnVlOwotICAgICAgICBpY3VEZWZhdWx0TG9jYWxT
dHJpbmcuZ2V0KCkgPSBsYW5ndWFnZVRhZ0ZvckxvY2FsZUlEKHVsb2NfZ2V0RGVmYXVsdCgpLCBp
c0ltbW9ydGFsKTsKKyAgICAgICAgaWN1RGVmYXVsdExvY2FsU3RyaW5nLmNvbnN0cnVjdChsYW5n
dWFnZVRhZ0ZvckxvY2FsZUlEKHVsb2NfZ2V0RGVmYXVsdCgpLCBpc0ltbW9ydGFsKSk7CiAgICAg
fSk7CiAgICAgaWYgKCFpY3VEZWZhdWx0TG9jYWxTdHJpbmctPmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIGljdURlZmF1bHRMb2NhbFN0cmluZy5nZXQoKTsKQEAgLTc3OCwxMiArNzc2LDExIEBA
IEpTVmFsdWUgc3VwcG9ydGVkTG9jYWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBIYXNoU2V0PFN0cmluZz4mIGF2CiAKIFZlY3RvcjxTdHJpbmc+IG51bWJlcmluZ1N5c3Rl
bXNGb3JMb2NhbGUoY29uc3QgU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFZlY3RvcjxTdHJpbmc+PiBjYWNoZWROdW1iZXJpbmdTeXN0ZW1zOwotICAgIFZlY3Rv
cjxTdHJpbmc+JiBhdmFpbGFibGVOdW1iZXJpbmdTeXN0ZW1zID0gY2FjaGVkTnVtYmVyaW5nU3lz
dGVtcy5nZXQoKTsKLQorICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFN0cmlu
Zz4+IGF2YWlsYWJsZU51bWJlcmluZ1N5c3RlbXM7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFn
IGluaXRpYWxpemVPbmNlOwogICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNlLCBbJl0g
ewotICAgICAgICBBU1NFUlQoYXZhaWxhYmxlTnVtYmVyaW5nU3lzdGVtcy5pc0VtcHR5KCkpOwor
ICAgICAgICBhdmFpbGFibGVOdW1iZXJpbmdTeXN0ZW1zLmNvbnN0cnVjdCgpOworICAgICAgICBB
U1NFUlQoYXZhaWxhYmxlTnVtYmVyaW5nU3lzdGVtcy0+aXNFbXB0eSgpKTsKICAgICAgICAgVUVy
cm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgICAgIFVFbnVtZXJhdGlvbiogbnVt
YmVyaW5nU3lzdGVtTmFtZXMgPSB1bnVtc3lzX29wZW5BdmFpbGFibGVOYW1lcygmc3RhdHVzKTsK
ICAgICAgICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsKQEAgLTc5Niw3ICs3OTMsNyBAQCBW
ZWN0b3I8U3RyaW5nPiBudW1iZXJpbmdTeXN0ZW1zRm9yTG9jYWxlKGNvbnN0IFN0cmluZyYgbG9j
YWxlKQogICAgICAgICAgICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsKICAgICAgICAgICAg
IC8vIE9ubHkgc3VwcG9ydCBhbGdvcml0aG1pYyBpZiBpdCBpcyB0aGUgZGVmYXVsdCBmb3QgdGhl
IGxvY2FsZSwgaGFuZGxlZCBiZWxvdy4KICAgICAgICAgICAgIGlmICghdW51bXN5c19pc0FsZ29y
aXRobWljKG51bXN5cykpCi0gICAgICAgICAgICAgICAgYXZhaWxhYmxlTnVtYmVyaW5nU3lzdGVt
cy5hcHBlbmQoU3RyaW5nKFN0cmluZ0ltcGw6OmNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwocmVzdWx0
LCByZXN1bHRMZW5ndGgpKSk7CisgICAgICAgICAgICAgICAgYXZhaWxhYmxlTnVtYmVyaW5nU3lz
dGVtcy0+YXBwZW5kKFN0cmluZyhTdHJpbmdJbXBsOjpjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKHJl
c3VsdCwgcmVzdWx0TGVuZ3RoKSkpOwogICAgICAgICAgICAgdW51bXN5c19jbG9zZShudW1zeXMp
OwogICAgICAgICB9CiAgICAgICAgIHVlbnVtX2Nsb3NlKG51bWJlcmluZ1N5c3RlbU5hbWVzKTsK
QEAgLTgwOSw3ICs4MDYsNyBAQCBWZWN0b3I8U3RyaW5nPiBudW1iZXJpbmdTeXN0ZW1zRm9yTG9j
YWxlKGNvbnN0IFN0cmluZyYgbG9jYWxlKQogICAgIHVudW1zeXNfY2xvc2UoZGVmYXVsdFN5c3Rl
bSk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBudW1iZXJpbmdTeXN0ZW1zKHsgZGVmYXVsdFN5c3Rl
bU5hbWUgfSk7Ci0gICAgbnVtYmVyaW5nU3lzdGVtcy5hcHBlbmRWZWN0b3IoYXZhaWxhYmxlTnVt
YmVyaW5nU3lzdGVtcyk7CisgICAgbnVtYmVyaW5nU3lzdGVtcy5hcHBlbmRWZWN0b3IoYXZhaWxh
YmxlTnVtYmVyaW5nU3lzdGVtcy5nZXQoKSk7CiAgICAgcmV0dXJuIG51bWJlcmluZ1N5c3RlbXM7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0xvY2tBbGdvcml0aG1JbmxpbmVzLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrQWxnb3JpdGhtSW5saW5lcy5oCmluZGV4IGZmOGYyMDAxZWI5
ZGM5NzVlMzEyMDhlMWI4ZmE4YzE2ZGVlYzEyYjEuLjVlMWMwODE0YzMyYzZjZTk5MDg5OGI5MjQ2
NWJkMmUxY2E0OWM4MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xvY2tBbGdvcml0aG1J
bmxpbmVzLmgKKysrIGIvU291cmNlL1dURi93dGYvTG9ja0FsZ29yaXRobUlubGluZXMuaApAQCAt
NzIsMTEgKzcyLDExIEBAIHZvaWQgTG9ja0FsZ29yaXRobTxMb2NrVHlwZSwgaXNIZWxkQml0LCBo
YXNQYXJrZWRCaXQsIEhvb2tzPjo6bG9ja1Nsb3coQXRvbWljPExvCiAgICAgICAgIAogICAgICAg
ICBpZiAoIShjdXJyZW50VmFsdWUgJiBpc0hlbGRCaXQpKSB7CiAgICAgICAgICAgICBkYXRhTG9n
KCJMb2NrIG5vdCBoZWxkIVxuIik7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgQ1JBU0hfV0lUSF9JTkZPKGN1cnJlbnRWYWx1ZSk7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKCEoY3VycmVudFZhbHVlICYgaGFzUGFya2VkQml0KSkgewogICAg
ICAgICAgICAgZGF0YUxvZygiTG9jayBub3QgcGFya2VkIVxuIik7Ci0gICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgQ1JBU0hfV0lUSF9JTkZPKGN1
cnJlbnRWYWx1ZSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBXZSBub3cgZXhwZWN0IHRoZSB2
YWx1ZSB0byBiZSBpc0hlbGR8aGFzUGFya2VkLiBTbyBsb25nIGFzIHRoYXQncyB0aGUgY2FzZSwg
d2UgY2FuIHBhcmsuCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBMb2NrQWxnb3JpdGhtPExvY2tU
eXBlLCBpc0hlbGRCaXQsIGhhc1BhcmtlZEJpdCwgSG9va3M+Ojp1bmxvY2tTbG93KEF0b21pYzwK
ICAgICAgICAgaWYgKChvbGRCeXRlVmFsdWUgJiBtYXNrKSAhPSBpc0hlbGRCaXQKICAgICAgICAg
ICAgICYmIChvbGRCeXRlVmFsdWUgJiBtYXNrKSAhPSAoaXNIZWxkQml0IHwgaGFzUGFya2VkQml0
KSkgewogICAgICAgICAgICAgZGF0YUxvZygiSW52YWxpZCB2YWx1ZSBmb3IgbG9jazogIiwgb2xk
Qnl0ZVZhbHVlLCAiXG4iKTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICBDUkFTSF9XSVRIX0lORk8ob2xkQnl0ZVZhbHVlKTsKICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgaWYgKChvbGRCeXRlVmFsdWUgJiBtYXNrKSA9PSBpc0hlbGRC
aXQpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>