<?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>204570</bug_id>
          
          <creation_ts>2019-11-25 02:14:43 -0800</creation_ts>
          <short_desc>Simplify RealtimeOutgoingAudioSource and RealtimeOutgoingVideooSource observeSource/unobserveSource pattern</short_desc>
          <delta_ts>2019-12-02 09:26:38 -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>WebRTC</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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1593374</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-11-25 02:14:43 -0800</bug_when>
    <thetext>Simplify RealtimeOutgoingAudioSource and RealtimeOutgoingVideooSource observeSource/unobserveSource pattern.
Currently, this is handled when adding/removing sinks and also when stopping libwebrtc backends.
We hit RealtimeOutgoingVideoSource::~RealtimeOutgoingVideoSource() assertions as shown in tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593393</commentid>
    <comment_count>1</comment_count>
      <attachid>384289</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-11-25 04:33:51 -0800</bug_when>
    <thetext>Created attachment 384289
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593394</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-11-25 04:34:47 -0800</bug_when>
    <thetext>&lt;rdar://problem/57458345&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593431</commentid>
    <comment_count>3</comment_count>
      <attachid>384297</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-11-25 07:43:02 -0800</bug_when>
    <thetext>Created attachment 384297
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593432</commentid>
    <comment_count>4</comment_count>
      <attachid>384298</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-11-25 07:44:45 -0800</bug_when>
    <thetext>Created attachment 384298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594574</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-12-02 07:14:17 -0800</bug_when>
    <thetext>Ping review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594578</commentid>
    <comment_count>6</comment_count>
      <attachid>384298</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-02 07:33:27 -0800</bug_when>
    <thetext>Comment on attachment 384298
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        We made LibWebRTCRTCRtpSenderBackend ending the observing in its destructor.

Nit: s/ending the observing/stop observing/

&gt; Source/WebCore/platform/mediastream/RealtimeOutgoingAudioSource.cpp:49
&gt; +#ifndef NDEBUG

&quot;#if !ASSERT_DISABLED&quot; might be better here.

&gt; Source/WebCore/platform/mediastream/RealtimeOutgoingVideoSource.cpp:60
&gt; +#ifndef NDEBUG

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594592</commentid>
    <comment_count>7</comment_count>
      <attachid>384622</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-12-02 07:59:48 -0800</bug_when>
    <thetext>Created attachment 384622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594637</commentid>
    <comment_count>8</comment_count>
      <attachid>384622</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-02 09:26:37 -0800</bug_when>
    <thetext>Comment on attachment 384622
Patch

Clearing flags on attachment: 384622

Committed r252987: &lt;https://trac.webkit.org/changeset/252987&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594638</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-02 09:26:38 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384289</attachid>
            <date>2019-11-25 04:33:51 -0800</date>
            <delta_ts>2019-11-25 07:42:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204570-20191125133350.patch</filename>
            <type>text/plain</type>
            <size>20304</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyODQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBlODExYTQyOTRhYWUx
