<?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>236277</bug_id>
          
          <creation_ts>2022-02-07 19:12:53 -0800</creation_ts>
          <short_desc>[WebCore] JSValueInWrappedObject is not correct for concurrent GC</short_desc>
          <delta_ts>2022-02-08 09:53:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=236278</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=236279</see_also>
          <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>
          <dependson>194806</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1838487</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-07 19:12:53 -0800</bug_when>
    <thetext>[WebCore] JSValueInWrappedObject is not correct for concurrent GC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838490</commentid>
    <comment_count>1</comment_count>
      <attachid>451196</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-07 19:26:11 -0800</bug_when>
    <thetext>Created attachment 451196
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838491</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-07 19:26:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/88366849&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838492</commentid>
    <comment_count>3</comment_count>
      <attachid>451196</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2022-02-07 19:32:58 -0800</bug_when>
    <thetext>Comment on attachment 451196
Patch

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

r=me

&gt; Source/WebCore/Modules/indexeddb/IDBRequest.cpp:506
&gt; +    // FIXME: This code is wrong: let&apos;s consider that these fields&apos; access are reordered in the concurrent GC thread.
&gt; +    // And we just scanned cleared m_resultWrapper and then, we missed scanning m_cursorWrapper with a new value.
&gt; +    // Then we could make both collected. Whenever changing JSValueInWrappedObject fields, we should emit a write barrier
&gt; +    // if we would like to keep them alive.

can you file a bug for this and ping the relevant folks?

&gt; Source/WebCore/bindings/js/JSValueInWrappedObject.h:42
&gt; +    // Remove them once AudioBuffer&apos;s m_channelWrappers bug is fixed.

add FIXME and bug link

&gt; Source/WebCore/bindings/js/JSValueInWrappedObject.h:54
&gt; +    // Remove this once IDBRequest semantic bug is fixed.

ditto about FIXME and bug link</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838497</commentid>
    <comment_count>4</comment_count>
      <attachid>451196</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-07 19:44:01 -0800</bug_when>
    <thetext>Comment on attachment 451196
Patch

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

Thanks!

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBRequest.cpp:506
&gt;&gt; +    // if we would like to keep them alive.
&gt; 
&gt; can you file a bug for this and ping the relevant folks?

Nice, filed. https://bugs.webkit.org/show_bug.cgi?id=236278
I will paste the above bugzilla URL here too.

&gt;&gt; Source/WebCore/bindings/js/JSValueInWrappedObject.h:42
&gt;&gt; +    // Remove them once AudioBuffer&apos;s m_channelWrappers bug is fixed.
&gt; 
&gt; add FIXME and bug link

Filed :) https://bugs.webkit.org/show_bug.cgi?id=236279

&gt;&gt; Source/WebCore/bindings/js/JSValueInWrappedObject.h:54
&gt;&gt; +    // Remove this once IDBRequest semantic bug is fixed.
&gt; 
&gt; ditto about FIXME and bug link

Filed :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838534</commentid>
    <comment_count>5</comment_count>
      <attachid>451209</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-07 21:49:28 -0800</bug_when>
    <thetext>Created attachment 451209
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838734</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-08 09:53:49 -0800</bug_when>
    <thetext>Committed r289383 (?): &lt;https://commits.webkit.org/r289383&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451196</attachid>
            <date>2022-02-07 19:26:11 -0800</date>
            <delta_ts>2022-02-07 19:32:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236277-20220207192610.patch</filename>
            <type>text/plain</type>
            <size>16638</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjNmMjNjZjczZjMyODAw
