<?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>141104</bug_id>
          
          <creation_ts>2015-01-30 16:30:38 -0800</creation_ts>
          <short_desc>Access MemoryCache singleton using MemoryCache::singleton()</short_desc>
          <delta_ts>2015-02-02 14:37:02 -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>Page Loading</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1065707</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-30 16:30:38 -0800</bug_when>
    <thetext>Access MemoryCache singleton using MemoryCache::singleton() static member function, instead of a free function, as per the recent coding style discussion on WebKit-dev.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065718</commentid>
    <comment_count>1</comment_count>
      <attachid>245757</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-30 16:43:56 -0800</bug_when>
    <thetext>Created attachment 245757
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065730</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-30 16:58:47 -0800</bug_when>
    <thetext>The win-ews does not seem to give a compilation error. Not sure why it failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066139</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-02-02 10:17:31 -0800</bug_when>
    <thetext>ping review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066140</commentid>
    <comment_count>4</comment_count>
      <attachid>245757</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-02-02 10:20:01 -0800</bug_when>
    <thetext>Comment on attachment 245757
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066197</commentid>
    <comment_count>5</comment_count>
      <attachid>245757</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-02 12:50:12 -0800</bug_when>
    <thetext>Comment on attachment 245757
Patch

Clearing flags on attachment: 245757

Committed r179489: &lt;http://trac.webkit.org/changeset/179489&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066198</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-02 12:50:16 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066223</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-02 14:27:51 -0800</bug_when>
    <thetext>This broke the Windows build, as was reported in &lt;https://webkit-queues.appspot.com/results/5739814385090560&gt; two days ago (at the same time as the other EWS bots reported their status).

Fix landed in &lt;http://trac.webkit.org/changeset/179498&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066228</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-02-02 14:31:45 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; This broke the Windows build, as was reported in
&gt; &lt;https://webkit-queues.appspot.com/results/5739814385090560&gt; two days ago
&gt; (at the same time as the other EWS bots reported their status).
&gt; 
&gt; Fix landed in &lt;http://trac.webkit.org/changeset/179498&gt;.

Sorry Brent. I fails to see the missing symbol error in the output and thus did not understand why the win-ews was failing. BTW, I don&apos;t know if we can do something about this I always have trouble finding the build errors on the win-ews stdio. Most bots would give out the errors at the end but win-ews doesn&apos;t. I usually search for &quot;error C&quot; on win-ews, but this apparently only works for build errors, not linking ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066231</commentid>
    <comment_count>9</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-02 14:34:24 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; This broke the Windows build, as was reported in
&gt; &gt; &lt;https://webkit-queues.appspot.com/results/5739814385090560&gt; two days ago
&gt; &gt; (at the same time as the other EWS bots reported their status).
&gt; &gt; 
&gt; &gt; Fix landed in &lt;http://trac.webkit.org/changeset/179498&gt;.
&gt; 
&gt; Sorry Brent. I fails to see the missing symbol error in the output and thus
&gt; did not understand why the win-ews was failing. BTW, I don&apos;t know if we can
&gt; do something about this I always have trouble finding the build errors on
&gt; the win-ews stdio. Most bots would give out the errors at the end but
&gt; win-ews doesn&apos;t. I usually search for &quot;error C&quot; on win-ews, but this
&gt; apparently only works for build errors, not linking ones.

Yes -- I think these show up as &quot;error LNK0123&quot;, so I search for &quot;error L&quot; if I don&apos;t find something under &quot;error C&quot;.

Darin has encountered a case where neither error is shown in the EWS log because of the massive amounts of output produced.

We have a filtering script that is used on our internal bots, but it hasn&apos;t been migrated to the OpenSource or EWS bots for reasons that I don&apos;t fully understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066233</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-02-02 14:37:02 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; This broke the Windows build, as was reported in
&gt; &gt; &gt; &lt;https://webkit-queues.appspot.com/results/5739814385090560&gt; two days ago
&gt; &gt; &gt; (at the same time as the other EWS bots reported their status).
&gt; &gt; &gt; 
&gt; &gt; &gt; Fix landed in &lt;http://trac.webkit.org/changeset/179498&gt;.
&gt; &gt; 
&gt; &gt; Sorry Brent. I fails to see the missing symbol error in the output and thus
&gt; &gt; did not understand why the win-ews was failing. BTW, I don&apos;t know if we can
&gt; &gt; do something about this I always have trouble finding the build errors on
&gt; &gt; the win-ews stdio. Most bots would give out the errors at the end but
&gt; &gt; win-ews doesn&apos;t. I usually search for &quot;error C&quot; on win-ews, but this
&gt; &gt; apparently only works for build errors, not linking ones.
&gt; 
&gt; Yes -- I think these show up as &quot;error LNK0123&quot;, so I search for &quot;error L&quot;
&gt; if I don&apos;t find something under &quot;error C&quot;.

Good to know the &quot;error L&quot; one. I&apos;ll do this next time if &quot;error C&quot; doesn&apos;t work. Thanks.

BTW, if the windows-ews is reliable enough these days, we could probably make the commit queue depend on it succeeding to build. Currently, I think the CQ stops only if mac-ews fails.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245757</attachid>
            <date>2015-01-30 16:43:56 -0800</date>
            <delta_ts>2015-02-02 12:50:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141104-20150130164403.patch</filename>
            <type>text/plain</type>
            <size>48801</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGNmMTUyNzRhZTc2ODc5
YjY0ZTYyZWIyZTkxNzc4NjNmOWQzNmY1Yy4uMTUwY2E5MmQzZjdmMmU2ZDc2NGVmNWQwMWUzMzgx
ZjU2YWEzZTExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE2IEBACiAyMDE1LTAxLTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgQWNjZXNzIE1lbW9yeUNhY2hl
IHNpbmdsZXRvbiB1c2luZyBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTEwNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjY2VzcyBNZW1vcnlDYWNoZSBzaW5n
bGV0b24gdXNpbmcgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpIHN0YXRpYworICAgICAgICBtZW1i
ZXIgZnVuY3Rpb24sIGluc3RlYWQgb2YgYSBmcmVlIGZ1bmN0aW9uLCBhcyBwZXIgdGhlIHJlY2Vu
dAorICAgICAgICBjb2Rpbmcgc3R5bGUgZGlzY3Vzc2lvbiBvbiBXZWJLaXQtZGV2LgorCisyMDE1
LTAxLTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgVXBkYXRl
IE1lbW9yeUNhY2hlIGNvZGUgdG8gdXNlIG1vcmUgcmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBvaW50
ZXJzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEw
OTkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDEzZTkxMjViMTdkYjQ5YjhhMWI0YTNlNDA2NzIyM2Nl
ODUxZjI0MmIuLjc4ZTA0Y2FjYjI3YzA0YTY1MzVmMTc0MWJjOGViZmM1ZWU0MGJhMTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNiBAQAogMjAxNS0wMS0zMCAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIEFjY2VzcyBNZW1vcnlDYWNoZSBzaW5nbGV0b24g
dXNpbmcgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBY2Nlc3MgTWVtb3J5Q2FjaGUgc2luZ2xldG9uIHVzaW5n
IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKSBzdGF0aWMKKyAgICAgICAgbWVtYmVyIGZ1bmN0aW9u
LCBpbnN0ZWFkIG9mIGEgZnJlZSBmdW5jdGlvbiwgYXMgcGVyIHRoZSByZWNlbnQKKyAgICAgICAg
Y29kaW5nIHN0eWxlIGRpc2N1c3Npb24gb24gV2ViS2l0LWRldi4KKworMjAxNS0wMS0zMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFJlbmFtZSBzaGFyZWQoKSBz
dGF0aWMgbWVtYmVyIGZ1bmN0aW9ucyB0byBzaW5nbGV0b24oKSBmb3Igc2luZ2xldG9uIGNsYXNz
ZXMuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEw
ODgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGNlNTlmZWMwNTc5MmY2YTAyNDlkZGE1ZGZlMzE1MzRi
MzZjZDA4NmMuLjVkODQ0ZDBmY2M5NmQzYTc1OTk4NzllYzcyZmZlNmM5NWFjZTE2MTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNiBAQAogMjAxNS0wMS0zMCAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIEFjY2VzcyBNZW1vcnlDYWNoZSBzaW5nbGV0b24g
dXNpbmcgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBY2Nlc3MgTWVtb3J5Q2FjaGUgc2luZ2xldG9uIHVzaW5n
IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKSBzdGF0aWMKKyAgICAgICAgbWVtYmVyIGZ1bmN0aW9u
LCBpbnN0ZWFkIG9mIGEgZnJlZSBmdW5jdGlvbiwgYXMgcGVyIHRoZSByZWNlbnQKKyAgICAgICAg
Y29kaW5nIHN0eWxlIGRpc2N1c3Npb24gb24gV2ViS2l0LWRldi4KKworMjAxNS0wMS0zMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFJlbmFtZSBzaGFyZWQoKSBz
dGF0aWMgbWVtYmVyIGZ1bmN0aW9ucyB0byBzaW5nbGV0b24oKSBmb3Igc2luZ2xldG9uIGNsYXNz
ZXMuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEw
ODgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IGE4NTk2MTg4ZDRhNjU5NTgxYzM4ZWYzODg2YjM5YTlhMjYzNDYz
MWUuLjVkYjNlZDJjZTQ3NTQ5YTUwZjRlMTc3ZmQ5OWMwMjEwZmQ1NzI1M2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsNSArMSwxNiBAQAogMjAxNS0wMS0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCisgICAgICAgIEFjY2VzcyBNZW1vcnlDYWNoZSBzaW5nbGV0b24gdXNpbmcgTWVtb3J5
Q2FjaGU6OnNpbmdsZXRvbigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDExMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBY2Nlc3MgTWVtb3J5Q2FjaGUgc2luZ2xldG9uIHVzaW5nIE1lbW9yeUNhY2hl
OjpzaW5nbGV0b24oKSBzdGF0aWMKKyAgICAgICAgbWVtYmVyIGZ1bmN0aW9uLCBpbnN0ZWFkIG9m
IGEgZnJlZSBmdW5jdGlvbiwgYXMgcGVyIHRoZSByZWNlbnQKKyAgICAgICAgY29kaW5nIHN0eWxl
IGRpc2N1c3Npb24gb24gV2ViS2l0LWRldi4KKworMjAxNS0wMS0zMCAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFVwZGF0ZSBNZW1vcnlDYWNoZSBjb2RlIHRvIHVz
ZSBtb3JlIHJlZmVyZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycwogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMDk5CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
aW5kZXggZGI0MTBhNjRjOWNlOWQzZDY3MTRlYzcwZTg4ZDNkODU0YjA4MTY2NS4uY2NmYjEyNGEx
NTM0Nzk2MjRhYWM5MzRjOWFhM2U3ODgxMTFlODgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAg
LTE5Nyw2ICsxOTcsNyBAQCBfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMThyZXNvdXJjZUZvclJl
cXVlc3RFUktOU18xNVJlc291cmNlUmVxdWVzdEVOU185U2Vzc2lvbgogX19aTjdXZWJDb3JlMTFN
ZW1vcnlDYWNoZTE5Z2V0T3JpZ2luc1dpdGhDYWNoZUVSTjNXVEY3SGFzaFNldElOUzFfNlJlZlB0
cklOU18xNFNlY3VyaXR5T3JpZ2luRUVFTlNfMThTZWN1cml0eU9yaWdpbkhhc2hFTlMxXzEwSGFz
aFRyYWl0c0lTNV9FRUVFCiBfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMjByZW1vdmVJbWFnZUZy
b21DYWNoZUVSS05TXzNVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMU1lbW9yeUNh
Y2hlMjVyZW1vdmVSZXNvdXJjZXNXaXRoT3JpZ2luRVJOU18xNFNlY3VyaXR5T3JpZ2luRQorX19a
TjdXZWJDb3JlMTFNZW1vcnlDYWNoZTlzaW5nbGV0b25FdgogX19aTjdXZWJDb3JlMTFQYWdlT3Zl
cmxheTE1c2V0TmVlZHNEaXNwbGF5RVJLTlNfN0ludFJlY3RFCiBfX1pON1dlYkNvcmUxMVBhZ2VP
dmVybGF5MTVzZXROZWVkc0Rpc3BsYXlFdgogX19aTjdXZWJDb3JlMTFQYWdlT3ZlcmxheTIwc3Rv
cEZhZGVPdXRBbmltYXRpb25FdgpAQCAtMjEwLDcgKzIxMSw2IEBAIF9fWk43V2ViQ29yZTExZ2V0
RmlsZVNpemVFUktOM1dURjZTdHJpbmdFUngKIF9fWk43V2ViQ29yZTExZ2V0VVJMQnl0ZXNFUEs3
X19DRlVSTFJOM1dURjZWZWN0b3JJY0xtNTEyRU5TM18xNUNyYXNoT25PdmVyZmxvd0VFRQogX19a
TjdXZWJDb3JlMTFnZXRVUkxCeXRlc0VQSzdfX0NGVVJMUk4zV1RGN0NTdHJpbmdFCiBfX1pON1dl
YkNvcmUxMWlCZWFtQ3Vyc29yRXYKLV9fWk43V2ViQ29yZTExbWVtb3J5Q2FjaGVFdgogX19aTjdX
ZWJDb3JlMTFzdGFydE9mTGluZUVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRQogX19aTjdXZWJDb3Jl
MTFzdGFydE9mV29yZEVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRU5TXzlFV29yZFNpZGVFCiBfX1pO
N1dlYkNvcmUxMXdyaXRlVG9GaWxlRWlQS2NpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGY5MWY3ZWVhMWY1MmRlMzMyYWFjOGNhMjk5
ZDdhZDg4NWU1YTQyZWUuLjkxYzczODAyZjVlNzA0MDMwODRmMDNkNGYzZjkyYWEzOWY0YmU4YjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3Bw
CkBAIC0yNjEsNyArMjYxLDcgQEAgQ2FjaGVkUmVzb3VyY2UqIEluc3BlY3RvclBhZ2VBZ2VudDo6
Y2FjaGVkUmVzb3VyY2UoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICNpZiBFTkFCTEUo
Q0FDSEVfUEFSVElUSU9OSU5HKQogICAgICAgICByZXF1ZXN0LnNldERvbWFpbkZvckNhY2hlUGFy
dGl0aW9uKGZyYW1lLT5kb2N1bWVudCgpLT50b3BPcmlnaW4oKS0+ZG9tYWluRm9yQ2FjaGVQYXJ0
aXRpb24oKSk7CiAjZW5kaWYKLSAgICAgICAgY2FjaGVkUmVzb3VyY2UgPSBtZW1vcnlDYWNoZSgp
LnJlc291cmNlRm9yUmVxdWVzdChyZXF1ZXN0LCBmcmFtZS0+cGFnZSgpLT5zZXNzaW9uSUQoKSk7
CisgICAgICAgIGNhY2hlZFJlc291cmNlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291
cmNlRm9yUmVxdWVzdChyZXF1ZXN0LCBmcmFtZS0+cGFnZSgpLT5zZXNzaW9uSUQoKSk7CiAgICAg
fQogCiAgICAgcmV0dXJuIGNhY2hlZFJlc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IDEyMGZmZTgzMmE4ZTBh
ZjllMzcxOWI5OGNlOTljYzY2OTZmMDE0YjQuLjQ5MjJmMzE4OTk2YzU4ODQ2ZTZlZmRiNGQ0MTYx
NjA4OGZmYWEyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTcwOCw5ICs3MDgsOSBAQCB2b2lkIEluc3BlY3RvclJl
c291cmNlQWdlbnQ6OnJlcGxheVhIUihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVz
dElkKQogICAgIHJlcXVlc3Quc2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24obV9wYWdlQWdlbnQt
Pm1haW5GcmFtZSgpLT5kb2N1bWVudCgpLT50b3BPcmlnaW4oKS0+ZG9tYWluRm9yQ2FjaGVQYXJ0
aXRpb24oKSk7CiAjZW5kaWYKIAotICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9
IG1lbW9yeUNhY2hlKCkucmVzb3VyY2VGb3JSZXF1ZXN0KHJlcXVlc3QsIG1fcGFnZUFnZW50LT5w
YWdlKCktPnNlc3Npb25JRCgpKTsKLSAgICBpZiAoY2FjaGVkUmVzb3VyY2UpCi0gICAgICAgIG1l
bW9yeUNhY2hlKCkucmVtb3ZlKCpjYWNoZWRSZXNvdXJjZSk7CisgICAgYXV0byYgbWVtb3J5Q2Fj
aGUgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCk7CisgICAgaWYgKENhY2hlZFJlc291cmNlKiBj
YWNoZWRSZXNvdXJjZSA9IG1lbW9yeUNhY2hlLnJlc291cmNlRm9yUmVxdWVzdChyZXF1ZXN0LCBt
X3BhZ2VBZ2VudC0+cGFnZSgpLT5zZXNzaW9uSUQoKSkpCisgICAgICAgIG1lbW9yeUNhY2hlLnJl
bW92ZSgqY2FjaGVkUmVzb3VyY2UpOwogCiAgICAgeGhyLT5vcGVuKHhoclJlcGxheURhdGEtPm1l
dGhvZCgpLCB4aHJSZXBsYXlEYXRhLT51cmwoKSwgeGhyUmVwbGF5RGF0YS0+YXN5bmMoKSwgSUdO
T1JFX0VYQ0VQVElPTik7CiAgICAgZm9yIChjb25zdCBhdXRvJiBoZWFkZXIgOiB4aHJSZXBsYXlE
YXRhLT5oZWFkZXJzKCkpCkBAIC03NDIsNyArNzQyLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpzZXRDYWNoZURpc2FibGVkKEVycm9yU3RyaW5nJiwgYm9vbCBjYWNoZURpc2FibGVk
KQogewogICAgIG1fY2FjaGVEaXNhYmxlZCA9IGNhY2hlRGlzYWJsZWQ7CiAgICAgaWYgKGNhY2hl
RGlzYWJsZWQpCi0gICAgICAgIG1lbW9yeUNhY2hlKCkuZXZpY3RSZXNvdXJjZXMoKTsKKyAgICAg
ICAgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmV2aWN0UmVzb3VyY2VzKCk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6bG9hZFJlc291cmNlKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgUmVm
PExvYWRSZXNvdXJjZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQpAQCAtNzg4LDcgKzc4OCw3IEBAIHZv
aWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6bG9hZFJlc291cmNlKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Om1haW5G
cmFtZU5hdmlnYXRlZChEb2N1bWVudExvYWRlciYgbG9hZGVyKQogewogICAgIGlmIChtX2NhY2hl
RGlzYWJsZWQpCi0gICAgICAgIG1lbW9yeUNhY2hlKCkuZXZpY3RSZXNvdXJjZXMoKTsKKyAgICAg
ICAgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmV2aWN0UmVzb3VyY2VzKCk7CiAKICAgICBtX3Jl
c291cmNlc0RhdGEtPmNsZWFyKG1fcGFnZUFnZW50LT5sb2FkZXJJZCgmbG9hZGVyKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBjMTY3MWJmMzgyZGQ3
OGFjOGZlZGJmOTExMDhhODdmNmIzODc1YzIzLi42M2Q1ZTNhNjkwNDVmZTg4MjQ3MzgyMjFlYzIx
NjA3MDQ1YzhhMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
QEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0aWMgYm9vbCBhcmVBbGxMb2FkZXJzUGFnZUNhY2hlQWNj
ZXB0YWJsZShjb25zdCBSZXNvdXJjZUxvYWRlck1hcCYgbG9hZGVycykKICAgICAgICAgaWYgKCFs
b2FkZXItPmZyYW1lTG9hZGVyKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAg
ICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gbWVtb3J5Q2FjaGUoKS5yZXNvdXJj
ZUZvclVSTChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLCBsb2FkZXItPmZyYW1lTG9hZGVy
KCktPmZyYW1lKCkucGFnZSgpLT5zZXNzaW9uSUQoKSk7CisgICAgICAgIENhY2hlZFJlc291cmNl
KiBjYWNoZWRSZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXNvdXJjZUZvclVS
TChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLCBsb2FkZXItPmZyYW1lTG9hZGVyKCktPmZy
YW1lKCkucGFnZSgpLT5zZXNzaW9uSUQoKSk7CiAgICAgICAgIGlmICghY2FjaGVkUmVzb3VyY2Up
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTQ0OCw3ICs0NDgsNyBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpCiAgICAgLy8g
YW5kIGRlbnkgdGhlIGFwcGNhY2hlIHRoZSBjaGFuY2UgdG8gaW50ZXJjZXB0IGl0IGluIHRoZSBm
dXR1cmUsIHNvIHJlbW92ZSBmcm9tIHRoZSBtZW1vcnkgY2FjaGUuCiAgICAgaWYgKG1fZnJhbWUp
IHsKICAgICAgICAgaWYgKG1fbWFpblJlc291cmNlICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPmhh
c01hbmlmZXN0KCkpCi0gICAgICAgICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZSgqbV9tYWluUmVz
b3VyY2UpOworICAgICAgICAgICAgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZSgqbV9t
YWluUmVzb3VyY2UpOwogICAgIH0KICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0LT5maW5pc2hl
ZExvYWRpbmdNYWluUmVzb3VyY2UoKTsKIH0KQEAgLTU5OSw3ICs1OTksNyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29u
c3QgUmVzb3VyY2VSZQogICAgIC8vIFRoZSBtZW1vcnkgY2FjaGUgZG9lc24ndCB1bmRlcnN0YW5k
IHRoZSBhcHBsaWNhdGlvbiBjYWNoZSBvciBpdHMgY2FjaGluZyBydWxlcy4gU28gaWYgYSBtYWlu
IHJlc291cmNlIGlzIHNlcnZlZAogICAgIC8vIGZyb20gdGhlIGFwcGxpY2F0aW9uIGNhY2hlLCBl
bnN1cmUgd2UgZG9uJ3Qgc2F2ZSB0aGUgcmVzdWx0IGZvciBmdXR1cmUgdXNlLgogICAgIGlmICh3
aWxsTG9hZEZhbGxiYWNrKQotICAgICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZSgqbV9tYWluUmVz
b3VyY2UpOworICAgICAgICBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlKCptX21haW5S
ZXNvdXJjZSk7CiAKICAgICBpZiAod2lsbExvYWRGYWxsYmFjaykKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMDU5ZjBmZjhlNGZjMTZmNmYw
OTNhMWNkMGFjMjc5ZTJjNDcwOTc0ZC4uODQwMDI1Nzk2ZTRlM2JmNDIwNmRjMTk2NDRkNGEzODA5
ZmQ1MjAyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0zMzkwLDcg
KzMzOTAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjp0ZWxsQ2xpZW50QWJvdXRQYXN0TWVtb3J5Q2Fj
aGVMb2FkcygpCiAKICAgICBzaXplX3Qgc2l6ZSA9IHBhc3RMb2Fkcy5zaXplKCk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2Uq
IHJlc291cmNlID0gbWVtb3J5Q2FjaGUoKS5yZXNvdXJjZUZvclJlcXVlc3QocGFzdExvYWRzW2ld
LCBtX2ZyYW1lLnBhZ2UoKS0+c2Vzc2lvbklEKCkpOworICAgICAgICBDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVzb3VyY2VGb3JSZXF1ZXN0KHBh
c3RMb2Fkc1tpXSwgbV9mcmFtZS5wYWdlKCktPnNlc3Npb25JRCgpKTsKIAogICAgICAgICAvLyBG
SVhNRTogVGhlc2UgbG9hZHMsIGxvYWRlZCBmcm9tIGNhY2hlLCBidXQgbm93IGdvbmUgZnJvbSB0
aGUgY2FjaGUgYnkgdGhlIHRpbWUKICAgICAgICAgLy8gUGFnZTo6c2V0TWVtb3J5Q2FjaGVDbGll
bnRDYWxsc0VuYWJsZWQodHJ1ZSkgaXMgY2FsbGVkLCB3aWxsIG5vdCBiZSBzZWVuIGJ5IHRoZSBj
bGllbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRl
eCBiMzIyZmQxYjQ5MTQ1MzI3YWE4ZjJmMjNkZWQzZTBmZjg4MGEwNTI4Li43MzFjZDVkZDNmYWI2
YjAyYTExODNhYjc5NzQ0MmJmYzJhN2FkMjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIFN1YnJlc291cmNl
TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25z
dCBSZXNvdQogICAgICAgICAvLyBEb2luZyBzbyB3b3VsZCBoYXZlIHVzIHJldXNpbmcgdGhlIHJl
c291cmNlIGZyb20gdGhlIGZpcnN0IHJlcXVlc3QgaWYgdGhlIHNlY29uZCByZXF1ZXN0J3MgcmV2
YWxpZGF0aW9uIHN1Y2NlZWRzLgogICAgICAgICBpZiAobmV3UmVxdWVzdC5pc0NvbmRpdGlvbmFs
KCkgJiYgbV9yZXNvdXJjZS0+cmVzb3VyY2VUb1JldmFsaWRhdGUoKSAmJiBuZXdSZXF1ZXN0LnVy
bCgpICE9IG1fcmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlkYXRlKCktPnJlc3BvbnNlKCkudXJs
KCkpIHsKICAgICAgICAgICAgIG5ld1JlcXVlc3QubWFrZVVuY29uZGl0aW9uYWwoKTsKLSAgICAg
ICAgICAgIG1lbW9yeUNhY2hlKCkucmV2YWxpZGF0aW9uRmFpbGVkKCptX3Jlc291cmNlKTsKKyAg
ICAgICAgICAgIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXZhbGlkYXRpb25GYWlsZWQoKm1f
cmVzb3VyY2UpOwogICAgICAgICAgICAgaWYgKG1fZnJhbWUpCiAgICAgICAgICAgICAgICAgbV9m
cmFtZS0+bWFpbkZyYW1lKCkuZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGlj
TWVzc2FnZVdpdGhSZXN1bHQoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpjYWNoZWRSZXNvdXJjZVJl
dmFsaWRhdGlvbktleSgpLCBlbXB0eVN0cmluZygpLCBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdEZh
aWwpOwogICAgICAgICB9CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQog
ICAgICAgICAgICAgLy8gMzA0IE5vdCBtb2RpZmllZCAvIFVzZSBsb2NhbCBjb3B5CiAgICAgICAg
ICAgICAvLyBFeGlzdGluZyByZXNvdXJjZSBpcyBvaywganVzdCB1c2UgaXQgdXBkYXRpbmcgdGhl
IGV4cGlyYXRpb24gdGltZS4KICAgICAgICAgICAgIG1fcmVzb3VyY2UtPnNldFJlc3BvbnNlKHJl
c3BvbnNlKTsKLSAgICAgICAgICAgIG1lbW9yeUNhY2hlKCkucmV2YWxpZGF0aW9uU3VjY2VlZGVk
KCptX3Jlc291cmNlLCByZXNwb25zZSk7CisgICAgICAgICAgICBNZW1vcnlDYWNoZTo6c2luZ2xl
dG9uKCkucmV2YWxpZGF0aW9uU3VjY2VlZGVkKCptX3Jlc291cmNlLCByZXNwb25zZSk7CiAgICAg
ICAgICAgICBpZiAobV9mcmFtZSkKICAgICAgICAgICAgICAgICBtX2ZyYW1lLT5tYWluRnJhbWUo
KS5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3Vs
dChEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmNhY2hlZFJlc291cmNlUmV2YWxpZGF0aW9uS2V5KCks
IGVtcHR5U3RyaW5nKCksIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0UGFzcyk7CiAgICAgICAgICAg
ICBpZiAoIXJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBT
dWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8v
IERpZCBub3QgZ2V0IDMwNCByZXNwb25zZSwgY29udGludWUgYXMgYSByZWd1bGFyIHJlc291cmNl
IGxvYWQuCi0gICAgICAgIG1lbW9yeUNhY2hlKCkucmV2YWxpZGF0aW9uRmFpbGVkKCptX3Jlc291
cmNlKTsKKyAgICAgICAgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJldmFsaWRhdGlvbkZhaWxl
ZCgqbV9yZXNvdXJjZSk7CiAgICAgICAgIGlmIChtX2ZyYW1lKQogICAgICAgICAgICAgbV9mcmFt
ZS0+bWFpbkZyYW1lKCkuZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVz
c2FnZVdpdGhSZXN1bHQoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpjYWNoZWRSZXNvdXJjZVJldmFs
aWRhdGlvbktleSgpLCBlbXB0eVN0cmluZygpLCBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdEZhaWwp
OwogICAgIH0KQEAgLTM4NSwxMCArMzg1LDEwIEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRp
ZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkUmVzb3VyY2U+IHByb3RlY3RSZXNvdXJjZShtX3Jlc291cmNlKTsKICAgICBtX3N0
YXRlID0gRmluaXNoaW5nOwogICAgIGlmIChtX3Jlc291cmNlLT5yZXNvdXJjZVRvUmV2YWxpZGF0
ZSgpKQotICAgICAgICBtZW1vcnlDYWNoZSgpLnJldmFsaWRhdGlvbkZhaWxlZCgqbV9yZXNvdXJj
ZSk7CisgICAgICAgIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXZhbGlkYXRpb25GYWlsZWQo
Km1fcmVzb3VyY2UpOwogICAgIG1fcmVzb3VyY2UtPnNldFJlc291cmNlRXJyb3IoZXJyb3IpOwog
ICAgIGlmICghbV9yZXNvdXJjZS0+aXNQcmVsb2FkZWQoKSkKLSAgICAgICAgbWVtb3J5Q2FjaGUo
KS5yZW1vdmUoKm1fcmVzb3VyY2UpOworICAgICAgICBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCku
cmVtb3ZlKCptX3Jlc291cmNlKTsKICAgICBtX3Jlc291cmNlLT5lcnJvcihDYWNoZWRSZXNvdXJj
ZTo6TG9hZEVycm9yKTsKICAgICBjbGVhbnVwRm9yRXJyb3IoZXJyb3IpOwogICAgIG5vdGlmeURv
bmUoKTsKQEAgLTQxNywxMCArNDE3LDExIEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxD
YW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAjZWxzZQogICAgIG1fc3RhdGUgPSBG
aW5pc2hpbmc7CiAjZW5kaWYKKyAgICBhdXRvJiBtZW1vcnlDYWNoZSA9IE1lbW9yeUNhY2hlOjpz
aW5nbGV0b24oKTsKICAgICBpZiAobV9yZXNvdXJjZS0+cmVzb3VyY2VUb1JldmFsaWRhdGUoKSkK
LSAgICAgICAgbWVtb3J5Q2FjaGUoKS5yZXZhbGlkYXRpb25GYWlsZWQoKm1fcmVzb3VyY2UpOwor
ICAgICAgICBtZW1vcnlDYWNoZS5yZXZhbGlkYXRpb25GYWlsZWQoKm1fcmVzb3VyY2UpOwogICAg
IG1fcmVzb3VyY2UtPnNldFJlc291cmNlRXJyb3IoZXJyb3IpOwotICAgIG1lbW9yeUNhY2hlKCku
cmVtb3ZlKCptX3Jlc291cmNlKTsKKyAgICBtZW1vcnlDYWNoZS5yZW1vdmUoKm1fcmVzb3VyY2Up
OwogfQogCiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VF
cnJvciYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdh
Y3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2Fj
eVdlYkFyY2hpdmUuY3BwCmluZGV4IGFlY2Y1NjIxOTA5NjUxODJhZTNjZDhjYjg1NDE3MjA1MjBi
ZjNkMTQuLjE3ZmYwYmU4YWMyZGQzODIxNmM3Mjk2MTE3NTlhOWQzY2U4YjE2MWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
Y3BwCkBAIC01NDcsNyArNTQ3LDcgQEAgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcKICNpZiBFTkFC
TEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0RG9tYWlu
Rm9yQ2FjaGVQYXJ0aXRpb24oZnJhbWUtPmRvY3VtZW50KCktPnRvcE9yaWdpbigpLT5kb21haW5G
b3JDYWNoZVBhcnRpdGlvbigpKTsKICNlbmRpZgotICAgICAgICAgICAgICAgIENhY2hlZFJlc291
cmNlKiBjYWNoZWRSZXNvdXJjZSA9IG1lbW9yeUNhY2hlKCkucmVzb3VyY2VGb3JSZXF1ZXN0KHJl
cXVlc3QsIGZyYW1lLT5wYWdlKCktPnNlc3Npb25JRCgpKTsKKyAgICAgICAgICAgICAgICBDYWNo
ZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVz
b3VyY2VGb3JSZXF1ZXN0KHJlcXVlc3QsIGZyYW1lLT5wYWdlKCktPnNlc3Npb25JRCgpKTsKICAg
ICAgICAgICAgICAgICBpZiAoY2FjaGVkUmVzb3VyY2UpIHsKICAgICAgICAgICAgICAgICAgICAg
aWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpj
cmVhdGUoY2FjaGVkUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCksIHN1YnJlc291cmNlVVJMLCBj
YWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHN1
YnJlc291cmNlcy5hcHBlbmQoV1RGOjptb3ZlKHJlc291cmNlKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBhN2MzNzcwZjk0OTA5MmFjMzc1MWQ2
NTZiNWE2ZjZlNGViMDVjYWZhLi5iYjg1ODNiOTFiYWRiNTgxOTI2OWRiMjE1YmMyM2UxMzE1MzAx
MjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAg
LTM4MSw3ICszODEsNyBAQCB2b2lkIENhY2hlZEltYWdlOjphZGRJbmNyZW1lbnRhbERhdGFCdWZm
ZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgICAgICAvLyBJbWFnZSBkZWNvZGluZyBmYWlsZWQu
IEVpdGhlciB3ZSBuZWVkIG1vcmUgaW1hZ2UgZGF0YSBvciB0aGUgaW1hZ2UgZGF0YSBpcyBtYWxm
b3JtZWQuCiAgICAgICAgIGVycm9yKGVycm9yT2NjdXJyZWQoKSA/IHN0YXR1cygpIDogRGVjb2Rl
RXJyb3IpOwogICAgICAgICBpZiAoaW5DYWNoZSgpKQotICAgICAgICAgICAgbWVtb3J5Q2FjaGUo
KS5yZW1vdmUoKnRoaXMpOworICAgICAgICAgICAgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJl
bW92ZSgqdGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQyMiw3ICs0MjIsNyBA
QCB2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAg
ICAgICAgLy8gSW1hZ2UgZGVjb2RpbmcgZmFpbGVkOyB0aGUgaW1hZ2UgZGF0YSBpcyBtYWxmb3Jt
ZWQuCiAgICAgICAgIGVycm9yKGVycm9yT2NjdXJyZWQoKSA/IHN0YXR1cygpIDogRGVjb2RlRXJy
b3IpOwogICAgICAgICBpZiAoaW5DYWNoZSgpKQotICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS5y
ZW1vdmUoKnRoaXMpOworICAgICAgICAgICAgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlbW92
ZSgqdGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGJmZWY4NWJmODcwZGU3MTU3Y2Rh
NmQzNjdhNzE2NDQ2NjAwZjgzNjMuLjk3MWQ4NjQ5NDU5OWQ5MGQ2YTk5Mjg5N2ZlNjM2NmUxYWUw
OGNjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRz
IGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWxGb3JSZXNvdXJjZVR5cGUoCiAgICAgaWYg
KHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6Y2hy
b25vOjptaWxsaXNlY29uZHMgeyAwIH07CiAKLSAgICByZXR1cm4gbWVtb3J5Q2FjaGUoKS5kZWFk
RGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsKCk7CisgICAgcmV0dXJuIE1lbW9yeUNhY2hlOjpz
aW5nbGV0b24oKS5kZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsKCk7CiB9CiAKIERFRklO
RV9ERUJVR19PTkxZX0dMT0JBTChSZWZDb3VudGVkTGVha0NvdW50ZXIsIGNhY2hlZFJlc291cmNl
TGVha0NvdW50ZXIsICgiQ2FjaGVkUmVzb3VyY2UiKSk7CkBAIC0xNjIsNyArMTYyLDcgQEAgQ2Fj
aGVkUmVzb3VyY2U6On5DYWNoZWRSZXNvdXJjZSgpCiAgICAgQVNTRVJUKGNhbkRlbGV0ZSgpKTsK
ICAgICBBU1NFUlQoIWluQ2FjaGUoKSk7CiAgICAgQVNTRVJUKCFtX2RlbGV0ZWQpOwotICAgIEFT
U0VSVCh1cmwoKS5pc051bGwoKSB8fCBtZW1vcnlDYWNoZSgpLnJlc291cmNlRm9yUmVxdWVzdChy
ZXNvdXJjZVJlcXVlc3QoKSwgc2Vzc2lvbklEKCkpICE9IHRoaXMpOworICAgIEFTU0VSVCh1cmwo
KS5pc051bGwoKSB8fCBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVzb3VyY2VGb3JSZXF1ZXN0
KHJlc291cmNlUmVxdWVzdCgpLCBzZXNzaW9uSUQoKSkgIT0gdGhpcyk7CiAKICNpZm5kZWYgTkRF
QlVHCiAgICAgbV9kZWxldGVkID0gdHJ1ZTsKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIENhY2hl
ZFJlc291cmNlOjpmYWlsQmVmb3JlU3RhcnRpbmcoKQogICAgIC8vIEZJWE1FOiBXaGF0IGlmIHJl
c291cmNlcyBpbiBvdGhlciBmcmFtZXMgd2VyZSB3YWl0aW5nIGZvciB0aGlzIHJldmFsaWRhdGlv
bj8KICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2Fubm90IHN0YXJ0IGxvYWRpbmcgJyVzJyIs
IHVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgaWYgKG1fcmVzb3VyY2VUb1Jl
dmFsaWRhdGUpIAotICAgICAgICBtZW1vcnlDYWNoZSgpLnJldmFsaWRhdGlvbkZhaWxlZCgqdGhp
cyk7CisgICAgICAgIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXZhbGlkYXRpb25GYWlsZWQo
KnRoaXMpOwogICAgIGVycm9yKENhY2hlZFJlc291cmNlOjpMb2FkRXJyb3IpOwogfQogCkBAIC00
MTUsNyArNDE1LDcgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50VG9TZXQoQ2FjaGVk
UmVzb3VyY2VDbGllbnQqIGNsaWVudCkKICAgICAgICAgICAgIG1fcHJlbG9hZFJlc3VsdCA9IFBy
ZWxvYWRSZWZlcmVuY2VkOwogICAgIH0KICAgICBpZiAoIWhhc0NsaWVudHMoKSAmJiBpbkNhY2hl
KCkpCi0gICAgICAgIG1lbW9yeUNhY2hlKCkuYWRkVG9MaXZlUmVzb3VyY2VzU2l6ZSgqdGhpcyk7
CisgICAgICAgIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5hZGRUb0xpdmVSZXNvdXJjZXNTaXpl
KCp0aGlzKTsKIAogICAgIGlmICgobV90eXBlID09IFJhd1Jlc291cmNlIHx8IG1fdHlwZSA9PSBN
YWluUmVzb3VyY2UpICYmICFtX3Jlc3BvbnNlLmlzTnVsbCgpICYmICFtX3Byb3h5UmVzb3VyY2Up
IHsKICAgICAgICAgLy8gQ2VydGFpbiByZXNvdXJjZXMgKGVzcGVjaWFsbHkgWEhScyBhbmQgbWFp
biByZXNvdXJjZXMpIGRvIGNyYXp5IHRoaW5ncyBpZiBhbiBhc3luY2hyb25vdXMgbG9hZCByZXR1
cm5zCkBAIC00NDYsOSArNDQ2LDEwIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnJlbW92ZUNsaWVu
dChDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KQogCiAgICAgYm9vbCBkZWxldGVkID0gZGVs
ZXRlSWZQb3NzaWJsZSgpOwogICAgIGlmICghZGVsZXRlZCAmJiAhaGFzQ2xpZW50cygpKSB7Cisg
ICAgICAgIGF1dG8mIG1lbW9yeUNhY2hlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpOwogICAg
ICAgICBpZiAoaW5DYWNoZSgpKSB7Ci0gICAgICAgICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZUZy
b21MaXZlUmVzb3VyY2VzU2l6ZSgqdGhpcyk7Ci0gICAgICAgICAgICBtZW1vcnlDYWNoZSgpLnJl
bW92ZUZyb21MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QoKnRoaXMpOworICAgICAgICAgICAgbWVt
b3J5Q2FjaGUucmVtb3ZlRnJvbUxpdmVSZXNvdXJjZXNTaXplKCp0aGlzKTsKKyAgICAgICAgICAg
IG1lbW9yeUNhY2hlLnJlbW92ZUZyb21MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QoKnRoaXMpOwog
ICAgICAgICB9CiAgICAgICAgIGlmICghbV9zd2l0Y2hpbmdDbGllbnRzVG9SZXZhbGlkYXRlZFJl
c291cmNlKQogICAgICAgICAgICAgYWxsQ2xpZW50c1JlbW92ZWQoKTsKQEAgLTQ1OCw5ICs0NTks
OSBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpyZW1vdmVDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQqIGNsaWVudCkKICAgICAgICAgICAgIC8vICJuby1zdG9yZTogLi4uIE1VU1QgbWFrZSBhIGJl
c3QtZWZmb3J0IGF0dGVtcHQgdG8gcmVtb3ZlIHRoZSBpbmZvcm1hdGlvbiBmcm9tIHZvbGF0aWxl
IHN0b3JhZ2UgYXMgcHJvbXB0bHkgYXMgcG9zc2libGUiCiAgICAgICAgICAgICAvLyAiLi4uIEhp
c3RvcnkgYnVmZmVycyBNQVkgc3RvcmUgc3VjaCByZXNwb25zZXMgYXMgcGFydCBvZiB0aGVpciBu
b3JtYWwgb3BlcmF0aW9uLiIKICAgICAgICAgICAgIC8vIFdlIGFsbG93IG5vbi1zZWN1cmUgY29u
dGVudCB0byBiZSByZXVzZWQgaW4gaGlzdG9yeSwgYnV0IHdlIGRvIG5vdCBhbGxvdyBzZWN1cmUg
Y29udGVudCB0byBiZSByZXVzZWQuCi0gICAgICAgICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZSgq
dGhpcyk7CisgICAgICAgICAgICBtZW1vcnlDYWNoZS5yZW1vdmUoKnRoaXMpOwogICAgICAgICB9
Ci0gICAgICAgIG1lbW9yeUNhY2hlKCkucHJ1bmUoKTsKKyAgICAgICAgbWVtb3J5Q2FjaGUucHJ1
bmUoKTsKICAgICB9CiAgICAgLy8gVGhpcyBvYmplY3QgbWF5IGJlIGRlYWQgaGVyZS4KIH0KQEAg
LTQ2OSw3ICs0NzAsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpkZXN0cm95RGVjb2RlZERhdGFJ
Zk5lZWRlZCgpCiB7CiAgICAgaWYgKCFtX2RlY29kZWRTaXplKQogICAgICAgICByZXR1cm47Ci0g
ICAgaWYgKCFtZW1vcnlDYWNoZSgpLmRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwoKS5j
b3VudCgpKQorICAgIGlmICghTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmRlYWREZWNvZGVkRGF0
YURlbGV0aW9uSW50ZXJ2YWwoKS5jb3VudCgpKQogICAgICAgICByZXR1cm47CiAgICAgbV9kZWNv
ZGVkRGF0YURlbGV0aW9uVGltZXIucmVzdGFydCgpOwogfQpAQCAtNDk5LDEzICs1MDAsMTQgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZTo6c2V0RGVjb2RlZFNpemUodW5zaWduZWQgc2l6ZSkKICAgICAv
LyBUaGUgb2JqZWN0IG11c3QgYmUgbW92ZWQgdG8gYSBkaWZmZXJlbnQgcXVldWUsIHNpbmNlIGl0
cyBzaXplIGhhcyBiZWVuIGNoYW5nZWQuCiAgICAgLy8gUmVtb3ZlIGJlZm9yZSB1cGRhdGluZyBt
X2RlY29kZWRTaXplLCBzbyB3ZSBmaW5kIHRoZSByZXNvdXJjZSBpbiB0aGUgY29ycmVjdCBMUlUg
bGlzdC4KICAgICBpZiAoaW5DYWNoZSgpKQotICAgICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZUZy
b21MUlVMaXN0KCp0aGlzKTsKKyAgICAgICAgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlbW92
ZUZyb21MUlVMaXN0KCp0aGlzKTsKICAgICAKICAgICBtX2RlY29kZWRTaXplID0gc2l6ZTsKICAg
IAotICAgIGlmIChpbkNhY2hlKCkpIHsgCisgICAgaWYgKGluQ2FjaGUoKSkgeworICAgICAgICBh
dXRvJiBtZW1vcnlDYWNoZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKTsKICAgICAgICAgLy8g
Tm93IGluc2VydCBpbnRvIHRoZSBuZXcgTFJVIGxpc3QuCi0gICAgICAgIG1lbW9yeUNhY2hlKCku
aW5zZXJ0SW5MUlVMaXN0KCp0aGlzKTsKKyAgICAgICAgbWVtb3J5Q2FjaGUuaW5zZXJ0SW5MUlVM
aXN0KCp0aGlzKTsKICAgICAgICAgCiAgICAgICAgIC8vIEluc2VydCBpbnRvIG9yIHJlbW92ZSBm
cm9tIHRoZSBsaXZlIGRlY29kZWQgbGlzdCBpZiBuZWNlc3NhcnkuCiAgICAgICAgIC8vIFdoZW4g
aW5zZXJ0aW5nIGludG8gdGhlIExpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdCBpdCBpcyBwb3NzaWJs
ZQpAQCAtNTE0LDE0ICs1MTYsMTQgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6c2V0RGVjb2RlZFNp
emUodW5zaWduZWQgc2l6ZSkKICAgICAgICAgLy8gdmlvbGF0aW9uIG9mIHRoZSBpbnZhcmlhbnQg
dGhhdCB0aGUgbGlzdCBpcyB0byBiZSBrZXB0IHNvcnRlZAogICAgICAgICAvLyBieSBhY2Nlc3Mg
dGltZS4gVGhlIHdlYWtlbmluZyBvZiB0aGUgaW52YXJpYW50IGRvZXMgbm90IHBvc2UKICAgICAg
ICAgLy8gYSBwcm9ibGVtLiBGb3IgbW9yZSBkZXRhaWxzIHBsZWFzZSBzZWU6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDIwOQotICAgICAgICBib29sIGluTGl2ZURl
Y29kZWRSZXNvdXJjZXNMaXN0ID0gbWVtb3J5Q2FjaGUoKS5pbkxpdmVEZWNvZGVkUmVzb3VyY2Vz
TGlzdCgqdGhpcyk7CisgICAgICAgIGJvb2wgaW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QgPSBt
ZW1vcnlDYWNoZS5pbkxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdCgqdGhpcyk7CiAgICAgICAgIGlm
IChtX2RlY29kZWRTaXplICYmICFpbkxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdCAmJiBoYXNDbGll
bnRzKCkpCi0gICAgICAgICAgICBtZW1vcnlDYWNoZSgpLmluc2VydEluTGl2ZURlY29kZWRSZXNv
dXJjZXNMaXN0KCp0aGlzKTsKKyAgICAgICAgICAgIG1lbW9yeUNhY2hlLmluc2VydEluTGl2ZURl
Y29kZWRSZXNvdXJjZXNMaXN0KCp0aGlzKTsKICAgICAgICAgZWxzZSBpZiAoIW1fZGVjb2RlZFNp
emUgJiYgaW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QpCi0gICAgICAgICAgICBtZW1vcnlDYWNo
ZSgpLnJlbW92ZUZyb21MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QoKnRoaXMpOworICAgICAgICAg
ICAgbWVtb3J5Q2FjaGUucmVtb3ZlRnJvbUxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdCgqdGhpcyk7
CiAKICAgICAgICAgLy8gVXBkYXRlIHRoZSBjYWNoZSdzIHNpemUgdG90YWxzLgotICAgICAgICBt
ZW1vcnlDYWNoZSgpLmFkanVzdFNpemUoaGFzQ2xpZW50cygpLCBkZWx0YSk7CisgICAgICAgIG1l
bW9yeUNhY2hlLmFkanVzdFNpemUoaGFzQ2xpZW50cygpLCBkZWx0YSk7CiAgICAgfQogfQogCkBA
IC01MzUsMTMgKzUzNywxNCBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpzZXRFbmNvZGVkU2l6ZSh1
bnNpZ25lZCBzaXplKQogICAgIC8vIFRoZSBvYmplY3QgbXVzdCBiZSBtb3ZlZCB0byBhIGRpZmZl
cmVudCBxdWV1ZSwgc2luY2UgaXRzIHNpemUgaGFzIGJlZW4gY2hhbmdlZC4KICAgICAvLyBSZW1v
dmUgYmVmb3JlIHVwZGF0aW5nIG1fZW5jb2RlZFNpemUsIHNvIHdlIGZpbmQgdGhlIHJlc291cmNl
IGluIHRoZSBjb3JyZWN0IExSVSBsaXN0LgogICAgIGlmIChpbkNhY2hlKCkpCi0gICAgICAgIG1l
bW9yeUNhY2hlKCkucmVtb3ZlRnJvbUxSVUxpc3QoKnRoaXMpOworICAgICAgICBNZW1vcnlDYWNo
ZTo6c2luZ2xldG9uKCkucmVtb3ZlRnJvbUxSVUxpc3QoKnRoaXMpOwogCiAgICAgbV9lbmNvZGVk
U2l6ZSA9IHNpemU7CiAKLSAgICBpZiAoaW5DYWNoZSgpKSB7IAotICAgICAgICBtZW1vcnlDYWNo
ZSgpLmluc2VydEluTFJVTGlzdCgqdGhpcyk7Ci0gICAgICAgIG1lbW9yeUNhY2hlKCkuYWRqdXN0
U2l6ZShoYXNDbGllbnRzKCksIGRlbHRhKTsKKyAgICBpZiAoaW5DYWNoZSgpKSB7CisgICAgICAg
IGF1dG8mIG1lbW9yeUNhY2hlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpOworICAgICAgICBt
ZW1vcnlDYWNoZS5pbnNlcnRJbkxSVUxpc3QoKnRoaXMpOworICAgICAgICBtZW1vcnlDYWNoZS5h
ZGp1c3RTaXplKGhhc0NsaWVudHMoKSwgZGVsdGEpOwogICAgIH0KIH0KIApAQCAtNTUwLDExICs1
NTMsMTIgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZGlkQWNjZXNzRGVjb2RlZERhdGEoZG91Ymxl
IHRpbWVTdGFtcCkKICAgICBtX2xhc3REZWNvZGVkQWNjZXNzVGltZSA9IHRpbWVTdGFtcDsKICAg
ICAKICAgICBpZiAoaW5DYWNoZSgpKSB7Ci0gICAgICAgIGlmIChtZW1vcnlDYWNoZSgpLmluTGl2
ZURlY29kZWRSZXNvdXJjZXNMaXN0KCp0aGlzKSkgewotICAgICAgICAgICAgbWVtb3J5Q2FjaGUo
KS5yZW1vdmVGcm9tTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0KCp0aGlzKTsKLSAgICAgICAgICAg
IG1lbW9yeUNhY2hlKCkuaW5zZXJ0SW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QoKnRoaXMpOwor
ICAgICAgICBhdXRvJiBtZW1vcnlDYWNoZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKTsKKyAg
ICAgICAgaWYgKG1lbW9yeUNhY2hlLmluTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0KCp0aGlzKSkg
eworICAgICAgICAgICAgbWVtb3J5Q2FjaGUucmVtb3ZlRnJvbUxpdmVEZWNvZGVkUmVzb3VyY2Vz
TGlzdCgqdGhpcyk7CisgICAgICAgICAgICBtZW1vcnlDYWNoZS5pbnNlcnRJbkxpdmVEZWNvZGVk
UmVzb3VyY2VzTGlzdCgqdGhpcyk7CiAgICAgICAgIH0KLSAgICAgICAgbWVtb3J5Q2FjaGUoKS5w
cnVuZSgpOworICAgICAgICBtZW1vcnlDYWNoZS5wcnVuZSgpOwogICAgIH0KIH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDNkY2ExYWU0ODc3ZTAyNGJmNDJhNTY2ZDU0MWJlNzQ4YzU2ZmFlYTEuLjEwNjU5
ZmRhOTI2OTg1MmQxMjhjZDY4MWMzOWFmNDgyOTc4OTlkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtMjE1LDE3
ICsyMTUsMTggQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVldD4gQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RVc2VyQ1NTU3QKICAgICByZXF1ZXN0Lm11dGFibGVS
ZXNvdXJjZVJlcXVlc3QoKS5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihkb2N1bWVudCgpLT50
b3BPcmlnaW4oKS0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CiAjZW5kaWYKIAotICAgIGlm
IChDYWNoZWRSZXNvdXJjZSogZXhpc3RpbmcgPSBtZW1vcnlDYWNoZSgpLnJlc291cmNlRm9yUmVx
dWVzdChyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCBzZXNzaW9uSUQoKSkpIHsKKyAgICBhdXRv
JiBtZW1vcnlDYWNoZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKTsKKyAgICBpZiAoQ2FjaGVk
UmVzb3VyY2UqIGV4aXN0aW5nID0gbWVtb3J5Q2FjaGUucmVzb3VyY2VGb3JSZXF1ZXN0KHJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCksIHNlc3Npb25JRCgpKSkgewogICAgICAgICBpZiAoaXM8Q2Fj
aGVkQ1NTU3R5bGVTaGVldD4oKmV4aXN0aW5nKSkKICAgICAgICAgICAgIHJldHVybiBkb3duY2Fz
dDxDYWNoZWRDU1NTdHlsZVNoZWV0PihleGlzdGluZyk7Ci0gICAgICAgIG1lbW9yeUNhY2hlKCku
cmVtb3ZlKCpleGlzdGluZyk7CisgICAgICAgIG1lbW9yeUNhY2hlLnJlbW92ZSgqZXhpc3Rpbmcp
OwogICAgIH0KICAgICBpZiAodXJsLnN0cmluZygpICE9IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0
KCkudXJsKCkpCiAgICAgICAgIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLnNldFVS
TCh1cmwpOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVldD4g
dXNlclNoZWV0ID0gbmV3IENhY2hlZENTU1N0eWxlU2hlZXQocmVxdWVzdC5yZXNvdXJjZVJlcXVl
c3QoKSwgcmVxdWVzdC5jaGFyc2V0KCksIHNlc3Npb25JRCgpKTsKIAotICAgIG1lbW9yeUNhY2hl
KCkuYWRkKCp1c2VyU2hlZXQpOworICAgIG1lbW9yeUNhY2hlLmFkZCgqdXNlclNoZWV0KTsKICAg
ICAvLyBGSVhNRTogbG9hZFJlc291cmNlIGNhbGxzIHNldE93bmluZ0NhY2hlZFJlc291cmNlTG9h
ZGVyKCkgaWYgdGhlIHJlc291cmNlIGNvdWxkbid0IGJlIGFkZGVkIHRvIGNhY2hlLiBEb2VzIHRo
aXMgZnVuY3Rpb24gbmVlZCB0byBjYWxsIGl0LCB0b28/CiAKICAgICB1c2VyU2hlZXQtPmxvYWQo
KnRoaXMsIFJlc291cmNlTG9hZGVyT3B0aW9ucyhEb05vdFNlbmRDYWxsYmFja3MsIFNuaWZmQ29u
dGVudCwgQnVmZmVyRGF0YSwgQWxsb3dTdG9yZWRDcmVkZW50aWFscywgQXNrQ2xpZW50Rm9yQWxs
Q3JlZGVudGlhbHMsIFNraXBTZWN1cml0eUNoZWNrLCBVc2VEZWZhdWx0T3JpZ2luUmVzdHJpY3Rp
b25zRm9yVHlwZSwgRG9Ob3RJbmNsdWRlQ2VydGlmaWNhdGVJbmZvKSk7CkBAIC00NjcsNyArNDY4
LDggQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNl
TG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAj
ZW5kaWYKIAotICAgIGlmIChtZW1vcnlDYWNoZSgpLmRpc2FibGVkKCkpIHsKKyAgICBhdXRvJiBt
ZW1vcnlDYWNoZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKTsKKyAgICBpZiAobWVtb3J5Q2Fj
aGUuZGlzYWJsZWQoKSkgewogICAgICAgICBEb2N1bWVudFJlc291cmNlTWFwOjppdGVyYXRvciBp
dCA9IG1fZG9jdW1lbnRSZXNvdXJjZXMuZmluZCh1cmwuc3RyaW5nKCkpOwogICAgICAgICBpZiAo
aXQgIT0gbV9kb2N1bWVudFJlc291cmNlcy5lbmQoKSkgewogICAgICAgICAgICAgaXQtPnZhbHVl
LT5zZXRPd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlcigwKTsKQEAgLTQ4MiwxNCArNDg0LDE0IEBA
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6cmVxdWVzdFJlc291cmNlKENhY2hlCiAgICAgICAgIHJlcXVlc3QubXV0YWJsZVJlc291cmNl
UmVxdWVzdCgpLnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKGRvY3VtZW50KCktPnRvcE9yaWdp
bigpLT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpKTsKICNlbmRpZgogCi0gICAgcmVzb3VyY2Ug
PSBtZW1vcnlDYWNoZSgpLnJlc291cmNlRm9yUmVxdWVzdChyZXF1ZXN0LnJlc291cmNlUmVxdWVz
dCgpLCBzZXNzaW9uSUQoKSk7CisgICAgcmVzb3VyY2UgPSBtZW1vcnlDYWNoZS5yZXNvdXJjZUZv
clJlcXVlc3QocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgc2Vzc2lvbklEKCkpOwogCiAgICAg
bG9nTWVtb3J5Q2FjaGVSZXNvdXJjZVJlcXVlc3QoZnJhbWUoKSwgcmVzb3VyY2UgPyBEaWFnbm9z
dGljTG9nZ2luZ0tleXM6OmluTWVtb3J5Q2FjaGVLZXkoKSA6IERpYWdub3N0aWNMb2dnaW5nS2V5
czo6bm90SW5NZW1vcnlDYWNoZUtleSgpKTsKIAogICAgIGNvbnN0IFJldmFsaWRhdGlvblBvbGlj
eSBwb2xpY3kgPSBkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kodHlwZSwgcmVxdWVzdC5tdXRh
YmxlUmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QuZm9yUHJlbG9hZCgpLCByZXNvdXJjZS5nZXQo
KSwgcmVxdWVzdC5kZWZlcigpKTsKICAgICBzd2l0Y2ggKHBvbGljeSkgewogICAgIGNhc2UgUmVs
b2FkOgotICAgICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZSgqcmVzb3VyY2UpOworICAgICAgICBt
ZW1vcnlDYWNoZS5yZW1vdmUoKnJlc291cmNlKTsKICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAg
Y2FzZSBMb2FkOgogICAgICAgICBpZiAocmVzb3VyY2UpCkBAIC01MDUsNyArNTA3LDcgQEAgQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpy
ZXF1ZXN0UmVzb3VyY2UoQ2FjaGUKICAgICAgICAgaWYgKCFzaG91bGRDb250aW51ZUFmdGVyTm90
aWZ5aW5nTG9hZGVkRnJvbU1lbW9yeUNhY2hlKHJlcXVlc3QsIHJlc291cmNlLmdldCgpKSkKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBsb2dNZW1vcnlDYWNoZVJlc291cmNl
UmVxdWVzdChmcmFtZSgpLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmluTWVtb3J5Q2FjaGVLZXko
KSwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjp1c2VkS2V5KCkpOwotICAgICAgICBtZW1vcnlDYWNo
ZSgpLnJlc291cmNlQWNjZXNzZWQoKnJlc291cmNlKTsKKyAgICAgICAgbWVtb3J5Q2FjaGUucmVz
b3VyY2VBY2Nlc3NlZCgqcmVzb3VyY2UpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTUy
MSw3ICs1MjMsNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZQogICAgICAgICAvLyBXZSBkb24n
dCBzdXBwb3J0IGltbWVkaWF0ZSBsb2FkcywgYnV0IHdlIGRvIHN1cHBvcnQgaW1tZWRpYXRlIGZh
aWx1cmUuCiAgICAgICAgIGlmIChyZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKSB7CiAgICAgICAg
ICAgICBpZiAocmVzb3VyY2UtPmluQ2FjaGUoKSkKLSAgICAgICAgICAgICAgICBtZW1vcnlDYWNo
ZSgpLnJlbW92ZSgqcmVzb3VyY2UpOworICAgICAgICAgICAgICAgIG1lbW9yeUNhY2hlLnJlbW92
ZSgqcmVzb3VyY2UpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAg
ICB9CkBAIC01NDMsMjAgKzU0NSwxOSBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNv
dXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJldmFsaWRhdGVSZXNvdXJjZShjbwogewogICAg
IEFTU0VSVChyZXNvdXJjZSk7CiAgICAgQVNTRVJUKHJlc291cmNlLT5pbkNhY2hlKCkpOwotICAg
IEFTU0VSVCghbWVtb3J5Q2FjaGUoKS5kaXNhYmxlZCgpKTsKKyAgICBhdXRvJiBtZW1vcnlDYWNo
ZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKTsKKyAgICBBU1NFUlQoIW1lbW9yeUNhY2hlLmRp
c2FibGVkKCkpOwogICAgIEFTU0VSVChyZXNvdXJjZS0+Y2FuVXNlQ2FjaGVWYWxpZGF0b3IoKSk7
CiAgICAgQVNTRVJUKCFyZXNvdXJjZS0+cmVzb3VyY2VUb1JldmFsaWRhdGUoKSk7CiAgICAgQVNT
RVJUKHJlc291cmNlLT5zZXNzaW9uSUQoKSA9PSBzZXNzaW9uSUQoKSk7CiAKLSAgICAvLyBDb3B5
IHRoZSBVUkwgb3V0IG9mIHRoZSByZXNvdXJjZSB0byBiZSByZXZhbGlkYXRlZCBpbiBjYXNlIGl0
IGdldHMgZGVsZXRlZCBieSB0aGUgcmVtb3ZlKCkgY2FsbCBiZWxvdy4KLSAgICBTdHJpbmcgdXJs
ID0gcmVzb3VyY2UtPnVybCgpOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291
cmNlPiBuZXdSZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHJlc291cmNlLT50eXBlKCksIHJlc291
cmNlLT5yZXNvdXJjZVJlcXVlc3QoKSwgcmVzb3VyY2UtPmVuY29kaW5nKCksIHJlc291cmNlLT5z
ZXNzaW9uSUQoKSk7CiAgICAgCiAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIlJlc291cmNlICVw
IGNyZWF0ZWQgdG8gcmV2YWxpZGF0ZSAlcCIsIG5ld1Jlc291cmNlLmdldCgpLCByZXNvdXJjZSk7
CiAgICAgbmV3UmVzb3VyY2UtPnNldFJlc291cmNlVG9SZXZhbGlkYXRlKHJlc291cmNlKTsKICAg
ICAKLSAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZSgqcmVzb3VyY2UpOwotICAgIG1lbW9yeUNhY2hl
KCkuYWRkKCpuZXdSZXNvdXJjZSk7CisgICAgbWVtb3J5Q2FjaGUucmVtb3ZlKCpyZXNvdXJjZSk7
CisgICAgbWVtb3J5Q2FjaGUuYWRkKCpuZXdSZXNvdXJjZSk7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X1RJTUlORykKICAgICBzdG9yZVJlc291cmNlVGltaW5nSW5pdGlhdG9ySW5mb3JtYXRpb24ocmVz
b3VyY2UsIHJlcXVlc3QpOwogI2Vsc2UKQEAgLTU2NywxMyArNTY4LDE0IEBAIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmV2YWxpZGF0
ZVJlc291cmNlKGNvCiAKIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6bG9hZFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUs
IENhY2hlZFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBBU1NFUlQoIW1lbW9yeUNh
Y2hlKCkucmVzb3VyY2VGb3JSZXF1ZXN0KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHNlc3Np
b25JRCgpKSk7CisgICAgYXV0byYgbWVtb3J5Q2FjaGUgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9u
KCk7CisgICAgQVNTRVJUKCFtZW1vcnlDYWNoZS5yZXNvdXJjZUZvclJlcXVlc3QocmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKSwgc2Vzc2lvbklEKCkpKTsKIAogICAgIExPRyhSZXNvdXJjZUxvYWRp
bmcsICJMb2FkaW5nIENhY2hlZFJlc291cmNlIGZvciAnJXMnLiIsIHJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCkudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkubGF0aW4xKCku
ZGF0YSgpKTsKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXNv
dXJjZSA9IGNyZWF0ZVJlc291cmNlKHR5cGUsIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVz
dCgpLCByZXF1ZXN0LmNoYXJzZXQoKSwgc2Vzc2lvbklEKCkpOwogCi0gICAgaWYgKCFtZW1vcnlD
YWNoZSgpLmFkZCgqcmVzb3VyY2UpKQorICAgIGlmICghbWVtb3J5Q2FjaGUuYWRkKCpyZXNvdXJj
ZSkpCiAgICAgICAgIHJlc291cmNlLT5zZXRPd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlcih0aGlz
KTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfVElNSU5HKQogICAgIHN0b3JlUmVzb3VyY2VUaW1pbmdJ
bml0aWF0b3JJbmZvcm1hdGlvbihyZXNvdXJjZSwgcmVxdWVzdCk7CkBAIC04MDMsNyArODA1LDcg
QEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6YWRkQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlKQogewogICAgIG1fZG9jdW1lbnRSZXNvdXJjZXMuc2V0KHJlc291cmNl
LnVybCgpLCAmcmVzb3VyY2UpOwogCi0gICAgaWYgKCFtZW1vcnlDYWNoZSgpLmFkZChyZXNvdXJj
ZSkpCisgICAgaWYgKCFNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkuYWRkKHJlc291cmNlKSkKICAg
ICAgICAgcmVzb3VyY2Uuc2V0T3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIodGhpcyk7CiB9CiAK
QEAgLTk4OSw3ICs5OTEsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpjbGVhclByZWxv
YWRzKCkKICAgICAgICAgcmVzb3VyY2UtPmRlY3JlYXNlUHJlbG9hZENvdW50KCk7CiAgICAgICAg
IGJvb2wgZGVsZXRlZCA9IHJlc291cmNlLT5kZWxldGVJZlBvc3NpYmxlKCk7CiAgICAgICAgIGlm
ICghZGVsZXRlZCAmJiByZXNvdXJjZS0+cHJlbG9hZFJlc3VsdCgpID09IENhY2hlZFJlc291cmNl
OjpQcmVsb2FkTm90UmVmZXJlbmNlZCkKLSAgICAgICAgICAgIG1lbW9yeUNhY2hlKCkucmVtb3Zl
KCpyZXNvdXJjZSk7CisgICAgICAgICAgICBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVtb3Zl
KCpyZXNvdXJjZSk7CiAgICAgfQogICAgIG1fcHJlbG9hZHMgPSBudWxscHRyOwogfQpAQCAtMTAz
Myw3ICsxMDM1LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJpbnRQcmVsb2FkU3Rh
dHMoKQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAocmVzLT5lcnJvck9jY3VycmVk
KCkpCi0gICAgICAgICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZShyZXMpOworICAgICAgICAgICAg
TWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZShyZXMpOwogICAgICAgICAKICAgICAgICAg
cmVzLT5kZWNyZWFzZVByZWxvYWRDb3VudCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IGI1YjUwY2QyYzZhOTU1MGEzYzg5YjhhNDEz
YzZlNGU5N2I2ZWM1ZGUuLmEwZGVkODg1YzcwNzBkYmZjNTdkNTk1OGRiODBmMTAzYjJkOTQ2NWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcApAQCAtNTMs
MTIgKzUzLDEwIEBAIHN0YXRpYyBjb25zdCBkb3VibGUgY01pbkRlbGF5QmVmb3JlTGl2ZURlY29k
ZWRQcnVuZSA9IDE7IC8vIFNlY29uZHMuCiBzdGF0aWMgY29uc3QgZmxvYXQgY1RhcmdldFBydW5l
UGVyY2VudGFnZSA9IC45NWY7IC8vIFBlcmNlbnRhZ2Ugb2YgY2FwYWNpdHkgdG93YXJkIHdoaWNo
IHdlIHBydW5lLCB0byBhdm9pZCBpbW1lZGlhdGVseSBwcnVuaW5nIGFnYWluLgogc3RhdGljIGNv
bnN0IGF1dG8gZGVmYXVsdERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCA9IHN0ZDo6Y2hyb25v
OjpzZWNvbmRzIHsgMCB9OwogCi1NZW1vcnlDYWNoZSYgbWVtb3J5Q2FjaGUoKQorTWVtb3J5Q2Fj
aGUmIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKQogewogICAgIEFTU0VSVChXVEY6OmlzTWFpblRo
cmVhZCgpKTsKLQogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNZW1vcnlDYWNoZT4gbWVtb3J5
Q2FjaGU7Ci0KICAgICByZXR1cm4gbWVtb3J5Q2FjaGU7CiB9CiAKQEAgLTY2MCw5ICs2NTgsMTAg
QEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVxdWVzdEZyb21TZXNzaW9uQ2FjaGVzKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGZvciAoYXV0byYgcmVzb3VyY2VzIDogbWVtb3J5Q2FjaGUoKS5tX3Nlc3Npb25SZXNvdXJjZXMp
IHsKLSAgICAgICAgaWYgKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IG1lbW9yeUNhY2hlKCku
cmVzb3VyY2VGb3JSZXF1ZXN0SW1wbChyZXF1ZXN0LCAqcmVzb3VyY2VzLnZhbHVlKSkKLSAgICAg
ICAgICAgIG1lbW9yeUNhY2hlKCkucmVtb3ZlKCpyZXNvdXJjZSk7CisgICAgYXV0byYgbWVtb3J5
Q2FjaGUgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCk7CisgICAgZm9yIChhdXRvJiByZXNvdXJj
ZXMgOiBtZW1vcnlDYWNoZS5tX3Nlc3Npb25SZXNvdXJjZXMpIHsKKyAgICAgICAgaWYgKENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZSA9IG1lbW9yeUNhY2hlLnJlc291cmNlRm9yUmVxdWVzdEltcGwo
cmVxdWVzdCwgKnJlc291cmNlcy52YWx1ZSkpCisgICAgICAgICAgICBtZW1vcnlDYWNoZS5yZW1v
dmUoKnJlc291cmNlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmgKaW5kZXggOTFjZjdkMzA5MDIzZGI0NzVkZTgxMDI0MzlkMmU5ZTE3ZDZmZDdi
MS4uMzc2Yjg2MDczNjM4NzQzZWI3MDM5MjcxMWEyZDQ2YjAyODhjYWM2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKQEAgLTYxLDkgKzYxLDkgQEAgY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIE1lbW9yeUNhY2hlIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShNZW1vcnlDYWNoZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgog
ICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxNZW1vcnlDYWNoZT47CiAKK3B1YmxpYzoKICAgICBz
dHJ1Y3QgVHlwZVN0YXRpc3RpYyB7CiAgICAgICAgIGludCBjb3VudDsKICAgICAgICAgaW50IHNp
emU7CkBAIC04OSw2ICs4OSw4IEBAIHB1YmxpYzoKICAgICAgICAgVHlwZVN0YXRpc3RpYyBmb250
czsKICAgICB9OwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE1lbW9yeUNhY2hlJiBzaW5n
bGV0b24oKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIENhY2hlZFJlc291cmNlKiByZXNvdXJjZUZv
clVSTChjb25zdCBVUkwmLCBTZXNzaW9uSUQgPSBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQo
KSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlRm9yUmVxdWVz
dChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTZXNzaW9uSUQpOwogCkBAIC0yMTMsOSArMjE1LDYg
QEAgcHJpdmF0ZToKICAgICBTZXNzaW9uQ2FjaGVkUmVzb3VyY2VNYXAgbV9zZXNzaW9uUmVzb3Vy
Y2VzOwogfTsKIAotLy8gRnVuY3Rpb24gdG8gb2J0YWluIHRoZSBnbG9iYWwgY2FjaGUuCi1XRUJD
T1JFX0VYUE9SVCBNZW1vcnlDYWNoZSYgbWVtb3J5Q2FjaGUoKTsKLQogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29h
Lm1tCmluZGV4IGI1YWI3MDdkMWRlMjZjMTAxMzkxOTI1YzM2NWFiZmY2ZTZkM2RjYzMuLmNhMWI1
ZmU1ZDk3ZGUxMWU5OTMzZDJkMzQ1Y2ZmNjJjZTk4Y2JiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQpAQCAtMTEyLDcg
KzExMiw3IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBTZXNzaW9uSUQgc2VzCiAKIHZvaWQgRGlza0NhY2hlTW9uaXRv
cjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1ZmZl
cikKIHsKLSAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBtZW1vcnlDYWNoZSgpLnJlc291
cmNlRm9yUmVxdWVzdChtX3Jlc291cmNlUmVxdWVzdCwgbV9zZXNzaW9uSUQpOworICAgIENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXNvdXJjZUZv
clJlcXVlc3QobV9yZXNvdXJjZVJlcXVlc3QsIG1fc2Vzc2lvbklEKTsKICAgICBpZiAoIXJlc291
cmNlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAx
ZWE3MjBkYzFiYTRmM2M3YzA3NzVmOTFiNjc4Y2JiMTJmMzkwODlkLi5lODAyZjkxOTJiN2NjMmU0
ZTgzOTA0ZmNiNjRiZmQ0ZGNmOWIyY2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBA
IC0zNzYxLDcgKzM3NjEsNyBAQCB2b2lkIEZyYW1lVmlldzo6d2lsbFBhaW50Q29udGVudHMoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eQogCiAgICAgICAgIC8v
IFRvIGF2b2lkIHVubmVjZXNzYXJ5IGltYWdlIGRlY29kaW5nLCB3ZSBkb24ndCBwcnVuZSByZWNl
bnRseS1kZWNvZGVkIGxpdmUgcmVzb3VyY2VzIGhlcmUgc2luY2UKICAgICAgICAgLy8gd2UgbWln
aHQgbmVlZCBzb21lIGxpdmUgYml0bWFwcyBvbiBwYWludGluZy4KLSAgICAgICAgbWVtb3J5Q2Fj
aGUoKS5wcnVuZSgpOworICAgICAgICBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucHJ1bmUoKTsK
ICAgICB9CiAKICAgICBpZiAocGFpbnRpbmdTdGF0ZS5pc1RvcExldmVsUGFpbnRlcikKQEAgLTM4
MDEsNyArMzgwMSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpkaWRQYWludENvbnRlbnRzKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSCiAgICAgLy8gUGFpbnRpbmcg
Y2FuIGxlYWQgdG8gZGVjb2Rpbmcgb2YgbGFyZ2UgYW1vdW50cyBvZiBiaXRtYXBzCiAgICAgLy8g
SWYgd2UgYXJlIGxvdyBvbiBtZW1vcnksIHdpcGUgdGhlbSBvdXQgYWZ0ZXIgdGhlIHBhaW50Lgog
ICAgIGlmIChwYWludGluZ1N0YXRlLmlzVG9wTGV2ZWxQYWludGVyICYmIG1lbW9yeVByZXNzdXJl
SGFuZGxlcigpLmlzVW5kZXJNZW1vcnlQcmVzc3VyZSgpKQotICAgICAgICBtZW1vcnlDYWNoZSgp
LnBydW5lTGl2ZVJlc291cmNlcyh0cnVlKTsKKyAgICAgICAgTWVtb3J5Q2FjaGU6OnNpbmdsZXRv
bigpLnBydW5lTGl2ZVJlc291cmNlcyh0cnVlKTsKIAogICAgIC8vIFJlZ2lvbnMgbWF5IGhhdmUg
Y2hhbmdlZCBhcyBhIHJlc3VsdCBvZiB0aGUgdmlzaWJpbGl0eS96LWluZGV4IG9mIGVsZW1lbnQg
Y2hhbmdpbmcuCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKaW5kZXggZTUyNDY5NjFm
M2ZhMTQ1NzlkMTY3ZjgxY2FkYzUyODVmM2U3NDgxYy4uMDM0MTQxZDQwMzRmY2RmMDE2MDViNDli
OWZhYjEwYjVmMTgzY2M4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1v
cnlQcmVzc3VyZUhhbmRsZXIuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OnJlbGVhc2VDcml0aWNhbE1lbW9yeSgpCiAKICAgICB7CiAgICAgICAgIFJl
bGllZkxvZ2dlciBsb2coIlBydW5lIE1lbW9yeUNhY2hlIik7Ci0gICAgICAgIG1lbW9yeUNhY2hl
KCkuZXZpY3RSZXNvdXJjZXMoKTsKKyAgICAgICAgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmV2
aWN0UmVzb3VyY2VzKCk7CiAgICAgfQogCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCmluZGV4IDg3ZGU3NTY5NjcyNTQxZDcyMDRhMzEyOWViZGE0NzliMDEyYzllYjMuLjNl
MzIzNWJhY2JkNmM3MDNmN2JkYzk3YTAxMTFiYTQ5ZDg4NzU2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCBib29sIEludGVybmFsczo6aXNM
b2FkaW5nRnJvbU1lbW9yeUNhY2hlKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIGlmICghY29u
dGV4dERvY3VtZW50KCkgfHwgIWNvbnRleHREb2N1bWVudCgpLT5wYWdlKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBtZW1vcnlDYWNoZSgp
LnJlc291cmNlRm9yVVJMKGNvbnRleHREb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpLCBjb250
ZXh0RG9jdW1lbnQoKS0+cGFnZSgpLT5zZXNzaW9uSUQoKSk7CisgICAgQ2FjaGVkUmVzb3VyY2Uq
IHJlc291cmNlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291cmNlRm9yVVJMKGNvbnRl
eHREb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpLCBjb250ZXh0RG9jdW1lbnQoKS0+cGFnZSgp
LT5zZXNzaW9uSUQoKSk7CiAgICAgcmV0dXJuIHJlc291cmNlICYmIHJlc291cmNlLT5zdGF0dXMo
KSA9PSBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkOwogfQogCkBAIC00MDYsNyArNDA2LDcgQEAgU3Ry
aW5nIEludGVybmFsczo6eGhyUmVzcG9uc2VTb3VyY2UoWE1MSHR0cFJlcXVlc3QqIHhocikKIAog
dm9pZCBJbnRlcm5hbHM6OmNsZWFyTWVtb3J5Q2FjaGUoKQogewotICAgIG1lbW9yeUNhY2hlKCku
ZXZpY3RSZXNvdXJjZXMoKTsKKyAgICBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkuZXZpY3RSZXNv
dXJjZXMoKTsKIH0KIAogTm9kZSogSW50ZXJuYWxzOjp0cmVlU2NvcGVSb290Tm9kZShOb2RlKiBu
b2RlLCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01p
c2MvV2ViQ2FjaGUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNhY2hlLm1tCmluZGV4
IDQ0MzFhOTAwMWE5OTRhOWNjNzNiNWJlZTY4NDM5YjU5ZDc5YmIwM2EuLmI0MTQ4YWMxZTk4YmRi
YmU2YTBiNzdjOWU2Yzg3MGVkNzI0Mjk4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L01pc2MvV2ViQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDYWNoZS5t
bQpAQCAtNjUsNyArNjUsNyBAQAogCiArIChOU0FycmF5ICopc3RhdGlzdGljcwogewotICAgIFdl
YkNvcmU6Ok1lbW9yeUNhY2hlOjpTdGF0aXN0aWNzIHMgPSBXZWJDb3JlOjptZW1vcnlDYWNoZSgp
LmdldFN0YXRpc3RpY3MoKTsKKyAgICBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6U3RhdGlzdGljcyBz
ID0gV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmdldFN0YXRpc3RpY3MoKTsKIAog
ICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOgogICAgICAgICBbTlNEaWN0aW9u
YXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CkBAIC0xNDAsMTMgKzE0MCwxMyBAQAog
ICAgICAgICBbV2ViVmlldyBfc2V0Q2FjaGVNb2RlbDpXZWJDYWNoZU1vZGVsRG9jdW1lbnRWaWV3
ZXJdOwogICAgICAgICBbV2ViVmlldyBfc2V0Q2FjaGVNb2RlbDpjYWNoZU1vZGVsXTsKIAotICAg
ICAgICBXZWJDb3JlOjptZW1vcnlDYWNoZSgpLnBydW5lTGl2ZVJlc291cmNlcyh0cnVlKTsKKyAg
ICAgICAgV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnBydW5lTGl2ZVJlc291cmNl
cyh0cnVlKTsKICAgICB9KTsKIH0KIAogKyAodm9pZClzaXplT2ZEZWFkUmVzb3VyY2VzOihpbnQg
KilyZXNvdXJjZXMKIHsKLSAgICBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6U3RhdGlzdGljcyBzdGF0
cyA9IFdlYkNvcmU6Om1lbW9yeUNhY2hlKCkuZ2V0U3RhdGlzdGljcygpOworICAgIFdlYkNvcmU6
Ok1lbW9yeUNhY2hlOjpTdGF0aXN0aWNzIHN0YXRzID0gV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnNp
bmdsZXRvbigpLmdldFN0YXRpc3RpY3MoKTsKICAgICBpZiAocmVzb3VyY2VzKSB7CiAgICAgICAg
ICpyZXNvdXJjZXMgPSAoc3RhdHMuaW1hZ2VzLnNpemUgLSBzdGF0cy5pbWFnZXMubGl2ZVNpemUp
CiAgICAgICAgICAgICAgICAgICAgICArIChzdGF0cy5jc3NTdHlsZVNoZWV0cy5zaXplIC0gc3Rh
dHMuY3NzU3R5bGVTaGVldHMubGl2ZVNpemUpCkBAIC0xNzYsNyArMTc2LDcgQEAKICAgICBpZiAo
ZnJhbWUpCiAgICAgICAgIHRvcE9yaWdpbiA9IGNvcmUoZnJhbWUpLT5kb2N1bWVudCgpLT50b3BP
cmlnaW4oKTsKICNlbmRpZgotICAgIHJldHVybiBXZWJDb3JlOjptZW1vcnlDYWNoZSgpLmFkZElt
YWdlVG9DYWNoZShpbWFnZSwgdXJsLCB0b3BPcmlnaW4gPyB0b3BPcmlnaW4tPmRvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKCkgOiBlbXB0eVN0cmluZygpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6TWVt
b3J5Q2FjaGU6OnNpbmdsZXRvbigpLmFkZEltYWdlVG9DYWNoZShpbWFnZSwgdXJsLCB0b3BPcmln
aW4gPyB0b3BPcmlnaW4tPmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkgOiBlbXB0eVN0cmluZygp
KTsKIH0KIAogKyAodm9pZClyZW1vdmVJbWFnZUZyb21DYWNoZUZvclVSTDooTlNVUkwgKil1cmwK
QEAgLTE5Myw3ICsxOTMsNyBAQAogICAgIGlmIChmcmFtZSkKICAgICAgICAgdG9wT3JpZ2luID0g
Y29yZShmcmFtZSktPmRvY3VtZW50KCktPnRvcE9yaWdpbigpOwogI2VuZGlmCi0gICAgV2ViQ29y
ZTo6bWVtb3J5Q2FjaGUoKS5yZW1vdmVJbWFnZUZyb21DYWNoZSh1cmwsIHRvcE9yaWdpbiA/IHRv
cE9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSA6IGVtcHR5U3RyaW5nKCkpOworICAg
IFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZW1vdmVJbWFnZUZyb21DYWNoZSh1
cmwsIHRvcE9yaWdpbiA/IHRvcE9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSA6IGVt
cHR5U3RyaW5nKCkpOwogfQogCiArIChDR0ltYWdlUmVmKWltYWdlRm9yVVJMOihOU1VSTCAqKXVy
bApAQCAtMjAxLDcgKzIwMSw3IEBACiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIAotICAgIFdlYkNvcmU6OkNhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9
IFdlYkNvcmU6Om1lbW9yeUNhY2hlKCkucmVzb3VyY2VGb3JVUkwodXJsKTsKKyAgICBXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6
c2luZ2xldG9uKCkucmVzb3VyY2VGb3JVUkwodXJsKTsKICAgICBpZiAoIWlzPFdlYkNvcmU6OkNh
Y2hlZEltYWdlPihjYWNoZWRSZXNvdXJjZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IFdlYkNvcmU6OkNhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSA9IGRvd25jYXN0PFdlYkNvcmU6OkNh
Y2hlZEltYWdlPigqY2FjaGVkUmVzb3VyY2UpOwpAQCAtMjE3LDEyICsyMTcsMTIgQEAKICAgICBp
ZiAoIXB0aHJlYWRfbWFpbl9ucCgpKQogICAgICAgICByZXR1cm4gW1tzZWxmIF93ZWJraXRfaW52
b2tlT25NYWluVGhyZWFkXSBzZXREaXNhYmxlZDpkaXNhYmxlZF07CiAKLSAgICBXZWJDb3JlOjpt
ZW1vcnlDYWNoZSgpLnNldERpc2FibGVkKGRpc2FibGVkKTsKKyAgICBXZWJDb3JlOjpNZW1vcnlD
YWNoZTo6c2luZ2xldG9uKCkuc2V0RGlzYWJsZWQoZGlzYWJsZWQpOwogfQogCiArIChCT09MKWlz
RGlzYWJsZWQKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6bWVtb3J5Q2FjaGUoKS5kaXNhYmxlZCgp
OworICAgIHJldHVybiBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkuZGlzYWJsZWQo
KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDc0YWQ1
NWE5NDZlZDhlMzk3MDRhNmRkM2JhODQ4YWJjODgwMTBlYTIuLjc3MjUxNGViZmUwNDkxYTEwYTE2
MWZlNDAwODUyNDczMGJkZGUxYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
QEAgLTc5MTMsOCArNzkxMyw5IEBAIHN0YXRpYyBpbmxpbmUgdWludDY0X3Qgcm91bmRVcFRvUG93
ZXJPZjIodWludDY0X3QgbnVtKQogICAgIC8vIERvbid0IHNocmluayBhIGJpZyBkaXNrIGNhY2hl
LCBzaW5jZSB0aGF0IHdvdWxkIGNhdXNlIGNodXJuLgogICAgIG5zdXJsQ2FjaGVEaXNrQ2FwYWNp
dHkgPSBzdGQ6Om1heChuc3VybENhY2hlRGlza0NhcGFjaXR5LCBbbnN1cmxDYWNoZSBkaXNrQ2Fw
YWNpdHldKTsKIAotICAgIG1lbW9yeUNhY2hlKCkuc2V0Q2FwYWNpdGllcyhjYWNoZU1pbkRlYWRD
YXBhY2l0eSwgY2FjaGVNYXhEZWFkQ2FwYWNpdHksIGNhY2hlVG90YWxDYXBhY2l0eSk7Ci0gICAg
bWVtb3J5Q2FjaGUoKS5zZXREZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsKGRlYWREZWNv
ZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwpOworICAgIGF1dG8mIG1lbW9yeUNhY2hlID0gTWVtb3J5
Q2FjaGU6OnNpbmdsZXRvbigpOworICAgIG1lbW9yeUNhY2hlLnNldENhcGFjaXRpZXMoY2FjaGVN
aW5EZWFkQ2FwYWNpdHksIGNhY2hlTWF4RGVhZENhcGFjaXR5LCBjYWNoZVRvdGFsQ2FwYWNpdHkp
OworICAgIG1lbW9yeUNhY2hlLnNldERlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwoZGVh
ZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCk7CiAKICAgICBhdXRvJiBwYWdlQ2FjaGUgPSBQ
YWdlQ2FjaGU6OnNpbmdsZXRvbigpOwogICAgIHBhZ2VDYWNoZS5zZXRNYXhTaXplKHBhZ2VDYWNo
ZVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ2FjaGUuY3BwIGIvU291
cmNlL1dlYktpdC93aW4vV2ViQ2FjaGUuY3BwCmluZGV4IGRhMjcyNmI3MTE5NzRiMTIxMWE2ZDNk
YWFiMTdlYTE5MzY0YWVkNzguLjRhZTUwMGMxZWRjMDk5YWYxNDhlYjBiM2MxZjhjMmExOTkzMWQx
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNhY2hlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDYWNoZS5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgSFJFU1VMVCBXZWJD
YWNoZTo6c3RhdGlzdGljcyhpbnQqIGNvdW50LCBJUHJvcGVydHlCYWcqKiBzKQogICAgIGlmICgh
cykKICAgICAgICAgcmV0dXJuIFNfT0s7CiAKLSAgICBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6U3Rh
dGlzdGljcyBzdGF0ID0gV2ViQ29yZTo6bWVtb3J5Q2FjaGUoKS5nZXRTdGF0aXN0aWNzKCk7Cisg
ICAgV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OlN0YXRpc3RpY3Mgc3RhdCA9IFdlYkNvcmU6Ok1lbW9y
eUNhY2hlOjpzaW5nbGV0b24oKS5nZXRTdGF0aXN0aWNzKCk7CiAKICAgICBzdGF0aWMgQ0ZTdHJp
bmdSZWYgaW1hZ2VzS2V5ID0gQ0ZTVFIoImltYWdlcyIpOwogICAgIHN0YXRpYyBDRlN0cmluZ1Jl
ZiBzdHlsZXNoZWV0c0tleSA9IENGU1RSKCJzdHlsZSBzaGVldHMiKTsKQEAgLTIwNiwxMCArMjA2
LDExIEBAIEhSRVNVTFQgV2ViQ2FjaGU6OnN0YXRpc3RpY3MoaW50KiBjb3VudCwgSVByb3BlcnR5
QmFnKiogcykKIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJDYWNoZTo6ZW1wdHkoIHZv
aWQpCiB7Ci0gICAgaWYgKFdlYkNvcmU6Om1lbW9yeUNhY2hlKCkuZGlzYWJsZWQoKSkKKyAgICBh
dXRvJiBtZW1vcnlDYWNoZSA9IFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKTsKKyAg
ICBpZiAobWVtb3J5Q2FjaGUuZGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIFNfT0s7Ci0gICAg
V2ViQ29yZTo6bWVtb3J5Q2FjaGUoKS5zZXREaXNhYmxlZCh0cnVlKTsKLSAgICBXZWJDb3JlOjpt
ZW1vcnlDYWNoZSgpLnNldERpc2FibGVkKGZhbHNlKTsKKyAgICBtZW1vcnlDYWNoZS5zZXREaXNh
YmxlZCh0cnVlKTsKKyAgICBtZW1vcnlDYWNoZS5zZXREaXNhYmxlZChmYWxzZSk7CiAKICAgICAv
LyBFbXB0eSB0aGUgYXBwbGljYXRpb24gY2FjaGUuCiAgICAgV2ViQ29yZTo6Y2FjaGVTdG9yYWdl
KCkuZW1wdHkoKTsKQEAgLTIyMyw3ICsyMjQsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYkNhY2hlOjplbXB0eSggdm9pZCkKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ2Fj
aGU6OnNldERpc2FibGVkKCAKICAgICAvKiBbaW5dICovIEJPT0wgZGlzYWJsZWQpCiB7Ci0gICAg
V2ViQ29yZTo6bWVtb3J5Q2FjaGUoKS5zZXREaXNhYmxlZCghIWRpc2FibGVkKTsKKyAgICBXZWJD
b3JlOjpNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkuc2V0RGlzYWJsZWQoISFkaXNhYmxlZCk7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTIzMiw3ICsyMzMsNyBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkNhY2hlOjpkaXNhYmxlZCgKIHsKICAgICBpZiAoIWRpc2FibGVkKQogICAg
ICAgICByZXR1cm4gRV9QT0lOVEVSOwotICAgICpkaXNhYmxlZCA9IFdlYkNvcmU6Om1lbW9yeUNh
Y2hlKCkuZGlzYWJsZWQoKTsKKyAgICAqZGlzYWJsZWQgPSBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6
c2luZ2xldG9uKCkuZGlzYWJsZWQoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJW
aWV3LmNwcAppbmRleCA5OWQzNTNjMDA5N2YyODAzNThlYmRjMzVmMGUwMGUzMGUyNjRhYmJlLi5j
ZjM4OGI3OWY3NzE1M2RlZTRjMmU5NjViOWNmZTE0YjA1MWI4MTIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3
LmNwcApAQCAtNjczLDggKzY3Myw5IEBAIHZvaWQgV2ViVmlldzo6c2V0Q2FjaGVNb2RlbChXZWJD
YWNoZU1vZGVsIGNhY2hlTW9kZWwpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IH0KIAotICAgIG1lbW9yeUNhY2hlKCkuc2V0Q2FwYWNpdGllcyhjYWNoZU1pbkRlYWRDYXBhY2l0
eSwgY2FjaGVNYXhEZWFkQ2FwYWNpdHksIGNhY2hlVG90YWxDYXBhY2l0eSk7Ci0gICAgbWVtb3J5
Q2FjaGUoKS5zZXREZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsKGRlYWREZWNvZGVkRGF0
YURlbGV0aW9uSW50ZXJ2YWwpOworICAgIGF1dG8mIG1lbW9yeUNhY2hlID0gTWVtb3J5Q2FjaGU6
OnNpbmdsZXRvbigpOworICAgIG1lbW9yeUNhY2hlLnNldENhcGFjaXRpZXMoY2FjaGVNaW5EZWFk
Q2FwYWNpdHksIGNhY2hlTWF4RGVhZENhcGFjaXR5LCBjYWNoZVRvdGFsQ2FwYWNpdHkpOworICAg
IG1lbW9yeUNhY2hlLnNldERlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwoZGVhZERlY29k
ZWREYXRhRGVsZXRpb25JbnRlcnZhbCk7CiAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5zZXRN
YXhTaXplKHBhZ2VDYWNoZVNpemUpOwogCiAjaWYgVVNFKENGTkVUV09SSykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHAKaW5kZXggODM3MGNjNGU3NjI5YWE0NmZiMDIxYWY5ZjAzNzQ1NzBkNjk1
ZGNmNC4uNDNmNWRlY2M5MjIwMGJiMTAzZjA1YTlkYzExNmFjOWQzOGY1MTBiZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OlMKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogdm9pZCBOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kbGUsIFNlc3Npb25JRCBz
ZXNzaW9uSUQpCiB7Ci0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gbWVtb3J5Q2FjaGUo
KS5yZXNvdXJjZUZvclJlcXVlc3QocmVxdWVzdCwgc2Vzc2lvbklEKTsKKyAgICBDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVzb3VyY2VGb3JSZXF1
ZXN0KHJlcXVlc3QsIHNlc3Npb25JRCk7CiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0
dXJuOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNvdXJj
ZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKaW5kZXggZGI4
MmNlYTM2NTYzYmE3NjUzOGU1MjEwZWVmOWUwMWNhMDFlZmFmNC4uMzU0OTJmODI1ZjZlZDYwZDkw
ZGExNmI0YmI1NDcxNmU3NWQ0NzMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFn
ZXIuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXI6Omdl
dENhY2hlT3JpZ2lucyh1aW50NjRfdCBjYWxsYmFja0lEKSBjb25zdAogI2Vsc2UKICAgICBNZW1v
cnlDYWNoZTo6U2VjdXJpdHlPcmlnaW5TZXQgb3JpZ2luczsKICNlbmRpZgotICAgIG1lbW9yeUNh
Y2hlKCkuZ2V0T3JpZ2luc1dpdGhDYWNoZShvcmlnaW5zKTsKKyAgICBNZW1vcnlDYWNoZTo6c2lu
Z2xldG9uKCkuZ2V0T3JpZ2luc1dpdGhDYWNoZShvcmlnaW5zKTsKIAogI2lmIFVTRShDRlVSTENB
Q0hFKQogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCkBAIC0xMTQsNyArMTE0LDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlcjo6Y2xlYXJDYWNoZUZvck9yaWdpbihjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIG9yaWcKICAgICBpZiAoIW9yaWdpbikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbWVtb3J5Q2FjaGUoKS5yZW1vdmVSZXNvdXJjZXNXaXRoT3JpZ2luKCpvcmlnaW4p
OworICAgIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZW1vdmVSZXNvdXJjZXNXaXRoT3JpZ2lu
KCpvcmlnaW4pOwogCiAjaWYgVVNFKENGVVJMQ0FDSEUpCiAgICAgaWYgKHJlc291cmNlQ2FjaGVz
VG9DbGVhciAhPSBJbk1lbW9yeVJlc291cmNlQ2FjaGVzT25seSkgeyAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGY1YTk3M2Q4ZThiYjA0Y2ZlYjdhMTJiMjRl
OGQ5OTAwZTg4NTg5NmUuLjA1ZWRmNmE3MjA1NGQ3NzE5MjU2YWZlNzRmZDk0ZjQ5OGZkYTk3MTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNTc1LDcgKzU3
NSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6dGVybWluYXRlKCkKICNpZm5kZWYgTkRFQlVHCiAgICAg
Z2NDb250cm9sbGVyKCkuZ2FyYmFnZUNvbGxlY3ROb3coKTsKICAgICBmb250Q2FjaGUoKS5pbnZh
bGlkYXRlKCk7Ci0gICAgbWVtb3J5Q2FjaGUoKS5zZXREaXNhYmxlZCh0cnVlKTsKKyAgICBNZW1v
cnlDYWNoZTo6c2luZ2xldG9uKCkuc2V0RGlzYWJsZWQodHJ1ZSk7CiAjZW5kaWYKIAogICAgIG1f
d2ViQ29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOwpAQCAtNjMzLDcgKzYzMyw3IEBAIHZvaWQgV2Vi
UHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKIAogICAgIGdjQ29udHJvbGxlcigp
LmdhcmJhZ2VDb2xsZWN0U29vbigpOwogICAgIGZvbnRDYWNoZSgpLmludmFsaWRhdGUoKTsKLSAg
ICBtZW1vcnlDYWNoZSgpLnNldERpc2FibGVkKHRydWUpOworICAgIE1lbW9yeUNhY2hlOjpzaW5n
bGV0b24oKS5zZXREaXNhYmxlZCh0cnVlKTsKICNlbmRpZiAgICAKIAogICAgIC8vIFRoZSBVSSBw
cm9jZXNzIGNsb3NlZCB0aGlzIGNvbm5lY3Rpb24sIHNodXQgZG93bi4KQEAgLTcwNSw3ICs3MDUs
NyBAQCB2b2lkIFdlYlByb2Nlc3M6OmNsZWFyUmVzb3VyY2VDYWNoZXMoUmVzb3VyY2VDYWNoZXNU
b0NsZWFyIHJlc291cmNlQ2FjaGVzVG9DbGVhcgogICAgIHNldENhY2hlTW9kZWwoQ2FjaGVNb2Rl
bERvY3VtZW50Vmlld2VyKTsKICAgICBzZXRDYWNoZU1vZGVsKGNhY2hlTW9kZWwpOwogCi0gICAg
bWVtb3J5Q2FjaGUoKS5ldmljdFJlc291cmNlcygpOworICAgIE1lbW9yeUNhY2hlOjpzaW5nbGV0
b24oKS5ldmljdFJlc291cmNlcygpOwogCiAgICAgLy8gRW1wdHkgdGhlIGNyb3NzLW9yaWdpbiBw
cmVmbGlnaHQgY2FjaGUuCiAgICAgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTo6c2lu
Z2xldG9uKCkuZW1wdHkoKTsKQEAgLTg2MSw3ICs4NjEsNyBAQCBzdGF0aWMgdm9pZCBnZXRXZWJD
b3JlTWVtb3J5Q2FjaGVTdGF0aXN0aWNzKFZlY3RvcjxIYXNoTWFwPFN0cmluZywgdWludDY0X3Q+
PiYgcgogICAgIFN0cmluZyB4c2xTdHJpbmcoQVNDSUlMaXRlcmFsKCJYU0wiKSk7CiAgICAgU3Ry
aW5nIGphdmFTY3JpcHRTdHJpbmcoQVNDSUlMaXRlcmFsKCJKYXZhU2NyaXB0IikpOwogICAgIAot
ICAgIE1lbW9yeUNhY2hlOjpTdGF0aXN0aWNzIG1lbW9yeUNhY2hlU3RhdGlzdGljcyA9IG1lbW9y
eUNhY2hlKCkuZ2V0U3RhdGlzdGljcygpOworICAgIE1lbW9yeUNhY2hlOjpTdGF0aXN0aWNzIG1l
bW9yeUNhY2hlU3RhdGlzdGljcyA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5nZXRTdGF0aXN0
aWNzKCk7CiAgICAgCiAgICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90PiBjb3VudHM7CiAgICAg
Y291bnRzLnNldChpbWFnZXNTdHJpbmcsIG1lbW9yeUNhY2hlU3RhdGlzdGljcy5pbWFnZXMuY291
bnQpOwpAQCAtMTMxOSw4ICsxMzE5LDkgQEAgUmVmUHRyPEFQSTo6T2JqZWN0PiBXZWJQcm9jZXNz
Ojp0cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKEFQSTo6T2JqZWN0KiBvYmplY3QpCiAKIHZvaWQg
V2ViUHJvY2Vzczo6c2V0TWVtb3J5Q2FjaGVEaXNhYmxlZChib29sIGRpc2FibGVkKQogewotICAg
IGlmIChtZW1vcnlDYWNoZSgpLmRpc2FibGVkKCkgIT0gZGlzYWJsZWQpCi0gICAgICAgIG1lbW9y
eUNhY2hlKCkuc2V0RGlzYWJsZWQoZGlzYWJsZWQpOworICAgIGF1dG8mIG1lbW9yeUNhY2hlID0g
TWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpOworICAgIGlmIChtZW1vcnlDYWNoZS5kaXNhYmxlZCgp
ICE9IGRpc2FibGVkKQorICAgICAgICBtZW1vcnlDYWNoZS5zZXREaXNhYmxlZChkaXNhYmxlZCk7
CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggMGQ4YTNjZjE1NTg4
Y2QwN2FmZmIzNTQxMWIwYTNhNGQxZWVhM2Y0Ni4uMmQ2YmExNGY1MGQ5M2RhMGZlOGNhOGQ2NmYy
M2NmZTMxODA0NDg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW0KQEAgLTExMiw5ICsxMTIsOSBAQCB2b2lkIFdlYlByb2Nlc3M6
OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCiAgICAgICAgIGNh
Y2hlVG90YWxDYXBhY2l0eSwgY2FjaGVNaW5EZWFkQ2FwYWNpdHksIGNhY2hlTWF4RGVhZENhcGFj
aXR5LCBkZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsLAogICAgICAgICBwYWdlQ2FjaGVT
aXplLCB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5LCB1cmxDYWNoZURpc2tDYXBhY2l0eSk7CiAKLQot
ICAgIG1lbW9yeUNhY2hlKCkuc2V0Q2FwYWNpdGllcyhjYWNoZU1pbkRlYWRDYXBhY2l0eSwgY2Fj
aGVNYXhEZWFkQ2FwYWNpdHksIGNhY2hlVG90YWxDYXBhY2l0eSk7Ci0gICAgbWVtb3J5Q2FjaGUo
KS5zZXREZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsKGRlYWREZWNvZGVkRGF0YURlbGV0
aW9uSW50ZXJ2YWwpOworICAgIGF1dG8mIG1lbW9yeUNhY2hlID0gTWVtb3J5Q2FjaGU6OnNpbmds
ZXRvbigpOworICAgIG1lbW9yeUNhY2hlLnNldENhcGFjaXRpZXMoY2FjaGVNaW5EZWFkQ2FwYWNp
dHksIGNhY2hlTWF4RGVhZENhcGFjaXR5LCBjYWNoZVRvdGFsQ2FwYWNpdHkpOworICAgIG1lbW9y
eUNhY2hlLnNldERlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwoZGVhZERlY29kZWREYXRh
RGVsZXRpb25JbnRlcnZhbCk7CiAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5zZXRNYXhTaXpl
KHBhZ2VDYWNoZVNpemUpOwogCiAgICAgTlNVUkxDYWNoZSAqbnN1cmxDYWNoZSA9IFtOU1VSTENh
Y2hlIHNoYXJlZFVSTENhY2hlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3Nv
dXAvV2ViUHJvY2Vzc1NvdXAuY3BwCmluZGV4IDlhMjg3MDg0NTdmNGEyYzUxY2RmMDNjZDM5ZTNm
NWI4MjMyNGM5MmYuLjJmMDlkNmMzM2Y2YTU4MGVjZGU3YmYyN2NmMWZjY2IyODg0ZjA4OGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNw
cApAQCAtMTAxLDkgKzEwMSwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVN
b2RlbChDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCiAgICAgICAgICAgICAgICAgICAgICAgICBjYWNo
ZVRvdGFsQ2FwYWNpdHksIGNhY2hlTWluRGVhZENhcGFjaXR5LCBjYWNoZU1heERlYWRDYXBhY2l0
eSwgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCwKICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhZ2VDYWNoZVNpemUsIHVybENhY2hlTWVtb3J5Q2FwYWNpdHksIHVybENhY2hlRGlza0Nh
cGFjaXR5KTsKIAotICAgIFdlYkNvcmU6Om1lbW9yeUNhY2hlKCkuc2V0RGlzYWJsZWQoY2FjaGVN
b2RlbCA9PSBDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXIpOwotICAgIFdlYkNvcmU6Om1lbW9yeUNh
Y2hlKCkuc2V0Q2FwYWNpdGllcyhjYWNoZU1pbkRlYWRDYXBhY2l0eSwgY2FjaGVNYXhEZWFkQ2Fw
YWNpdHksIGNhY2hlVG90YWxDYXBhY2l0eSk7Ci0gICAgV2ViQ29yZTo6bWVtb3J5Q2FjaGUoKS5z
ZXREZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsKGRlYWREZWNvZGVkRGF0YURlbGV0aW9u
SW50ZXJ2YWwpOworICAgIGF1dG8mIG1lbW9yeUNhY2hlID0gV2ViQ29yZTo6TWVtb3J5Q2FjaGU6
OnNpbmdsZXRvbigpOworICAgIG1lbW9yeUNhY2hlLnNldERpc2FibGVkKGNhY2hlTW9kZWwgPT0g
Q2FjaGVNb2RlbERvY3VtZW50Vmlld2VyKTsKKyAgICBtZW1vcnlDYWNoZS5zZXRDYXBhY2l0aWVz
KGNhY2hlTWluRGVhZENhcGFjaXR5LCBjYWNoZU1heERlYWRDYXBhY2l0eSwgY2FjaGVUb3RhbENh
cGFjaXR5KTsKKyAgICBtZW1vcnlDYWNoZS5zZXREZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVy
dmFsKGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwpOwogICAgIFdlYkNvcmU6OlBhZ2VD
YWNoZTo6c2luZ2xldG9uKCkuc2V0TWF4U2l6ZShwYWdlQ2FjaGVTaXplKTsKIAogI2lmIFBMQVRG
T1JNKEdUSykK
</data>

          </attachment>
      

    </bug>

</bugzilla>