OGNlMTI4MjFjOTk0NzYyZDdhNDA4NTY1NS4uMWJlNzg2NDViYzMwYjE5ODJmOWQwNThlZDYzZjc2
MzQ2ZDQxYzUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE5LTExLTI1ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UgYW5kIFJlYWx0aW1lT3V0Z29pbmdWaWRlb29Tb3VyY2Ugb2Jz
ZXJ2ZVNvdXJjZS91bm9ic2VydmVTb3VyY2UgcGF0dGVybgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0NTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwgdGhlIG91dGdvaW5nIHNvdXJj
ZSB3YXMgb2JzZXJ2aW5nL3Vub2JzZXJ2aW5nIGl0cyB0cmFjayBpZiBzaW5rcyB3ZXJlIGFkZGVk
L3JlbW92ZWQuCisgICAgICAgIFdlIG1hZGUgTGliV2ViUlRDUlRDUnRwU2VuZGVyQmFja2VuZCBl
bmRpbmcgdGhlIG9ic2VydmluZyBpbiBpdHMgZGVzdHJ1Y3Rvci4KKyAgICAgICAgVGhpcyBtYWtl
cyB0aGluZ3MgY29tcGxleCBhbmQgd2UgYXJlIG5vdCBhbHdheXMgdW5vYnNlcnZpbmcgZmFzdCBl
bm91Z2ggZm9yIGFsbCBvdXRnb2luZyBzb3VyY2VzLgorCisgICAgICAgIFRvIG1ha2UgaXQgc2lt
cGxlciwgdGhlIG91dGdvaW5nIHNvdXJjZSBpcyBubyBsb25nZXIgaGFuZGxpbmcgdGhlIG9ic2Vy
dmluZy91bm9ic2VydmluZyBvZiBpdHMgdHJhY2suCisgICAgICAgIEluc3RlYWQsIGl0cyBMaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kIGlzIGhhbmRsaW5nIGl0IGRpcmVjdGx5LgorICAgICAgICBP
YnNlcnZpbmcgc3RhcnRzIHdoZW4gTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZCBnZXRzIHRoZSB0
cmFjayBhbmQgdW5vYnNlcnZpbmcgaGFwcGVucyBlaXRoZXIgb24gTGliV2ViUlRDUnRwU2VuZGVy
QmFja2VuZCBkZXN0cnVjdGlvbgorICAgICAgICBvciB3aGVuIHRoZSBMaWJXZWJSVENSdHBTZW5k
ZXJCYWNrZW5kIGlzIG5vIGxvbmdlciBpbnRlcmVzdGVkIGluIHRoZSB0cmFjay4KKyAgICAgICAg
VGhpcyBpcyBzbGlnaHQgbGVzcyBvcHRpbWFsIGFzIHdlIG1pZ2h0IG9ic2VydmUgdGhlIHRyYWNr
IGV2ZW4gaWYgdGhlIHNvdXJjZSBoYXMgbm8gc2luayBidXQgdGhpcyBzaG91bGQgbm90IGhhcHBl
biBvZnRlbiBpbiBwcmFjdGljZS4KKworICAgICAgICBSZW1vdmVkIHNvbWUgdW5uZWVkZWQgbWV0
aG9kcy4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzIG5vIGxvbmdlciBmYWls
aW5nIGEgZGVidWcgQVNTRVJUSU9OLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6On5MaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFNlbmRlckJh
Y2tlbmQ6OnN0YXJ0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFNlbmRl
ckJhY2tlbmQ6OnN0b3BTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwU2Vu
ZGVyQmFja2VuZDo6cmVwbGFjZVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQ6OmF1ZGlvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJU
Q1J0cFNlbmRlckJhY2tlbmQ6OnZpZGVvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQ6Omhhc1NvdXJjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpzZXRTb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6dGFrZVNvdXJjZSk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6On5S
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlOjpvYnNlcnZlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6QWRkU2luayk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OlJlbW92ZVNpbmspOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzdGFydCk6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6flJlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2U6Om9ic2VydmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlOjpzZXRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlOjpBZGRPclVwZGF0ZVNpbmspOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpSZW1vdmVTaW5rKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6c3RhcnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYTo6flJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hKTogRGVsZXRlZC4KKwogMjAx
OS0xMS0yNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRW5h
YmxlIGxlZ2FjeSBnZXRVc2VyTWVkaWEgYXMgYSBxdWlyawpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcAppbmRleCA2Yzk2MWU1ZmEzMmI3Njk5ZjFiYTY4
N2I0N2ZkZDJmMjI1MjkwMDEzLi4xYTQ0NmQ5ODlkMDRiMDE3NGYwNDZmNzEwYTY0NTg2NGQ1NjQy
ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNw
cApAQCAtMzcsMjQgKzM3LDM4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorTGliV2ViUlRD
UnRwU2VuZGVyQmFja2VuZDo6TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZChMaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQmIGJhY2tlbmQsIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0
cFNlbmRlckludGVyZmFjZT4mJiBydGNTZW5kZXIsIFNvdXJjZSYmIHNvdXJjZSkKKyAgICA6IG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kKG1ha2VXZWFrUHRyKCZiYWNrZW5kKSkKKyAgICAsIG1fcnRj
U2VuZGVyKFdURk1vdmUocnRjU2VuZGVyKSkKKyAgICAsIG1fc291cmNlKFdURk1vdmUoc291cmNl
KSkKK3sKKyAgICBzdGFydFNvdXJjZSgpOworfQorCiBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
Ojp+TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZCgpCiB7Ci0gICAgV1RGOjpzd2l0Y2hPbihtX3Nv
dXJjZSwgW10gKFJlZjxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U+JiBzb3VyY2UpIHsKLSAg
ICAgICAgc291cmNlLT5zdG9wKCk7Ci0gICAgfSwgW10gKFJlZjxSZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2U+JiBzb3VyY2UpIHsKLSAgICAgICAgc291cmNlLT5zdG9wKCk7Ci0gICAgfSwgW10g
KHN0ZDo6bnVsbHB0cl90JikgeworICAgIHN0b3BTb3VyY2UoKTsKK30KKwordm9pZCBMaWJXZWJS
VENSdHBTZW5kZXJCYWNrZW5kOjpzdGFydFNvdXJjZSgpCit7CisgICAgc3dpdGNoT24obV9zb3Vy
Y2UsIFtdKFJlZjxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U+JiBzb3VyY2UpIHsKKyAgICAg
ICAgc291cmNlLT5zdGFydCgpOworICAgIH0sIFtdKFJlZjxSZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2U+JiBzb3VyY2UpIHsKKyAgICAgICAgc291cmNlLT5zdGFydCgpOworICAgIH0sIFtdKHN0
ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+
Ci1zdGF0aWMgaW5saW5lIGJvb2wgdXBkYXRlVHJhY2tTb3VyY2UoU291cmNlJiBzb3VyY2UsIE1l
ZGlhU3RyZWFtVHJhY2sqIHRyYWNrKQordm9pZCBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpz
dG9wU291cmNlKCkKIHsKLSAgICBpZiAoIXRyYWNrKSB7Ci0gICAgICAgIHNvdXJjZS5zdG9wKCk7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gc291cmNlLnNldFNvdXJj
ZSh0cmFjay0+cHJpdmF0ZVRyYWNrKCkpOworICAgIHN3aXRjaE9uKG1fc291cmNlLCBbXShSZWY8
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiYgc291cmNlKSB7CisgICAgICAgIHNvdXJjZS0+
c3RvcCgpOworICAgIH0sIFtdKFJlZjxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U+JiBzb3Vy
Y2UpIHsKKyAgICAgICAgc291cmNlLT5zdG9wKCk7CisgICAgfSwgW10oc3RkOjpudWxscHRyX3Qm
KSB7CisgICAgfSk7CisgICAgbV9zb3VyY2UgPSBudWxscHRyOwogfQogCiB2b2lkIExpYldlYlJU
Q1J0cFNlbmRlckJhY2tlbmQ6OnJlcGxhY2VUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBSVENSdHBTZW5kZXImIHNlbmRlciwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYg
dHJhY2ssIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCkBAIC02NCwyOCArNzgs
MjIgQEAgdm9pZCBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpyZXBsYWNlVHJhY2soU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUlQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGF1dG8qIGN1cnJlbnRUcmFjayA9IHNlbmRlci50cmFjaygpOwotCi0gICAgQVNTRVJUKCF0
cmFjayB8fCAhY3VycmVudFRyYWNrIHx8IGN1cnJlbnRUcmFjay0+c291cmNlKCkudHlwZSgpID09
IHRyYWNrLT5zb3VyY2UoKS50eXBlKCkpOwotICAgIGlmIChjdXJyZW50VHJhY2spIHsKLSAgICBz
d2l0Y2ggKGN1cnJlbnRUcmFjay0+c291cmNlKCkudHlwZSgpKSB7Ci0gICAgY2FzZSBSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlOjpOb25lOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbzoKLSAg
ICAgICAgaWYgKCF1cGRhdGVUcmFja1NvdXJjZSgqYXVkaW9Tb3VyY2UoKSwgdHJhY2suZ2V0KCkp
KSB7Ci0gICAgICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Ip
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW86Ci0gICAgICAgIGlmICghdXBkYXRl
VHJhY2tTb3VyY2UoKnZpZGVvU291cmNlKCksIHRyYWNrLmdldCgpKSkgewotICAgICAgICAgICAg
cHJvbWlzZS5yZWplY3QoSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICB9CisgICAgaWYgKCF0cmFjaykK
KyAgICAgICAgc3RvcFNvdXJjZSgpOworICAgIGVsc2UgaWYgKGF1dG8qIGN1cnJlbnRUcmFjayA9
IHNlbmRlci50cmFjaygpKSB7CisgICAgICAgIHN3aXRjaE9uKG1fc291cmNlLCBbJl0oUmVmPFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZT4mIHNvdXJjZSkgeworICAgICAgICAgICAgQVNTRVJU
KHRyYWNrLT5zb3VyY2UoKS50eXBlKCkgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVk
aW8pOworICAgICAgICAgICAgc291cmNlLT5zdG9wKCk7CisgICAgICAgICAgICBzb3VyY2UtPnNl
dFNvdXJjZSh0cmFjay0+cHJpdmF0ZVRyYWNrKCkpOworICAgICAgICAgICAgc291cmNlLT5zdGFy
dCgpOworICAgICAgICB9LCBbJl0oUmVmPFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZT4mIHNv
dXJjZSkgeworICAgICAgICAgICAgQVNTRVJUKHRyYWNrLT5zb3VyY2UoKS50eXBlKCkgPT0gUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW8pOworICAgICAgICAgICAgc291cmNlLT5zdG9w
KCk7CisgICAgICAgICAgICBzb3VyY2UtPnNldFNvdXJjZSh0cmFjay0+cHJpdmF0ZVRyYWNrKCkp
OworICAgICAgICAgICAgc291cmNlLT5zdGFydCgpOworICAgICAgICB9LCBbXShzdGQ6Om51bGxw
dHJfdCYpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9KTsK
ICAgICB9CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgcG9zdFRhc2sgb25jZSB0aGlzIHdo
b2xlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGFzIHBhcnQgb2YgdGhlIFJUQ1BlZXJDb25uZWN0aW9u
IG9wZXJhdGlvbiBxdWV1ZS4KQEAgLTEwNyw3ICsxMTUsNiBAQCB2b2lkIExpYldlYlJUQ1J0cFNl
bmRlckJhY2tlbmQ6OnJlcGxhY2VUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBSVAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgbV9zb3VyY2Ug
PSBudWxscHRyOwogICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC0+c2V0U2VuZGVyU291
cmNlRnJvbVRyYWNrKCp0aGlzLCAqcHJvdGVjdGVkU2VuZGVyLT50cmFjaygpKTsKICAgICAgICAg
cHJvbWlzZS5yZXNvbHZlKCk7CiAgICAgfSk7CkBAIC0xNTEsNiArMTU4LDM3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxSVENEVE1GU2VuZGVyQmFja2VuZD4gTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6
Y3JlYXRlRFRNRkJhY2tlCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDRFRNRlNlbmRl
ckJhY2tlbmQ+KG1fcnRjU2VuZGVyLT5HZXREdG1mU2VuZGVyKCkpOwogfQogCitSZWFsdGltZU91
dGdvaW5nVmlkZW9Tb3VyY2UqIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OnZpZGVvU291cmNl
KCkKK3sKKyAgICByZXR1cm4gc3dpdGNoT24obV9zb3VyY2UsCisgICAgICAgIFtdKFJlZjxSZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2U+JiBzb3VyY2UpIHsgcmV0dXJuIHNvdXJjZS5wdHIoKTsg
fSwKKyAgICAgICAgW10oY29uc3QgYXV0byYpIC0+IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJj
ZSogeyByZXR1cm4gbnVsbHB0cjsgfQorICAgICk7Cit9CisKK2Jvb2wgTGliV2ViUlRDUnRwU2Vu
ZGVyQmFja2VuZDo6aGFzU291cmNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3dpdGNoT24obV9z
b3VyY2UsCisgICAgICAgIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgeyByZXR1cm4gZmFsc2U7
IH0sCisgICAgICAgIFtdKGNvbnN0IGF1dG8mKSB7IHJldHVybiB0cnVlOyB9CisgICAgKTsKK30K
Kwordm9pZCBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpzZXRTb3VyY2UoU291cmNlJiYgc291
cmNlKQoreworICAgIHN0b3BTb3VyY2UoKTsKKyAgICBtX3NvdXJjZSA9IFdURk1vdmUoc291cmNl
KTsKKyAgICBzdGFydFNvdXJjZSgpOworfQorCit2b2lkIExpYldlYlJUQ1J0cFNlbmRlckJhY2tl
bmQ6OnRha2VTb3VyY2UoTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZCYgYmFja2VuZCkKK3sKKyAg
ICBBU1NFUlQoYmFja2VuZC5oYXNTb3VyY2UoKSk7CisgICAgc3RvcFNvdXJjZSgpOworICAgIG1f
c291cmNlID0gV1RGTW92ZShiYWNrZW5kLm1fc291cmNlKTsKKyAgICBiYWNrZW5kLm1fc291cmNl
ID0gbnVsbHB0cjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQl9SVEMpICYmIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENSdHBTZW5kZXJCYWNrZW5kLmgKaW5kZXggNTNlMTZlMDhhNjc3ZGNjNjRhZWNlNTYzZmM1MTk5
ZjAyNTRjOWYyYy4uM2FjMzdiMzZjMjM1ZjMzODQ4ZDRmOTgxZjhkMGQzMjg4MDhmMDMyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaApAQCAtNTQsNjAg
KzU0LDE2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB1c2luZyBTb3VyY2UgPSBWYXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiwgUmVmPFJlYWx0
aW1lT3V0Z29pbmdWaWRlb1NvdXJjZT4+OwotICAgIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQo
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kJiBiYWNrZW5kLCBydGM6OnNjb3BlZF9yZWZw
dHI8d2VicnRjOjpSdHBTZW5kZXJJbnRlcmZhY2U+JiYgcnRjU2VuZGVyLCBTb3VyY2UmJiBzb3Vy
Y2UpCi0gICAgICAgIDogbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQobWFrZVdlYWtQdHIoJmJhY2tl
bmQpKQotICAgICAgICAsIG1fcnRjU2VuZGVyKFdURk1vdmUocnRjU2VuZGVyKSkKLSAgICAgICAg
LCBtX3NvdXJjZShXVEZNb3ZlKHNvdXJjZSkpCi0gICAgewotICAgIH0KKyAgICBMaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kKExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCYsIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFNlbmRlckludGVyZmFjZT4mJiwgU291cmNlJiYpOwogICAg
IH5MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kKCk7CiAKICAgICB2b2lkIHNldFJUQ1NlbmRlcihy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBTZW5kZXJJbnRlcmZhY2U+JiYgcnRjU2VuZGVy
KSB7IG1fcnRjU2VuZGVyID0gV1RGTW92ZShydGNTZW5kZXIpOyB9CiAgICAgd2VicnRjOjpSdHBT
ZW5kZXJJbnRlcmZhY2UqIHJ0Y1NlbmRlcigpIHsgcmV0dXJuIG1fcnRjU2VuZGVyLmdldCgpOyB9
CiAKLSAgICBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UqIGF1ZGlvU291cmNlKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc291cmNlLAotICAgICAgICAgICAgW10g
KFJlZjxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U+JiBzb3VyY2UpIHsgcmV0dXJuIHNvdXJj
ZS5wdHIoKTsgfSwKLSAgICAgICAgICAgIFtdIChjb25zdCBhdXRvJikgLT4gUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlKiB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgICAgICk7Ci0gICAgfQot
Ci0gICAgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlKiB2aWRlb1NvdXJjZSgpCi0gICAgewot
ICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3NvdXJjZSwKLSAgICAgICAgICAgIFtdIChS
ZWY8UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlPiYgc291cmNlKSB7IHJldHVybiBzb3VyY2Uu
cHRyKCk7IH0sCi0gICAgICAgICAgICBbXSAoY29uc3QgYXV0byYpIC0+IFJlYWx0aW1lT3V0Z29p
bmdWaWRlb1NvdXJjZSogeyByZXR1cm4gbnVsbHB0cjsgfQotICAgICAgICApOwotICAgIH0KLQot
ICAgIGJvb2wgaGFzU291cmNlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OnN3
aXRjaE9uKG1fc291cmNlLAotICAgICAgICAgICAgW10gKGNvbnN0IHN0ZDo6bnVsbHB0cl90Jikg
eyByZXR1cm4gZmFsc2U7IH0sCi0gICAgICAgICAgICBbXSAoY29uc3QgYXV0byYpIHsgcmV0dXJu
IHRydWU7IH0KLSAgICAgICAgKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNsZWFyU291cmNlKCkKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChoYXNTb3VyY2UoKSk7Ci0gICAgICAgIG1fc291cmNlID0gbnVs
bHB0cjsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFNvdXJjZShTb3VyY2UmJiBzb3VyY2UpCi0gICAg
ewotICAgICAgICBBU1NFUlQoIWhhc1NvdXJjZSgpKTsKLSAgICAgICAgbV9zb3VyY2UgPSBXVEZN
b3ZlKHNvdXJjZSk7Ci0gICAgICAgIEFTU0VSVChoYXNTb3VyY2UoKSk7Ci0gICAgfQotCi0gICAg
dm9pZCB0YWtlU291cmNlKExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQmIGJhY2tlbmQpCi0gICAg
ewotICAgICAgICBBU1NFUlQoYmFja2VuZC5oYXNTb3VyY2UoKSk7Ci0gICAgICAgIHNldFNvdXJj
ZShXVEZNb3ZlKGJhY2tlbmQubV9zb3VyY2UpKTsKLSAgICAgICAgYmFja2VuZC5tX3NvdXJjZSA9
IG51bGxwdHI7Ci0gICAgfQorICAgIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZSogdmlkZW9T
b3VyY2UoKTsKKyAgICB2b2lkIGNsZWFyU291cmNlKCkgeyBzZXRTb3VyY2UobnVsbHB0cik7IH0K
KyAgICB2b2lkIHNldFNvdXJjZShTb3VyY2UmJik7CisgICAgdm9pZCB0YWtlU291cmNlKExpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHJlcGxhY2VUcmFj
ayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2s+JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSBmaW5hbDsKQEAgLTExNSw2
ICs3MSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UGFyYW1ldGVycyhjb25zdCBSVENSdHBT
ZW5kUGFyYW1ldGVycyYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSBmaW5hbDsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UlRDRFRNRlNlbmRlckJhY2tlbmQ+IGNyZWF0ZURUTUZCYWNrZW5kKCkg
ZmluYWw7CiAKKyAgICB2b2lkIHN0YXJ0U291cmNlKCk7CisgICAgdm9pZCBzdG9wU291cmNlKCk7
CisgICAgYm9vbCBoYXNTb3VyY2UoKSBjb25zdDsKKwogICAgIFdlYWtQdHI8TGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kPiBtX3BlZXJDb25uZWN0aW9uQmFja2VuZDsKICAgICBydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpSdHBTZW5kZXJJbnRlcmZhY2U+IG1fcnRjU2VuZGVyOwogICAg
IFNvdXJjZSBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCmlu
ZGV4IDY4Yjc1MGU3YWUyZDY1YmY1MzAyYTViZDU4ZDI3NjEwOWNkZDRlOTAuLjRjNmNlOWU2NGY3
YWJmNmU4NWEwZDM4MzA3NmI3MjAzN2RkY2FlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlLmNwcApAQCAtNDYsMTIgKzQ2LDE2IEBAIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJp
CiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6On5SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2UoKQogewogICAgIEFTU0VSVCghbV9hdWRpb1NvdXJjZS0+aGFzT2JzZXJ2ZXIoKnRoaXMpKTsK
KyNpZm5kZWYgTkRFQlVHCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3NpbmtzTG9jayk7
CisjZW5kaWYKICAgICBBU1NFUlQobV9zaW5rcy5pc0VtcHR5KCkpOwogICAgIHN0b3AoKTsKIH0K
IAogdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6Om9ic2VydmVTb3VyY2UoKQogewor
ICAgIEFTU0VSVCghbV9hdWRpb1NvdXJjZS0+aGFzT2JzZXJ2ZXIoKnRoaXMpKTsKICAgICBtX2F1
ZGlvU291cmNlLT5hZGRPYnNlcnZlcigqdGhpcyk7CiAgICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigp
OwogfQpAQCAtNjEsMjEgKzY1LDEzIEBAIHZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Ojp1bm9ic2VydmVTb3VyY2UoKQogICAgIG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0
aGlzKTsKIH0KIAotYm9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZShS
ZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYgbmV3U291cmNlKQordm9pZCBSZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+
JiYgbmV3U291cmNlKQogewogICAgIEFMV0FZU19MT0coIkNoYW5naW5nIHNvdXJjZSB0byAiLCBu
ZXdTb3VyY2UtPmxvZ0lkZW50aWZpZXIoKSk7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X3NpbmtzTG9jayk7Ci0gICAgYm9vbCBoYXNTaW5rcyA9ICFtX3NpbmtzLmlzRW1wdHkoKTsKIAot
ICAgIGlmIChoYXNTaW5rcykKLSAgICAgICAgdW5vYnNlcnZlU291cmNlKCk7CisgICAgQVNTRVJU
KCFtX2F1ZGlvU291cmNlLT5oYXNPYnNlcnZlcigqdGhpcykpOwogICAgIG1fYXVkaW9Tb3VyY2Ug
PSBXVEZNb3ZlKG5ld1NvdXJjZSk7Ci0gICAgaWYgKGhhc1NpbmtzKQotICAgICAgICBvYnNlcnZl
U291cmNlKCk7Ci0KICAgICBzb3VyY2VVcGRhdGVkKCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmluaXRpYWxpemVDb252ZXJ0ZXIo
KQpAQCAtOTYsMjYgKzkyLDE0IEBAIHZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpz
b3VyY2VFbmFibGVkQ2hhbmdlZCgpCiAKIHZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
OjpBZGRTaW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqIHNpbmspCiB7Ci0gICAg
ewogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zaW5rc0xvY2spOwotICAgIGlmICghbV9z
aW5rcy5hZGQoc2luaykgfHwgbV9zaW5rcy5zaXplKCkgIT0gMSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0oKSB7Ci0gICAgICAgIHByb3RlY3RlZFRoaXMtPm9ic2VydmVTb3VyY2UoKTsKLSAgICB9
KTsKKyAgICBtX3NpbmtzLmFkZChzaW5rKTsKIH0KIAogdm9pZCBSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2U6OlJlbW92ZVNpbmsod2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSogc2lu
aykKIHsKLSAgICB7CiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3NpbmtzTG9jayk7Ci0g
ICAgaWYgKCFtX3NpbmtzLnJlbW92ZShzaW5rKSB8fCAhbV9zaW5rcy5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB1bm9ic2VydmVTb3VyY2UoKTsKKyAgICBtX3Npbmtz
LnJlbW92ZShzaW5rKTsKIH0KIAogdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNl
bmRBdWRpb0ZyYW1lcyhjb25zdCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBp
bnQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZy
YW1lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKaW5kZXggYTUzMmEzZTUyZGNi
NTFiYjkxNTk5ODZlNjNlYzE2NDg4MTExYWFmOS4uODE2NzYxM2RhZDhmMjMyM2YyMWZiOTcxMjA3
NzY1ODQ0MTQzYzA2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKQEAgLTY0
LDE2ICs2NCwxNSBAQCBwdWJsaWM6CiAKICAgICB+UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
KCk7CiAKKyAgICB2b2lkIHN0YXJ0KCkgeyBvYnNlcnZlU291cmNlKCk7IH0KICAgICB2b2lkIHN0
b3AoKSB7IHVub2JzZXJ2ZVNvdXJjZSgpOyB9CiAKLSAgICBib29sIHNldFNvdXJjZShSZWY8TWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU+JiYpOworICAgIHZvaWQgc2V0U291cmNlKFJlZjxNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZT4mJik7CiAgICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHNvdXJj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Tb3VyY2UuZ2V0KCk7IH0KIAogcHJvdGVjdGVkOgog
ICAgIGV4cGxpY2l0IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZShSZWY8TWVkaWFTdHJlYW1U
cmFja1ByaXZhdGU+JiYpOwogCi0gICAgdm9pZCB1bm9ic2VydmVTb3VyY2UoKTsKLQogICAgIGJv
b2wgaXNTaWxlbmNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0ZWQgfHwgIW1fZW5hYmxlZDsgfQog
CiAgICAgdm9pZCBzZW5kQXVkaW9GcmFtZXMoY29uc3Qgdm9pZCogYXVkaW9EYXRhLCBpbnQgYml0
c1BlclNhbXBsZSwgaW50IHNhbXBsZVJhdGUsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBzaXpl
X3QgbnVtYmVyT2ZGcmFtZXMpOwpAQCAtMTA1LDYgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBVbnJlZ2lzdGVyT2JzZXJ2ZXIod2VicnRjOjpPYnNlcnZlckludGVyZmFjZSopIGZpbmFsIHsg
fQogCiAgICAgdm9pZCBvYnNlcnZlU291cmNlKCk7CisgICAgdm9pZCB1bm9ic2VydmVTb3VyY2Uo
KTsKIAogICAgIHZvaWQgc291cmNlTXV0ZWRDaGFuZ2VkKCk7CiAgICAgdm9pZCBzb3VyY2VFbmFi
bGVkQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAKaW5kZXgg
YTJiZDUwMDE2ZjRjNDk4MTQ3NDgwYTVlOGEyM2VmOWFmYTc1OGU4OS4uOTM4NGRhNWY2MDA1YWRl
Mzc3NGM2NDg0ZDNlOTU5ZmM5MmYyNTRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2UuY3BwCkBAIC01NiwxMyArNTYsMTcgQEAgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
OjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcmkKIAog
UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjp+UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
KCkKIHsKLSAgICBBU1NFUlQoIW1fdmlkZW9Tb3VyY2UtPmhhc09ic2VydmVyKCp0aGlzKSk7CitB
U1NFUlQoIW1fdmlkZW9Tb3VyY2UtPmhhc09ic2VydmVyKCp0aGlzKSk7CisjaWZuZGVmIE5ERUJV
RworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zaW5rc0xvY2spOworI2VuZGlmCiAgICAg
QVNTRVJUKG1fc2lua3MuaXNFbXB0eSgpKTsKICAgICBzdG9wKCk7CiB9CiAKIHZvaWQgUmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlOjpvYnNlcnZlU291cmNlKCkKIHsKKyAgICBBU1NFUlQoIW1f
dmlkZW9Tb3VyY2UtPmhhc09ic2VydmVyKCp0aGlzKSk7CiAgICAgbV92aWRlb1NvdXJjZS0+YWRk
T2JzZXJ2ZXIoKnRoaXMpOwogICAgIGluaXRpYWxpemVGcm9tU291cmNlKCk7CiB9CkBAIC03Miwy
MSArNzYsMTAgQEAgdm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OnVub2JzZXJ2ZVNv
dXJjZSgpCiAgICAgbV92aWRlb1NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwogfQogCi1i
b29sIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZT4mJiBuZXdTb3VyY2UpCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZTo6c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBuZXdTb3VyY2Up
CiB7Ci0gICAgaWYgKCFtX2luaXRpYWxTZXR0aW5ncykKLSAgICAgICAgbV9pbml0aWFsU2V0dGlu
Z3MgPSBtX3ZpZGVvU291cmNlLT5zb3VyY2UoKS5zZXR0aW5ncygpOwotCi0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX3NpbmtzTG9jayk7Ci0gICAgYm9vbCBoYXNTaW5rcyA9ICFtX3Npbmtz
LmlzRW1wdHkoKTsKLQotICAgIGlmIChoYXNTaW5rcykKLSAgICAgICAgdW5vYnNlcnZlU291cmNl
KCk7CisgICAgQVNTRVJUKCFtX3ZpZGVvU291cmNlLT5oYXNPYnNlcnZlcigqdGhpcykpOwogICAg
IG1fdmlkZW9Tb3VyY2UgPSBXVEZNb3ZlKG5ld1NvdXJjZSk7Ci0gICAgaWYgKGhhc1NpbmtzKQot
ICAgICAgICBvYnNlcnZlU291cmNlKCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBS
ZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OnN0b3AoKQpAQCAtMTQ0LDMyICsxMzcsMTQgQEAg
dm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OkFkZE9yVXBkYXRlU2luayhydGM6OlZp
ZGVvU2lua0ludGVyZmFjZTx3ZWJydGMKICAgICBpZiAoc2lua1dhbnRzLnJvdGF0aW9uX2FwcGxp
ZWQpCiAgICAgICAgIG1fc2hvdWxkQXBwbHlSb3RhdGlvbiA9IHRydWU7CiAKLSAgICB7CiAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3NpbmtzTG9jayk7Ci0gICAgaWYgKCFtX3NpbmtzLmFk
ZChzaW5rKSB8fCBtX3NpbmtzLnNpemUoKSAhPSAxKQotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgp
IHsKLSAgICAgICAgcHJvdGVjdGVkVGhpcy0+b2JzZXJ2ZVNvdXJjZSgpOwotICAgIH0pOworICAg
IG1fc2lua3MuYWRkKHNpbmspOwogfQogCiB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJj
ZTo6UmVtb3ZlU2luayhydGM6OlZpZGVvU2lua0ludGVyZmFjZTx3ZWJydGM6OlZpZGVvRnJhbWU+
KiBzaW5rKQogewotICAgIHsKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc2lua3NMb2Nr
KTsKLQotICAgIGlmICghbV9zaW5rcy5yZW1vdmUoc2luaykgfHwgbV9zaW5rcy5zaXplKCkpCi0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB1bm9ic2VydmVTb3VyY2UoKTsKLQotICAgIGNh
bGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSB7Ci0gICAg
ICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX2JsYWNrRnJhbWVUaW1lci5pc0FjdGl2ZSgpKQotICAg
ICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9ibGFja0ZyYW1lVGltZXIuc3RvcCgpOwotICAgIH0p
OworICAgIG1fc2lua3MucmVtb3ZlKHNpbmspOwogfQogCiB2b2lkIFJlYWx0aW1lT3V0Z29pbmdW
aWRlb1NvdXJjZTo6c2VuZEJsYWNrRnJhbWVzSWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2UuaAppbmRleCA1MDVmZGM0YmE3MTdmMzhiYzkyZGFmMWZkYzMwNDBmNDczMzc5
ZGY4Li5lMmE0OGQwODI3N2NlMzEwZjY3YjAwMDhhZTAwZWY4MTg2MGQ5OGU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaApAQCAtNTksOCArNTksOSBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U+IGNyZWF0ZShSZWY8TWVkaWFT
dHJlYW1UcmFja1ByaXZhdGU+JiYgdmlkZW9Tb3VyY2UpOwogICAgIH5SZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2UoKTsKIAorICAgIHZvaWQgc3RhcnQoKSB7IG9ic2VydmVTb3VyY2UoKTsgfQog
ICAgIHZvaWQgc3RvcCgpOwotICAgIGJvb2wgc2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZT4mJik7CisgICAgdm9pZCBzZXRTb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlPiYmKTsKICAgICBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgc291cmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV92aWRlb1NvdXJjZS5nZXQoKTsgfQogCiAgICAgdm9pZCBBZGRSZWYoKSBjb25zdCBm
aW5hbCB7IHJlZigpOyB9CkBAIC0xMjgsNyArMTI5LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRy
YWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IH0KIAogICAgIFJlZjxN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4gbV92aWRlb1NvdXJjZTsKLSAgICBPcHRpb25hbDxSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1faW5pdGlhbFNldHRpbmdzOwogICAgIFRpbWVyIG1f
YmxhY2tGcmFtZVRpbWVyOwogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJh
bWVCdWZmZXI+IG1fYmxhY2tGcmFtZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAKaW5kZXggOWRhMGI4NGQ5YjVhMTFlMWQ4N2IxOTg5Mzdi
MGUzNmY5NGIwNmZkMi4uNmE3OTYwZjYzMjNjOTg5ZDdlYWJkZDA4YWQ1YTViYjZhYzg3NjYxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3Bw
CkBAIC01MCwxMCArNTAsNyBAQCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6UmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EoUmVmPE1lZGlhU3RyZQogewogfQogCi1SZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6flJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZUNvY29hKCkKLXsKLSAgICB1bm9ic2VydmVTb3VyY2UoKTsKLX0KK1JlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZUNvY29hOjp+UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EoKSA9IGRl
ZmF1bHQ7CiAKIFJlZjxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U+IFJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZTo6Y3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBhdWRp
b1NvdXJjZSkKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384297</attachid>
            <date>2019-11-25 07:43:02 -0800</date>
            <delta_ts>2019-11-25 07:44:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204570-20191125164301.patch</filename>
            <type>text/plain</type>
            <size>27738</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyODQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBlODExYTQyOTRhYWUx
OGNlMTI4MjFjOTk0NzYyZDdhNDA4NTY1NS4uMWJlNzg2NDViYzMwYjE5ODJmOWQwNThlZDYzZjc2
MzQ2ZDQxYzUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE5LTExLTI1ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UgYW5kIFJlYWx0aW1lT3V0Z29pbmdWaWRlb29Tb3VyY2Ugb2Jz
ZXJ2ZVNvdXJjZS91bm9ic2VydmVTb3VyY2UgcGF0dGVybgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0NTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwgdGhlIG91dGdvaW5nIHNvdXJj
ZSB3YXMgb2JzZXJ2aW5nL3Vub2JzZXJ2aW5nIGl0cyB0cmFjayBpZiBzaW5rcyB3ZXJlIGFkZGVk
L3JlbW92ZWQuCisgICAgICAgIFdlIG1hZGUgTGliV2ViUlRDUlRDUnRwU2VuZGVyQmFja2VuZCBl
bmRpbmcgdGhlIG9ic2VydmluZyBpbiBpdHMgZGVzdHJ1Y3Rvci4KKyAgICAgICAgVGhpcyBtYWtl
cyB0aGluZ3MgY29tcGxleCBhbmQgd2UgYXJlIG5vdCBhbHdheXMgdW5vYnNlcnZpbmcgZmFzdCBl
bm91Z2ggZm9yIGFsbCBvdXRnb2luZyBzb3VyY2VzLgorCisgICAgICAgIFRvIG1ha2UgaXQgc2lt
cGxlciwgdGhlIG91dGdvaW5nIHNvdXJjZSBpcyBubyBsb25nZXIgaGFuZGxpbmcgdGhlIG9ic2Vy
dmluZy91bm9ic2VydmluZyBvZiBpdHMgdHJhY2suCisgICAgICAgIEluc3RlYWQsIGl0cyBMaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kIGlzIGhhbmRsaW5nIGl0IGRpcmVjdGx5LgorICAgICAgICBP
YnNlcnZpbmcgc3RhcnRzIHdoZW4gTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZCBnZXRzIHRoZSB0
cmFjayBhbmQgdW5vYnNlcnZpbmcgaGFwcGVucyBlaXRoZXIgb24gTGliV2ViUlRDUnRwU2VuZGVy
QmFja2VuZCBkZXN0cnVjdGlvbgorICAgICAgICBvciB3aGVuIHRoZSBMaWJXZWJSVENSdHBTZW5k
ZXJCYWNrZW5kIGlzIG5vIGxvbmdlciBpbnRlcmVzdGVkIGluIHRoZSB0cmFjay4KKyAgICAgICAg
VGhpcyBpcyBzbGlnaHQgbGVzcyBvcHRpbWFsIGFzIHdlIG1pZ2h0IG9ic2VydmUgdGhlIHRyYWNr
IGV2ZW4gaWYgdGhlIHNvdXJjZSBoYXMgbm8gc2luayBidXQgdGhpcyBzaG91bGQgbm90IGhhcHBl
biBvZnRlbiBpbiBwcmFjdGljZS4KKworICAgICAgICBSZW1vdmVkIHNvbWUgdW5uZWVkZWQgbWV0
aG9kcy4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzIG5vIGxvbmdlciBmYWls
aW5nIGEgZGVidWcgQVNTRVJUSU9OLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6On5MaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFNlbmRlckJh
Y2tlbmQ6OnN0YXJ0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFNlbmRl
ckJhY2tlbmQ6OnN0b3BTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwU2Vu
ZGVyQmFja2VuZDo6cmVwbGFjZVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQ6OmF1ZGlvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJU
Q1J0cFNlbmRlckJhY2tlbmQ6OnZpZGVvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQ6Omhhc1NvdXJjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpzZXRTb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6dGFrZVNvdXJjZSk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6On5S
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlOjpvYnNlcnZlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6QWRkU2luayk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OlJlbW92ZVNpbmspOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzdGFydCk6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6flJlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2U6Om9ic2VydmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlOjpzZXRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlOjpBZGRPclVwZGF0ZVNpbmspOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpSZW1vdmVTaW5rKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6c3RhcnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYTo6flJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hKTogRGVsZXRlZC4KKwogMjAx
OS0xMS0yNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRW5h
YmxlIGxlZ2FjeSBnZXRVc2VyTWVkaWEgYXMgYSBxdWlyawpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAKaW5kZXggNjgzYmJiYTAy
YTIzMDkzM2JmMTExZmM4YmIyZGQxYzFhZDE4OWZjYi4uZmZkYTI0NDU2MDk4YjdiODMwNTZmMDcz
ZDFiMTQ1ZTNjMTBkNGYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3BwCkBAIC0xNDgsMTIgKzE0OCw2IEBAIGNvbnN0IGNo
YXIqIFJUQ0RUTUZTZW5kZXI6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAogICAgIHJldHVy
biAiUlRDRFRNRlNlbmRlciI7CiB9CiAKLS8vIEZJWE1FOiBUaGlzIHNob3VsZCBuZXZlciBwcmV2
ZW50IGVudGVyaW5nIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUuCi1ib29sIFJUQ0RUTUZTZW5kZXI6
OnNob3VsZFByZXZlbnRFbnRlcmluZ0JhY2tGb3J3YXJkQ2FjaGVfREVQUkVDQVRFRCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fc2VuZGVyICYmICFtX3NlbmRlci0+aXNTdG9wcGVkKCk7Ci19Ci0K
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuaApp
bmRleCA3MTlhOTlkNTE5NTI0YzgxNDhkMjEzNzZjZTQyM2VlNGRhMTRiNDU3Li41OGI2YjcyMjRj
MDYwYWNlNjhiZTU3NDJjNmFhYTNhYjhiNmIwYWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuaApAQCAtNTgsNyArNTgsNiBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZl
RE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc2hvdWxkUHJldmVudEVudGVy
aW5nQmFja0ZvcndhcmRDYWNoZV9ERVBSRUNBVEVEKCkgY29uc3QgZmluYWw7CiAKICAgICBFdmVu
dFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIFJUQ0RUTUZTZW5kZXJFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaApp
bmRleCBlMzllZWQzNDE4YTMxYmEwNWViZGQwZWUyNGVmNDNkMDQwMzRkYTE4Li4xYTVjODczOTY2
NTgwOGRmN2JhZGQwMmU4YjQwMjMwNTQzYWEwNjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCkBAIC05NSw5ICs5NSw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZl
RE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSVENEYXRhQ2hhbm5lbCI7IH0K
IAotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBuZXZlciBwcmV2ZW50IGVudGVyaW5nIHRoZSBi
YWNrL2ZvcndhcmQgY2FjaGUuCi0gICAgYm9vbCBzaG91bGRQcmV2ZW50RW50ZXJpbmdCYWNrRm9y
d2FyZENhY2hlX0RFUFJFQ0FURUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3JlYWR5U3RhdGUg
PT0gUlRDRGF0YUNoYW5uZWxTdGF0ZTo6T3BlbjsgfQotCiAgICAgLy8gUlRDRGF0YUNoYW5uZWxI
YW5kbGVyQ2xpZW50IEFQSQogICAgIHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0ZShSVENEYXRhQ2hh
bm5lbFN0YXRlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVTdHJpbmdEYXRhKGNvbnN0IFN0
cmluZyYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNr
ZW5kLmNwcAppbmRleCA2Yzk2MWU1ZmEzMmI3Njk5ZjFiYTY4N2I0N2ZkZDJmMjI1MjkwMDEzLi4x
YTQ0NmQ5ODlkMDRiMDE3NGYwNDZmNzEwYTY0NTg2NGQ1NjQyZDE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5k
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcApAQCAtMzcsMjQgKzM3LDM4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6TGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZChMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQmIGJh
Y2tlbmQsIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFNlbmRlckludGVyZmFjZT4mJiBy
dGNTZW5kZXIsIFNvdXJjZSYmIHNvdXJjZSkKKyAgICA6IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5k
KG1ha2VXZWFrUHRyKCZiYWNrZW5kKSkKKyAgICAsIG1fcnRjU2VuZGVyKFdURk1vdmUocnRjU2Vu
ZGVyKSkKKyAgICAsIG1fc291cmNlKFdURk1vdmUoc291cmNlKSkKK3sKKyAgICBzdGFydFNvdXJj
ZSgpOworfQorCiBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjp+TGliV2ViUlRDUnRwU2VuZGVy
QmFja2VuZCgpCiB7Ci0gICAgV1RGOjpzd2l0Y2hPbihtX3NvdXJjZSwgW10gKFJlZjxSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2U+JiBzb3VyY2UpIHsKLSAgICAgICAgc291cmNlLT5zdG9wKCk7
Ci0gICAgfSwgW10gKFJlZjxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U+JiBzb3VyY2UpIHsK
LSAgICAgICAgc291cmNlLT5zdG9wKCk7Ci0gICAgfSwgW10gKHN0ZDo6bnVsbHB0cl90Jikgewor
ICAgIHN0b3BTb3VyY2UoKTsKK30KKwordm9pZCBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpz
dGFydFNvdXJjZSgpCit7CisgICAgc3dpdGNoT24obV9zb3VyY2UsIFtdKFJlZjxSZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2U+JiBzb3VyY2UpIHsKKyAgICAgICAgc291cmNlLT5zdGFydCgpOwor
ICAgIH0sIFtdKFJlZjxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U+JiBzb3VyY2UpIHsKKyAg
ICAgICAgc291cmNlLT5zdGFydCgpOworICAgIH0sIFtdKHN0ZDo6bnVsbHB0cl90JikgewogICAg
IH0pOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci1zdGF0aWMgaW5saW5lIGJvb2wg
dXBkYXRlVHJhY2tTb3VyY2UoU291cmNlJiBzb3VyY2UsIE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNr
KQordm9pZCBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpzdG9wU291cmNlKCkKIHsKLSAgICBp
ZiAoIXRyYWNrKSB7Ci0gICAgICAgIHNvdXJjZS5zdG9wKCk7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLSAgICByZXR1cm4gc291cmNlLnNldFNvdXJjZSh0cmFjay0+cHJpdmF0ZVRyYWNr
KCkpOworICAgIHN3aXRjaE9uKG1fc291cmNlLCBbXShSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlPiYgc291cmNlKSB7CisgICAgICAgIHNvdXJjZS0+c3RvcCgpOworICAgIH0sIFtdKFJl
ZjxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U+JiBzb3VyY2UpIHsKKyAgICAgICAgc291cmNl
LT5zdG9wKCk7CisgICAgfSwgW10oc3RkOjpudWxscHRyX3QmKSB7CisgICAgfSk7CisgICAgbV9z
b3VyY2UgPSBudWxscHRyOwogfQogCiB2b2lkIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OnJl
cGxhY2VUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSVENSdHBTZW5kZXIm
IHNlbmRlciwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByb21pc2UpCkBAIC02NCwyOCArNzgsMjIgQEAgdm9pZCBMaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kOjpyZXBsYWNlVHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgUlQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8qIGN1cnJlbnRUcmFj
ayA9IHNlbmRlci50cmFjaygpOwotCi0gICAgQVNTRVJUKCF0cmFjayB8fCAhY3VycmVudFRyYWNr
IHx8IGN1cnJlbnRUcmFjay0+c291cmNlKCkudHlwZSgpID09IHRyYWNrLT5zb3VyY2UoKS50eXBl
KCkpOwotICAgIGlmIChjdXJyZW50VHJhY2spIHsKLSAgICBzd2l0Y2ggKGN1cnJlbnRUcmFjay0+
c291cmNlKCkudHlwZSgpKSB7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpO
b25lOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcHJvbWlzZS5yZWpl
Y3QoSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbzoKLSAgICAgICAgaWYgKCF1cGRhdGVUcmFj
a1NvdXJjZSgqYXVkaW9Tb3VyY2UoKSwgdHJhY2suZ2V0KCkpKSB7Ci0gICAgICAgICAgICBwcm9t
aXNlLnJlamVjdChJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZTo6VmlkZW86Ci0gICAgICAgIGlmICghdXBkYXRlVHJhY2tTb3VyY2UoKnZpZGVvU291
cmNlKCksIHRyYWNrLmdldCgpKSkgewotICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxp
ZE1vZGlmaWNhdGlvbkVycm9yKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
ICAgICBicmVhazsKLSAgICB9CisgICAgaWYgKCF0cmFjaykKKyAgICAgICAgc3RvcFNvdXJjZSgp
OworICAgIGVsc2UgaWYgKGF1dG8qIGN1cnJlbnRUcmFjayA9IHNlbmRlci50cmFjaygpKSB7Cisg
ICAgICAgIHN3aXRjaE9uKG1fc291cmNlLCBbJl0oUmVmPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZT4mIHNvdXJjZSkgeworICAgICAgICAgICAgQVNTRVJUKHRyYWNrLT5zb3VyY2UoKS50eXBl
KCkgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8pOworICAgICAgICAgICAgc291
cmNlLT5zdG9wKCk7CisgICAgICAgICAgICBzb3VyY2UtPnNldFNvdXJjZSh0cmFjay0+cHJpdmF0
ZVRyYWNrKCkpOworICAgICAgICAgICAgc291cmNlLT5zdGFydCgpOworICAgICAgICB9LCBbJl0o
UmVmPFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZT4mIHNvdXJjZSkgeworICAgICAgICAgICAg
QVNTRVJUKHRyYWNrLT5zb3VyY2UoKS50eXBlKCkgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZTo6VmlkZW8pOworICAgICAgICAgICAgc291cmNlLT5zdG9wKCk7CisgICAgICAgICAgICBzb3Vy
Y2UtPnNldFNvdXJjZSh0cmFjay0+cHJpdmF0ZVRyYWNrKCkpOworICAgICAgICAgICAgc291cmNl
LT5zdGFydCgpOworICAgICAgICB9LCBbXShzdGQ6Om51bGxwdHJfdCYpIHsKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9KTsKICAgICB9CiAKICAgICAvLyBGSVhN
RTogUmVtb3ZlIHRoaXMgcG9zdFRhc2sgb25jZSB0aGlzIHdob2xlIGZ1bmN0aW9uIGlzIGV4ZWN1
dGVkIGFzIHBhcnQgb2YgdGhlIFJUQ1BlZXJDb25uZWN0aW9uIG9wZXJhdGlvbiBxdWV1ZS4KQEAg
LTEwNyw3ICsxMTUsNiBAQCB2b2lkIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OnJlcGxhY2VU
cmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSVAogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgbV9zb3VyY2UgPSBudWxscHRyOwogICAgICAgICBt
X3BlZXJDb25uZWN0aW9uQmFja2VuZC0+c2V0U2VuZGVyU291cmNlRnJvbVRyYWNrKCp0aGlzLCAq
cHJvdGVjdGVkU2VuZGVyLT50cmFjaygpKTsKICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CiAg
ICAgfSk7CkBAIC0xNTEsNiArMTU4LDM3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSVENEVE1GU2VuZGVy
QmFja2VuZD4gTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6Y3JlYXRlRFRNRkJhY2tlCiAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQ+KG1fcnRjU2VuZGVy
LT5HZXREdG1mU2VuZGVyKCkpOwogfQogCitSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UqIExp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OnZpZGVvU291cmNlKCkKK3sKKyAgICByZXR1cm4gc3dp
dGNoT24obV9zb3VyY2UsCisgICAgICAgIFtdKFJlZjxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2U+JiBzb3VyY2UpIHsgcmV0dXJuIHNvdXJjZS5wdHIoKTsgfSwKKyAgICAgICAgW10oY29uc3Qg
YXV0byYpIC0+IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZSogeyByZXR1cm4gbnVsbHB0cjsg
fQorICAgICk7Cit9CisKK2Jvb2wgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6aGFzU291cmNl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3dpdGNoT24obV9zb3VyY2UsCisgICAgICAgIFtdKGNv
bnN0IHN0ZDo6bnVsbHB0cl90JikgeyByZXR1cm4gZmFsc2U7IH0sCisgICAgICAgIFtdKGNvbnN0
IGF1dG8mKSB7IHJldHVybiB0cnVlOyB9CisgICAgKTsKK30KKwordm9pZCBMaWJXZWJSVENSdHBT
ZW5kZXJCYWNrZW5kOjpzZXRTb3VyY2UoU291cmNlJiYgc291cmNlKQoreworICAgIHN0b3BTb3Vy
Y2UoKTsKKyAgICBtX3NvdXJjZSA9IFdURk1vdmUoc291cmNlKTsKKyAgICBzdGFydFNvdXJjZSgp
OworfQorCit2b2lkIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OnRha2VTb3VyY2UoTGliV2Vi
UlRDUnRwU2VuZGVyQmFja2VuZCYgYmFja2VuZCkKK3sKKyAgICBBU1NFUlQoYmFja2VuZC5oYXNT
b3VyY2UoKSk7CisgICAgc3RvcFNvdXJjZSgpOworICAgIG1fc291cmNlID0gV1RGTW92ZShiYWNr
ZW5kLm1fc291cmNlKTsKKyAgICBiYWNrZW5kLm1fc291cmNlID0gbnVsbHB0cjsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpICYmIFVTRShM
SUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmgK
aW5kZXggNTNlMTZlMDhhNjc3ZGNjNjRhZWNlNTYzZmM1MTk5ZjAyNTRjOWYyYy4uM2FjMzdiMzZj
MjM1ZjMzODQ4ZDRmOTgxZjhkMGQzMjg4MDhmMDMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2Vu
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaApAQCAtNTQsNjAgKzU0LDE2IEBAIHB1YmxpYzoKICAg
ICB9CiAKICAgICB1c2luZyBTb3VyY2UgPSBWYXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8UmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiwgUmVmPFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJj
ZT4+OwotICAgIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQoTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kJiBiYWNrZW5kLCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBTZW5kZXJJ
bnRlcmZhY2U+JiYgcnRjU2VuZGVyLCBTb3VyY2UmJiBzb3VyY2UpCi0gICAgICAgIDogbV9wZWVy
Q29ubmVjdGlvbkJhY2tlbmQobWFrZVdlYWtQdHIoJmJhY2tlbmQpKQotICAgICAgICAsIG1fcnRj
U2VuZGVyKFdURk1vdmUocnRjU2VuZGVyKSkKLSAgICAgICAgLCBtX3NvdXJjZShXVEZNb3ZlKHNv
dXJjZSkpCi0gICAgewotICAgIH0KKyAgICBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kKExpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCYsIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0
cFNlbmRlckludGVyZmFjZT4mJiwgU291cmNlJiYpOwogICAgIH5MaWJXZWJSVENSdHBTZW5kZXJC
YWNrZW5kKCk7CiAKICAgICB2b2lkIHNldFJUQ1NlbmRlcihydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpSdHBTZW5kZXJJbnRlcmZhY2U+JiYgcnRjU2VuZGVyKSB7IG1fcnRjU2VuZGVyID0gV1RG
TW92ZShydGNTZW5kZXIpOyB9CiAgICAgd2VicnRjOjpSdHBTZW5kZXJJbnRlcmZhY2UqIHJ0Y1Nl
bmRlcigpIHsgcmV0dXJuIG1fcnRjU2VuZGVyLmdldCgpOyB9CiAKLSAgICBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2UqIGF1ZGlvU291cmNlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKG1fc291cmNlLAotICAgICAgICAgICAgW10gKFJlZjxSZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2U+JiBzb3VyY2UpIHsgcmV0dXJuIHNvdXJjZS5wdHIoKTsgfSwKLSAgICAgICAg
ICAgIFtdIChjb25zdCBhdXRvJikgLT4gUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKiB7IHJl
dHVybiBudWxscHRyOyB9Ci0gICAgICAgICk7Ci0gICAgfQotCi0gICAgUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlKiB2aWRlb1NvdXJjZSgpCi0gICAgewotICAgICAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihtX3NvdXJjZSwKLSAgICAgICAgICAgIFtdIChSZWY8UmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlPiYgc291cmNlKSB7IHJldHVybiBzb3VyY2UucHRyKCk7IH0sCi0gICAgICAgICAg
ICBbXSAoY29uc3QgYXV0byYpIC0+IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZSogeyByZXR1
cm4gbnVsbHB0cjsgfQotICAgICAgICApOwotICAgIH0KLQotICAgIGJvb2wgaGFzU291cmNlKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc291cmNlLAotICAg
ICAgICAgICAgW10gKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgeyByZXR1cm4gZmFsc2U7IH0sCi0g
ICAgICAgICAgICBbXSAoY29uc3QgYXV0byYpIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgKTsK
LSAgICB9Ci0KLSAgICB2b2lkIGNsZWFyU291cmNlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCho
YXNTb3VyY2UoKSk7Ci0gICAgICAgIG1fc291cmNlID0gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICB2
b2lkIHNldFNvdXJjZShTb3VyY2UmJiBzb3VyY2UpCi0gICAgewotICAgICAgICBBU1NFUlQoIWhh
c1NvdXJjZSgpKTsKLSAgICAgICAgbV9zb3VyY2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgICAg
IEFTU0VSVChoYXNTb3VyY2UoKSk7Ci0gICAgfQotCi0gICAgdm9pZCB0YWtlU291cmNlKExpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQmIGJhY2tlbmQpCi0gICAgewotICAgICAgICBBU1NFUlQoYmFj
a2VuZC5oYXNTb3VyY2UoKSk7Ci0gICAgICAgIHNldFNvdXJjZShXVEZNb3ZlKGJhY2tlbmQubV9z
b3VyY2UpKTsKLSAgICAgICAgYmFja2VuZC5tX3NvdXJjZSA9IG51bGxwdHI7Ci0gICAgfQorICAg
IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZSogdmlkZW9Tb3VyY2UoKTsKKyAgICB2b2lkIGNs
ZWFyU291cmNlKCkgeyBzZXRTb3VyY2UobnVsbHB0cik7IH0KKyAgICB2b2lkIHNldFNvdXJjZShT
b3VyY2UmJik7CisgICAgdm9pZCB0YWtlU291cmNlKExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQm
KTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHJlcGxhY2VUcmFjayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmKSBmaW5hbDsKQEAgLTExNSw2ICs3MSwxMCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2V0UGFyYW1ldGVycyhjb25zdCBSVENSdHBTZW5kUGFyYW1ldGVycyYsIERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPiYmKSBmaW5hbDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UlRDRFRN
RlNlbmRlckJhY2tlbmQ+IGNyZWF0ZURUTUZCYWNrZW5kKCkgZmluYWw7CiAKKyAgICB2b2lkIHN0
YXJ0U291cmNlKCk7CisgICAgdm9pZCBzdG9wU291cmNlKCk7CisgICAgYm9vbCBoYXNTb3VyY2Uo
KSBjb25zdDsKKwogICAgIFdlYWtQdHI8TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kPiBt
X3BlZXJDb25uZWN0aW9uQmFja2VuZDsKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpS
dHBTZW5kZXJJbnRlcmZhY2U+IG1fcnRjU2VuZGVyOwogICAgIFNvdXJjZSBtX3NvdXJjZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCmluZGV4IDY4Yjc1MGU3YWUyZDY1YmY1
MzAyYTViZDU4ZDI3NjEwOWNkZDRlOTAuLjRjNmNlOWU2NGY3YWJmNmU4NWEwZDM4MzA3NmI3MjAz
N2RkY2FlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcApAQCAtNDYs
MTIgKzQ2LDE2IEBAIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6UmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpCiBSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2U6On5SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoKQogewogICAgIEFTU0VSVCgh
bV9hdWRpb1NvdXJjZS0+aGFzT2JzZXJ2ZXIoKnRoaXMpKTsKKyNpZm5kZWYgTkRFQlVHCisgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3NpbmtzTG9jayk7CisjZW5kaWYKICAgICBBU1NFUlQo
bV9zaW5rcy5pc0VtcHR5KCkpOwogICAgIHN0b3AoKTsKIH0KIAogdm9pZCBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2U6Om9ic2VydmVTb3VyY2UoKQogeworICAgIEFTU0VSVCghbV9hdWRpb1Nv
dXJjZS0+aGFzT2JzZXJ2ZXIoKnRoaXMpKTsKICAgICBtX2F1ZGlvU291cmNlLT5hZGRPYnNlcnZl
cigqdGhpcyk7CiAgICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOwogfQpAQCAtNjEsMjEgKzY1LDEz
IEBAIHZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjp1bm9ic2VydmVTb3VyY2UoKQog
ICAgIG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKIH0KIAotYm9vbCBSZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1By
aXZhdGU+JiYgbmV3U291cmNlKQordm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNl
dFNvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYgbmV3U291cmNlKQogewogICAg
IEFMV0FZU19MT0coIkNoYW5naW5nIHNvdXJjZSB0byAiLCBuZXdTb3VyY2UtPmxvZ0lkZW50aWZp
ZXIoKSk7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3NpbmtzTG9jayk7Ci0gICAgYm9v
bCBoYXNTaW5rcyA9ICFtX3NpbmtzLmlzRW1wdHkoKTsKIAotICAgIGlmIChoYXNTaW5rcykKLSAg
ICAgICAgdW5vYnNlcnZlU291cmNlKCk7CisgICAgQVNTRVJUKCFtX2F1ZGlvU291cmNlLT5oYXNP
YnNlcnZlcigqdGhpcykpOwogICAgIG1fYXVkaW9Tb3VyY2UgPSBXVEZNb3ZlKG5ld1NvdXJjZSk7
Ci0gICAgaWYgKGhhc1NpbmtzKQotICAgICAgICBvYnNlcnZlU291cmNlKCk7Ci0KICAgICBzb3Vy
Y2VVcGRhdGVkKCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2U6OmluaXRpYWxpemVDb252ZXJ0ZXIoKQpAQCAtOTYsMjYgKzkyLDE0IEBA
IHZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzb3VyY2VFbmFibGVkQ2hhbmdlZCgp
CiAKIHZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpBZGRTaW5rKHdlYnJ0Yzo6QXVk
aW9UcmFja1NpbmtJbnRlcmZhY2UqIHNpbmspCiB7Ci0gICAgewogICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9zaW5rc0xvY2spOwotICAgIGlmICghbV9zaW5rcy5hZGQoc2luaykgfHwgbV9z
aW5rcy5zaXplKCkgIT0gMSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSB7Ci0gICAgICAgIHBy
b3RlY3RlZFRoaXMtPm9ic2VydmVTb3VyY2UoKTsKLSAgICB9KTsKKyAgICBtX3NpbmtzLmFkZChz
aW5rKTsKIH0KIAogdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OlJlbW92ZVNpbmso
d2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSogc2luaykKIHsKLSAgICB7CiAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX3NpbmtzTG9jayk7Ci0gICAgaWYgKCFtX3NpbmtzLnJlbW92
ZShzaW5rKSB8fCAhbV9zaW5rcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICB1bm9ic2VydmVTb3VyY2UoKTsKKyAgICBtX3NpbmtzLnJlbW92ZShzaW5rKTsKIH0KIAog
dm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNlbmRBdWRpb0ZyYW1lcyhjb25zdCB2
b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6ZV90
IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmgKaW5kZXggYTUzMmEzZTUyZGNiNTFiYjkxNTk5ODZlNjNlYzE2NDg4
MTExYWFmOS4uODE2NzYxM2RhZDhmMjMyM2YyMWZiOTcxMjA3NzY1ODQ0MTQzYzA2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKQEAgLTY0LDE2ICs2NCwxNSBAQCBwdWJsaWM6
CiAKICAgICB+UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKCk7CiAKKyAgICB2b2lkIHN0YXJ0
KCkgeyBvYnNlcnZlU291cmNlKCk7IH0KICAgICB2b2lkIHN0b3AoKSB7IHVub2JzZXJ2ZVNvdXJj
ZSgpOyB9CiAKLSAgICBib29sIHNldFNvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+
JiYpOworICAgIHZvaWQgc2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJik7
CiAgICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YXVkaW9Tb3VyY2UuZ2V0KCk7IH0KIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFJlYWx0aW1l
T3V0Z29pbmdBdWRpb1NvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYpOwogCi0g
ICAgdm9pZCB1bm9ic2VydmVTb3VyY2UoKTsKLQogICAgIGJvb2wgaXNTaWxlbmNlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fbXV0ZWQgfHwgIW1fZW5hYmxlZDsgfQogCiAgICAgdm9pZCBzZW5kQXVkaW9G
cmFtZXMoY29uc3Qgdm9pZCogYXVkaW9EYXRhLCBpbnQgYml0c1BlclNhbXBsZSwgaW50IHNhbXBs
ZVJhdGUsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpOwpA
QCAtMTA1LDYgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBVbnJlZ2lzdGVyT2JzZXJ2ZXIo
d2VicnRjOjpPYnNlcnZlckludGVyZmFjZSopIGZpbmFsIHsgfQogCiAgICAgdm9pZCBvYnNlcnZl
U291cmNlKCk7CisgICAgdm9pZCB1bm9ic2VydmVTb3VyY2UoKTsKIAogICAgIHZvaWQgc291cmNl
TXV0ZWRDaGFuZ2VkKCk7CiAgICAgdm9pZCBzb3VyY2VFbmFibGVkQ2hhbmdlZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAKaW5kZXggYTJiZDUwMDE2ZjRjNDk4MTQ3NDgw
YTVlOGEyM2VmOWFmYTc1OGU4OS4uOTM4NGRhNWY2MDA1YWRlMzc3NGM2NDg0ZDNlOTU5ZmM5MmYy
NTRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwCkBAIC01NiwxMyAr
NTYsMTcgQEAgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpSZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcmkKIAogUmVhbHRpbWVPdXRnb2luZ1ZpZGVv
U291cmNlOjp+UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlKCkKIHsKLSAgICBBU1NFUlQoIW1f
dmlkZW9Tb3VyY2UtPmhhc09ic2VydmVyKCp0aGlzKSk7CitBU1NFUlQoIW1fdmlkZW9Tb3VyY2Ut
Pmhhc09ic2VydmVyKCp0aGlzKSk7CisjaWZuZGVmIE5ERUJVRworICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9zaW5rc0xvY2spOworI2VuZGlmCiAgICAgQVNTRVJUKG1fc2lua3MuaXNFbXB0
eSgpKTsKICAgICBzdG9wKCk7CiB9CiAKIHZvaWQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
OjpvYnNlcnZlU291cmNlKCkKIHsKKyAgICBBU1NFUlQoIW1fdmlkZW9Tb3VyY2UtPmhhc09ic2Vy
dmVyKCp0aGlzKSk7CiAgICAgbV92aWRlb1NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwogICAg
IGluaXRpYWxpemVGcm9tU291cmNlKCk7CiB9CkBAIC03MiwyMSArNzYsMTAgQEAgdm9pZCBSZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OnVub2JzZXJ2ZVNvdXJjZSgpCiAgICAgbV92aWRlb1Nv
dXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwogfQogCi1ib29sIFJlYWx0aW1lT3V0Z29pbmdW
aWRlb1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBuZXdT
b3VyY2UpCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6c2V0U291cmNlKFJlZjxN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBuZXdTb3VyY2UpCiB7Ci0gICAgaWYgKCFtX2luaXRp
YWxTZXR0aW5ncykKLSAgICAgICAgbV9pbml0aWFsU2V0dGluZ3MgPSBtX3ZpZGVvU291cmNlLT5z
b3VyY2UoKS5zZXR0aW5ncygpOwotCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Npbmtz
TG9jayk7Ci0gICAgYm9vbCBoYXNTaW5rcyA9ICFtX3NpbmtzLmlzRW1wdHkoKTsKLQotICAgIGlm
IChoYXNTaW5rcykKLSAgICAgICAgdW5vYnNlcnZlU291cmNlKCk7CisgICAgQVNTRVJUKCFtX3Zp
ZGVvU291cmNlLT5oYXNPYnNlcnZlcigqdGhpcykpOwogICAgIG1fdmlkZW9Tb3VyY2UgPSBXVEZN
b3ZlKG5ld1NvdXJjZSk7Ci0gICAgaWYgKGhhc1NpbmtzKQotICAgICAgICBvYnNlcnZlU291cmNl
KCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2U6OnN0b3AoKQpAQCAtMTQ0LDMyICsxMzcsMTQgQEAgdm9pZCBSZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2U6OkFkZE9yVXBkYXRlU2luayhydGM6OlZpZGVvU2lua0ludGVyZmFjZTx3ZWJy
dGMKICAgICBpZiAoc2lua1dhbnRzLnJvdGF0aW9uX2FwcGxpZWQpCiAgICAgICAgIG1fc2hvdWxk
QXBwbHlSb3RhdGlvbiA9IHRydWU7CiAKLSAgICB7CiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX3NpbmtzTG9jayk7Ci0gICAgaWYgKCFtX3NpbmtzLmFkZChzaW5rKSB8fCBtX3NpbmtzLnNp
emUoKSAhPSAxKQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FsbE9uTWFpblRocmVh
ZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIHsKLSAgICAgICAgcHJvdGVjdGVk
VGhpcy0+b2JzZXJ2ZVNvdXJjZSgpOwotICAgIH0pOworICAgIG1fc2lua3MuYWRkKHNpbmspOwog
fQogCiB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6UmVtb3ZlU2luayhydGM6OlZp
ZGVvU2lua0ludGVyZmFjZTx3ZWJydGM6OlZpZGVvRnJhbWU+KiBzaW5rKQogewotICAgIHsKICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc2lua3NMb2NrKTsKLQotICAgIGlmICghbV9zaW5r
cy5yZW1vdmUoc2luaykgfHwgbV9zaW5rcy5zaXplKCkpCi0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICB1bm9ic2VydmVTb3VyY2UoKTsKLQotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSB7Ci0gICAgICAgIGlmIChwcm90ZWN0ZWRUaGlz
LT5tX2JsYWNrRnJhbWVUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICAgICAgcHJvdGVjdGVkVGhp
cy0+bV9ibGFja0ZyYW1lVGltZXIuc3RvcCgpOwotICAgIH0pOworICAgIG1fc2lua3MucmVtb3Zl
KHNpbmspOwogfQogCiB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6c2VuZEJsYWNr
RnJhbWVzSWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaAppbmRleCA1
MDVmZGM0YmE3MTdmMzhiYzkyZGFmMWZkYzMwNDBmNDczMzc5ZGY4Li5lMmE0OGQwODI3N2NlMzEw
ZjY3YjAwMDhhZTAwZWY4MTg2MGQ5OGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2UuaApAQCAtNTksOCArNTksOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZWFsdGltZU91
dGdvaW5nVmlkZW9Tb3VyY2U+IGNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYg
dmlkZW9Tb3VyY2UpOwogICAgIH5SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UoKTsKIAorICAg
IHZvaWQgc3RhcnQoKSB7IG9ic2VydmVTb3VyY2UoKTsgfQogICAgIHZvaWQgc3RvcCgpOwotICAg
IGJvb2wgc2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJik7CisgICAgdm9p
ZCBzZXRTb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmKTsKICAgICBNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZSYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb1NvdXJjZS5n
ZXQoKTsgfQogCiAgICAgdm9pZCBBZGRSZWYoKSBjb25zdCBmaW5hbCB7IHJlZigpOyB9CkBAIC0x
MjgsNyArMTI5LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRyYWNrRW5kZWQoTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUmKSBmaW5hbCB7IH0KIAogICAgIFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZT4gbV92aWRlb1NvdXJjZTsKLSAgICBPcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M+IG1faW5pdGlhbFNldHRpbmdzOwogICAgIFRpbWVyIG1fYmxhY2tGcmFtZVRpbWVyOwogICAg
IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+IG1fYmxhY2tGcmFt
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxpYldlYlJUQy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlTGliV2ViUlRDLmNwcAppbmRleCA3MjAzZDdkMzYzYzdlMzdjOWQ3MDY5MzU4NzM3
MGRjZDFmOWY2YTcwLi5hODA1Yzg0Nzg0YzRlMGQ2NTNlMTBmNmI0ZTQ1Y2ZlZWQ0ZDMxNGI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlTGliV2ViUlRDLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlTGliV2ViUlRDLmNwcApAQCAtMzgsNyArMzgsNiBAQCBSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2VMaWJXZWJSVEM6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxpYldlYlJUQyhS
ZWY8TQogCiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEM6On5SZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEMoKQogewotICAgIHVub2JzZXJ2ZVNvdXJjZSgpOwog
ICAgIG1fc2FtcGxlQ29udmVydGVyID0gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQcm92aWRlci5jcHAKaW5kZXggYjQ3ZGFjOTQ1YjhmZjliMGNjNzk4NzZmNzYwNjlhY2Ni
YjkzZWJlMy4uZGViZTk2MDBiNmFjZDBjZTQxNmQyMWUzZTFkNzUzMzFkODhlYjEzOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCkBAIC0xMjMsMjAgKzEyMywxNiBAQCBw
cml2YXRlOgogCiBzdGF0aWMgdm9pZCBkb1JlbGVhc2VMb2dnaW5nKHJ0Yzo6TG9nZ2luZ1NldmVy
aXR5IHNldmVyaXR5LCBjb25zdCBjaGFyKiBtZXNzYWdlKQogewotI2lmIFJFTEVBU0VfTE9HX0RJ
U0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKHNldmVyaXR5KTsKLSAgICBVTlVTRURfUEFSQU0obWVz
c2FnZSk7Ci0jZWxzZQorICAgIGZwcmludGYoc3RkZXJyLCAibGlid2VicnRjOiAlc1xuIiwgbWVz
c2FnZSk7CiAgICAgaWYgKHNldmVyaXR5ID09IHJ0Yzo6TFNfRVJST1IpCiAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKFdlYlJUQywgIkxpYldlYlJUQyBlcnJvcjogJXtwdWJsaWN9cyIsIG1lc3Nh
Z2UpOwogICAgIGVsc2UKICAgICAgICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiTGliV2ViUlRDIG1l
c3NhZ2U6ICV7cHVibGljfXMiLCBtZXNzYWdlKTsKLSNlbmRpZgogfQogCiBzdGF0aWMgdm9pZCBz
ZXRMb2dnaW5nKHJ0Yzo6TG9nZ2luZ1NldmVyaXR5IGxldmVsKQogewotICAgIHJ0Yzo6TG9nTWVz
c2FnZTo6U2V0TG9nT3V0cHV0KGxldmVsLCAobGV2ZWwgPT0gcnRjOjpMU19OT05FKSA/IG51bGxw
dHIgOiBkb1JlbGVhc2VMb2dnaW5nKTsKKyAgICBydGM6OkxvZ01lc3NhZ2U6OlNldExvZ091dHB1
dChsZXZlbCwgZG9SZWxlYXNlTG9nZ2luZyk7CiB9CiAKIHN0YXRpYyBydGM6OkxvZ2dpbmdTZXZl
cml0eSBjb21wdXRlTG9nTGV2ZWwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2VDb2NvYS5jcHAKaW5kZXggOWRhMGI4NGQ5YjVhMTFlMWQ4N2IxOTg5MzdiMGUz
NmY5NGIwNmZkMi4uNmE3OTYwZjYzMjNjOTg5ZDdlYWJkZDA4YWQ1YTViYjZhYzg3NjYxZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
T3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwCkBA
IC01MCwxMCArNTAsNyBAQCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6UmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EoUmVmPE1lZGlhU3RyZQogewogfQogCi1SZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6flJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNv
Y29hKCkKLXsKLSAgICB1bm9ic2VydmVTb3VyY2UoKTsKLX0KK1JlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZUNvY29hOjp+UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EoKSA9IGRlZmF1
bHQ7CiAKIFJlZjxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U+IFJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZTo6Y3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBhdWRpb1Nv
dXJjZSkKIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VicnRjL1JUQ1J0cFJlY2VpdmVyLWdldFN5bmNocm9uaXphdGlvblNvdXJjZXMu
aHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJydGMvUlRDUnRwUmVjZWl2ZXItZ2V0U3luY2hyb25pemF0aW9uU291cmNlcy5o
dHRwcy1leHBlY3RlZC50eHQKaW5kZXggYmMyOTU1MWQ1YTBlMTFhMWE4Y2E2N2U1MDljNTg1ZDU2
NGIyMzhlOS4uNGI1OWViOTVmOTE2NDlkMDVhYTE3NjY4Y2QyZGE5YTE3MGFkZThjNiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMv
UlRDUnRwUmVjZWl2ZXItZ2V0U3luY2hyb25pemF0aW9uU291cmNlcy5odHRwcy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJy
dGMvUlRDUnRwUmVjZWl2ZXItZ2V0U3luY2hyb25pemF0aW9uU291cmNlcy5odHRwcy1leHBlY3Rl
ZC50eHQKQEAgLTE0LDI5ICsxNCwxMiBAQCBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjQzOiBsaXN0
ZW5Gb3JTU1JDcyBzdGFydAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDI0OTogbGlzdGVuRm9yU1NS
Q3MgZW5kCiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjQzOiBsaXN0ZW5Gb3JTU1JDcyBzdGFydAog
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDI0OTogbGlzdGVuRm9yU1NSQ3MgZW5kCi1DT05TT0xFIE1F
U1NBR0U6IGxpbmUgMjQzOiBsaXN0ZW5Gb3JTU1JDcyBzdGFydAotQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDI0OTogbGlzdGVuRm9yU1NSQ3MgZW5kCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMjQzOiBs
aXN0ZW5Gb3JTU1JDcyBzdGFydAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDI0OTogbGlzdGVuRm9y
U1NSQ3MgZW5kCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMjQzOiBsaXN0ZW5Gb3JTU1JDcyBzdGFy
dAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDI0OTogbGlzdGVuRm9yU1NSQ3MgZW5kCi1DT05TT0xF
IE1FU1NBR0U6IGxpbmUgMjQzOiBsaXN0ZW5Gb3JTU1JDcyBzdGFydAotQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDI0OTogbGlzdGVuRm9yU1NSQ3MgZW5kCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMjQz
OiBsaXN0ZW5Gb3JTU1JDcyBzdGFydAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDI0OTogbGlzdGVu
Rm9yU1NSQ3MgZW5kCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMjQzOiBsaXN0ZW5Gb3JTU1JDcyBz
dGFydAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDI0OTogbGlzdGVuRm9yU1NSQ3MgZW5kCiAKIFBB
U1MgW2F1ZGlvXSBnZXRTeW5jaHJvbml6YXRpb25Tb3VyY2VzKCkgZXZlbnR1YWxseSByZXR1cm5z
IGEgbm9uLWVtcHR5IGxpc3QgCiBQQVNTIFthdWRpb10gUlRDUnRwU3luY2hyb25pemF0aW9uU291
cmNlLnRpbWVzdGFtcCBpcyBhIG51bWJlciAKIFBBU1MgW2F1ZGlvXSBnZXRTeW5jaHJvbml6YXRp
b25Tb3VyY2VzKCkgZG9lcyBub3QgY29udGFpbiBTU1JDcyBvbGRlciB0aGFuIDEwIHNlY29uZHMg
CiBGQUlMIFthdWRpb10gUlRDUnRwU3luY2hyb25pemF0aW9uU291cmNlLnRpbWVzdGFtcCBpcyBj
b21wYXJhYmxlIHRvIHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4gKyBwZXJmb3JtYW5jZS5ub3coKSBh
c3NlcnRfdHJ1ZTogZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKIFBBU1MgW2F1ZGlvXSBSVENSdHBT
eW5jaHJvbml6YXRpb25Tb3VyY2Uuc291cmNlIGlzIGEgbnVtYmVyIAotUEFTUyBbdmlkZW9dIGdl
dFN5bmNocm9uaXphdGlvblNvdXJjZXMoKSBldmVudHVhbGx5IHJldHVybnMgYSBub24tZW1wdHkg
bGlzdCAKLVBBU1MgW3ZpZGVvXSBSVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2UudGltZXN0YW1w
IGlzIGEgbnVtYmVyIAotUEFTUyBbdmlkZW9dIGdldFN5bmNocm9uaXphdGlvblNvdXJjZXMoKSBk
b2VzIG5vdCBjb250YWluIFNTUkNzIG9sZGVyIHRoYW4gMTAgc2Vjb25kcyAKLUZBSUwgW3ZpZGVv
XSBSVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2UudGltZXN0YW1wIGlzIGNvbXBhcmFibGUgdG8g
cGVyZm9ybWFuY2UudGltZU9yaWdpbiArIHBlcmZvcm1hbmNlLm5vdygpIGFzc2VydF90cnVlOiBl
eHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotUEFTUyBbdmlkZW9dIFJUQ1J0cFN5bmNocm9uaXphdGlv
blNvdXJjZS5zb3VyY2UgaXMgYSBudW1iZXIgCiBQQVNTIFthdWRpby1vbmx5XSBSVENSdHBTeW5j
aHJvbml6YXRpb25Tb3VyY2UuYXVkaW9MZXZlbCBpcyBhIG51bWJlciBbMCwgMV0gCiBGQUlMIFth
dWRpby1vbmx5XSBSVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2Uudm9pY2VBY3Rpdml0eUZsYWcg
aXMgYSBib29sZWFuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJib29sZWFuIiBidXQgZ290ICJ1
bmRlZmluZWQiCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFJlY2VpdmVyLWdldFN5bmNocm9uaXphdGlvblNvdXJj
ZXMuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VicnRjL1JUQ1J0cFJlY2VpdmVyLWdldFN5bmNocm9uaXphdGlvblNvdXJjZXMuaHR0cHMu
aHRtbAppbmRleCA4MmNlM2JkODQ2N2I2YTI5ZTRiNDBhMTA1MTUxYjUwMzE0YjViZjQ2Li45ZDZl
ZWVjNDIwNmFiMzE5MmJlMjg2ZmFkODU0ODFlMTgzNzEwOTA3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBSZWNlaXZl
ci1nZXRTeW5jaHJvbml6YXRpb25Tb3VyY2VzLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwUmVjZWl2ZXItZ2V0
U3luY2hyb25pemF0aW9uU291cmNlcy5odHRwcy5odG1sCkBAIC0yNiw3ICsyNiw3IEBAIGFzeW5j
IGZ1bmN0aW9uIGluaXRpYXRlU2luZ2xlVHJhY2tDYWxsQW5kUmV0dXJuUmVjZWl2ZXIodCwga2lu
ZCkgewogICByZXR1cm4gdHJhY2tFdmVudC5yZWNlaXZlcjsKIH0KIAotZm9yIChjb25zdCBraW5k
IG9mIFsnYXVkaW8nLCAndmlkZW8nXSkgeworZm9yIChjb25zdCBraW5kIG9mIFsnYXVkaW8nXSkg
ewogICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgY29uc3QgcmVjZWl2ZXIgPSBhd2Fp
dCBpbml0aWF0ZVNpbmdsZVRyYWNrQ2FsbEFuZFJldHVyblJlY2VpdmVyKHQsIGtpbmQpOwogICAg
IGF3YWl0IGxpc3RlbkZvclNTUkNzKHQsIHJlY2VpdmVyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384298</attachid>
            <date>2019-11-25 07:44:45 -0800</date>
            <delta_ts>2019-12-02 07:59:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204570-20191125164443.patch</filename>
            <type>text/plain</type>
            <size>21021</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyODQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBlODExYTQyOTRhYWUx
OGNlMTI4MjFjOTk0NzYyZDdhNDA4NTY1NS4uMWJlNzg2NDViYzMwYjE5ODJmOWQwNThlZDYzZjc2
MzQ2ZDQxYzUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE5LTExLTI1ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UgYW5kIFJlYWx0aW1lT3V0Z29pbmdWaWRlb29Tb3VyY2Ugb2Jz
ZXJ2ZVNvdXJjZS91bm9ic2VydmVTb3VyY2UgcGF0dGVybgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0NTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwgdGhlIG91dGdvaW5nIHNvdXJj
ZSB3YXMgb2JzZXJ2aW5nL3Vub2JzZXJ2aW5nIGl0cyB0cmFjayBpZiBzaW5rcyB3ZXJlIGFkZGVk
L3JlbW92ZWQuCisgICAgICAgIFdlIG1hZGUgTGliV2ViUlRDUlRDUnRwU2VuZGVyQmFja2VuZCBl
bmRpbmcgdGhlIG9ic2VydmluZyBpbiBpdHMgZGVzdHJ1Y3Rvci4KKyAgICAgICAgVGhpcyBtYWtl
cyB0aGluZ3MgY29tcGxleCBhbmQgd2UgYXJlIG5vdCBhbHdheXMgdW5vYnNlcnZpbmcgZmFzdCBl
bm91Z2ggZm9yIGFsbCBvdXRnb2luZyBzb3VyY2VzLgorCisgICAgICAgIFRvIG1ha2UgaXQgc2lt
cGxlciwgdGhlIG91dGdvaW5nIHNvdXJjZSBpcyBubyBsb25nZXIgaGFuZGxpbmcgdGhlIG9ic2Vy
dmluZy91bm9ic2VydmluZyBvZiBpdHMgdHJhY2suCisgICAgICAgIEluc3RlYWQsIGl0cyBMaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kIGlzIGhhbmRsaW5nIGl0IGRpcmVjdGx5LgorICAgICAgICBP
YnNlcnZpbmcgc3RhcnRzIHdoZW4gTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZCBnZXRzIHRoZSB0
cmFjayBhbmQgdW5vYnNlcnZpbmcgaGFwcGVucyBlaXRoZXIgb24gTGliV2ViUlRDUnRwU2VuZGVy
QmFja2VuZCBkZXN0cnVjdGlvbgorICAgICAgICBvciB3aGVuIHRoZSBMaWJXZWJSVENSdHBTZW5k
ZXJCYWNrZW5kIGlzIG5vIGxvbmdlciBpbnRlcmVzdGVkIGluIHRoZSB0cmFjay4KKyAgICAgICAg
VGhpcyBpcyBzbGlnaHQgbGVzcyBvcHRpbWFsIGFzIHdlIG1pZ2h0IG9ic2VydmUgdGhlIHRyYWNr
IGV2ZW4gaWYgdGhlIHNvdXJjZSBoYXMgbm8gc2luayBidXQgdGhpcyBzaG91bGQgbm90IGhhcHBl
biBvZnRlbiBpbiBwcmFjdGljZS4KKworICAgICAgICBSZW1vdmVkIHNvbWUgdW5uZWVkZWQgbWV0
aG9kcy4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzIG5vIGxvbmdlciBmYWls
aW5nIGEgZGVidWcgQVNTRVJUSU9OLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6On5MaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFNlbmRlckJh
Y2tlbmQ6OnN0YXJ0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFNlbmRl
ckJhY2tlbmQ6OnN0b3BTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwU2Vu
ZGVyQmFja2VuZDo6cmVwbGFjZVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQ6OmF1ZGlvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJU
Q1J0cFNlbmRlckJhY2tlbmQ6OnZpZGVvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQ6Omhhc1NvdXJjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpzZXRTb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6dGFrZVNvdXJjZSk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6On5S
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlOjpvYnNlcnZlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6QWRkU2luayk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OlJlbW92ZVNpbmspOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzdGFydCk6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6flJlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2U6Om9ic2VydmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlOjpzZXRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlOjpBZGRPclVwZGF0ZVNpbmspOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpSZW1vdmVTaW5rKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6c3RhcnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYTo6flJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hKTogRGVsZXRlZC4KKwogMjAx
OS0xMS0yNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRW5h
YmxlIGxlZ2FjeSBnZXRVc2VyTWVkaWEgYXMgYSBxdWlyawpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcAppbmRleCA2Yzk2MWU1ZmEzMmI3Njk5ZjFiYTY4
N2I0N2ZkZDJmMjI1MjkwMDEzLi4xYTQ0NmQ5ODlkMDRiMDE3NGYwNDZmNzEwYTY0NTg2NGQ1NjQy
ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNw
cApAQCAtMzcsMjQgKzM3LDM4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorTGliV2ViUlRD
UnRwU2VuZGVyQmFja2VuZDo6TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZChMaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQmIGJhY2tlbmQsIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0
cFNlbmRlckludGVyZmFjZT4mJiBydGNTZW5kZXIsIFNvdXJjZSYmIHNvdXJjZSkKKyAgICA6IG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kKG1ha2VXZWFrUHRyKCZiYWNrZW5kKSkKKyAgICAsIG1fcnRj
U2VuZGVyKFdURk1vdmUocnRjU2VuZGVyKSkKKyAgICAsIG1fc291cmNlKFdURk1vdmUoc291cmNl
KSkKK3sKKyAgICBzdGFydFNvdXJjZSgpOworfQorCiBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
Ojp+TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZCgpCiB7Ci0gICAgV1RGOjpzd2l0Y2hPbihtX3Nv
dXJjZSwgW10gKFJlZjxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U+JiBzb3VyY2UpIHsKLSAg
ICAgICAgc291cmNlLT5zdG9wKCk7Ci0gICAgfSwgW10gKFJlZjxSZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2U+JiBzb3VyY2UpIHsKLSAgICAgICAgc291cmNlLT5zdG9wKCk7Ci0gICAgfSwgW10g
KHN0ZDo6bnVsbHB0cl90JikgeworICAgIHN0b3BTb3VyY2UoKTsKK30KKwordm9pZCBMaWJXZWJS
VENSdHBTZW5kZXJCYWNrZW5kOjpzdGFydFNvdXJjZSgpCit7CisgICAgc3dpdGNoT24obV9zb3Vy
Y2UsIFtdKFJlZjxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U+JiBzb3VyY2UpIHsKKyAgICAg
ICAgc291cmNlLT5zdGFydCgpOworICAgIH0sIFtdKFJlZjxSZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2U+JiBzb3VyY2UpIHsKKyAgICAgICAgc291cmNlLT5zdGFydCgpOworICAgIH0sIFtdKHN0
ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+
Ci1zdGF0aWMgaW5saW5lIGJvb2wgdXBkYXRlVHJhY2tTb3VyY2UoU291cmNlJiBzb3VyY2UsIE1l
ZGlhU3RyZWFtVHJhY2sqIHRyYWNrKQordm9pZCBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpz
dG9wU291cmNlKCkKIHsKLSAgICBpZiAoIXRyYWNrKSB7Ci0gICAgICAgIHNvdXJjZS5zdG9wKCk7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gc291cmNlLnNldFNvdXJj
ZSh0cmFjay0+cHJpdmF0ZVRyYWNrKCkpOworICAgIHN3aXRjaE9uKG1fc291cmNlLCBbXShSZWY8
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiYgc291cmNlKSB7CisgICAgICAgIHNvdXJjZS0+
c3RvcCgpOworICAgIH0sIFtdKFJlZjxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U+JiBzb3Vy
Y2UpIHsKKyAgICAgICAgc291cmNlLT5zdG9wKCk7CisgICAgfSwgW10oc3RkOjpudWxscHRyX3Qm
KSB7CisgICAgfSk7CisgICAgbV9zb3VyY2UgPSBudWxscHRyOwogfQogCiB2b2lkIExpYldlYlJU
Q1J0cFNlbmRlckJhY2tlbmQ6OnJlcGxhY2VUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBSVENSdHBTZW5kZXImIHNlbmRlciwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYg
dHJhY2ssIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCkBAIC02NCwyOCArNzgs
MjIgQEAgdm9pZCBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpyZXBsYWNlVHJhY2soU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUlQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGF1dG8qIGN1cnJlbnRUcmFjayA9IHNlbmRlci50cmFjaygpOwotCi0gICAgQVNTRVJUKCF0
cmFjayB8fCAhY3VycmVudFRyYWNrIHx8IGN1cnJlbnRUcmFjay0+c291cmNlKCkudHlwZSgpID09
IHRyYWNrLT5zb3VyY2UoKS50eXBlKCkpOwotICAgIGlmIChjdXJyZW50VHJhY2spIHsKLSAgICBz
d2l0Y2ggKGN1cnJlbnRUcmFjay0+c291cmNlKCkudHlwZSgpKSB7Ci0gICAgY2FzZSBSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlOjpOb25lOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbzoKLSAg
ICAgICAgaWYgKCF1cGRhdGVUcmFja1NvdXJjZSgqYXVkaW9Tb3VyY2UoKSwgdHJhY2suZ2V0KCkp
KSB7Ci0gICAgICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Ip
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW86Ci0gICAgICAgIGlmICghdXBkYXRl
VHJhY2tTb3VyY2UoKnZpZGVvU291cmNlKCksIHRyYWNrLmdldCgpKSkgewotICAgICAgICAgICAg
cHJvbWlzZS5yZWplY3QoSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICB9CisgICAgaWYgKCF0cmFjaykK
KyAgICAgICAgc3RvcFNvdXJjZSgpOworICAgIGVsc2UgaWYgKGF1dG8qIGN1cnJlbnRUcmFjayA9
IHNlbmRlci50cmFjaygpKSB7CisgICAgICAgIHN3aXRjaE9uKG1fc291cmNlLCBbJl0oUmVmPFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZT4mIHNvdXJjZSkgeworICAgICAgICAgICAgQVNTRVJU
KHRyYWNrLT5zb3VyY2UoKS50eXBlKCkgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVk
aW8pOworICAgICAgICAgICAgc291cmNlLT5zdG9wKCk7CisgICAgICAgICAgICBzb3VyY2UtPnNl
dFNvdXJjZSh0cmFjay0+cHJpdmF0ZVRyYWNrKCkpOworICAgICAgICAgICAgc291cmNlLT5zdGFy
dCgpOworICAgICAgICB9LCBbJl0oUmVmPFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZT4mIHNv
dXJjZSkgeworICAgICAgICAgICAgQVNTRVJUKHRyYWNrLT5zb3VyY2UoKS50eXBlKCkgPT0gUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW8pOworICAgICAgICAgICAgc291cmNlLT5zdG9w
KCk7CisgICAgICAgICAgICBzb3VyY2UtPnNldFNvdXJjZSh0cmFjay0+cHJpdmF0ZVRyYWNrKCkp
OworICAgICAgICAgICAgc291cmNlLT5zdGFydCgpOworICAgICAgICB9LCBbXShzdGQ6Om51bGxw
dHJfdCYpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9KTsK
ICAgICB9CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgcG9zdFRhc2sgb25jZSB0aGlzIHdo
b2xlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGFzIHBhcnQgb2YgdGhlIFJUQ1BlZXJDb25uZWN0aW9u
IG9wZXJhdGlvbiBxdWV1ZS4KQEAgLTEwNyw3ICsxMTUsNiBAQCB2b2lkIExpYldlYlJUQ1J0cFNl
bmRlckJhY2tlbmQ6OnJlcGxhY2VUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBSVAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgbV9zb3VyY2Ug
PSBudWxscHRyOwogICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC0+c2V0U2VuZGVyU291
cmNlRnJvbVRyYWNrKCp0aGlzLCAqcHJvdGVjdGVkU2VuZGVyLT50cmFjaygpKTsKICAgICAgICAg
cHJvbWlzZS5yZXNvbHZlKCk7CiAgICAgfSk7CkBAIC0xNTEsNiArMTU4LDM3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxSVENEVE1GU2VuZGVyQmFja2VuZD4gTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6
Y3JlYXRlRFRNRkJhY2tlCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDRFRNRlNlbmRl
ckJhY2tlbmQ+KG1fcnRjU2VuZGVyLT5HZXREdG1mU2VuZGVyKCkpOwogfQogCitSZWFsdGltZU91
dGdvaW5nVmlkZW9Tb3VyY2UqIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OnZpZGVvU291cmNl
KCkKK3sKKyAgICByZXR1cm4gc3dpdGNoT24obV9zb3VyY2UsCisgICAgICAgIFtdKFJlZjxSZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2U+JiBzb3VyY2UpIHsgcmV0dXJuIHNvdXJjZS5wdHIoKTsg
fSwKKyAgICAgICAgW10oY29uc3QgYXV0byYpIC0+IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJj
ZSogeyByZXR1cm4gbnVsbHB0cjsgfQorICAgICk7Cit9CisKK2Jvb2wgTGliV2ViUlRDUnRwU2Vu
ZGVyQmFja2VuZDo6aGFzU291cmNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3dpdGNoT24obV9z
b3VyY2UsCisgICAgICAgIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgeyByZXR1cm4gZmFsc2U7
IH0sCisgICAgICAgIFtdKGNvbnN0IGF1dG8mKSB7IHJldHVybiB0cnVlOyB9CisgICAgKTsKK30K
Kwordm9pZCBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpzZXRTb3VyY2UoU291cmNlJiYgc291
cmNlKQoreworICAgIHN0b3BTb3VyY2UoKTsKKyAgICBtX3NvdXJjZSA9IFdURk1vdmUoc291cmNl
KTsKKyAgICBzdGFydFNvdXJjZSgpOworfQorCit2b2lkIExpYldlYlJUQ1J0cFNlbmRlckJhY2tl
bmQ6OnRha2VTb3VyY2UoTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZCYgYmFja2VuZCkKK3sKKyAg
ICBBU1NFUlQoYmFja2VuZC5oYXNTb3VyY2UoKSk7CisgICAgc3RvcFNvdXJjZSgpOworICAgIG1f
c291cmNlID0gV1RGTW92ZShiYWNrZW5kLm1fc291cmNlKTsKKyAgICBiYWNrZW5kLm1fc291cmNl
ID0gbnVsbHB0cjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQl9SVEMpICYmIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENSdHBTZW5kZXJCYWNrZW5kLmgKaW5kZXggNTNlMTZlMDhhNjc3ZGNjNjRhZWNlNTYzZmM1MTk5
ZjAyNTRjOWYyYy4uM2FjMzdiMzZjMjM1ZjMzODQ4ZDRmOTgxZjhkMGQzMjg4MDhmMDMyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaApAQCAtNTQsNjAg
KzU0LDE2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB1c2luZyBTb3VyY2UgPSBWYXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiwgUmVmPFJlYWx0
aW1lT3V0Z29pbmdWaWRlb1NvdXJjZT4+OwotICAgIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQo
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kJiBiYWNrZW5kLCBydGM6OnNjb3BlZF9yZWZw
dHI8d2VicnRjOjpSdHBTZW5kZXJJbnRlcmZhY2U+JiYgcnRjU2VuZGVyLCBTb3VyY2UmJiBzb3Vy
Y2UpCi0gICAgICAgIDogbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQobWFrZVdlYWtQdHIoJmJhY2tl
bmQpKQotICAgICAgICAsIG1fcnRjU2VuZGVyKFdURk1vdmUocnRjU2VuZGVyKSkKLSAgICAgICAg
LCBtX3NvdXJjZShXVEZNb3ZlKHNvdXJjZSkpCi0gICAgewotICAgIH0KKyAgICBMaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kKExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCYsIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFNlbmRlckludGVyZmFjZT4mJiwgU291cmNlJiYpOwogICAg
IH5MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kKCk7CiAKICAgICB2b2lkIHNldFJUQ1NlbmRlcihy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBTZW5kZXJJbnRlcmZhY2U+JiYgcnRjU2VuZGVy
KSB7IG1fcnRjU2VuZGVyID0gV1RGTW92ZShydGNTZW5kZXIpOyB9CiAgICAgd2VicnRjOjpSdHBT
ZW5kZXJJbnRlcmZhY2UqIHJ0Y1NlbmRlcigpIHsgcmV0dXJuIG1fcnRjU2VuZGVyLmdldCgpOyB9
CiAKLSAgICBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UqIGF1ZGlvU291cmNlKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc291cmNlLAotICAgICAgICAgICAgW10g
KFJlZjxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U+JiBzb3VyY2UpIHsgcmV0dXJuIHNvdXJj
ZS5wdHIoKTsgfSwKLSAgICAgICAgICAgIFtdIChjb25zdCBhdXRvJikgLT4gUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlKiB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgICAgICk7Ci0gICAgfQot
Ci0gICAgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlKiB2aWRlb1NvdXJjZSgpCi0gICAgewot
ICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3NvdXJjZSwKLSAgICAgICAgICAgIFtdIChS
ZWY8UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlPiYgc291cmNlKSB7IHJldHVybiBzb3VyY2Uu
cHRyKCk7IH0sCi0gICAgICAgICAgICBbXSAoY29uc3QgYXV0byYpIC0+IFJlYWx0aW1lT3V0Z29p
bmdWaWRlb1NvdXJjZSogeyByZXR1cm4gbnVsbHB0cjsgfQotICAgICAgICApOwotICAgIH0KLQot
ICAgIGJvb2wgaGFzU291cmNlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OnN3
aXRjaE9uKG1fc291cmNlLAotICAgICAgICAgICAgW10gKGNvbnN0IHN0ZDo6bnVsbHB0cl90Jikg
eyByZXR1cm4gZmFsc2U7IH0sCi0gICAgICAgICAgICBbXSAoY29uc3QgYXV0byYpIHsgcmV0dXJu
IHRydWU7IH0KLSAgICAgICAgKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNsZWFyU291cmNlKCkKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChoYXNTb3VyY2UoKSk7Ci0gICAgICAgIG1fc291cmNlID0gbnVs
bHB0cjsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFNvdXJjZShTb3VyY2UmJiBzb3VyY2UpCi0gICAg
ewotICAgICAgICBBU1NFUlQoIWhhc1NvdXJjZSgpKTsKLSAgICAgICAgbV9zb3VyY2UgPSBXVEZN
b3ZlKHNvdXJjZSk7Ci0gICAgICAgIEFTU0VSVChoYXNTb3VyY2UoKSk7Ci0gICAgfQotCi0gICAg
dm9pZCB0YWtlU291cmNlKExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQmIGJhY2tlbmQpCi0gICAg
ewotICAgICAgICBBU1NFUlQoYmFja2VuZC5oYXNTb3VyY2UoKSk7Ci0gICAgICAgIHNldFNvdXJj
ZShXVEZNb3ZlKGJhY2tlbmQubV9zb3VyY2UpKTsKLSAgICAgICAgYmFja2VuZC5tX3NvdXJjZSA9
IG51bGxwdHI7Ci0gICAgfQorICAgIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZSogdmlkZW9T
b3VyY2UoKTsKKyAgICB2b2lkIGNsZWFyU291cmNlKCkgeyBzZXRTb3VyY2UobnVsbHB0cik7IH0K
KyAgICB2b2lkIHNldFNvdXJjZShTb3VyY2UmJik7CisgICAgdm9pZCB0YWtlU291cmNlKExpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHJlcGxhY2VUcmFj
ayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2s+JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSBmaW5hbDsKQEAgLTExNSw2
ICs3MSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UGFyYW1ldGVycyhjb25zdCBSVENSdHBT
ZW5kUGFyYW1ldGVycyYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSBmaW5hbDsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UlRDRFRNRlNlbmRlckJhY2tlbmQ+IGNyZWF0ZURUTUZCYWNrZW5kKCkg
ZmluYWw7CiAKKyAgICB2b2lkIHN0YXJ0U291cmNlKCk7CisgICAgdm9pZCBzdG9wU291cmNlKCk7
CisgICAgYm9vbCBoYXNTb3VyY2UoKSBjb25zdDsKKwogICAgIFdlYWtQdHI8TGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kPiBtX3BlZXJDb25uZWN0aW9uQmFja2VuZDsKICAgICBydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpSdHBTZW5kZXJJbnRlcmZhY2U+IG1fcnRjU2VuZGVyOwogICAg
IFNvdXJjZSBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCmlu
ZGV4IDY4Yjc1MGU3YWUyZDY1YmY1MzAyYTViZDU4ZDI3NjEwOWNkZDRlOTAuLjRjNmNlOWU2NGY3
YWJmNmU4NWEwZDM4MzA3NmI3MjAzN2RkY2FlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlLmNwcApAQCAtNDYsMTIgKzQ2LDE2IEBAIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJp
CiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6On5SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2UoKQogewogICAgIEFTU0VSVCghbV9hdWRpb1NvdXJjZS0+aGFzT2JzZXJ2ZXIoKnRoaXMpKTsK
KyNpZm5kZWYgTkRFQlVHCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3NpbmtzTG9jayk7
CisjZW5kaWYKICAgICBBU1NFUlQobV9zaW5rcy5pc0VtcHR5KCkpOwogICAgIHN0b3AoKTsKIH0K
IAogdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6Om9ic2VydmVTb3VyY2UoKQogewor
ICAgIEFTU0VSVCghbV9hdWRpb1NvdXJjZS0+aGFzT2JzZXJ2ZXIoKnRoaXMpKTsKICAgICBtX2F1
ZGlvU291cmNlLT5hZGRPYnNlcnZlcigqdGhpcyk7CiAgICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigp
OwogfQpAQCAtNjEsMjEgKzY1LDEzIEBAIHZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Ojp1bm9ic2VydmVTb3VyY2UoKQogICAgIG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0
aGlzKTsKIH0KIAotYm9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZShS
ZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYgbmV3U291cmNlKQordm9pZCBSZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+
JiYgbmV3U291cmNlKQogewogICAgIEFMV0FZU19MT0coIkNoYW5naW5nIHNvdXJjZSB0byAiLCBu
ZXdTb3VyY2UtPmxvZ0lkZW50aWZpZXIoKSk7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X3NpbmtzTG9jayk7Ci0gICAgYm9vbCBoYXNTaW5rcyA9ICFtX3NpbmtzLmlzRW1wdHkoKTsKIAot
ICAgIGlmIChoYXNTaW5rcykKLSAgICAgICAgdW5vYnNlcnZlU291cmNlKCk7CisgICAgQVNTRVJU
KCFtX2F1ZGlvU291cmNlLT5oYXNPYnNlcnZlcigqdGhpcykpOwogICAgIG1fYXVkaW9Tb3VyY2Ug
PSBXVEZNb3ZlKG5ld1NvdXJjZSk7Ci0gICAgaWYgKGhhc1NpbmtzKQotICAgICAgICBvYnNlcnZl
U291cmNlKCk7Ci0KICAgICBzb3VyY2VVcGRhdGVkKCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmluaXRpYWxpemVDb252ZXJ0ZXIo
KQpAQCAtOTYsMjYgKzkyLDE0IEBAIHZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpz
b3VyY2VFbmFibGVkQ2hhbmdlZCgpCiAKIHZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
OjpBZGRTaW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqIHNpbmspCiB7Ci0gICAg
ewogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zaW5rc0xvY2spOwotICAgIGlmICghbV9z
aW5rcy5hZGQoc2luaykgfHwgbV9zaW5rcy5zaXplKCkgIT0gMSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0oKSB7Ci0gICAgICAgIHByb3RlY3RlZFRoaXMtPm9ic2VydmVTb3VyY2UoKTsKLSAgICB9
KTsKKyAgICBtX3NpbmtzLmFkZChzaW5rKTsKIH0KIAogdm9pZCBSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2U6OlJlbW92ZVNpbmsod2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSogc2lu
aykKIHsKLSAgICB7CiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3NpbmtzTG9jayk7Ci0g
ICAgaWYgKCFtX3NpbmtzLnJlbW92ZShzaW5rKSB8fCAhbV9zaW5rcy5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB1bm9ic2VydmVTb3VyY2UoKTsKKyAgICBtX3Npbmtz
LnJlbW92ZShzaW5rKTsKIH0KIAogdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNl
bmRBdWRpb0ZyYW1lcyhjb25zdCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBp
bnQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZy
YW1lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKaW5kZXggYTUzMmEzZTUyZGNi
NTFiYjkxNTk5ODZlNjNlYzE2NDg4MTExYWFmOS4uODE2NzYxM2RhZDhmMjMyM2YyMWZiOTcxMjA3
NzY1ODQ0MTQzYzA2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKQEAgLTY0
LDE2ICs2NCwxNSBAQCBwdWJsaWM6CiAKICAgICB+UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
KCk7CiAKKyAgICB2b2lkIHN0YXJ0KCkgeyBvYnNlcnZlU291cmNlKCk7IH0KICAgICB2b2lkIHN0
b3AoKSB7IHVub2JzZXJ2ZVNvdXJjZSgpOyB9CiAKLSAgICBib29sIHNldFNvdXJjZShSZWY8TWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU+JiYpOworICAgIHZvaWQgc2V0U291cmNlKFJlZjxNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZT4mJik7CiAgICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHNvdXJj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Tb3VyY2UuZ2V0KCk7IH0KIAogcHJvdGVjdGVkOgog
ICAgIGV4cGxpY2l0IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZShSZWY8TWVkaWFTdHJlYW1U
cmFja1ByaXZhdGU+JiYpOwogCi0gICAgdm9pZCB1bm9ic2VydmVTb3VyY2UoKTsKLQogICAgIGJv
b2wgaXNTaWxlbmNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0ZWQgfHwgIW1fZW5hYmxlZDsgfQog
CiAgICAgdm9pZCBzZW5kQXVkaW9GcmFtZXMoY29uc3Qgdm9pZCogYXVkaW9EYXRhLCBpbnQgYml0
c1BlclNhbXBsZSwgaW50IHNhbXBsZVJhdGUsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBzaXpl
X3QgbnVtYmVyT2ZGcmFtZXMpOwpAQCAtMTA1LDYgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBVbnJlZ2lzdGVyT2JzZXJ2ZXIod2VicnRjOjpPYnNlcnZlckludGVyZmFjZSopIGZpbmFsIHsg
fQogCiAgICAgdm9pZCBvYnNlcnZlU291cmNlKCk7CisgICAgdm9pZCB1bm9ic2VydmVTb3VyY2Uo
KTsKIAogICAgIHZvaWQgc291cmNlTXV0ZWRDaGFuZ2VkKCk7CiAgICAgdm9pZCBzb3VyY2VFbmFi
bGVkQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAKaW5kZXgg
YTJiZDUwMDE2ZjRjNDk4MTQ3NDgwYTVlOGEyM2VmOWFmYTc1OGU4OS4uOTM4NGRhNWY2MDA1YWRl
Mzc3NGM2NDg0ZDNlOTU5ZmM5MmYyNTRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2UuY3BwCkBAIC01NiwxMyArNTYsMTcgQEAgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
OjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcmkKIAog
UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjp+UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
KCkKIHsKLSAgICBBU1NFUlQoIW1fdmlkZW9Tb3VyY2UtPmhhc09ic2VydmVyKCp0aGlzKSk7CitB
U1NFUlQoIW1fdmlkZW9Tb3VyY2UtPmhhc09ic2VydmVyKCp0aGlzKSk7CisjaWZuZGVmIE5ERUJV
RworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zaW5rc0xvY2spOworI2VuZGlmCiAgICAg
QVNTRVJUKG1fc2lua3MuaXNFbXB0eSgpKTsKICAgICBzdG9wKCk7CiB9CiAKIHZvaWQgUmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlOjpvYnNlcnZlU291cmNlKCkKIHsKKyAgICBBU1NFUlQoIW1f
dmlkZW9Tb3VyY2UtPmhhc09ic2VydmVyKCp0aGlzKSk7CiAgICAgbV92aWRlb1NvdXJjZS0+YWRk
T2JzZXJ2ZXIoKnRoaXMpOwogICAgIGluaXRpYWxpemVGcm9tU291cmNlKCk7CiB9CkBAIC03Miwy
MSArNzYsMTAgQEAgdm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OnVub2JzZXJ2ZVNv
dXJjZSgpCiAgICAgbV92aWRlb1NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwogfQogCi1i
b29sIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZT4mJiBuZXdTb3VyY2UpCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZTo6c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBuZXdTb3VyY2Up
CiB7Ci0gICAgaWYgKCFtX2luaXRpYWxTZXR0aW5ncykKLSAgICAgICAgbV9pbml0aWFsU2V0dGlu
Z3MgPSBtX3ZpZGVvU291cmNlLT5zb3VyY2UoKS5zZXR0aW5ncygpOwotCi0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX3NpbmtzTG9jayk7Ci0gICAgYm9vbCBoYXNTaW5rcyA9ICFtX3Npbmtz
LmlzRW1wdHkoKTsKLQotICAgIGlmIChoYXNTaW5rcykKLSAgICAgICAgdW5vYnNlcnZlU291cmNl
KCk7CisgICAgQVNTRVJUKCFtX3ZpZGVvU291cmNlLT5oYXNPYnNlcnZlcigqdGhpcykpOwogICAg
IG1fdmlkZW9Tb3VyY2UgPSBXVEZNb3ZlKG5ld1NvdXJjZSk7Ci0gICAgaWYgKGhhc1NpbmtzKQot
ICAgICAgICBvYnNlcnZlU291cmNlKCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBS
ZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OnN0b3AoKQpAQCAtMTQ0LDMyICsxMzcsMTQgQEAg
dm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OkFkZE9yVXBkYXRlU2luayhydGM6OlZp
ZGVvU2lua0ludGVyZmFjZTx3ZWJydGMKICAgICBpZiAoc2lua1dhbnRzLnJvdGF0aW9uX2FwcGxp
ZWQpCiAgICAgICAgIG1fc2hvdWxkQXBwbHlSb3RhdGlvbiA9IHRydWU7CiAKLSAgICB7CiAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3NpbmtzTG9jayk7Ci0gICAgaWYgKCFtX3NpbmtzLmFk
ZChzaW5rKSB8fCBtX3NpbmtzLnNpemUoKSAhPSAxKQotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgp
IHsKLSAgICAgICAgcHJvdGVjdGVkVGhpcy0+b2JzZXJ2ZVNvdXJjZSgpOwotICAgIH0pOworICAg
IG1fc2lua3MuYWRkKHNpbmspOwogfQogCiB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJj
ZTo6UmVtb3ZlU2luayhydGM6OlZpZGVvU2lua0ludGVyZmFjZTx3ZWJydGM6OlZpZGVvRnJhbWU+
KiBzaW5rKQogewotICAgIHsKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc2lua3NMb2Nr
KTsKLQotICAgIGlmICghbV9zaW5rcy5yZW1vdmUoc2luaykgfHwgbV9zaW5rcy5zaXplKCkpCi0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB1bm9ic2VydmVTb3VyY2UoKTsKLQotICAgIGNh
bGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSB7Ci0gICAg
ICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX2JsYWNrRnJhbWVUaW1lci5pc0FjdGl2ZSgpKQotICAg
ICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9ibGFja0ZyYW1lVGltZXIuc3RvcCgpOwotICAgIH0p
OworICAgIG1fc2lua3MucmVtb3ZlKHNpbmspOwogfQogCiB2b2lkIFJlYWx0aW1lT3V0Z29pbmdW
aWRlb1NvdXJjZTo6c2VuZEJsYWNrRnJhbWVzSWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2UuaAppbmRleCA1MDVmZGM0YmE3MTdmMzhiYzkyZGFmMWZkYzMwNDBmNDczMzc5
ZGY4Li5lMmE0OGQwODI3N2NlMzEwZjY3YjAwMDhhZTAwZWY4MTg2MGQ5OGU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaApAQCAtNTksOCArNTksOSBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U+IGNyZWF0ZShSZWY8TWVkaWFT
dHJlYW1UcmFja1ByaXZhdGU+JiYgdmlkZW9Tb3VyY2UpOwogICAgIH5SZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2UoKTsKIAorICAgIHZvaWQgc3RhcnQoKSB7IG9ic2VydmVTb3VyY2UoKTsgfQog
ICAgIHZvaWQgc3RvcCgpOwotICAgIGJvb2wgc2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZT4mJik7CisgICAgdm9pZCBzZXRTb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlPiYmKTsKICAgICBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgc291cmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV92aWRlb1NvdXJjZS5nZXQoKTsgfQogCiAgICAgdm9pZCBBZGRSZWYoKSBjb25zdCBm
aW5hbCB7IHJlZigpOyB9CkBAIC0xMjgsNyArMTI5LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRy
YWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IH0KIAogICAgIFJlZjxN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4gbV92aWRlb1NvdXJjZTsKLSAgICBPcHRpb25hbDxSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1faW5pdGlhbFNldHRpbmdzOwogICAgIFRpbWVyIG1f
YmxhY2tGcmFtZVRpbWVyOwogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJh
bWVCdWZmZXI+IG1fYmxhY2tGcmFtZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxp
YldlYlJUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlTGliV2ViUlRDLmNwcAppbmRleCA3MjAzZDdk
MzYzYzdlMzdjOWQ3MDY5MzU4NzM3MGRjZDFmOWY2YTcwLi5hODA1Yzg0Nzg0YzRlMGQ2NTNlMTBm
NmI0ZTQ1Y2ZlZWQ0ZDMxNGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlTGliV2ViUlRD
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlTGliV2ViUlRDLmNwcApAQCAtMzgsNyArMzgsNiBA
QCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEM6OlJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZUxpYldlYlJUQyhSZWY8TQogCiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VM
aWJXZWJSVEM6On5SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEMoKQogewotICAg
IHVub2JzZXJ2ZVNvdXJjZSgpOwogICAgIG1fc2FtcGxlQ29udmVydGVyID0gbnVsbHB0cjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAK
aW5kZXggOWRhMGI4NGQ5YjVhMTFlMWQ4N2IxOTg5MzdiMGUzNmY5NGIwNmZkMi4uNmE3OTYwZjYz
MjNjOTg5ZDdlYWJkZDA4YWQ1YTViYjZhYzg3NjYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNv
Y29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwCkBAIC01MCwxMCArNTAsNyBAQCBSZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EoUmVmPE1lZGlhU3RyZQogewogfQogCi1SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYTo6flJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hKCkKLXsKLSAgICB1bm9ic2Vy
dmVTb3VyY2UoKTsKLX0KK1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjp+UmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EoKSA9IGRlZmF1bHQ7CiAKIFJlZjxSZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2U+IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKFJl
ZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBhdWRpb1NvdXJjZSkKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384622</attachid>
            <date>2019-12-02 07:59:48 -0800</date>
            <delta_ts>2019-12-02 09:26:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204570-20191202165947.patch</filename>
            <type>text/plain</type>
            <size>21111</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyOTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOThkNTM0YjM3NzFhMjc5