OGQzNzFkMjQ1NzQ4YmM0ODMyMzQ5OWIzNS4uNTMwYzM4ZjQyNzM1OGRiOTVhZWRhODY4M2JhYThm
NDY3ZTg3ZDIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIyLTAyLTA3ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkNvcmVdIEpTVmFs
dWVJbldyYXBwZWRPYmplY3QgaXMgbm90IGNvcnJlY3QgZm9yIGNvbmN1cnJlbnQgR0MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjI3NworICAgICAg
ICByZGFyOi8vODgzNjY4NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0IGlzIGJyb2tlbiBmb3IgY29uY3VycmVu
dCBHQydzIG1hcmtpbmcuIEl0IGlzIHVzaW5nIHN0ZDo6dmFyaWFudDw+IHRvIHN0b3JlIFdlYWsg
LyBKU1ZhbHVlLAorICAgICAgICB3aGljaCBpcyBub3Qgc2FmZSBpZiBjb25jdXJyZW50IEdDIHJl
YWRzIGl0IHdoaWxlIGNoYW5naW5nIHRoYXQgc3RkOjp2YXJpYW50LiBUaGlzIHBhdGNoIGZpeGVz
IHNldmVyYWwgcHJvYmxlbXMKKyAgICAgICAgaW4gSlNWYWx1ZUluV3JhcHBlZE9iamVjdC4KKwor
ICAgICAgICAxLiBXZSBtdXN0IG5vdCB1c2Ugc3RkOjp2YXJpYW50IGhlcmUgc2luY2UgY29uY3Vy
cmVudCBhY2Nlc3MgY2FuIGhhcHBlbi4gV2UgaGF2ZSBib3RoIEpTVmFsdWUgYW5kIFdlYWssIGFu
ZCBjaGFuZ2UKKyAgICAgICAgICAgV2VhayBhZnRlciBmdWxseSBpbml0aWFsaXplIFdlYWtJbXBs
J3MgY29udGVudCBpbiBXZWFrLiBUbyBlbnN1cmUgdGhhdCwgd2UgZW1pdCBzdG9yZVN0b3JlQmFy
cmllciBiZWZvcmUgc2V0dGluZworICAgICAgICAgICBXZWFrIHRvIHRoZSBKU1ZhbHVlSW5XcmFw
cGVkT2JqZWN0J3MgZmllbGQuCisgICAgICAgIDIuIEFzc2lnbm1lbnQgb3BlcmF0b3IgJiBjb3B5
IGNvbnN0cnVjdG9yIGFyZSBiYXNpY2FsbHkgd3JvbmcgZm9yIHRoaXMgY2xhc3MgYXMgd2UgbmVl
ZCBhIHdyaXRlLWJhcnJpZXIgdG8gc2V0IGEgdmFsdWUKKyAgICAgICAgICAgdG8gdGhlIGZpZWxk
LiBXZSByZW1vdmUgdGhlbSBhbmQgbWFrZSBpdCBleHBsaWNpdCB0aGF0IHdlIGRvIG5vdCBoYXZl
IHdyaXRlLWJhcnJpZXIsIHdoaWNoIHJldmVhbHMgdGhhdCBJREJSZXF1ZXN0CisgICAgICAgICAg
IGhhcyBhIHNlbWFudGljIGJ1Zy4KKyAgICAgICAgMy4gV2UgYWxzbyBhZGQgY2xlYXIoKSBpbnN0
ZWFkIG9mIGFzc2lnbmluZyBlbXB0eSBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LiBBbmQgd2UgZW5z
dXJlIHRoYXQgdGhpcyBuZXcgY2xlYXIoKSB3b3JrcworICAgICAgICAgICB3ZWxsIHdpdGggY29u
Y3VycmVudCBHQyB0aHJlYWRzOiB3ZSBjbGVhciB0aGUgdW5kZXJseWluZyBXZWFrSW1wbCogcG9p
bnRlciB0byBudWxscHRyLiBCdXQgc2luY2UgV2Vha0ltcGwqIGlzIGtlcHQKKyAgICAgICAgICAg
YWxpdmUgdW50aWwgR0MgY2xlYXJzIHdlYWstcmVsYXRlZCB0aGluZ3MgaW4gaXRzIGVuZCBwaGFz
ZSwgY29uY3VycmVudCBHQyB0aHJlYWQgY2FuIGFjY2VzcyB0aGUgb2xkIFdlYWtJbXBsKi4KKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJDdXJzb3I6OnNldEdldFJlc3VsdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRSZXN1
bHQpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6c2V0UmVzdWx0VG9TdHJ1Y3R1cmVk
Q2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6c2V0UmVzdWx0VG9VbmRlZmlu
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6d2lsbEl0ZXJhdGVDdXJzb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcik6Cisg
ICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50TWV0aG9kQ2hhbmdlRXZlbnQu
Y3BwOgorICAgICAgICAqIE1vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlc3BvbnNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXNwb25zZTo6c2V0RGV0YWlsc0Z1bmN0aW9u
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQnVmZmVyOjpnZXRDaGFubmVsRGF0YSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6SlNWYWx1
ZUluV3JhcHBlZE9iamVjdDo6SlNWYWx1ZUluV3JhcHBlZE9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0OjpvcGVyYXRvciBKU0M6OkpTVmFsdWUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SlNWYWx1ZUluV3JhcHBlZE9iamVjdDo6dmlzaXQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SlNWYWx1ZUluV3JhcHBlZE9iamVjdDo6c2V0V2Vha2x5KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVmFsdWVJbldyYXBwZWRPYmplY3Q6OnNldCk6CisgICAgICAg
IChXZWJDb3JlOjpKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0OjpjbGVhcik6CisgICAgICAgIChXZWJD
b3JlOjpKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0OjpzZXRXaXRob3V0QmFycmllcik6CisgICAgICAg
IChXZWJDb3JlOjpjYWNoZWRQcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVmFs
dWVJbldyYXBwZWRPYmplY3Q6Om1ha2VWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0OjpvcGVyYXRvcj0pOiBEZWxldGVkLgorCiAyMDIyLTAy
LTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBQYWdlQ2xpZW50IHBsdW1iaW5nIGZvciB2aWRlbyBmcmFtZSBleHRyYWN0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCAxYmRkMTBh
OTk2MzMyYTg5NjFlZDU0MzMzZWMxZDZkNThlMmJhNjZmLi5lNDM4MmIzZDM0YTI5NDc1ODBkN2Q3
OTBjYTQ0NWZlMDk1NmQyNTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvci5jcHAKQEAgLTMzNiw5ICszMzYsNyBAQCBib29sIElEQkN1cnNvcjo6c2V0
R2V0UmVzdWx0KElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQkdldFJlc3VsdCYgZ2V0UmVz
dWx0LAogICAgIFZNJiB2bSA9IGNvbnRleHQtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2so
dm0pOwogCi0gICAgbV9rZXlXcmFwcGVyID0geyB9OwotICAgIG1fcHJpbWFyeUtleVdyYXBwZXIg
PSB7IH07Ci0gICAgbV92YWx1ZVdyYXBwZXIgPSB7IH07CisgICAgY2xlYXJXcmFwcGVycygpOwog
CiAgICAgaWYgKCFnZXRSZXN1bHQuaXNEZWZpbmVkKCkpIHsKICAgICAgICAgbV9rZXlEYXRhID0g
eyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVx
dWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNw
cAppbmRleCAxNmYzYjY5ZmFiMTVjODhjYzJlYzc1ODNjZTQyMzczNTMyZTU0Y2Y2Li5jMzQyYjVi
MjI5N2FmZjIzMDE1OGQ5NjNlNDVmNWMyZDZhOWQ4MzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtMzY4LDcgKzM2OCw3IEBAIHZv
aWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0KGNvbnN0IElEQktleURhdGEmIGtleURhdGEpCiAgICAg
Vk0mIHZtID0gY29udGV4dC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAg
bV9yZXN1bHQgPSBrZXlEYXRhOwotICAgIG1fcmVzdWx0V3JhcHBlciA9IHsgfTsKKyAgICBtX3Jl
c3VsdFdyYXBwZXIuY2xlYXIoKTsKIH0KIAogdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHQoY29u
c3QgVmVjdG9yPElEQktleURhdGE+JiBrZXlEYXRhcykKQEAgLTM4Miw3ICszODIsNyBAQCB2b2lk
IElEQlJlcXVlc3Q6OnNldFJlc3VsdChjb25zdCBWZWN0b3I8SURCS2V5RGF0YT4mIGtleURhdGFz
KQogICAgIFZNJiB2bSA9IGNvbnRleHQtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0p
OwogICAgIG1fcmVzdWx0ID0ga2V5RGF0YXM7Ci0gICAgbV9yZXN1bHRXcmFwcGVyID0geyB9Owor
ICAgIG1fcmVzdWx0V3JhcHBlci5jbGVhcigpOwogfQogCiB2b2lkIElEQlJlcXVlc3Q6OnNldFJl
c3VsdChjb25zdCBJREJHZXRBbGxSZXN1bHQmIHJlc3VsdCkKQEAgLTM5Niw3ICszOTYsNyBAQCB2
b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdChjb25zdCBJREJHZXRBbGxSZXN1bHQmIHJlc3VsdCkK
ICAgICBWTSYgdm0gPSBjb250ZXh0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsK
ICAgICBtX3Jlc3VsdCA9IHJlc3VsdDsKLSAgICBtX3Jlc3VsdFdyYXBwZXIgPSB7IH07CisgICAg
bV9yZXN1bHRXcmFwcGVyLmNsZWFyKCk7CiB9CiAKIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0
KHVpbnQ2NF90IG51bWJlcikKQEAgLTQxMCw3ICs0MTAsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNl
dFJlc3VsdCh1aW50NjRfdCBudW1iZXIpCiAgICAgVk0mIHZtID0gY29udGV4dC0+dm0oKTsKICAg
ICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgbV9yZXN1bHQgPSBudW1iZXI7Ci0gICAgbV9y
ZXN1bHRXcmFwcGVyID0geyB9OworICAgIG1fcmVzdWx0V3JhcHBlci5jbGVhcigpOwogfQogCiB2
b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdFRvU3RydWN0dXJlZENsb25lKGNvbnN0IElEQkdldFJl
c3VsdCYgcmVzdWx0KQpAQCAtNDI2LDcgKzQyNiw3IEBAIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVz
dWx0VG9TdHJ1Y3R1cmVkQ2xvbmUoY29uc3QgSURCR2V0UmVzdWx0JiByZXN1bHQpCiAgICAgVk0m
IHZtID0gY29udGV4dC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgbV9y
ZXN1bHQgPSByZXN1bHQ7Ci0gICAgbV9yZXN1bHRXcmFwcGVyID0geyB9OworICAgIG1fcmVzdWx0
V3JhcHBlci5jbGVhcigpOwogfQogCiB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdFRvVW5kZWZp
bmVkKCkKQEAgLTQ0MCw3ICs0NDAsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdFRvVW5k
ZWZpbmVkKCkKICAgICBWTSYgdm0gPSBjb250ZXh0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBs
b2NrKHZtKTsKICAgICBtX3Jlc3VsdCA9IE51bGxSZXN1bHRUeXBlOjpVbmRlZmluZWQ7Ci0gICAg
bV9yZXN1bHRXcmFwcGVyID0geyB9OworICAgIG1fcmVzdWx0V3JhcHBlci5jbGVhcigpOwogfQog
CiBJREJDdXJzb3IqIElEQlJlcXVlc3Q6OnJlc3VsdEN1cnNvcigpCkBAIC00NzMsOSArNDczLDEz
IEBAIHZvaWQgSURCUmVxdWVzdDo6d2lsbEl0ZXJhdGVDdXJzb3IoSURCQ3Vyc29yJiBjdXJzb3Ip
CiAgICAgVk0mIHZtID0gY29udGV4dC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7
CiAKKyAgICAvLyBGSVhNRTogVGhpcyBjb2RlIGlzIHdyb25nOiBsZXQncyBjb25zaWRlciB0aGF0
IHRoZXNlIGZpZWxkcycgYWNjZXNzIGFyZSByZW9yZGVyZWQgaW4gdGhlIGNvbmN1cnJlbnQgR0Mg
dGhyZWFkLgorICAgIC8vIEFuZCB3ZSBqdXN0IHNjYW5uZWQgY2xlYXJlZCBtX3Jlc3VsdFdyYXBw
ZXIgYW5kIHRoZW4sIHdlIG1pc3NlZCBzY2FubmluZyBtX2N1cnNvcldyYXBwZXIgd2l0aCBhIG5l
dyB2YWx1ZS4KKyAgICAvLyBUaGVuIHdlIGNvdWxkIG1ha2UgYm90aCBjb2xsZWN0ZWQuIFdoZW5l
dmVyIGNoYW5naW5nIEpTVmFsdWVJbldyYXBwZWRPYmplY3QgZmllbGRzLCB3ZSBzaG91bGQgZW1p
dCBhIHdyaXRlIGJhcnJpZXIKKyAgICAvLyBpZiB3ZSB3b3VsZCBsaWtlIHRvIGtlZXAgdGhlbSBh
bGl2ZS4KICAgICBpZiAobV9yZXN1bHRXcmFwcGVyKQotICAgICAgICBtX2N1cnNvcldyYXBwZXIg
PSBtX3Jlc3VsdFdyYXBwZXI7Ci0gICAgbV9yZXN1bHRXcmFwcGVyID0geyB9OworICAgICAgICBt
X2N1cnNvcldyYXBwZXIuc2V0V2l0aG91dEJhcnJpZXIobV9yZXN1bHRXcmFwcGVyKTsKKyAgICBt
X3Jlc3VsdFdyYXBwZXIuY2xlYXIoKTsKICAgICBtX3JlYWR5U3RhdGUgPSBSZWFkeVN0YXRlOjpQ
ZW5kaW5nOwogICAgIG1fZG9tRXJyb3IgPSBudWxscHRyOwogICAgIG1faWRiRXJyb3IgPSBJREJF
cnJvciB7IH07CkBAIC00OTQsMTEgKzQ5OCwxNSBAQCB2b2lkIElEQlJlcXVlc3Q6OmRpZE9wZW5P
ckl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayh2bSk7CiAKICAgICBtX3Jlc3VsdCA9IE51bGxSZXN1bHRUeXBlOjpFbXB0
eTsKLSAgICBtX3Jlc3VsdFdyYXBwZXIgPSB7IH07CisgICAgbV9yZXN1bHRXcmFwcGVyLmNsZWFy
KCk7CiAKKyAgICAvLyBGSVhNRTogVGhpcyBjb2RlIGlzIHdyb25nOiBsZXQncyBjb25zaWRlciB0
aGF0IHRoZXNlIGZpZWxkcycgYWNjZXNzIGFyZSByZW9yZGVyZWQgaW4gdGhlIGNvbmN1cnJlbnQg
R0MgdGhyZWFkLgorICAgIC8vIEFuZCB3ZSBqdXN0IHNjYW5uZWQgY2xlYXJlZCBtX3Jlc3VsdFdy
YXBwZXIgYW5kIHRoZW4sIHdlIG1pc3NlZCBzY2FubmluZyBtX2N1cnNvcldyYXBwZXIgd2l0aCBh
IG5ldyB2YWx1ZS4KKyAgICAvLyBUaGVuIHdlIGNvdWxkIG1ha2UgYm90aCBjb2xsZWN0ZWQuIFdo
ZW5ldmVyIGNoYW5naW5nIEpTVmFsdWVJbldyYXBwZWRPYmplY3QgZmllbGRzLCB3ZSBzaG91bGQg
ZW1pdCBhIHdyaXRlIGJhcnJpZXIKKyAgICAvLyBpZiB3ZSB3b3VsZCBsaWtlIHRvIGtlZXAgdGhl
bSBhbGl2ZS4KICAgICBpZiAocmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6SXRl
cmF0ZUN1cnNvclN1Y2Nlc3MgfHwgcmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6
T3BlbkN1cnNvclN1Y2Nlc3MpIHsKICAgICAgICAgaWYgKG1fcGVuZGluZ0N1cnNvci0+c2V0R2V0
UmVzdWx0KCp0aGlzLCByZXN1bHREYXRhLmdldFJlc3VsdCgpLCBtX2N1cnJlbnRUcmFuc2FjdGlv
bk9wZXJhdGlvbklEKSAmJiBtX2N1cnNvcldyYXBwZXIpCi0gICAgICAgICAgICBtX3Jlc3VsdFdy
YXBwZXIgPSBtX2N1cnNvcldyYXBwZXI7CisgICAgICAgICAgICBtX3Jlc3VsdFdyYXBwZXIuc2V0
V2l0aG91dEJhcnJpZXIobV9jdXJzb3JXcmFwcGVyKTsKICAgICAgICAgaWYgKHJlc3VsdERhdGEu
Z2V0UmVzdWx0KCkuaXNEZWZpbmVkKCkpCiAgICAgICAgICAgICBtX3Jlc3VsdCA9IG1fcGVuZGlu
Z0N1cnNvcjsKICAgICB9CkBAIC01NTEsNyArNTU5LDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpzZXRS
ZXN1bHQoUmVmPElEQkRhdGFiYXNlPiYmIGRhdGFiYXNlKQogICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHZtKTsKIAogICAgIG1fcmVzdWx0ID0gUmVmUHRyPElEQkRhdGFiYXNlPiB7IFdURk1vdmUoZGF0
YWJhc2UpIH07Ci0gICAgbV9yZXN1bHRXcmFwcGVyID0geyB9OworICAgIG1fcmVzdWx0V3JhcHBl
ci5jbGVhcigpOwogfQogCiB2b2lkIElEQlJlcXVlc3Q6OmNsZWFyV3JhcHBlcnMoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50TWV0aG9k
Q2hhbmdlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9Q
YXltZW50TWV0aG9kQ2hhbmdlRXZlbnQuY3BwCmluZGV4IDJlY2M5NWQwNjBkNDhjOTQxOTBhZjZh
YmViMzIyNGRmYzRkMWY0OTMuLjEwNzJiZmViNTRhMjZhZGFiMzVhZWUwMmEzZDEzYmRmMGEzYzk4
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5
bWVudE1ldGhvZENoYW5nZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bh
eW1lbnRyZXF1ZXN0L1BheW1lbnRNZXRob2RDaGFuZ2VFdmVudC5jcHAKQEAgLTQyLDE0ICs0Miwx
NCBAQCBFdmVudEludGVyZmFjZSBQYXltZW50TWV0aG9kQ2hhbmdlRXZlbnQ6OmV2ZW50SW50ZXJm
YWNlKCkgY29uc3QKIFBheW1lbnRNZXRob2RDaGFuZ2VFdmVudDo6UGF5bWVudE1ldGhvZENoYW5n
ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIEluaXQmJiBldmVudEluaXQpCiAgICAgOiBQ
YXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50IHsgdHlwZSwgZXZlbnRJbml0IH0KICAgICAsIG1fbWV0
aG9kTmFtZSB7IFdURk1vdmUoZXZlbnRJbml0Lm1ldGhvZE5hbWUpIH0KLSAgICAsIG1fbWV0aG9k
RGV0YWlscyB7IEpTVmFsdWVJbldyYXBwZWRPYmplY3QgeyBldmVudEluaXQubWV0aG9kRGV0YWls
cy5nZXQoKSB9IH0KKyAgICAsIG1fbWV0aG9kRGV0YWlscyB7IHN0ZDo6aW5fcGxhY2VfdHlwZV90
PEpTVmFsdWVJbldyYXBwZWRPYmplY3Q+KCksIGV2ZW50SW5pdC5tZXRob2REZXRhaWxzLmdldCgp
IH0KIHsKIH0KIAogUGF5bWVudE1ldGhvZENoYW5nZUV2ZW50OjpQYXltZW50TWV0aG9kQ2hhbmdl
RXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBtZXRob2ROYW1lLCBN
ZXRob2REZXRhaWxzRnVuY3Rpb24mJiBtZXRob2REZXRhaWxzRnVuY3Rpb24pCiAgICAgOiBQYXlt
ZW50UmVxdWVzdFVwZGF0ZUV2ZW50IHsgdHlwZSB9CiAgICAgLCBtX21ldGhvZE5hbWUgeyBtZXRo
b2ROYW1lIH0KLSAgICAsIG1fbWV0aG9kRGV0YWlscyB7IFdURk1vdmUobWV0aG9kRGV0YWlsc0Z1
bmN0aW9uKSB9CisgICAgLCBtX21ldGhvZERldGFpbHMgeyBzdGQ6OmluX3BsYWNlX3R5cGVfdDxN
ZXRob2REZXRhaWxzRnVuY3Rpb24+KCksIFdURk1vdmUobWV0aG9kRGV0YWlsc0Z1bmN0aW9uKSB9
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVl
c3QvUGF5bWVudFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJl
cXVlc3QvUGF5bWVudFJlc3BvbnNlLmNwcAppbmRleCA0OTFiNzdiOGJiYTRkY2RkYTFlYWQ3OTM5
ZmJjNDg5ZTIxYmQyMWZhLi5iMTJiYTU2NTBlMGQxY2NhOGVhZTViZDliMzIzYTYzZGViMmIzNjgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1l
bnRSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVz
dC9QYXltZW50UmVzcG9uc2UuY3BwCkBAIC02NSw3ICs2NSw3IEBAIFBheW1lbnRSZXNwb25zZTo6
flBheW1lbnRSZXNwb25zZSgpCiB2b2lkIFBheW1lbnRSZXNwb25zZTo6c2V0RGV0YWlsc0Z1bmN0
aW9uKERldGFpbHNGdW5jdGlvbiYmIGRldGFpbHNGdW5jdGlvbikKIHsKICAgICBtX2RldGFpbHNG
dW5jdGlvbiA9IFdURk1vdmUoZGV0YWlsc0Z1bmN0aW9uKTsKLSAgICBtX2NhY2hlZERldGFpbHMg
PSB7IH07CisgICAgbV9jYWNoZWREZXRhaWxzLmNsZWFyKCk7CiB9CiAKIHZvaWQgUGF5bWVudFJl
c3BvbnNlOjpjb21wbGV0ZShEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6b3B0aW9uYWw8UGF5bWVu
dENvbXBsZXRlPiYmIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxQYXltZW50Q29tcGxldGVEZXRhaWxz
PiYmIGRldGFpbHMsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCmluZGV4IDljN2Jj
MjAzZjYwOWNkZmU3ZWJiYzBiNjFkZGI2ZmIxYjdhNjhmZDguLjJjYmRhODdmOTY3MTUxNDZiNjMy
ZThhNmMyYjVkNzg5MzIyZWIyZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXIuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgRXhjZXB0aW9uT3I8SlND
OjpKU1ZhbHVlPiBBdWRpb0J1ZmZlcjo6Z2V0Q2hhbm5lbERhdGEoSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE8KIAogICAgIGlmIChnbG9iYWxPYmplY3Qud29ybGRJc05vcm1hbCgpKSB7CiAgICAg
ICAgIGlmICghbV9jaGFubmVsV3JhcHBlcnNbY2hhbm5lbEluZGV4XSkKLSAgICAgICAgICAgIG1f
Y2hhbm5lbFdyYXBwZXJzW2NoYW5uZWxJbmRleF0gPSB7IGNvbnN0cnVjdEpTQXJyYXkoKSB9Owor
ICAgICAgICAgICAgbV9jaGFubmVsV3JhcHBlcnNbY2hhbm5lbEluZGV4XS5zZXRXZWFrbHkoY29u
c3RydWN0SlNBcnJheSgpKTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTQzo6SlNWYWx1
ZT4obV9jaGFubmVsV3JhcHBlcnNbY2hhbm5lbEluZGV4XSk7CiAgICAgfQogICAgIHJldHVybiBj
b25zdHJ1Y3RKU0FycmF5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmgKaW5kZXggYjUxZGZlYTU2MWQ0NzJmNGU1MGQ0ZTJkYjU1
MzkxNDExZWU4ZWY1ZC4uMTE0M2MyMTk4OTNkMjU4MjU2YmUzMzIyNzVhZjk0NjI3NzQwZDkwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWYWx1ZUluV3JhcHBlZE9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmFsdWVJbldyYXBwZWRP
YmplY3QuaApAQCAtMzQsNTcgKzM0LDQ0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEpTVmFsdWVJbldyYXBwZWRPYmplY3QgeworICAgIC8vIEl0IG11c3Qgbm90IGJlIGNvcHlhYmxl
LiBDaGFuZ2luZyB0aGlzIHdpbGwgYnJlYWsgY29uY3VycmVudCBHQy4KKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0KTsKIHB1YmxpYzoKICAgICBKU1ZhbHVl
SW5XcmFwcGVkT2JqZWN0KEpTQzo6SlNWYWx1ZSA9IHsgfSk7Ci0gICAgSlNWYWx1ZUluV3JhcHBl
ZE9iamVjdChjb25zdCBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0Jik7CisKKyAgICAvLyBSZW1vdmUg
dGhlbSBvbmNlIEF1ZGlvQnVmZmVyJ3MgbV9jaGFubmVsV3JhcHBlcnMgYnVnIGlzIGZpeGVkLgor
ICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QoSlNWYWx1ZUluV3JhcHBlZE9iamVjdCYmKSA9IGRl
ZmF1bHQ7CisgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCYgb3BlcmF0b3I9KEpTVmFsdWVJbldy
YXBwZWRPYmplY3QmJikgPSBkZWZhdWx0OworCiAgICAgb3BlcmF0b3IgSlNDOjpKU1ZhbHVlKCkg
Y29uc3Q7CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0OwotICAgIEpTVmFsdWVJ
bldyYXBwZWRPYmplY3QmIG9wZXJhdG9yPShjb25zdCBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0JiBv
dGhlcik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4gdm9pZCB2aXNpdChWaXNpdG9y
JikgY29uc3Q7CiAgICAgdm9pZCBjbGVhcigpOwogCisgICAgdm9pZCBzZXQoSlNDOjpWTSYsIGNv
bnN0IEpTQzo6SlNDZWxsKiBvd25lciwgSlNDOjpKU1ZhbHVlKTsKKyAgICB2b2lkIHNldFdlYWts
eShKU0M6OkpTVmFsdWUpOworCisgICAgLy8gUmVtb3ZlIHRoaXMgb25jZSBJREJSZXF1ZXN0IHNl
bWFudGljIGJ1ZyBpcyBmaXhlZC4KKyAgICB2b2lkIHNldFdpdGhvdXRCYXJyaWVyKEpTVmFsdWVJ
bldyYXBwZWRPYmplY3QmKTsKKwogcHJpdmF0ZToKLSAgICAvLyBVc2UgYSB3ZWFrIHBvaW50ZXIg
aGVyZSBzbyB0aGF0IGlmIHRoaXMgY29kZSBvciBjbGllbnQgY29kZSBoYXMgYSB2aXNpdGluZyBt
aXN0YWtlLAotICAgIC8vIHdlIGdldCBudWxsIHJhdGhlciB0aGFuIGEgZGFuZ2xpbmcgcG9pbnRl
ciB0byBhIGRlbGV0ZWQgb2JqZWN0LgotICAgIHVzaW5nIFdlYWsgPSBKU0M6OldlYWs8SlNDOjpK
U0NlbGw+OwotICAgIC8vIEZJWE1FOiBXb3VsZCBzdG9yaW5nIGEgc2VwYXJhdGUgSlNWYWx1ZSBh
bG9uZ3NpZGUgYSBXZWFrIGJlIGJldHRlciB0aGFuIHVzaW5nIGEgVmFyaWFudD8KLSAgICB1c2lu
ZyBWYWx1ZSA9IHN0ZDo6dmFyaWFudDxKU0M6OkpTVmFsdWUsIFdlYWs+OwotICAgIHN0YXRpYyBW
YWx1ZSBtYWtlVmFsdWUoSlNDOjpKU1ZhbHVlKTsKLSAgICBWYWx1ZSBtX3ZhbHVlOworICAgIC8v
IEtlZXAgaW4gbWluZCB0aGF0IGFsbCBvZiB0aGVzZSBmaWVsZHMgYXJlIGFjY2Vzc2VkIGNvbmN1
cnJlbnRseSB3aXRob3V0IGxvY2sgZnJvbSBjb25jdXJyZW50IEdDIHRocmVhZC4KKyAgICBKU0M6
OkpTVmFsdWUgbV9ub25DZWxsIHsgfTsKKyAgICBKU0M6OldlYWs8SlNDOjpKU0NlbGw+IG1fY2Vs
bCB7IH07CiB9OwogCiBKU0M6OkpTVmFsdWUgY2FjaGVkUHJvcGVydHlWYWx1ZShKU0M6OkpTR2xv
YmFsT2JqZWN0JiwgY29uc3QgSlNET01PYmplY3QmIG93bmVyLCBKU1ZhbHVlSW5XcmFwcGVkT2Jq
ZWN0JiBjYWNoZVNsb3QsIGNvbnN0IEZ1bmN0aW9uPEpTQzo6SlNWYWx1ZSgpPiYpOwogCi1pbmxp
bmUgYXV0byBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0OjptYWtlVmFsdWUoSlNDOjpKU1ZhbHVlIHZh
bHVlKSAtPiBWYWx1ZQotewotICAgIGlmICghdmFsdWUuaXNDZWxsKCkpCi0gICAgICAgIHJldHVy
biB2YWx1ZTsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgcXVpdGUgcmlnaHQuIEl0IGlzIHBv
c3NpYmxlIHRoYXQgdGhpcyB2YWx1ZSBpcyBiZWluZwotICAgIC8vIHN0b3JlZCBpbiBhIHdyYXBw
ZWQgb2JqZWN0IHRoYXQgZG9lcyBub3QgeWV0IGhhdmUgYSB3cmFwcGVyLiBJZiBnYXJiYWdlCi0g
ICAgLy8gY29sbGVjdGlvbiBvY2N1cnMgYmVmb3JlIHRoZSB3cmFwcGVkIG9iamVjdCBnZXRzIGEg
d3JhcHBlciwgaXQncyBwb3NzaWJsZQotICAgIC8vIHRoZSB2YWx1ZSBvYmplY3QgY291bGQgYmUg
Y29sbGVjdGVkLCBhbmQgdGhpcyB3aWxsIGJlY29tZSBudWxsLiBBIGZ1dHVyZQotICAgIC8vIHZl
cnNpb24gb2YgdGhpcyBjbGFzcyBzaG91bGQgcHJldmVudCB0aGUgdmFsdWUgZnJvbSBiZWluZyBj
b2xsZWN0ZWQgaW4KLSAgICAvLyB0aGF0IGNhc2UuIFVuY2xlYXIgaWYgdGhpcyBjYW4gYWN0dWFs
bHkgaGFwcGVuIGluIHByYWN0aWNlLgotICAgIHJldHVybiBXZWFrIHsgdmFsdWUuYXNDZWxsKCkg
fTsKLX0KLQogaW5saW5lIEpTVmFsdWVJbldyYXBwZWRPYmplY3Q6OkpTVmFsdWVJbldyYXBwZWRP
YmplY3QoSlNDOjpKU1ZhbHVlIHZhbHVlKQotICAgIDogbV92YWx1ZShtYWtlVmFsdWUoSlNDOjpK
U1ZhbHVlKHZhbHVlKSkpCi17Ci19Ci0KLWlubGluZSBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0OjpK
U1ZhbHVlSW5XcmFwcGVkT2JqZWN0KGNvbnN0IEpTVmFsdWVJbldyYXBwZWRPYmplY3QmIHZhbHVl
KQotICAgIDogbV92YWx1ZShtYWtlVmFsdWUodmFsdWUpKQogeworICAgIHNldFdlYWtseSh2YWx1
ZSk7CiB9CiAKIGlubGluZSBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0OjpvcGVyYXRvciBKU0M6OkpT
VmFsdWUoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fdmFsdWUsIFtdIChK
U0M6OkpTVmFsdWUgdmFsdWUpIHsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0sIFtdIChj
b25zdCBXZWFrJiB2YWx1ZSkgLT4gSlNDOjpKU1ZhbHVlIHsKLSAgICAgICAgcmV0dXJuIHZhbHVl
LmdldCgpOwotICAgIH0pOworICAgIGlmIChtX25vbkNlbGwpCisgICAgICAgIHJldHVybiBtX25v
bkNlbGw7CisgICAgcmV0dXJuIG1fY2VsbC5nZXQoKTsKIH0KIAogaW5saW5lIEpTVmFsdWVJbldy
YXBwZWRPYmplY3Q6Om9wZXJhdG9yIGJvb2woKSBjb25zdApAQCAtOTIsMzAgKzc5LDQ2IEBAIGlu
bGluZSBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0OjpvcGVyYXRvciBib29sKCkgY29uc3QKICAgICBy
ZXR1cm4gSlNDOjpKU1ZhbHVlIHsgKnRoaXMgfS5vcGVyYXRvciBib29sKCk7CiB9CiAKLWlubGlu
ZSBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0JiBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0OjpvcGVyYXRv
cj0oY29uc3QgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCYgb3RoZXIpCi17Ci0gICAgbV92YWx1ZSA9
IG1ha2VWYWx1ZShKU0M6OkpTVmFsdWUob3RoZXIpKTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0K
IHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CiBpbmxpbmUgdm9pZCBKU1ZhbHVlSW5XcmFwcGVk
T2JqZWN0Ojp2aXNpdChWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAogewotICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKG1fdmFsdWUsIFtdIChKU0M6OkpTVmFsdWUpIHsKLSAgICAgICAgLy8gTm90aGlu
ZyB0byB2aXNpdC4KLSAgICB9LCBbJnZpc2l0b3JdIChjb25zdCBXZWFrJiB2YWx1ZSkgewotICAg
ICAgICB2aXNpdG9yLmFwcGVuZCh2YWx1ZSk7Ci0gICAgfSk7CisgICAgdmlzaXRvci5hcHBlbmQo
bV9jZWxsKTsKIH0KIAogdGVtcGxhdGUgdm9pZCBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0Ojp2aXNp
dChKU0M6OkFic3RyYWN0U2xvdFZpc2l0b3ImKSBjb25zdDsKIHRlbXBsYXRlIHZvaWQgSlNWYWx1
ZUluV3JhcHBlZE9iamVjdDo6dmlzaXQoSlNDOjpTbG90VmlzaXRvciYpIGNvbnN0OwogCitpbmxp
bmUgdm9pZCBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0OjpzZXRXZWFrbHkoSlNDOjpKU1ZhbHVlIHZh
bHVlKQoreworICAgIGlmICghdmFsdWUuaXNDZWxsKCkpIHsKKyAgICAgICAgbV9ub25DZWxsID0g
dmFsdWU7CisgICAgICAgIG1fY2VsbC5jbGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIG1fbm9uQ2VsbCA9IHsgfTsKKyAgICBKU0M6OldlYWsgd2VhayB7IHZhbHVlLmFzQ2VsbCgp
IH07CisgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKKyAgICBtX2NlbGwgPSBXVEZNb3ZlKHdl
YWspOworfQorCitpbmxpbmUgdm9pZCBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0OjpzZXQoSlNDOjpW
TSYgdm0sIGNvbnN0IEpTQzo6SlNDZWxsKiBvd25lciwgSlNDOjpKU1ZhbHVlIHZhbHVlKQorewor
ICAgIHNldFdlYWtseSh2YWx1ZSk7CisgICAgdm0ud3JpdGVCYXJyaWVyKG93bmVyLCB2YWx1ZSk7
Cit9CisKIGlubGluZSB2b2lkIEpTVmFsdWVJbldyYXBwZWRPYmplY3Q6OmNsZWFyKCkKIHsKLSAg
ICBXVEY6OnN3aXRjaE9uKG1fdmFsdWUsIFtdIChXZWFrJiB2YWx1ZSkgewotICAgICAgICB2YWx1
ZS5jbGVhcigpOwotICAgIH0sIFtdIChhdXRvJikgeyB9KTsKKyAgICBtX25vbkNlbGwgPSB7IH07
CisgICAgbV9jZWxsLmNsZWFyKCk7Cit9CisKK2lubGluZSB2b2lkIEpTVmFsdWVJbldyYXBwZWRP
YmplY3Q6OnNldFdpdGhvdXRCYXJyaWVyKEpTVmFsdWVJbldyYXBwZWRPYmplY3QmIG90aGVyKQor
eworICAgIEpTQzo6V2VhayB3ZWFrIHsgb3RoZXIubV9jZWxsLmdldCgpIH07CisgICAgV1RGOjpz
dG9yZVN0b3JlRmVuY2UoKTsgLy8gRW5zdXJlIFdlYWsgaXMgZnVsbHkgaW5pdGlhbGl6ZWQgZm9y
IGNvbmN1cnJlbnQgYWNjZXNzLgorICAgIG1fbm9uQ2VsbCA9IG90aGVyLm1fbm9uQ2VsbDsKKyAg
ICBtX2NlbGwgPSBXVEZNb3ZlKHdlYWspOwogfQogCiBpbmxpbmUgSlNDOjpKU1ZhbHVlIGNhY2hl
ZFByb3BlcnR5VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
Y29uc3QgSlNET01PYmplY3QmIG93bmVyLCBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0JiBjYWNoZWRW
YWx1ZSwgY29uc3QgRnVuY3Rpb248SlNDOjpKU1ZhbHVlKCk+JiBmdW5jdGlvbikKQEAgLTEyMyw4
ICsxMjYsNyBAQCBpbmxpbmUgSlNDOjpKU1ZhbHVlIGNhY2hlZFByb3BlcnR5VmFsdWUoSlNDOjpK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdAogICAgIGlmIChjYWNoZWRWYWx1ZSAm
JiBpc1dvcmxkQ29tcGF0aWJsZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWNoZWRWYWx1ZSkpCiAg
ICAgICAgIHJldHVybiBjYWNoZWRWYWx1ZTsKICAgICBhdXRvIHZhbHVlID0gZnVuY3Rpb24oKTsK
LSAgICBjYWNoZWRWYWx1ZSA9IGNsb25lQWNyb3NzV29ybGRzKGxleGljYWxHbG9iYWxPYmplY3Qs
IG93bmVyLCB2YWx1ZSk7Ci0gICAgbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLndyaXRlQmFycmll
cigmb3duZXIsIHZhbHVlKTsKKyAgICBjYWNoZWRWYWx1ZS5zZXQobGV4aWNhbEdsb2JhbE9iamVj
dC52bSgpLCAmb3duZXIsIGNsb25lQWNyb3NzV29ybGRzKGxleGljYWxHbG9iYWxPYmplY3QsIG93
bmVyLCB2YWx1ZSkpOwogICAgIEFTU0VSVChpc1dvcmxkQ29tcGF0aWJsZShsZXhpY2FsR2xvYmFs
T2JqZWN0LCBjYWNoZWRWYWx1ZSkpOwogICAgIHJldHVybiBjYWNoZWRWYWx1ZTsKIH0K
</data>
<flag name="review"
          id="477849"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451209</attachid>
            <date>2022-02-07 21:49:28 -0800</date>
            <delta_ts>2022-02-08 09:50:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236277-20220207214927.patch</filename>
            <type>text/plain</type>
            <size>17354</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MzU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmM1MTI4YjI1MzMwYzVk
YzdhYTA3NDE5YmU4MWYwMTA5MzQ4ZjYxZi4uNjYwODdlYjA3ODFhMDU0OTU2YTQ3NWZmZDBiMWM1
NGNmMTBkN2Y5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIyLTAyLTA3ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkNvcmVdIEpTVmFs
dWVJbldyYXBwZWRPYmplY3QgaXMgbm90IGNvcnJlY3QgZm9yIGNvbmN1cnJlbnQgR0MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjI3NworICAgICAg
ICByZGFyOi8vODgzNjY4NDkKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKwor
ICAgICAgICBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0IGlzIGJyb2tlbiBmb3IgY29uY3VycmVudCBH
QydzIG1hcmtpbmcuIEl0IGlzIHVzaW5nIHN0ZDo6dmFyaWFudDw+IHRvIHN0b3JlIFdlYWsgLyBK
U1ZhbHVlLAorICAgICAgICB3aGljaCBpcyBub3Qgc2FmZSBpZiBjb25jdXJyZW50IEdDIHJlYWRz
IGl0IHdoaWxlIGNoYW5naW5nIHRoYXQgc3RkOjp2YXJpYW50LiBUaGlzIHBhdGNoIGZpeGVzIHNl
dmVyYWwgcHJvYmxlbXMKKyAgICAgICAgaW4gSlNWYWx1ZUluV3JhcHBlZE9iamVjdC4KKworICAg
ICAgICAxLiBXZSBtdXN0IG5vdCB1c2Ugc3RkOjp2YXJpYW50IGhlcmUgc2luY2UgY29uY3VycmVu
dCBhY2Nlc3MgY2FuIGhhcHBlbi4gV2UgaGF2ZSBib3RoIEpTVmFsdWUgYW5kIFdlYWssIGFuZCBj
aGFuZ2UKKyAgICAgICAgICAgV2VhayBhZnRlciBmdWxseSBpbml0aWFsaXplIFdlYWtJbXBsJ3Mg
Y29udGVudCBpbiBXZWFrLiBUbyBlbnN1cmUgdGhhdCwgd2UgZW1pdCBzdG9yZVN0b3JlQmFycmll
ciBiZWZvcmUgc2V0dGluZworICAgICAgICAgICBXZWFrIHRvIHRoZSBKU1ZhbHVlSW5XcmFwcGVk
T2JqZWN0J3MgZmllbGQuCisgICAgICAgIDIuIEFzc2lnbm1lbnQgb3BlcmF0b3IgJiBjb3B5IGNv
bnN0cnVjdG9yIGFyZSBiYXNpY2FsbHkgd3JvbmcgZm9yIHRoaXMgY2xhc3MgYXMgd2UgbmVlZCBh
IHdyaXRlLWJhcnJpZXIgdG8gc2V0IGEgdmFsdWUKKyAgICAgICAgICAgdG8gdGhlIGZpZWxkLiBX
ZSByZW1vdmUgdGhlbSBhbmQgbWFrZSBpdCBleHBsaWNpdCB0aGF0IHdlIGRvIG5vdCBoYXZlIHdy
aXRlLWJhcnJpZXIsIHdoaWNoIHJldmVhbHMgdGhhdCBJREJSZXF1ZXN0CisgICAgICAgICAgIGhh
cyBhIHNlbWFudGljIGJ1Zy4KKyAgICAgICAgMy4gV2UgYWxzbyBhZGQgY2xlYXIoKSBpbnN0ZWFk
IG9mIGFzc2lnbmluZyBlbXB0eSBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LiBBbmQgd2UgZW5zdXJl
IHRoYXQgdGhpcyBuZXcgY2xlYXIoKSB3b3JrcworICAgICAgICAgICB3ZWxsIHdpdGggY29uY3Vy
cmVudCBHQyB0aHJlYWRzOiB3ZSBjbGVhciB0aGUgdW5kZXJseWluZyBXZWFrSW1wbCogcG9pbnRl
ciB0byBudWxscHRyLiBCdXQgc2luY2UgV2Vha0ltcGwqIGlzIGtlcHQKKyAgICAgICAgICAgYWxp
dmUgdW50aWwgR0MgY2xlYXJzIHdlYWstcmVsYXRlZCB0aGluZ3MgaW4gaXRzIGVuZCBwaGFzZSwg
Y29uY3VycmVudCBHQyB0aHJlYWQgY2FuIGFjY2VzcyB0aGUgb2xkIFdlYWtJbXBsKi4KKworICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDdXJzb3I6OnNldEdldFJlc3VsdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRSZXN1bHQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6c2V0UmVzdWx0VG9TdHJ1Y3R1cmVkQ2xv
bmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6c2V0UmVzdWx0VG9VbmRlZmluZWQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6d2lsbEl0ZXJhdGVDdXJzb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcik6CisgICAg
ICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50TWV0aG9kQ2hhbmdlRXZlbnQuY3Bw
OgorICAgICAgICAqIE1vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlc3BvbnNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXNwb25zZTo6c2V0RGV0YWlsc0Z1bmN0aW9uKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvQnVmZmVyOjpnZXRDaGFubmVsRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0J1ZmZlcjo6dmlzaXRDaGFubmVsV3JhcHBlcnMpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTVmFsdWVJbldyYXBwZWRPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVmFsdWVJbldy
YXBwZWRPYmplY3Q6OkpTVmFsdWVJbldyYXBwZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
SlNWYWx1ZUluV3JhcHBlZE9iamVjdDo6b3BlcmF0b3IgSlNDOjpKU1ZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVmFsdWVJbldyYXBwZWRPYmplY3Q6OnZpc2l0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVmFsdWVJbldyYXBwZWRPYmplY3Q6OnNldFdlYWtseSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0OjpzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNWYWx1ZUluV3JhcHBlZE9iamVjdDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6
SlNWYWx1ZUluV3JhcHBlZE9iamVjdDo6c2V0V2l0aG91dEJhcnJpZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Y2FjaGVkUHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1ZhbHVlSW5X
cmFwcGVkT2JqZWN0OjptYWtlVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNW
YWx1ZUluV3JhcHBlZE9iamVjdDo6b3BlcmF0b3I9KTogRGVsZXRlZC4KKwogMjAyMi0wMi0wNyAg
Q29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcmV2ZXJ0aW5nIHIyODkyMjcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCAxYmRkMTBhOTk2MzMyYTg5NjFlZDU0MzMzZWMxZDZk
NThlMmJhNjZmLi5lNDM4MmIzZDM0YTI5NDc1ODBkN2Q3OTBjYTQ0NWZlMDk1NmQyNTQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKQEAgLTMz
Niw5ICszMzYsNyBAQCBib29sIElEQkN1cnNvcjo6c2V0R2V0UmVzdWx0KElEQlJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IElEQkdldFJlc3VsdCYgZ2V0UmVzdWx0LAogICAgIFZNJiB2bSA9IGNvbnRl
eHQtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogCi0gICAgbV9rZXlXcmFwcGVy
ID0geyB9OwotICAgIG1fcHJpbWFyeUtleVdyYXBwZXIgPSB7IH07Ci0gICAgbV92YWx1ZVdyYXBw
ZXIgPSB7IH07CisgICAgY2xlYXJXcmFwcGVycygpOwogCiAgICAgaWYgKCFnZXRSZXN1bHQuaXNE
ZWZpbmVkKCkpIHsKICAgICAgICAgbV9rZXlEYXRhID0geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCAxNmYzYjY5ZmFiMTVjODhj
YzJlYzc1ODNjZTQyMzczNTMyZTU0Y2Y2Li5jYmQ3NzFlZDJhM2JjZjhkYTMxODU2ZTE2N2RiODlh
MzRkMTZkZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJS
ZXF1ZXN0LmNwcApAQCAtMzY4LDcgKzM2OCw3IEBAIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0
KGNvbnN0IElEQktleURhdGEmIGtleURhdGEpCiAgICAgVk0mIHZtID0gY29udGV4dC0+dm0oKTsK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgbV9yZXN1bHQgPSBrZXlEYXRhOwotICAg
IG1fcmVzdWx0V3JhcHBlciA9IHsgfTsKKyAgICBtX3Jlc3VsdFdyYXBwZXIuY2xlYXIoKTsKIH0K
IAogdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHQoY29uc3QgVmVjdG9yPElEQktleURhdGE+JiBr
ZXlEYXRhcykKQEAgLTM4Miw3ICszODIsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdChj
b25zdCBWZWN0b3I8SURCS2V5RGF0YT4mIGtleURhdGFzKQogICAgIFZNJiB2bSA9IGNvbnRleHQt
PnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIG1fcmVzdWx0ID0ga2V5RGF0
YXM7Ci0gICAgbV9yZXN1bHRXcmFwcGVyID0geyB9OworICAgIG1fcmVzdWx0V3JhcHBlci5jbGVh
cigpOwogfQogCiB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdChjb25zdCBJREJHZXRBbGxSZXN1
bHQmIHJlc3VsdCkKQEAgLTM5Niw3ICszOTYsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3Vs
dChjb25zdCBJREJHZXRBbGxSZXN1bHQmIHJlc3VsdCkKICAgICBWTSYgdm0gPSBjb250ZXh0LT52
bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBtX3Jlc3VsdCA9IHJlc3VsdDsK
LSAgICBtX3Jlc3VsdFdyYXBwZXIgPSB7IH07CisgICAgbV9yZXN1bHRXcmFwcGVyLmNsZWFyKCk7
CiB9CiAKIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0KHVpbnQ2NF90IG51bWJlcikKQEAgLTQx
MCw3ICs0MTAsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdCh1aW50NjRfdCBudW1iZXIp
CiAgICAgVk0mIHZtID0gY29udGV4dC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7
CiAgICAgbV9yZXN1bHQgPSBudW1iZXI7Ci0gICAgbV9yZXN1bHRXcmFwcGVyID0geyB9OworICAg
IG1fcmVzdWx0V3JhcHBlci5jbGVhcigpOwogfQogCiB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3Vs
dFRvU3RydWN0dXJlZENsb25lKGNvbnN0IElEQkdldFJlc3VsdCYgcmVzdWx0KQpAQCAtNDI2LDcg
KzQyNiw3IEBAIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0VG9TdHJ1Y3R1cmVkQ2xvbmUoY29u
c3QgSURCR2V0UmVzdWx0JiByZXN1bHQpCiAgICAgVk0mIHZtID0gY29udGV4dC0+dm0oKTsKICAg
ICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgbV9yZXN1bHQgPSByZXN1bHQ7Ci0gICAgbV9y
ZXN1bHRXcmFwcGVyID0geyB9OworICAgIG1fcmVzdWx0V3JhcHBlci5jbGVhcigpOwogfQogCiB2
b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdFRvVW5kZWZpbmVkKCkKQEAgLTQ0MCw3ICs0NDAsNyBA
QCB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdFRvVW5kZWZpbmVkKCkKICAgICBWTSYgdm0gPSBj
b250ZXh0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBtX3Jlc3VsdCA9
IE51bGxSZXN1bHRUeXBlOjpVbmRlZmluZWQ7Ci0gICAgbV9yZXN1bHRXcmFwcGVyID0geyB9Owor
ICAgIG1fcmVzdWx0V3JhcHBlci5jbGVhcigpOwogfQogCiBJREJDdXJzb3IqIElEQlJlcXVlc3Q6
OnJlc3VsdEN1cnNvcigpCkBAIC00NzMsOSArNDczLDE0IEBAIHZvaWQgSURCUmVxdWVzdDo6d2ls
bEl0ZXJhdGVDdXJzb3IoSURCQ3Vyc29yJiBjdXJzb3IpCiAgICAgVk0mIHZtID0gY29udGV4dC0+
dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAKKyAgICAvLyBGSVhNRTogVGhpcyBj
b2RlIGlzIHdyb25nOiBsZXQncyBjb25zaWRlciB0aGF0IHRoZXNlIGZpZWxkcycgYWNjZXNzIGFy
ZSByZW9yZGVyZWQgaW4gdGhlIGNvbmN1cnJlbnQgR0MgdGhyZWFkLgorICAgIC8vIEFuZCB3ZSBq
dXN0IHNjYW5uZWQgY2xlYXJlZCBtX3Jlc3VsdFdyYXBwZXIgYW5kIHRoZW4sIHdlIG1pc3NlZCBz
Y2FubmluZyBtX2N1cnNvcldyYXBwZXIgd2l0aCBhIG5ldyB2YWx1ZS4KKyAgICAvLyBUaGVuIHdl
IGNvdWxkIG1ha2UgYm90aCBjb2xsZWN0ZWQuIFdoZW5ldmVyIGNoYW5naW5nIEpTVmFsdWVJbldy
YXBwZWRPYmplY3QgZmllbGRzLCB3ZSBzaG91bGQgZW1pdCBhIHdyaXRlIGJhcnJpZXIKKyAgICAv
LyBpZiB3ZSB3b3VsZCBsaWtlIHRvIGtlZXAgdGhlbSBhbGl2ZS4KKyAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2Mjc4CiAgICAgaWYgKG1fcmVzdWx0V3Jh
cHBlcikKLSAgICAgICAgbV9jdXJzb3JXcmFwcGVyID0gbV9yZXN1bHRXcmFwcGVyOwotICAgIG1f
cmVzdWx0V3JhcHBlciA9IHsgfTsKKyAgICAgICAgbV9jdXJzb3JXcmFwcGVyLnNldFdpdGhvdXRC
YXJyaWVyKG1fcmVzdWx0V3JhcHBlcik7CisgICAgbV9yZXN1bHRXcmFwcGVyLmNsZWFyKCk7CiAg
ICAgbV9yZWFkeVN0YXRlID0gUmVhZHlTdGF0ZTo6UGVuZGluZzsKICAgICBtX2RvbUVycm9yID0g
bnVsbHB0cjsKICAgICBtX2lkYkVycm9yID0gSURCRXJyb3IgeyB9OwpAQCAtNDk0LDExICs0OTks
MTYgQEAgdm9pZCBJREJSZXF1ZXN0OjpkaWRPcGVuT3JJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJl
c3VsdERhdGEmIHJlc3VsdERhdGEpCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogCiAgICAg
bV9yZXN1bHQgPSBOdWxsUmVzdWx0VHlwZTo6RW1wdHk7Ci0gICAgbV9yZXN1bHRXcmFwcGVyID0g
eyB9OworICAgIG1fcmVzdWx0V3JhcHBlci5jbGVhcigpOwogCisgICAgLy8gRklYTUU6IFRoaXMg
Y29kZSBpcyB3cm9uZzogbGV0J3MgY29uc2lkZXIgdGhhdCB0aGVzZSBmaWVsZHMnIGFjY2VzcyBh
cmUgcmVvcmRlcmVkIGluIHRoZSBjb25jdXJyZW50IEdDIHRocmVhZC4KKyAgICAvLyBBbmQgd2Ug
anVzdCBzY2FubmVkIGNsZWFyZWQgbV9yZXN1bHRXcmFwcGVyIGFuZCB0aGVuLCB3ZSBtaXNzZWQg
c2Nhbm5pbmcgbV9jdXJzb3JXcmFwcGVyIHdpdGggYSBuZXcgdmFsdWUuCisgICAgLy8gVGhlbiB3
ZSBjb3VsZCBtYWtlIGJvdGggY29sbGVjdGVkLiBXaGVuZXZlciBjaGFuZ2luZyBKU1ZhbHVlSW5X
cmFwcGVkT2JqZWN0IGZpZWxkcywgd2Ugc2hvdWxkIGVtaXQgYSB3cml0ZSBiYXJyaWVyCisgICAg
Ly8gaWYgd2Ugd291bGQgbGlrZSB0byBrZWVwIHRoZW0gYWxpdmUuCisgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjI3OAogICAgIGlmIChyZXN1bHREYXRh
LnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpJdGVyYXRlQ3Vyc29yU3VjY2VzcyB8fCByZXN1bHRE
YXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpPcGVuQ3Vyc29yU3VjY2VzcykgewogICAgICAg
ICBpZiAobV9wZW5kaW5nQ3Vyc29yLT5zZXRHZXRSZXN1bHQoKnRoaXMsIHJlc3VsdERhdGEuZ2V0
UmVzdWx0KCksIG1fY3VycmVudFRyYW5zYWN0aW9uT3BlcmF0aW9uSUQpICYmIG1fY3Vyc29yV3Jh
cHBlcikKLSAgICAgICAgICAgIG1fcmVzdWx0V3JhcHBlciA9IG1fY3Vyc29yV3JhcHBlcjsKKyAg
ICAgICAgICAgIG1fcmVzdWx0V3JhcHBlci5zZXRXaXRob3V0QmFycmllcihtX2N1cnNvcldyYXBw
ZXIpOwogICAgICAgICBpZiAocmVzdWx0RGF0YS5nZXRSZXN1bHQoKS5pc0RlZmluZWQoKSkKICAg
ICAgICAgICAgIG1fcmVzdWx0ID0gbV9wZW5kaW5nQ3Vyc29yOwogICAgIH0KQEAgLTU1MSw3ICs1
NjEsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdChSZWY8SURCRGF0YWJhc2U+JiYgZGF0
YWJhc2UpCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogCiAgICAgbV9yZXN1bHQgPSBSZWZQ
dHI8SURCRGF0YWJhc2U+IHsgV1RGTW92ZShkYXRhYmFzZSkgfTsKLSAgICBtX3Jlc3VsdFdyYXBw
ZXIgPSB7IH07CisgICAgbV9yZXN1bHRXcmFwcGVyLmNsZWFyKCk7CiB9CiAKIHZvaWQgSURCUmVx
dWVzdDo6Y2xlYXJXcmFwcGVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BheW1lbnRyZXF1ZXN0L1BheW1lbnRNZXRob2RDaGFuZ2VFdmVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRNZXRob2RDaGFuZ2VFdmVudC5jcHAK
aW5kZXggMmVjYzk1ZDA2MGQ0OGM5NDE5MGFmNmFiZWIzMjI0ZGZjNGQxZjQ5My4uMTA3MmJmZWI1
NGEyNmFkYWIzNWFlZTAyYTNkMTNiZGYwYTNjOTgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50TWV0aG9kQ2hhbmdlRXZlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudE1ldGhvZENo
YW5nZUV2ZW50LmNwcApAQCAtNDIsMTQgKzQyLDE0IEBAIEV2ZW50SW50ZXJmYWNlIFBheW1lbnRN
ZXRob2RDaGFuZ2VFdmVudDo6ZXZlbnRJbnRlcmZhY2UoKSBjb25zdAogUGF5bWVudE1ldGhvZENo
YW5nZUV2ZW50OjpQYXltZW50TWV0aG9kQ2hhbmdlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlw
ZSwgSW5pdCYmIGV2ZW50SW5pdCkKICAgICA6IFBheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQgeyB0
eXBlLCBldmVudEluaXQgfQogICAgICwgbV9tZXRob2ROYW1lIHsgV1RGTW92ZShldmVudEluaXQu
bWV0aG9kTmFtZSkgfQotICAgICwgbV9tZXRob2REZXRhaWxzIHsgSlNWYWx1ZUluV3JhcHBlZE9i
amVjdCB7IGV2ZW50SW5pdC5tZXRob2REZXRhaWxzLmdldCgpIH0gfQorICAgICwgbV9tZXRob2RE
ZXRhaWxzIHsgc3RkOjppbl9wbGFjZV90eXBlX3Q8SlNWYWx1ZUluV3JhcHBlZE9iamVjdD4oKSwg
ZXZlbnRJbml0Lm1ldGhvZERldGFpbHMuZ2V0KCkgfQogewogfQogCiBQYXltZW50TWV0aG9kQ2hh
bmdlRXZlbnQ6OlBheW1lbnRNZXRob2RDaGFuZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIG1ldGhvZE5hbWUsIE1ldGhvZERldGFpbHNGdW5jdGlvbiYmIG1ldGhv
ZERldGFpbHNGdW5jdGlvbikKICAgICA6IFBheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQgeyB0eXBl
IH0KICAgICAsIG1fbWV0aG9kTmFtZSB7IG1ldGhvZE5hbWUgfQotICAgICwgbV9tZXRob2REZXRh
aWxzIHsgV1RGTW92ZShtZXRob2REZXRhaWxzRnVuY3Rpb24pIH0KKyAgICAsIG1fbWV0aG9kRGV0
YWlscyB7IHN0ZDo6aW5fcGxhY2VfdHlwZV90PE1ldGhvZERldGFpbHNGdW5jdGlvbj4oKSwgV1RG
TW92ZShtZXRob2REZXRhaWxzRnVuY3Rpb24pIH0KIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVzcG9uc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVzcG9uc2UuY3BwCmlu
ZGV4IDQ5MWI3N2I4YmJhNGRjZGRhMWVhZDc5MzlmYmM0ODllMjFiZDIxZmEuLmIxMmJhNTY1MGUw
ZDFjY2E4ZWFlNWJkOWIzMjNhNjNkZWIyYjM2ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNwb25zZS5jcHAKQEAgLTY1
LDcgKzY1LDcgQEAgUGF5bWVudFJlc3BvbnNlOjp+UGF5bWVudFJlc3BvbnNlKCkKIHZvaWQgUGF5
bWVudFJlc3BvbnNlOjpzZXREZXRhaWxzRnVuY3Rpb24oRGV0YWlsc0Z1bmN0aW9uJiYgZGV0YWls
c0Z1bmN0aW9uKQogewogICAgIG1fZGV0YWlsc0Z1bmN0aW9uID0gV1RGTW92ZShkZXRhaWxzRnVu
Y3Rpb24pOwotICAgIG1fY2FjaGVkRGV0YWlscyA9IHsgfTsKKyAgICBtX2NhY2hlZERldGFpbHMu
Y2xlYXIoKTsKIH0KIAogdm9pZCBQYXltZW50UmVzcG9uc2U6OmNvbXBsZXRlKERvY3VtZW50JiBk
b2N1bWVudCwgc3RkOjpvcHRpb25hbDxQYXltZW50Q29tcGxldGU+JiYgcmVzdWx0LCBzdGQ6Om9w
dGlvbmFsPFBheW1lbnRDb21wbGV0ZURldGFpbHM+JiYgZGV0YWlscywgRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYgcHJvbWlzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlci5jcHAKaW5kZXggOWM3YmMyMDNmNjA5Y2RmZTdlYmJjMGI2MWRkYjZmYjFi
N2E2OGZkOC4uNWZjZmJkYzNhM2I1MzQwNDBhOTAzODcyZmZhYzcyNjFmYjc4MTczYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKQEAgLTE1
OSw3ICsxNTksNyBAQCBFeGNlcHRpb25PcjxKU0M6OkpTVmFsdWU+IEF1ZGlvQnVmZmVyOjpnZXRD
aGFubmVsRGF0YShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsTwogCiAgICAgaWYgKGdsb2JhbE9i
amVjdC53b3JsZElzTm9ybWFsKCkpIHsKICAgICAgICAgaWYgKCFtX2NoYW5uZWxXcmFwcGVyc1tj
aGFubmVsSW5kZXhdKQotICAgICAgICAgICAgbV9jaGFubmVsV3JhcHBlcnNbY2hhbm5lbEluZGV4
XSA9IHsgY29uc3RydWN0SlNBcnJheSgpIH07CisgICAgICAgICAgICBtX2NoYW5uZWxXcmFwcGVy
c1tjaGFubmVsSW5kZXhdLnNldFdlYWtseShjb25zdHJ1Y3RKU0FycmF5KCkpOwogICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8SlNDOjpKU1ZhbHVlPihtX2NoYW5uZWxXcmFwcGVyc1tjaGFubmVs
SW5kZXhdKTsKICAgICB9CiAgICAgcmV0dXJuIGNvbnN0cnVjdEpTQXJyYXkoKTsKQEAgLTE2OCw2
ICsxNjgsOCBAQCBFeGNlcHRpb25PcjxKU0M6OkpTVmFsdWU+IEF1ZGlvQnVmZmVyOjpnZXRDaGFu
bmVsRGF0YShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsTwogdGVtcGxhdGU8dHlwZW5hbWUgVmlz
aXRvcj4KIHZvaWQgQXVkaW9CdWZmZXI6OnZpc2l0Q2hhbm5lbFdyYXBwZXJzKFZpc2l0b3ImIHZp
c2l0b3IpCiB7CisgICAgLy8gRklYTUU6IEF1ZGlvQnVmZmVyOjpyZWxlYXNlTWVtb3J5IGNhbiBj
bGVhciB0aGlzIGJ1ZmZlciB3aGlsZSB2aXNpdGluZyBpdCBmcm9tIGNvbmN1cnJlbnQgR0MgdGhy
ZWFkLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYy
NzkKICAgICBmb3IgKGF1dG8mIGNoYW5uZWxXcmFwcGVyIDogbV9jaGFubmVsV3JhcHBlcnMpCiAg
ICAgICAgIGNoYW5uZWxXcmFwcGVyLnZpc2l0KHZpc2l0b3IpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oCmluZGV4IGI1MWRm
ZWE1NjFkNDcyZjRlNTBkNGUyZGI1NTM5MTQxMWVlOGVmNWQuLmU4YzEwZDBiMWI2YWI5ZjNhMjZm
ZjI2OWI2OGE5YzRjOTRhOTQ2YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVmFsdWVJbldyYXBwZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmgKQEAgLTM0LDU3ICszNCw0NiBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0IHsKKyAgICAvLyBJ
dCBtdXN0IG5vdCBiZSBjb3B5YWJsZS4gQ2hhbmdpbmcgdGhpcyB3aWxsIGJyZWFrIGNvbmN1cnJl
bnQgR0MuCisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNWYWx1ZUluV3JhcHBlZE9iamVjdCk7
CiBwdWJsaWM6CiAgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdChKU0M6OkpTVmFsdWUgPSB7IH0p
OwotICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QoY29uc3QgSlNWYWx1ZUluV3JhcHBlZE9iamVj
dCYpOworCisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGVtIG9uY2UgQXVkaW9CdWZmZXIncyBtX2No
YW5uZWxXcmFwcGVycyBidWcgaXMgZml4ZWQuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNjI3OQorICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QoSlNW
YWx1ZUluV3JhcHBlZE9iamVjdCYmKSA9IGRlZmF1bHQ7CisgICAgSlNWYWx1ZUluV3JhcHBlZE9i
amVjdCYgb3BlcmF0b3I9KEpTVmFsdWVJbldyYXBwZWRPYmplY3QmJikgPSBkZWZhdWx0OworCiAg
ICAgb3BlcmF0b3IgSlNDOjpKU1ZhbHVlKCkgY29uc3Q7CiAgICAgZXhwbGljaXQgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0OwotICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QmIG9wZXJhdG9yPShjb25z
dCBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0JiBvdGhlcik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VmlzaXRvcj4gdm9pZCB2aXNpdChWaXNpdG9yJikgY29uc3Q7CiAgICAgdm9pZCBjbGVhcigpOwog
CisgICAgdm9pZCBzZXQoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNDZWxsKiBvd25lciwgSlNDOjpK
U1ZhbHVlKTsKKyAgICB2b2lkIHNldFdlYWtseShKU0M6OkpTVmFsdWUpOworCisgICAgLy8gRklY
TUU6IFJlbW92ZSB0aGlzIG9uY2UgSURCUmVxdWVzdCBzZW1hbnRpYyBidWcgaXMgZml4ZWQuCisg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjI3OAorICAg
IHZvaWQgc2V0V2l0aG91dEJhcnJpZXIoSlNWYWx1ZUluV3JhcHBlZE9iamVjdCYpOworCiBwcml2
YXRlOgotICAgIC8vIFVzZSBhIHdlYWsgcG9pbnRlciBoZXJlIHNvIHRoYXQgaWYgdGhpcyBjb2Rl
IG9yIGNsaWVudCBjb2RlIGhhcyBhIHZpc2l0aW5nIG1pc3Rha2UsCi0gICAgLy8gd2UgZ2V0IG51
bGwgcmF0aGVyIHRoYW4gYSBkYW5nbGluZyBwb2ludGVyIHRvIGEgZGVsZXRlZCBvYmplY3QuCi0g
ICAgdXNpbmcgV2VhayA9IEpTQzo6V2VhazxKU0M6OkpTQ2VsbD47Ci0gICAgLy8gRklYTUU6IFdv
dWxkIHN0b3JpbmcgYSBzZXBhcmF0ZSBKU1ZhbHVlIGFsb25nc2lkZSBhIFdlYWsgYmUgYmV0dGVy
IHRoYW4gdXNpbmcgYSBWYXJpYW50PwotICAgIHVzaW5nIFZhbHVlID0gc3RkOjp2YXJpYW50PEpT
Qzo6SlNWYWx1ZSwgV2Vhaz47Ci0gICAgc3RhdGljIFZhbHVlIG1ha2VWYWx1ZShKU0M6OkpTVmFs
dWUpOwotICAgIFZhbHVlIG1fdmFsdWU7CisgICAgLy8gS2VlcCBpbiBtaW5kIHRoYXQgYWxsIG9m
IHRoZXNlIGZpZWxkcyBhcmUgYWNjZXNzZWQgY29uY3VycmVudGx5IHdpdGhvdXQgbG9jayBmcm9t
IGNvbmN1cnJlbnQgR0MgdGhyZWFkLgorICAgIEpTQzo6SlNWYWx1ZSBtX25vbkNlbGwgeyB9Owor
ICAgIEpTQzo6V2VhazxKU0M6OkpTQ2VsbD4gbV9jZWxsIHsgfTsKIH07CiAKIEpTQzo6SlNWYWx1
ZSBjYWNoZWRQcm9wZXJ0eVZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBKU0RPTU9i
amVjdCYgb3duZXIsIEpTVmFsdWVJbldyYXBwZWRPYmplY3QmIGNhY2hlU2xvdCwgY29uc3QgRnVu
Y3Rpb248SlNDOjpKU1ZhbHVlKCk+Jik7CiAKLWlubGluZSBhdXRvIEpTVmFsdWVJbldyYXBwZWRP
YmplY3Q6Om1ha2VWYWx1ZShKU0M6OkpTVmFsdWUgdmFsdWUpIC0+IFZhbHVlCi17Ci0gICAgaWYg
KCF2YWx1ZS5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIC8vIEZJWE1FOiBU
aGlzIGlzIG5vdCBxdWl0ZSByaWdodC4gSXQgaXMgcG9zc2libGUgdGhhdCB0aGlzIHZhbHVlIGlz
IGJlaW5nCi0gICAgLy8gc3RvcmVkIGluIGEgd3JhcHBlZCBvYmplY3QgdGhhdCBkb2VzIG5vdCB5
ZXQgaGF2ZSBhIHdyYXBwZXIuIElmIGdhcmJhZ2UKLSAgICAvLyBjb2xsZWN0aW9uIG9jY3VycyBi
ZWZvcmUgdGhlIHdyYXBwZWQgb2JqZWN0IGdldHMgYSB3cmFwcGVyLCBpdCdzIHBvc3NpYmxlCi0g
ICAgLy8gdGhlIHZhbHVlIG9iamVjdCBjb3VsZCBiZSBjb2xsZWN0ZWQsIGFuZCB0aGlzIHdpbGwg
YmVjb21lIG51bGwuIEEgZnV0dXJlCi0gICAgLy8gdmVyc2lvbiBvZiB0aGlzIGNsYXNzIHNob3Vs
ZCBwcmV2ZW50IHRoZSB2YWx1ZSBmcm9tIGJlaW5nIGNvbGxlY3RlZCBpbgotICAgIC8vIHRoYXQg
Y2FzZS4gVW5jbGVhciBpZiB0aGlzIGNhbiBhY3R1YWxseSBoYXBwZW4gaW4gcHJhY3RpY2UuCi0g
ICAgcmV0dXJuIFdlYWsgeyB2YWx1ZS5hc0NlbGwoKSB9OwotfQotCiBpbmxpbmUgSlNWYWx1ZUlu
V3JhcHBlZE9iamVjdDo6SlNWYWx1ZUluV3JhcHBlZE9iamVjdChKU0M6OkpTVmFsdWUgdmFsdWUp
Ci0gICAgOiBtX3ZhbHVlKG1ha2VWYWx1ZShKU0M6OkpTVmFsdWUodmFsdWUpKSkKLXsKLX0KLQot
aW5saW5lIEpTVmFsdWVJbldyYXBwZWRPYmplY3Q6OkpTVmFsdWVJbldyYXBwZWRPYmplY3QoY29u
c3QgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCYgdmFsdWUpCi0gICAgOiBtX3ZhbHVlKG1ha2VWYWx1
ZSh2YWx1ZSkpCiB7CisgICAgc2V0V2Vha2x5KHZhbHVlKTsKIH0KIAogaW5saW5lIEpTVmFsdWVJ
bldyYXBwZWRPYmplY3Q6Om9wZXJhdG9yIEpTQzo6SlNWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIFdURjo6c3dpdGNoT24obV92YWx1ZSwgW10gKEpTQzo6SlNWYWx1ZSB2YWx1ZSkgewotICAg
ICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfSwgW10gKGNvbnN0IFdlYWsmIHZhbHVlKSAtPiBKU0M6
OkpTVmFsdWUgewotICAgICAgICByZXR1cm4gdmFsdWUuZ2V0KCk7Ci0gICAgfSk7CisgICAgaWYg
KG1fbm9uQ2VsbCkKKyAgICAgICAgcmV0dXJuIG1fbm9uQ2VsbDsKKyAgICByZXR1cm4gbV9jZWxs
LmdldCgpOwogfQogCiBpbmxpbmUgSlNWYWx1ZUluV3JhcHBlZE9iamVjdDo6b3BlcmF0b3IgYm9v
bCgpIGNvbnN0CkBAIC05MiwzMCArODEsNDYgQEAgaW5saW5lIEpTVmFsdWVJbldyYXBwZWRPYmpl
Y3Q6Om9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgIHJldHVybiBKU0M6OkpTVmFsdWUgeyAqdGhp
cyB9Lm9wZXJhdG9yIGJvb2woKTsKIH0KIAotaW5saW5lIEpTVmFsdWVJbldyYXBwZWRPYmplY3Qm
IEpTVmFsdWVJbldyYXBwZWRPYmplY3Q6Om9wZXJhdG9yPShjb25zdCBKU1ZhbHVlSW5XcmFwcGVk
T2JqZWN0JiBvdGhlcikKLXsKLSAgICBtX3ZhbHVlID0gbWFrZVZhbHVlKEpTQzo6SlNWYWx1ZShv
dGhlcikpOwotICAgIHJldHVybiAqdGhpczsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRv
cj4KIGlubGluZSB2b2lkIEpTVmFsdWVJbldyYXBwZWRPYmplY3Q6OnZpc2l0KFZpc2l0b3ImIHZp
c2l0b3IpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV92YWx1ZSwgW10gKEpT
Qzo6SlNWYWx1ZSkgewotICAgICAgICAvLyBOb3RoaW5nIHRvIHZpc2l0LgotICAgIH0sIFsmdmlz
aXRvcl0gKGNvbnN0IFdlYWsmIHZhbHVlKSB7Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kKHZhbHVl
KTsKLSAgICB9KTsKKyAgICB2aXNpdG9yLmFwcGVuZChtX2NlbGwpOwogfQogCiB0ZW1wbGF0ZSB2
b2lkIEpTVmFsdWVJbldyYXBwZWRPYmplY3Q6OnZpc2l0KEpTQzo6QWJzdHJhY3RTbG90VmlzaXRv
ciYpIGNvbnN0OwogdGVtcGxhdGUgdm9pZCBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0Ojp2aXNpdChK
U0M6OlNsb3RWaXNpdG9yJikgY29uc3Q7CiAKK2lubGluZSB2b2lkIEpTVmFsdWVJbldyYXBwZWRP
YmplY3Q6OnNldFdlYWtseShKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKCF2YWx1ZS5p
c0NlbGwoKSkgeworICAgICAgICBtX25vbkNlbGwgPSB2YWx1ZTsKKyAgICAgICAgbV9jZWxsLmNs
ZWFyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9ub25DZWxsID0geyB9OworICAg
IEpTQzo6V2VhayB3ZWFrIHsgdmFsdWUuYXNDZWxsKCkgfTsKKyAgICBXVEY6OnN0b3JlU3RvcmVG
ZW5jZSgpOworICAgIG1fY2VsbCA9IFdURk1vdmUod2Vhayk7Cit9CisKK2lubGluZSB2b2lkIEpT
VmFsdWVJbldyYXBwZWRPYmplY3Q6OnNldChKU0M6OlZNJiB2bSwgY29uc3QgSlNDOjpKU0NlbGwq
IG93bmVyLCBKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgc2V0V2Vha2x5KHZhbHVlKTsKKyAg
ICB2bS53cml0ZUJhcnJpZXIob3duZXIsIHZhbHVlKTsKK30KKwogaW5saW5lIHZvaWQgSlNWYWx1
ZUluV3JhcHBlZE9iamVjdDo6Y2xlYXIoKQogewotICAgIFdURjo6c3dpdGNoT24obV92YWx1ZSwg
W10gKFdlYWsmIHZhbHVlKSB7Ci0gICAgICAgIHZhbHVlLmNsZWFyKCk7Ci0gICAgfSwgW10gKGF1
dG8mKSB7IH0pOworICAgIG1fbm9uQ2VsbCA9IHsgfTsKKyAgICBtX2NlbGwuY2xlYXIoKTsKK30K
KworaW5saW5lIHZvaWQgSlNWYWx1ZUluV3JhcHBlZE9iamVjdDo6c2V0V2l0aG91dEJhcnJpZXIo
SlNWYWx1ZUluV3JhcHBlZE9iamVjdCYgb3RoZXIpCit7CisgICAgSlNDOjpXZWFrIHdlYWsgeyBv
dGhlci5tX2NlbGwuZ2V0KCkgfTsKKyAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOyAvLyBFbnN1
cmUgV2VhayBpcyBmdWxseSBpbml0aWFsaXplZCBmb3IgY29uY3VycmVudCBhY2Nlc3MuCisgICAg
bV9ub25DZWxsID0gb3RoZXIubV9ub25DZWxsOworICAgIG1fY2VsbCA9IFdURk1vdmUod2Vhayk7
CiB9CiAKIGlubGluZSBKU0M6OkpTVmFsdWUgY2FjaGVkUHJvcGVydHlWYWx1ZShKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBKU0RPTU9iamVjdCYgb3duZXIs
IEpTVmFsdWVJbldyYXBwZWRPYmplY3QmIGNhY2hlZFZhbHVlLCBjb25zdCBGdW5jdGlvbjxKU0M6
OkpTVmFsdWUoKT4mIGZ1bmN0aW9uKQpAQCAtMTIzLDggKzEyOCw3IEBAIGlubGluZSBKU0M6OkpT
VmFsdWUgY2FjaGVkUHJvcGVydHlWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0CiAgICAgaWYgKGNhY2hlZFZhbHVlICYmIGlzV29ybGRDb21wYXRpYmxlKGxleGlj
YWxHbG9iYWxPYmplY3QsIGNhY2hlZFZhbHVlKSkKICAgICAgICAgcmV0dXJuIGNhY2hlZFZhbHVl
OwogICAgIGF1dG8gdmFsdWUgPSBmdW5jdGlvbigpOwotICAgIGNhY2hlZFZhbHVlID0gY2xvbmVB
Y3Jvc3NXb3JsZHMobGV4aWNhbEdsb2JhbE9iamVjdCwgb3duZXIsIHZhbHVlKTsKLSAgICBsZXhp
Y2FsR2xvYmFsT2JqZWN0LnZtKCkud3JpdGVCYXJyaWVyKCZvd25lciwgdmFsdWUpOworICAgIGNh
Y2hlZFZhbHVlLnNldChsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksICZvd25lciwgY2xvbmVBY3Jv
c3NXb3JsZHMobGV4aWNhbEdsb2JhbE9iamVjdCwgb3duZXIsIHZhbHVlKSk7CiAgICAgQVNTRVJU
KGlzV29ybGRDb21wYXRpYmxlKGxleGljYWxHbG9iYWxPYmplY3QsIGNhY2hlZFZhbHVlKSk7CiAg
ICAgcmV0dXJuIGNhY2hlZFZhbHVlOwogfQo=
</data>
<flag name="commit-queue"
          id="477868"
          type_id="3"
          status="-"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>