MWFkZDQ3MTkwMDEzNjRmNTA5M2QxZjllNy4uMTY1NjljYTU5NGNhMWNkMWM4YmU3OTQ4NWFhNjAw
MGFlM2I5ZjRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE5LTEyLTAyICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UgYW5kIFJlYWx0aW1lT3V0Z29pbmdWaWRlb29Tb3VyY2Ugb2Jz
ZXJ2ZVNvdXJjZS91bm9ic2VydmVTb3VyY2UgcGF0dGVybgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0NTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBDYXJsc29uLgorCisgICAgICAgIFByZXZpb3VzbHksIHRoZSBvdXRnb2luZyBzb3VyY2Ug
d2FzIG9ic2VydmluZy91bm9ic2VydmluZyBpdHMgdHJhY2sgaWYgc2lua3Mgd2VyZSBhZGRlZC9y
ZW1vdmVkLgorICAgICAgICBXZSBtYWRlIExpYldlYlJUQ1JUQ1J0cFNlbmRlckJhY2tlbmQgc3Rv
cHBpbmcgdGhlIG9ic2VydmluZyBpbiBpdHMgZGVzdHJ1Y3Rvci4KKyAgICAgICAgVGhpcyBtYWtl
cyB0aGluZ3MgY29tcGxleCBhbmQgd2UgYXJlIG5vdCBhbHdheXMgdW5vYnNlcnZpbmcgZmFzdCBl
bm91Z2ggZm9yIGFsbCBvdXRnb2luZyBzb3VyY2VzLgorCisgICAgICAgIFRvIG1ha2UgaXQgc2lt
cGxlciwgdGhlIG91dGdvaW5nIHNvdXJjZSBpcyBubyBsb25nZXIgaGFuZGxpbmcgdGhlIG9ic2Vy
dmluZy91bm9ic2VydmluZyBvZiBpdHMgdHJhY2suCisgICAgICAgIEluc3RlYWQsIGl0cyBMaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kIGlzIGhhbmRsaW5nIGl0IGRpcmVjdGx5LgorICAgICAgICBP
YnNlcnZpbmcgc3RhcnRzIHdoZW4gTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZCBnZXRzIHRoZSB0
cmFjayBhbmQgdW5vYnNlcnZpbmcgaGFwcGVucyBlaXRoZXIgb24gTGliV2ViUlRDUnRwU2VuZGVy
QmFja2VuZCBkZXN0cnVjdGlvbgorICAgICAgICBvciB3aGVuIHRoZSBMaWJXZWJSVENSdHBTZW5k
ZXJCYWNrZW5kIGlzIG5vIGxvbmdlciBpbnRlcmVzdGVkIGluIHRoZSB0cmFjay4KKyAgICAgICAg
VGhpcyBpcyBzbGlnaHQgbGVzcyBvcHRpbWFsIGFzIHdlIG1pZ2h0IG9ic2VydmUgdGhlIHRyYWNr
IGV2ZW4gaWYgdGhlIHNvdXJjZSBoYXMgbm8gc2luayBidXQgdGhpcyBzaG91bGQgbm90IGhhcHBl
biBvZnRlbiBpbiBwcmFjdGljZS4KKworICAgICAgICBSZW1vdmVkIHNvbWUgdW5uZWVkZWQgbWV0
aG9kcy4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzIG5vIGxvbmdlciBmYWls
aW5nIGEgZGVidWcgQVNTRVJUSU9OLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6On5MaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFNlbmRlckJh
Y2tlbmQ6OnN0YXJ0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFNlbmRl
ckJhY2tlbmQ6OnN0b3BTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwU2Vu
ZGVyQmFja2VuZDo6cmVwbGFjZVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQ6OmF1ZGlvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJU
Q1J0cFNlbmRlckJhY2tlbmQ6OnZpZGVvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQ6Omhhc1NvdXJjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpzZXRTb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6dGFrZVNvdXJjZSk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6On5S
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlOjpvYnNlcnZlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6QWRkU2luayk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OlJlbW92ZVNpbmspOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzdGFydCk6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6flJlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2U6Om9ic2VydmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlOjpzZXRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlOjpBZGRPclVwZGF0ZVNpbmspOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpSZW1vdmVTaW5rKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6c3RhcnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYTo6flJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hKTogRGVsZXRlZC4KKwogMjAx
OS0xMi0wMiAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgW0Nv
Y29hXSBSdW4gY2FtZXJhIGNhcHR1cmUgaW4gVUlQcm9jZXNzIGJ5IGRlZmF1bHQgaW4gbGF5b3V0
IHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3Bw
CmluZGV4IDZjOTYxZTVmYTMyYjc2OTlmMWJhNjg3YjQ3ZmRkMmYyMjUyOTAwMTMuLjFhNDQ2ZDk4
OWQwNGIwMTc0ZjA0NmY3MTBhNjQ1ODY0ZDU2NDJkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tl
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCkBAIC0zNywyNCArMzcsMzggQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpMaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kKExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCYgYmFja2VuZCwg
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwU2VuZGVySW50ZXJmYWNlPiYmIHJ0Y1NlbmRl
ciwgU291cmNlJiYgc291cmNlKQorICAgIDogbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQobWFrZVdl
YWtQdHIoJmJhY2tlbmQpKQorICAgICwgbV9ydGNTZW5kZXIoV1RGTW92ZShydGNTZW5kZXIpKQor
ICAgICwgbV9zb3VyY2UoV1RGTW92ZShzb3VyY2UpKQoreworICAgIHN0YXJ0U291cmNlKCk7Cit9
CisKIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6On5MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
KCkKIHsKLSAgICBXVEY6OnN3aXRjaE9uKG1fc291cmNlLCBbXSAoUmVmPFJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZT4mIHNvdXJjZSkgewotICAgICAgICBzb3VyY2UtPnN0b3AoKTsKLSAgICB9
LCBbXSAoUmVmPFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZT4mIHNvdXJjZSkgewotICAgICAg
ICBzb3VyY2UtPnN0b3AoKTsKLSAgICB9LCBbXSAoc3RkOjpudWxscHRyX3QmKSB7CisgICAgc3Rv
cFNvdXJjZSgpOworfQorCit2b2lkIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OnN0YXJ0U291
cmNlKCkKK3sKKyAgICBzd2l0Y2hPbihtX3NvdXJjZSwgW10oUmVmPFJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZT4mIHNvdXJjZSkgeworICAgICAgICBzb3VyY2UtPnN0YXJ0KCk7CisgICAgfSwg
W10oUmVmPFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZT4mIHNvdXJjZSkgeworICAgICAgICBz
b3VyY2UtPnN0YXJ0KCk7CisgICAgfSwgW10oc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZT4KLXN0YXRpYyBpbmxpbmUgYm9vbCB1cGRhdGVU
cmFja1NvdXJjZShTb3VyY2UmIHNvdXJjZSwgTWVkaWFTdHJlYW1UcmFjayogdHJhY2spCit2b2lk
IExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OnN0b3BTb3VyY2UoKQogewotICAgIGlmICghdHJh
Y2spIHsKLSAgICAgICAgc291cmNlLnN0b3AoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotICAgIHJldHVybiBzb3VyY2Uuc2V0U291cmNlKHRyYWNrLT5wcml2YXRlVHJhY2soKSk7Cisg
ICAgc3dpdGNoT24obV9zb3VyY2UsIFtdKFJlZjxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U+
JiBzb3VyY2UpIHsKKyAgICAgICAgc291cmNlLT5zdG9wKCk7CisgICAgfSwgW10oUmVmPFJlYWx0
aW1lT3V0Z29pbmdWaWRlb1NvdXJjZT4mIHNvdXJjZSkgeworICAgICAgICBzb3VyY2UtPnN0b3Ao
KTsKKyAgICB9LCBbXShzdGQ6Om51bGxwdHJfdCYpIHsKKyAgICB9KTsKKyAgICBtX3NvdXJjZSA9
IG51bGxwdHI7CiB9CiAKIHZvaWQgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6cmVwbGFjZVRy
YWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJUQ1J0cFNlbmRlciYgc2VuZGVy
LCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYgcHJvbWlzZSkKQEAgLTY0LDI4ICs3OCwyMiBAQCB2b2lkIExpYldlYlJUQ1J0cFNlbmRl
ckJhY2tlbmQ6OnJlcGxhY2VUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBS
VAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byogY3VycmVudFRyYWNrID0gc2Vu
ZGVyLnRyYWNrKCk7Ci0KLSAgICBBU1NFUlQoIXRyYWNrIHx8ICFjdXJyZW50VHJhY2sgfHwgY3Vy
cmVudFRyYWNrLT5zb3VyY2UoKS50eXBlKCkgPT0gdHJhY2stPnNvdXJjZSgpLnR5cGUoKSk7Ci0g
ICAgaWYgKGN1cnJlbnRUcmFjaykgewotICAgIHN3aXRjaCAoY3VycmVudFRyYWNrLT5zb3VyY2Uo
KS50eXBlKCkpIHsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6Ok5vbmU6Ci0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBwcm9taXNlLnJlamVjdChJbnZh
bGlkTW9kaWZpY2F0aW9uRXJyb3IpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvOgotICAgICAgICBpZiAoIXVwZGF0ZVRyYWNrU291cmNl
KCphdWRpb1NvdXJjZSgpLCB0cmFjay5nZXQoKSkpIHsKLSAgICAgICAgICAgIHByb21pc2UucmVq
ZWN0KEludmFsaWRNb2RpZmljYXRpb25FcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
OjpWaWRlbzoKLSAgICAgICAgaWYgKCF1cGRhdGVUcmFja1NvdXJjZSgqdmlkZW9Tb3VyY2UoKSwg
dHJhY2suZ2V0KCkpKSB7Ci0gICAgICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkTW9kaWZp
Y2F0aW9uRXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KKyAgICBpZiAoIXRyYWNrKQorICAgICAgICBzdG9wU291cmNlKCk7CisgICAg
ZWxzZSBpZiAoYXV0byogY3VycmVudFRyYWNrID0gc2VuZGVyLnRyYWNrKCkpIHsKKyAgICAgICAg
c3dpdGNoT24obV9zb3VyY2UsIFsmXShSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiYg
c291cmNlKSB7CisgICAgICAgICAgICBBU1NFUlQodHJhY2stPnNvdXJjZSgpLnR5cGUoKSA9PSBS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyk7CisgICAgICAgICAgICBzb3VyY2UtPnN0
b3AoKTsKKyAgICAgICAgICAgIHNvdXJjZS0+c2V0U291cmNlKHRyYWNrLT5wcml2YXRlVHJhY2so
KSk7CisgICAgICAgICAgICBzb3VyY2UtPnN0YXJ0KCk7CisgICAgICAgIH0sIFsmXShSZWY8UmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlPiYgc291cmNlKSB7CisgICAgICAgICAgICBBU1NFUlQo
dHJhY2stPnNvdXJjZSgpLnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRl
byk7CisgICAgICAgICAgICBzb3VyY2UtPnN0b3AoKTsKKyAgICAgICAgICAgIHNvdXJjZS0+c2V0
U291cmNlKHRyYWNrLT5wcml2YXRlVHJhY2soKSk7CisgICAgICAgICAgICBzb3VyY2UtPnN0YXJ0
KCk7CisgICAgICAgIH0sIFtdKHN0ZDo6bnVsbHB0cl90JikgeworICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0pOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBSZW1v
dmUgdGhpcyBwb3N0VGFzayBvbmNlIHRoaXMgd2hvbGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgYXMg
cGFydCBvZiB0aGUgUlRDUGVlckNvbm5lY3Rpb24gb3BlcmF0aW9uIHF1ZXVlLgpAQCAtMTA3LDcg
KzExNSw2IEBAIHZvaWQgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6cmVwbGFjZVRyYWNrKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJUCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBtX3NvdXJjZSA9IG51bGxwdHI7CiAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLT5zZXRTZW5kZXJTb3VyY2VGcm9tVHJhY2soKnRoaXMsICpwcm90ZWN0
ZWRTZW5kZXItPnRyYWNrKCkpOwogICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKICAgICB9KTsK
QEAgLTE1MSw2ICsxNTgsMzcgQEAgc3RkOjp1bmlxdWVfcHRyPFJUQ0RUTUZTZW5kZXJCYWNrZW5k
PiBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpjcmVhdGVEVE1GQmFja2UKICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxMaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZD4obV9ydGNTZW5kZXItPkdldER0
bWZTZW5kZXIoKSk7CiB9CiAKK1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZSogTGliV2ViUlRD
UnRwU2VuZGVyQmFja2VuZDo6dmlkZW9Tb3VyY2UoKQoreworICAgIHJldHVybiBzd2l0Y2hPbiht
X3NvdXJjZSwKKyAgICAgICAgW10oUmVmPFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZT4mIHNv
dXJjZSkgeyByZXR1cm4gc291cmNlLnB0cigpOyB9LAorICAgICAgICBbXShjb25zdCBhdXRvJikg
LT4gUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlKiB7IHJldHVybiBudWxscHRyOyB9CisgICAg
KTsKK30KKworYm9vbCBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpoYXNTb3VyY2UoKSBjb25z
dAoreworICAgIHJldHVybiBzd2l0Y2hPbihtX3NvdXJjZSwKKyAgICAgICAgW10oY29uc3Qgc3Rk
OjpudWxscHRyX3QmKSB7IHJldHVybiBmYWxzZTsgfSwKKyAgICAgICAgW10oY29uc3QgYXV0byYp
IHsgcmV0dXJuIHRydWU7IH0KKyAgICApOworfQorCit2b2lkIExpYldlYlJUQ1J0cFNlbmRlckJh
Y2tlbmQ6OnNldFNvdXJjZShTb3VyY2UmJiBzb3VyY2UpCit7CisgICAgc3RvcFNvdXJjZSgpOwor
ICAgIG1fc291cmNlID0gV1RGTW92ZShzb3VyY2UpOworICAgIHN0YXJ0U291cmNlKCk7Cit9CisK
K3ZvaWQgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6dGFrZVNvdXJjZShMaWJXZWJSVENSdHBT
ZW5kZXJCYWNrZW5kJiBiYWNrZW5kKQoreworICAgIEFTU0VSVChiYWNrZW5kLmhhc1NvdXJjZSgp
KTsKKyAgICBzdG9wU291cmNlKCk7CisgICAgbV9zb3VyY2UgPSBXVEZNb3ZlKGJhY2tlbmQubV9z
b3VyY2UpOworICAgIGJhY2tlbmQubV9zb3VyY2UgPSBudWxscHRyOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykgJiYgVVNFKExJQldFQlJU
QykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaAppbmRleCA1
M2UxNmUwOGE2NzdkY2M2NGFlY2U1NjNmYzUxOTlmMDI1NGM5ZjJjLi4zYWMzN2IzNmMyMzVmMzM4
NDhkNGY5ODFmOGQwZDMyODgwOGYwMzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UnRwU2VuZGVyQmFja2VuZC5oCkBAIC01NCw2MCArNTQsMTYgQEAgcHVibGljOgogICAgIH0KIAog
ICAgIHVzaW5nIFNvdXJjZSA9IFZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxSZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2U+LCBSZWY8UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlPj47Ci0g
ICAgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZChMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQmIGJhY2tlbmQsIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFNlbmRlckludGVyZmFj
ZT4mJiBydGNTZW5kZXIsIFNvdXJjZSYmIHNvdXJjZSkKLSAgICAgICAgOiBtX3BlZXJDb25uZWN0
aW9uQmFja2VuZChtYWtlV2Vha1B0cigmYmFja2VuZCkpCi0gICAgICAgICwgbV9ydGNTZW5kZXIo
V1RGTW92ZShydGNTZW5kZXIpKQotICAgICAgICAsIG1fc291cmNlKFdURk1vdmUoc291cmNlKSkK
LSAgICB7Ci0gICAgfQorICAgIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQoTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kJiwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwU2VuZGVy
SW50ZXJmYWNlPiYmLCBTb3VyY2UmJik7CiAgICAgfkxpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQo
KTsKIAogICAgIHZvaWQgc2V0UlRDU2VuZGVyKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0
cFNlbmRlckludGVyZmFjZT4mJiBydGNTZW5kZXIpIHsgbV9ydGNTZW5kZXIgPSBXVEZNb3ZlKHJ0
Y1NlbmRlcik7IH0KICAgICB3ZWJydGM6OlJ0cFNlbmRlckludGVyZmFjZSogcnRjU2VuZGVyKCkg
eyByZXR1cm4gbV9ydGNTZW5kZXIuZ2V0KCk7IH0KIAotICAgIFJlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZSogYXVkaW9Tb3VyY2UoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6c3dpdGNo
T24obV9zb3VyY2UsCi0gICAgICAgICAgICBbXSAoUmVmPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZT4mIHNvdXJjZSkgeyByZXR1cm4gc291cmNlLnB0cigpOyB9LAotICAgICAgICAgICAgW10g
KGNvbnN0IGF1dG8mKSAtPiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UqIHsgcmV0dXJuIG51
bGxwdHI7IH0KLSAgICAgICAgKTsKLSAgICB9Ci0KLSAgICBSZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2UqIHZpZGVvU291cmNlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OnN3aXRjaE9u
KG1fc291cmNlLAotICAgICAgICAgICAgW10gKFJlZjxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2U+JiBzb3VyY2UpIHsgcmV0dXJuIHNvdXJjZS5wdHIoKTsgfSwKLSAgICAgICAgICAgIFtdIChj
b25zdCBhdXRvJikgLT4gUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlKiB7IHJldHVybiBudWxs
cHRyOyB9Ci0gICAgICAgICk7Ci0gICAgfQotCi0gICAgYm9vbCBoYXNTb3VyY2UoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9zb3VyY2UsCi0gICAgICAgICAg
ICBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7IHJldHVybiBmYWxzZTsgfSwKLSAgICAgICAg
ICAgIFtdIChjb25zdCBhdXRvJikgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICApOwotICAgIH0K
LQotICAgIHZvaWQgY2xlYXJTb3VyY2UoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGhhc1NvdXJj
ZSgpKTsKLSAgICAgICAgbV9zb3VyY2UgPSBudWxscHRyOwotICAgIH0KLQotICAgIHZvaWQgc2V0
U291cmNlKFNvdXJjZSYmIHNvdXJjZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghaGFzU291cmNl
KCkpOwotICAgICAgICBtX3NvdXJjZSA9IFdURk1vdmUoc291cmNlKTsKLSAgICAgICAgQVNTRVJU
KGhhc1NvdXJjZSgpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHRha2VTb3VyY2UoTGliV2ViUlRDUnRw
U2VuZGVyQmFja2VuZCYgYmFja2VuZCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChiYWNrZW5kLmhh
c1NvdXJjZSgpKTsKLSAgICAgICAgc2V0U291cmNlKFdURk1vdmUoYmFja2VuZC5tX3NvdXJjZSkp
OwotICAgICAgICBiYWNrZW5kLm1fc291cmNlID0gbnVsbHB0cjsKLSAgICB9CisgICAgUmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlKiB2aWRlb1NvdXJjZSgpOworICAgIHZvaWQgY2xlYXJTb3Vy
Y2UoKSB7IHNldFNvdXJjZShudWxscHRyKTsgfQorICAgIHZvaWQgc2V0U291cmNlKFNvdXJjZSYm
KTsKKyAgICB2b2lkIHRha2VTb3VyY2UoTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZCYpOwogCiBw
cml2YXRlOgogICAgIHZvaWQgcmVwbGFjZVRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBS
VENSdHBTZW5kZXImLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYpIGZpbmFsOwpAQCAtMTE1LDYgKzcxLDEwIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzZXRQYXJhbWV0ZXJzKGNvbnN0IFJUQ1J0cFNlbmRQYXJhbWV0ZXJzJiwgRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYpIGZpbmFsOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSVENEVE1GU2VuZGVy
QmFja2VuZD4gY3JlYXRlRFRNRkJhY2tlbmQoKSBmaW5hbDsKIAorICAgIHZvaWQgc3RhcnRTb3Vy
Y2UoKTsKKyAgICB2b2lkIHN0b3BTb3VyY2UoKTsKKyAgICBib29sIGhhc1NvdXJjZSgpIGNvbnN0
OworCiAgICAgV2Vha1B0cjxMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+IG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kOwogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFNlbmRl
ckludGVyZmFjZT4gbV9ydGNTZW5kZXI7CiAgICAgU291cmNlIG1fc291cmNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAKaW5kZXggNjhiNzUwZTdhZTJkNjViZjUzMDJhNWJk
NThkMjc2MTA5Y2RkNGU5MC4uN2MxOGMzZmNkMzU0NTE3MTVkNDQ5YTU0NTAxMWYzYzYxMjc5MGIw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC00NSwxMyArNDUs
MTggQEAgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcmkKIAogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlOjp+UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKCkKIHsKLSAgICBBU1NFUlQoIW1fYXVk
aW9Tb3VyY2UtPmhhc09ic2VydmVyKCp0aGlzKSk7CitBU1NFUlQoIW1fYXVkaW9Tb3VyY2UtPmhh
c09ic2VydmVyKCp0aGlzKSk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9zaW5rc0xvY2spOworI2VuZGlmCiAgICAgQVNTRVJUKG1fc2lua3MuaXNF
bXB0eSgpKTsKKwogICAgIHN0b3AoKTsKIH0KIAogdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2U6Om9ic2VydmVTb3VyY2UoKQogeworICAgIEFTU0VSVCghbV9hdWRpb1NvdXJjZS0+aGFz
T2JzZXJ2ZXIoKnRoaXMpKTsKICAgICBtX2F1ZGlvU291cmNlLT5hZGRPYnNlcnZlcigqdGhpcyk7
CiAgICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOwogfQpAQCAtNjEsMjEgKzY2LDEzIEBAIHZvaWQg
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjp1bm9ic2VydmVTb3VyY2UoKQogICAgIG1fYXVk
aW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKIH0KIAotYm9vbCBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYg
bmV3U291cmNlKQordm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZShS
ZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYgbmV3U291cmNlKQogewogICAgIEFMV0FZU19M
T0coIkNoYW5naW5nIHNvdXJjZSB0byAiLCBuZXdTb3VyY2UtPmxvZ0lkZW50aWZpZXIoKSk7Ci0g
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3NpbmtzTG9jayk7Ci0gICAgYm9vbCBoYXNTaW5r
cyA9ICFtX3NpbmtzLmlzRW1wdHkoKTsKIAotICAgIGlmIChoYXNTaW5rcykKLSAgICAgICAgdW5v
YnNlcnZlU291cmNlKCk7CisgICAgQVNTRVJUKCFtX2F1ZGlvU291cmNlLT5oYXNPYnNlcnZlcigq
dGhpcykpOwogICAgIG1fYXVkaW9Tb3VyY2UgPSBXVEZNb3ZlKG5ld1NvdXJjZSk7Ci0gICAgaWYg
KGhhc1NpbmtzKQotICAgICAgICBvYnNlcnZlU291cmNlKCk7Ci0KICAgICBzb3VyY2VVcGRhdGVk
KCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2U6OmluaXRpYWxpemVDb252ZXJ0ZXIoKQpAQCAtOTYsMjYgKzkzLDE0IEBAIHZvaWQgUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzb3VyY2VFbmFibGVkQ2hhbmdlZCgpCiAKIHZvaWQg
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpBZGRTaW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1Np
bmtJbnRlcmZhY2UqIHNpbmspCiB7Ci0gICAgewogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9zaW5rc0xvY2spOwotICAgIGlmICghbV9zaW5rcy5hZGQoc2luaykgfHwgbV9zaW5rcy5zaXpl
KCkgIT0gMSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhbGxPbk1haW5UaHJlYWQo
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSB7Ci0gICAgICAgIHByb3RlY3RlZFRo
aXMtPm9ic2VydmVTb3VyY2UoKTsKLSAgICB9KTsKKyAgICBtX3NpbmtzLmFkZChzaW5rKTsKIH0K
IAogdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OlJlbW92ZVNpbmsod2VicnRjOjpB
dWRpb1RyYWNrU2lua0ludGVyZmFjZSogc2luaykKIHsKLSAgICB7CiAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX3NpbmtzTG9jayk7Ci0gICAgaWYgKCFtX3NpbmtzLnJlbW92ZShzaW5rKSB8
fCAhbV9zaW5rcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB1bm9i
c2VydmVTb3VyY2UoKTsKKyAgICBtX3NpbmtzLnJlbW92ZShzaW5rKTsKIH0KIAogdm9pZCBSZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNlbmRBdWRpb0ZyYW1lcyhjb25zdCB2b2lkKiBhdWRp
b0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9m
Q2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlLmgKaW5kZXggYTUzMmEzZTUyZGNiNTFiYjkxNTk5ODZlNjNlYzE2NDg4MTExYWFmOS4u
ODE2NzYxM2RhZDhmMjMyM2YyMWZiOTcxMjA3NzY1ODQ0MTQzYzA2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlLmgKQEAgLTY0LDE2ICs2NCwxNSBAQCBwdWJsaWM6CiAKICAgICB+
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKCk7CiAKKyAgICB2b2lkIHN0YXJ0KCkgeyBvYnNl
cnZlU291cmNlKCk7IH0KICAgICB2b2lkIHN0b3AoKSB7IHVub2JzZXJ2ZVNvdXJjZSgpOyB9CiAK
LSAgICBib29sIHNldFNvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYpOworICAg
IHZvaWQgc2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJik7CiAgICAgTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGUmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Tb3Vy
Y2UuZ2V0KCk7IH0KIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYpOwogCi0gICAgdm9pZCB1
bm9ic2VydmVTb3VyY2UoKTsKLQogICAgIGJvb2wgaXNTaWxlbmNlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fbXV0ZWQgfHwgIW1fZW5hYmxlZDsgfQogCiAgICAgdm9pZCBzZW5kQXVkaW9GcmFtZXMoY29u
c3Qgdm9pZCogYXVkaW9EYXRhLCBpbnQgYml0c1BlclNhbXBsZSwgaW50IHNhbXBsZVJhdGUsIHNp
emVfdCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpOwpAQCAtMTA1LDYg
KzEwNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBVbnJlZ2lzdGVyT2JzZXJ2ZXIod2VicnRjOjpP
YnNlcnZlckludGVyZmFjZSopIGZpbmFsIHsgfQogCiAgICAgdm9pZCBvYnNlcnZlU291cmNlKCk7
CisgICAgdm9pZCB1bm9ic2VydmVTb3VyY2UoKTsKIAogICAgIHZvaWQgc291cmNlTXV0ZWRDaGFu
Z2VkKCk7CiAgICAgdm9pZCBzb3VyY2VFbmFibGVkQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0
Z29pbmdWaWRlb1NvdXJjZS5jcHAKaW5kZXggYTJiZDUwMDE2ZjRjNDk4MTQ3NDgwYTVlOGEyM2Vm
OWFmYTc1OGU4OS4uYjg1OWNkODgwY2FmNjI2ZTI2ZDE1ZmUwNmI3N2E1MzliM2UwNTEwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRn
b2luZ1ZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwCkBAIC01NiwxMyArNTYsMTcgQEAg
UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2Uo
UmVmPE1lZGlhU3RyZWFtVHJhY2tQcmkKIAogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjp+
UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlKCkKIHsKLSAgICBBU1NFUlQoIW1fdmlkZW9Tb3Vy
Y2UtPmhhc09ic2VydmVyKCp0aGlzKSk7CitBU1NFUlQoIW1fdmlkZW9Tb3VyY2UtPmhhc09ic2Vy
dmVyKCp0aGlzKSk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9zaW5rc0xvY2spOworI2VuZGlmCiAgICAgQVNTRVJUKG1fc2lua3MuaXNFbXB0eSgp
KTsKICAgICBzdG9wKCk7CiB9CiAKIHZvaWQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpv
YnNlcnZlU291cmNlKCkKIHsKKyAgICBBU1NFUlQoIW1fdmlkZW9Tb3VyY2UtPmhhc09ic2VydmVy
KCp0aGlzKSk7CiAgICAgbV92aWRlb1NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwogICAgIGlu
aXRpYWxpemVGcm9tU291cmNlKCk7CiB9CkBAIC03MiwyMSArNzYsMTAgQEAgdm9pZCBSZWFsdGlt
ZU91dGdvaW5nVmlkZW9Tb3VyY2U6OnVub2JzZXJ2ZVNvdXJjZSgpCiAgICAgbV92aWRlb1NvdXJj
ZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwogfQogCi1ib29sIFJlYWx0aW1lT3V0Z29pbmdWaWRl
b1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBuZXdTb3Vy
Y2UpCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBuZXdTb3VyY2UpCiB7Ci0gICAgaWYgKCFtX2luaXRpYWxT
ZXR0aW5ncykKLSAgICAgICAgbV9pbml0aWFsU2V0dGluZ3MgPSBtX3ZpZGVvU291cmNlLT5zb3Vy
Y2UoKS5zZXR0aW5ncygpOwotCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3NpbmtzTG9j
ayk7Ci0gICAgYm9vbCBoYXNTaW5rcyA9ICFtX3NpbmtzLmlzRW1wdHkoKTsKLQotICAgIGlmICho
YXNTaW5rcykKLSAgICAgICAgdW5vYnNlcnZlU291cmNlKCk7CisgICAgQVNTRVJUKCFtX3ZpZGVv
U291cmNlLT5oYXNPYnNlcnZlcigqdGhpcykpOwogICAgIG1fdmlkZW9Tb3VyY2UgPSBXVEZNb3Zl
KG5ld1NvdXJjZSk7Ci0gICAgaWYgKGhhc1NpbmtzKQotICAgICAgICBvYnNlcnZlU291cmNlKCk7
Ci0KLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2U6OnN0b3AoKQpAQCAtMTQ0LDMyICsxMzcsMTQgQEAgdm9pZCBSZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2U6OkFkZE9yVXBkYXRlU2luayhydGM6OlZpZGVvU2lua0ludGVyZmFjZTx3ZWJydGMK
ICAgICBpZiAoc2lua1dhbnRzLnJvdGF0aW9uX2FwcGxpZWQpCiAgICAgICAgIG1fc2hvdWxkQXBw
bHlSb3RhdGlvbiA9IHRydWU7CiAKLSAgICB7CiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X3NpbmtzTG9jayk7Ci0gICAgaWYgKCFtX3NpbmtzLmFkZChzaW5rKSB8fCBtX3NpbmtzLnNpemUo
KSAhPSAxKQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FsbE9uTWFpblRocmVhZChb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIHsKLSAgICAgICAgcHJvdGVjdGVkVGhp
cy0+b2JzZXJ2ZVNvdXJjZSgpOwotICAgIH0pOworICAgIG1fc2lua3MuYWRkKHNpbmspOwogfQog
CiB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6UmVtb3ZlU2luayhydGM6OlZpZGVv
U2lua0ludGVyZmFjZTx3ZWJydGM6OlZpZGVvRnJhbWU+KiBzaW5rKQogewotICAgIHsKICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc2lua3NMb2NrKTsKLQotICAgIGlmICghbV9zaW5rcy5y
ZW1vdmUoc2luaykgfHwgbV9zaW5rcy5zaXplKCkpCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICB1bm9ic2VydmVTb3VyY2UoKTsKLQotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSB7Ci0gICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5t
X2JsYWNrRnJhbWVUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+
bV9ibGFja0ZyYW1lVGltZXIuc3RvcCgpOwotICAgIH0pOworICAgIG1fc2lua3MucmVtb3ZlKHNp
bmspOwogfQogCiB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6c2VuZEJsYWNrRnJh
bWVzSWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaAppbmRleCA1MDVm
ZGM0YmE3MTdmMzhiYzkyZGFmMWZkYzMwNDBmNDczMzc5ZGY4Li5lMmE0OGQwODI3N2NlMzEwZjY3
YjAwMDhhZTAwZWY4MTg2MGQ5OGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2Uu
aApAQCAtNTksOCArNTksOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZWFsdGltZU91dGdv
aW5nVmlkZW9Tb3VyY2U+IGNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYgdmlk
ZW9Tb3VyY2UpOwogICAgIH5SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UoKTsKIAorICAgIHZv
aWQgc3RhcnQoKSB7IG9ic2VydmVTb3VyY2UoKTsgfQogICAgIHZvaWQgc3RvcCgpOwotICAgIGJv
b2wgc2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJik7CisgICAgdm9pZCBz
ZXRTb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmKTsKICAgICBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZSYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb1NvdXJjZS5nZXQo
KTsgfQogCiAgICAgdm9pZCBBZGRSZWYoKSBjb25zdCBmaW5hbCB7IHJlZigpOyB9CkBAIC0xMjgs
NyArMTI5LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUmKSBmaW5hbCB7IH0KIAogICAgIFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4g
bV92aWRlb1NvdXJjZTsKLSAgICBPcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M+
IG1faW5pdGlhbFNldHRpbmdzOwogICAgIFRpbWVyIG1fYmxhY2tGcmFtZVRpbWVyOwogICAgIHJ0
Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+IG1fYmxhY2tGcmFtZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxpYldlYlJUQy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlTGliV2ViUlRDLmNwcAppbmRleCA3MjAzZDdkMzYzYzdlMzdjOWQ3MDY5MzU4NzM3MGRj
ZDFmOWY2YTcwLi5hODA1Yzg0Nzg0YzRlMGQ2NTNlMTBmNmI0ZTQ1Y2ZlZWQ0ZDMxNGI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlTGliV2ViUlRDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlTGliV2ViUlRDLmNwcApAQCAtMzgsNyArMzgsNiBAQCBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2VMaWJXZWJSVEM6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxpYldlYlJUQyhSZWY8
TQogCiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEM6On5SZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEMoKQogewotICAgIHVub2JzZXJ2ZVNvdXJjZSgpOwogICAg
IG1fc2FtcGxlQ29udmVydGVyID0gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZUNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAKaW5kZXggYzg0NTdhNDBhMTdlMWE5YmNi
ZjQ1ZjEwNzA3YjFmMDUxN2I2ZjUyYi4uODc3ZWYyOGFlNTVlZTBmMzQ5OGVhM2ZhZGVhODk3ZmU1
NDZmNGNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuY3BwCkBAIC01MCwxMCArNTAsNyBAQCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EoUmVmPE1lZGlhU3RyZQogewog
fQogCi1SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6flJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZUNvY29hKCkKLXsKLSAgICB1bm9ic2VydmVTb3VyY2UoKTsKLX0KK1JlYWx0aW1l
T3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjp+UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29j
b2EoKSA9IGRlZmF1bHQ7CiAKIFJlZjxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U+IFJlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZT4mJiBhdWRpb1NvdXJjZSkKIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>