<?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>203370</bug_id>
          
          <creation_ts>2019-10-24 10:00:05 -0700</creation_ts>
          <short_desc>Simplify ProcessThrottler implementation</short_desc>
          <delta_ts>2019-10-25 10:56:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=203422</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1583403</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-24 10:00:05 -0700</bug_when>
    <thetext>Simplify ProcessThrottler implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583459</commentid>
    <comment_count>1</comment_count>
      <attachid>381833</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-24 12:38:04 -0700</bug_when>
    <thetext>Created attachment 381833
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583493</commentid>
    <comment_count>2</comment_count>
      <attachid>381833</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-24 13:26:48 -0700</bug_when>
    <thetext>Comment on attachment 381833
Patch

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

&gt; Source/WebKit/ChangeLog:13
&gt; +        - Wether the suspension is imminent or not, the child process now always responds with

Whether

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2087
&gt; +void NetworkProcess::prepareToSuspend(uint64_t requestToSuspendID, bool isSuspensionImminent)

Could this be made a typed identifier?  Since it&apos;s only used for a reply, could you use sendWithAsyncReply instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583513</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-24 13:53:35 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #2)
&gt; Comment on attachment 381833 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=381833&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:13
&gt; &gt; +        - Wether the suspension is imminent or not, the child process now always responds with
&gt; 
&gt; Whether
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2087
&gt; &gt; +void NetworkProcess::prepareToSuspend(uint64_t requestToSuspendID, bool isSuspensionImminent)
&gt; 
&gt; Could this be made a typed identifier?  Since it&apos;s only used for a reply,
&gt; could you use sendWithAsyncReply instead?

Since the ProcessThrottler needs to know if the response is for the *last* request to suspend, I think the ProcessThrottler will still need an identifier, even if I use sendWithAsyncReply() for the IPC.
Using sendWithAsyncReply() for the IPC is likely feasible, I will try it out to see how it look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583567</commentid>
    <comment_count>4</comment_count>
      <attachid>381850</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-24 15:46:40 -0700</bug_when>
    <thetext>Created attachment 381850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583602</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-24 17:00:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/56547883&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583604</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-24 17:03:02 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; (In reply to Alex Christensen from comment #2)
&gt; &gt; Comment on attachment 381833 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=381833&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/ChangeLog:13
&gt; &gt; &gt; +        - Wether the suspension is imminent or not, the child process now always responds with
&gt; &gt; 
&gt; &gt; Whether
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2087
&gt; &gt; &gt; +void NetworkProcess::prepareToSuspend(uint64_t requestToSuspendID, bool isSuspensionImminent)
&gt; &gt; 
&gt; &gt; Could this be made a typed identifier?  Since it&apos;s only used for a reply,
&gt; &gt; could you use sendWithAsyncReply instead?
&gt; 
&gt; Since the ProcessThrottler needs to know if the response is for the *last*
&gt; request to suspend, I think the ProcessThrottler will still need an
&gt; identifier, even if I use sendWithAsyncReply() for the IPC.
&gt; Using sendWithAsyncReply() for the IPC is likely feasible, I will try it out
&gt; to see how it look.

If you don&apos;t mind, I&apos;d like to do this refactoring in a follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583613</commentid>
    <comment_count>7</comment_count>
      <attachid>381850</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-24 17:31:20 -0700</bug_when>
    <thetext>Comment on attachment 381850
Patch

Sure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583619</commentid>
    <comment_count>8</comment_count>
      <attachid>381850</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-24 18:07:13 -0700</bug_when>
    <thetext>Comment on attachment 381850
Patch

Clearing flags on attachment: 381850

Committed r251577: &lt;https://trac.webkit.org/changeset/251577&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583620</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-24 18:07:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381833</attachid>
            <date>2019-10-24 12:38:04 -0700</date>
            <delta_ts>2019-10-24 15:46:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203370-20191024123803.patch</filename>
            <type>text/plain</type>
            <size>38888</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY0OTNjZGYxZWZlZTAxNDJi
YTZhMmMyOTNiODgzMDVjNTQxMzUwZGQuLmQ1YWI5OGRmZGE3ZWQyNGU2OTQyN2VlYzUxODVmZGUz
MTM5NmZiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMTktMTAtMjQgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBQcm9jZXNzVGhyb3R0
bGVyIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDMzNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTaW1wbGlmeSBQcm9jZXNzVGhyb3R0bGVyIGltcGxlbWVudGF0aW9uIGJ5Ogor
ICAgICAgICAtIEdldHRpbmcgcmlkIG9mIENhbmNlbFByZXBhcmVUb1N1c3BlbmQgSVBDLiBJbnN0
ZWFkIGEgcmVndWxhciBQcm9jZXNzRGlkUmVzdW1lIElQQyBpcyBzZW50IHRvCisgICAgICAgICAg
dGhlIGNoaWxkIHByb2Nlc3MuCisgICAgICAgIC0gR2V0dGluZyByaWQgb2YgdGhlIFByb2Nlc3NX
aWxsU3VzcGVuZEltbWluZW50bHkgSVBDIGFuZCBzZW5kIGEgcmVndWxhciBQcm9jZXNzRGlkUmVz
dW1lIElQQworICAgICAgICAgIHdpdGggYSAnaXNTdXNwZW5zaW9uSW1taW5lbnQnIGZsYWcgaW5z
dGVhZC4KKyAgICAgICAgLSBXZXRoZXIgdGhlIHN1c3BlbnNpb24gaXMgaW1taW5lbnQgb3Igbm90
LCB0aGUgY2hpbGQgcHJvY2VzcyBub3cgYWx3YXlzIHJlc3BvbmRzIHdpdGgKKyAgICAgICAgICBh
IFByb2Nlc3NSZWFkeVRvU3VzcGVuZCBJUEMuIFRoaXMgc2ltcGxpZmllcyBvdXIgbG9naWMgYXMg
dGhlIGlkZWEgaXMgdGhhdCB0cmVhdGluZyBpbW1pbmVudAorICAgICAgICAgIGFuZCBub24taW1t
aW5lbnQgc3VzcGVuc2lvbiBzaG91bGQgc2hhcmUgYXMgbXVjaCBvZiB0aGUgc2FtZSBsb2dpYyBh
cyBwb3NzaWJsZS4KKyAgICAgICAgLSBBbGwgUHJlcGFyZVRvU3VzcGVuZCBJUENzIG5vdyBoYXZl
IGFuIGFzc29jaWF0ZWQgaWRlbnRpZmllciBhbmQgdGhlIGNoaWxkIHByb2Nlc3Mgc2VuZHMgYmFj
aworICAgICAgICAgIHRoaXMgaWRlbnRpZmllciB3aGVuIHJlc3BvbmRpbmcgd2l0aCBhIFByb2Nl
c3NSZWFkeVRvU3VzcGVuZCBJUEMuIFRoaXMgYWxsb3dzIHRoZQorICAgICAgICAgIFByb2Nlc3NU
aHJvdHRsZXIgdG8gZWFzaWx5IGlnbm9yZSBvdXRkYXRlZCByZXF1ZXN0cyB0byBzdXNwZW5kLCB3
aXRob3V0IHJlcXVpcmluZyB0aGUKKyAgICAgICAgICBtX3N1c3BlbmRNZXNzYWdlQ291bnQgZGF0
YSBtZW1iZXIgd2UgaGFkLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIG1vcmUgbG9n
Z2luZyB0byBQcm9jZXNzVGhyb3R0bGVyIGFuZCB0aGUgc3VzcGVuc2lvbiBsb2dpYyBpbiB0aGUg
Y2hpbGQKKyAgICAgICAgcHJvY2Vzc2VzLiBBbGwgUHJvY2Vzc1Rocm90dGxlciBsb2dnaW5nIG5v
dyBhbHNvIHNob3dzIHRoZSBjaGlsZCBwcm9jZXNzJ3MgUElEIGZvciBjbGFyaXR5LgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmdT
eW5jKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfcHJv
Y2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmddKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6c2VuZFByZXBhcmVUb1N1c3BlbmQpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzUmVhZHlUb1N1c3BlbmQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Z2VuZXJh
dGVQcmVwYXJlVG9TdXNwZW5kUmVxdWVzdElEKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Ro
cm90dGxlcjo6UHJvY2Vzc1Rocm90dGxlcik6CisgICAgICAgIChXZWJLaXQ6Om1fYmFja2dyb3Vu
ZENvdW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpleHBlY3RlZEFz
c2VydGlvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6dXBkYXRl
QXNzZXJ0aW9uU3RhdGVOb3cpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpz
ZXRBc3NlcnRpb25TdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6OnVw
ZGF0ZUFzc2VydGlvbklmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxl
cjo6ZGlkQ29ubmVjdFRvUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRs
ZXI6OnByZXBhcmVUb1N1c3BlbmRUaW1lb3V0VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6
OlByb2Nlc3NUaHJvdHRsZXI6OnByb2Nlc3NSZWFkeVRvU3VzcGVuZCk6CisgICAgICAgIChXZWJL
aXQ6OlByb2Nlc3NUaHJvdHRsZXI6OmNsZWFyUGVuZGluZ1JlcXVlc3RUb1N1c3BlbmQpOgorICAg
ICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpzZW5kUHJlcGFyZVRvU3VzcGVuZElQQyk6
CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6OnVpQXNzZXJ0aW9uV2lsbEV4cGly
ZUltbWluZW50bHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXJDbGllbnQuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjpzZW5kUHJlcGFyZVRvU3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6cHJvY2Vzc1JlYWR5VG9TdXNwZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW46CisKIDIwMTktMTAtMjQgIENhcmxvcyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBFbmFibGUgcnVudGltZSBzZXR0aW5n
IHdpdGggZXhwZXJpbWVudGFsIGZlYXR1cmVzIGZvciBTZXJ2ZXIgVGltaW5nIEFQSQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAxYzgx
OTYzY2ExNDBlNDA2ZTVmYjkwZmYxYjBjODU3OTIwNmYxOTdhLi42YzY5OGQ0Njg1MmM1MmM2MzVh
OTg3MzJmMDc5YWJlNmFlMzNlYTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjA3OCw4ICsyMDc4LDIxIEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnByb2Nlc3NEaWRUcmFuc2l0aW9uVG9CYWNrZ3JvdW5kKCkKICAgICBwbGF0Zm9y
bVByb2Nlc3NEaWRUcmFuc2l0aW9uVG9CYWNrZ3JvdW5kKCk7CiB9CiAKLXZvaWQgTmV0d29ya1By
b2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3BlbmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlU
b1N1c3BlbmQgc2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQpCit2b2lkIE5ldHdv
cmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5Rm9yVGVzdGluZ1N5bmMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHByZXBh
cmVUb1N1c3BlbmQoMCwgdHJ1ZSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwordm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCh1aW50NjRfdCByZXF1ZXN0VG9TdXNw
ZW5kSUQsIGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQpCiB7CisgICAgUkVMRUFTRV9MT0coUHJv
Y2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCUi
IFBSSXU2NCAiKSwgaXNTdXNwZW5zaW9uSW1taW5lbnQ6ICVkIiwgdGhpcywgcmVxdWVzdFRvU3Vz
cGVuZElELCBpc1N1c3BlbnNpb25JbW1pbmVudCk7CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICBmb3IgKGF1dG8mIHNlcnZlciA6IG1f
aWRiU2VydmVycy52YWx1ZXMoKSkKKyAgICAgICAgc2VydmVyLT50cnlTdG9wKGlzU3VzcGVuc2lv
bkltbWluZW50ID8gSURCU2VydmVyOjpTaG91bGRGb3JjZVN0b3A6OlllcyA6IElEQlNlcnZlcjo6
U2hvdWxkRm9yY2VTdG9wOjpObyk7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgbV93ZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuc2V0SXNTdXNwZW5kZWQodHJ1ZSk7CiAj
ZW5kaWYKQEAgLTIwODcsMTEgKzIxMDAsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWN0dWFs
UHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZAogICAg
IGxvd01lbW9yeUhhbmRsZXIoQ3JpdGljYWw6Olllcyk7CiAKICAgICBSZWZQdHI8Q2FsbGJhY2tB
Z2dyZWdhdG9yPiBjYWxsYmFja0FnZ3JlZ2F0b3I7Ci0gICAgaWYgKHNob3VsZEFja25vd2xlZGdl
V2hlblJlYWR5VG9TdXNwZW5kID09IFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5k
OjpZZXMpIHsKLSAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9y
OjpjcmVhdGUoW3RoaXNdIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5z
aW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzczo6bm90aWZ5UHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCkg
U2VuZGluZyBQcm9jZXNzUmVhZHlUb1N1c3BlbmQgSVBDIG1lc3NhZ2UiLCB0aGlzKTsKKyAgICBp
ZiAocmVxdWVzdFRvU3VzcGVuZElEKSB7CisgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvciA9IENh
bGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFt0aGlzLCByZXF1ZXN0VG9TdXNwZW5kSURdIHsKKyAg
ICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJv
Y2Vzczo6bm90aWZ5UHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCUiIFBSSXU2NCAiKSBTZW5kaW5nIFBy
b2Nlc3NSZWFkeVRvU3VzcGVuZCBJUEMgbWVzc2FnZSIsIHRoaXMsIHJlcXVlc3RUb1N1c3BlbmRJ
RCk7CiAgICAgICAgICAgICBpZiAocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSkKLSAgICAgICAg
ICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpQcm9jZXNzUmVhZHlUb1N1c3BlbmQoKSwgMCk7CisgICAgICAgICAgICAg
ICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6UHJvY2Vzc1JlYWR5VG9TdXNwZW5kKHJlcXVlc3RUb1N1c3BlbmRJRCksIDApOwog
ICAgICAgICB9KTsKICAgICB9CiAKQEAgLTIxMTEsNDQgKzIxMjQsNiBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjphY3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5
VG9TdXNwZW5kCiAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+c3VzcGVuZChbY2FsbGJhY2tBZ2dy
ZWdhdG9yXSB7IH0pOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3Bl
bmRJbW1pbmVudGx5KCkKLXsKLSAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVw
IC0gTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoKSBCRUdJTiIs
IHRoaXMpOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQotICAgIGZvciAoYXV0byYgc2VydmVyIDogbV9pZGJTZXJ2ZXJzLnZhbHVlcygpKQotICAg
ICAgICBzZXJ2ZXItPnRyeVN0b3AoSURCU2VydmVyOjpTaG91bGRGb3JjZVN0b3A6Olllcyk7Ci0j
ZW5kaWYKLSAgICBhY3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNob3VsZEFja25vd2xlZGdlV2hlblJl
YWR5VG9TdXNwZW5kOjpObyk7Ci0gICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIl
cCAtIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkgRU5EIiwg
dGhpcyk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NXaWxsU3VzcGVuZEltbWlu
ZW50bHlGb3JUZXN0aW5nU3luYyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCi17Ci0gICAgcHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpOwotICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1
c3BlbmQoKQotewotICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3
b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCgpIiwgdGhpcyk7Ci0KLSNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBmb3IgKGF1dG8mIHNl
cnZlciA6IG1faWRiU2VydmVycy52YWx1ZXMoKSkKLSAgICAgICAgc2VydmVyLT50cnlTdG9wKElE
QlNlcnZlcjo6U2hvdWxkRm9yY2VTdG9wOjpObyk7Ci0jZW5kaWYKLSAgICBhY3R1YWxQcmVwYXJl
VG9TdXNwZW5kKFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kOjpZZXMpOwotfQot
Ci12b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5jZWxQcmVwYXJlVG9TdXNwZW5kKCkKLXsKLSAgICAv
LyBBbHRob3VnaCBpdCBpcyB0ZW1wdGluZyB0byBzZW5kIGEgTmV0d29ya1Byb2Nlc3NQcm94eTo6
RGlkQ2FuY2VsUHJvY2Vzc1N1c3BlbnNpb24gbWVzc2FnZSBmcm9tIGhlcmUKLSAgICAvLyB3ZSBk
byBub3QgYmVjYXVzZSBwcmVwYXJlVG9TdXNwZW5kKCkgYWxyZWFkeSByZXBsaWVkIHdpdGggYSBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpQcm9jZXNzUmVhZHlUb1N1c3BlbmQKLSAgICAvLyBtZXNzYWdl
LiBBbmQgTmV0d29ya1Byb2Nlc3NQcm94eSBleHBlY3RzIHRvIHJlY2VpdmUgZWl0aGVyIGEgTmV0
d29ya1Byb2Nlc3NQcm94eTo6UHJvY2Vzc1JlYWR5VG9TdXNwZW5kLQotICAgIC8vIG9yIE5ldHdv
cmtQcm9jZXNzUHJveHk6OkRpZENhbmNlbFByb2Nlc3NTdXNwZW5zaW9uLSBtZXNzYWdlLCBidXQg
bm90IGJvdGguCi0gICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdv
cmtQcm9jZXNzOjpjYW5jZWxQcmVwYXJlVG9TdXNwZW5kKCkiLCB0aGlzKTsKLSAgICByZXN1bWUo
KTsKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91
bmQoKQogewogICAgIG1fZG93bmxvYWRNYW5hZ2VyLmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3Jv
dW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
aW5kZXggMzg3ZWVlMjQyMGVkNTk0MmIyYWQyN2U4ODMzMzU5YTBjYTZhMWRlZS4uMmE5NTVmZGFi
ZWM3MThjOWI4ZmM4MDZiMmVkNGVjNmY0ZTQ0MjA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTc0LDEwICsxNzQsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBlbnN1cmVTZXNzaW9uKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgYm9vbCBzaG91
bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24sIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7CiAj
ZW5kaWYKIAotICAgIHZvaWQgcHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpOwogICAgIHZv
aWQgcHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmdTeW5jKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBwcmVwYXJlVG9TdXNwZW5kKCk7Ci0gICAgdm9p
ZCBjYW5jZWxQcmVwYXJlVG9TdXNwZW5kKCk7CisgICAgdm9pZCBwcmVwYXJlVG9TdXNwZW5kKHVp
bnQ2NF90IHJlcXVlc3RUb1N1c3BlbmRJRCwgYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCk7CiAg
ICAgdm9pZCBwcm9jZXNzRGlkUmVzdW1lKCk7CiAgICAgdm9pZCByZXN1bWUoKTsKIApAQCAtMzU3
LDggKzM1NSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVByb2Nlc3NEaWRUcmFuc2l0
aW9uVG9Gb3JlZ3JvdW5kKCk7CiAgICAgdm9pZCBwbGF0Zm9ybVByb2Nlc3NEaWRUcmFuc2l0aW9u
VG9CYWNrZ3JvdW5kKCk7CiAKLSAgICBlbnVtIGNsYXNzIFNob3VsZEFja25vd2xlZGdlV2hlblJl
YWR5VG9TdXNwZW5kIHsgTm8sIFllcyB9OwotICAgIHZvaWQgYWN0dWFsUHJlcGFyZVRvU3VzcGVu
ZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZCk7CiAgICAgdm9pZCBwbGF0Zm9y
bVByZXBhcmVUb1N1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IHBsYXRmb3JtUHJvY2Vzc0RpZFJlc3VtZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA0MWZlYTBk
ZjU4OTRmM2M0YzFhMmMyYzMzNWVhYjJlODNhZDA0YjNjLi5iOWNhM2E5YjgxZWRjYTYzZTNmNDg4
MjNkMGVjZmNjYmE4YzFhNjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTc0LDEwICs3NCw4IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBQcm9jZXNzRGlk
VHJhbnNpdGlvblRvQmFja2dyb3VuZCgpCiAgICAgUHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0ZvcmVn
cm91bmQoKQogCi0gICAgUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpCiAgICAgUHJvY2Vz
c1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmdTeW5jKCkgLT4gKCkgU3luY2hyb25vdXMK
LSAgICBQcmVwYXJlVG9TdXNwZW5kKCkKLSAgICBDYW5jZWxQcmVwYXJlVG9TdXNwZW5kKCkKKyAg
ICBQcmVwYXJlVG9TdXNwZW5kKHVpbnQ2NF90IHJlcXVlc3RUb1N1c3BlbmRJRCwgYm9vbCBpc1N1
c3BlbnNpb25JbW1pbmVudCkKICAgICBQcm9jZXNzRGlkUmVzdW1lKCkKIAogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBhZmViZjNlNTQxMGU4M2Y0OGM1Y2YwYmRjMWZkMTQz
NDBmNzY0NGZlLi4xYmJkOTNmMTgwZDE4NDM5ZDFkMDdlMDQzZTJjMjg1MGM2NjY0NWZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTc1
MjQsNyArNzUyNCw3IEBAIC0gKF9XS0ZyYW1lSGFuZGxlICopX21haW5GcmFtZQogLSAodm9pZClf
cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmcKIHsKICAgICBpZiAoX3BhZ2Up
Ci0gICAgICAgIF9wYWdlLT5wcm9jZXNzKCkuc2VuZFByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50
bHkoKTsKKyAgICAgICAgX3BhZ2UtPnByb2Nlc3MoKS5zZW5kUHJlcGFyZVRvU3VzcGVuZCgwLCBX
ZWJLaXQ6OklzU3VzcGVuc2lvbkltbWluZW50OjpZZXMpOwogfQogCiAtICh2b2lkKV9wcm9jZXNz
RGlkUmVzdW1lRm9yVGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMTI1MzQ3YmYzNmRjZDViNzMy
NWFlODAzM2RiYWY5M2JiZDNhNjUyOS4uYWY3YzkyN2U1MGUzMTJmNGE2MDJlZWJjYzMzZDA2NTc5
NWU0OTQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xMDY4LDI4ICsxMDY4LDE2IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vzc1dpbGxTdXNwZW5k
SW1taW5lbnRseSgpCi17Ci0gICAgaWYgKGNhblNlbmRNZXNzYWdlKCkpCi0gICAgICAgIHNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCks
IDApOwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQcm9jZXNzV2lsbFN1c3Bl
bmRJbW1pbmVudGx5Rm9yVGVzdGluZygpCiB7CiAgICAgaWYgKGNhblNlbmRNZXNzYWdlKCkpCiAg
ICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJvY2Vzc1dpbGxTdXNw
ZW5kSW1taW5lbnRseUZvclRlc3RpbmdTeW5jKCksIE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
UHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmdTeW5jOjpSZXBseSgpLCAwKTsK
IH0KICAgICAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZFByZXBhcmVUb1N1c3BlbmQo
KQotewotICAgIGlmIChjYW5TZW5kTWVzc2FnZSgpKQotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6UHJlcGFyZVRvU3VzcGVuZCgpLCAwKTsKLX0KLQotdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpzZW5kQ2FuY2VsUHJlcGFyZVRvU3VzcGVuZCgpCit2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnNlbmRQcmVwYXJlVG9TdXNwZW5kKHVpbnQ2NF90IHJlcXVlc3RUb1N1c3Bl
bmRJRCwgSXNTdXNwZW5zaW9uSW1taW5lbnQgaXNTdXNwZW5zaW9uSW1taW5lbnQpCiB7CiAgICAg
aWYgKGNhblNlbmRNZXNzYWdlKCkpCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpDYW5jZWxQcmVwYXJlVG9TdXNwZW5kKCksIDApOworICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6UHJlcGFyZVRvU3VzcGVuZChyZXF1ZXN0VG9TdXNwZW5kSUQsIGlz
U3VzcGVuc2lvbkltbWluZW50ID09IElzU3VzcGVuc2lvbkltbWluZW50OjpZZXMpLCAwKTsKIH0K
IAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vzc0RpZFJlc3VtZSgpCkBAIC0x
MDk4LDkgKzEwODYsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQcm9jZXNzRGlk
UmVzdW1lKCkKICAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByb2Nlc3NE
aWRSZXN1bWUoKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJvY2Vzc1Jl
YWR5VG9TdXNwZW5kKCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJvY2Vzc1JlYWR5VG9T
dXNwZW5kKHVpbnQ2NF90IHJlcXVlc3RUb1N1c3BlbmRJRCkKIHsKLSAgICBtX3Rocm90dGxlci5w
cm9jZXNzUmVhZHlUb1N1c3BlbmQoKTsKKyAgICBtX3Rocm90dGxlci5wcm9jZXNzUmVhZHlUb1N1
c3BlbmQocmVxdWVzdFRvU3VzcGVuZElEKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpkaWRTZXRBc3NlcnRpb25TdGF0ZShBc3NlcnRpb25TdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMzVl
MDQzZTU1MmNhMGQzOTUwODc3YTg1Yzg4ZWE1MGVlZmJiZDI5ZS4uNzFlNTA0NGQ0MzdkMDUyYjM3
ZjJhZjJkYWQ0MTczMzUyMDM1NDA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTE2MCw3ICsxNjAsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNl
bmRpZgogCi0gICAgdm9pZCBwcm9jZXNzUmVhZHlUb1N1c3BlbmQoKTsKKyAgICB2b2lkIHByb2Nl
c3NSZWFkeVRvU3VzcGVuZCh1aW50NjRfdCByZXF1ZXN0VG9TdXNwZW5kSUQpOwogICAgIAogICAg
IHZvaWQgc2VuZFByb2Nlc3NEaWRUcmFuc2l0aW9uVG9Gb3JlZ3JvdW5kKCk7CiAgICAgdm9pZCBz
ZW5kUHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0JhY2tncm91bmQoKTsKQEAgLTE5MSw3ICsxOTEsNiBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQKLSAgICB2
b2lkIHNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkgZmluYWw7CiAgICAgdm9pZCBz
ZW5kUHJvY2Vzc0RpZFJlc3VtZSgpIGZpbmFsOwogICAgIAogICAgIHZvaWQgc2VuZFByb2Nlc3NX
aWxsU3VzcGVuZEltbWluZW50bHlGb3JUZXN0aW5nKCk7CkBAIC0yMDksOCArMjA4LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGNsZWFyQ2FsbGJhY2tTdGF0ZXMoKTsKIAogICAgIC8vIFByb2Nlc3NU
aHJvdHRsZXJDbGllbnQKLSAgICB2b2lkIHNlbmRQcmVwYXJlVG9TdXNwZW5kKCkgZmluYWw7Ci0g
ICAgdm9pZCBzZW5kQ2FuY2VsUHJlcGFyZVRvU3VzcGVuZCgpIGZpbmFsOworICAgIHZvaWQgc2Vu
ZFByZXBhcmVUb1N1c3BlbmQodWludDY0X3QgcmVxdWVzdFRvU3VzcGVuZElELCBJc1N1c3BlbnNp
b25JbW1pbmVudCkgZmluYWw7CiAgICAgdm9pZCBkaWRTZXRBc3NlcnRpb25TdGF0ZShBc3NlcnRp
b25TdGF0ZSkgZmluYWw7CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGY1ZmI1NjU5Y2YzNDNhMDliODU1ZTJkNmIwMGQ2
ZWVkMTE0ZjYxOTYuLjMxZGI0OGFiZmUyZmU2ZTc4ZmQyZWUzNjNjODc3NWY4NzIzMWIxMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTMxLDcgKzMxLDcgQEAgbWVzc2FnZXMg
LT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBUZXN0UHJvY2Vz
c0luY29taW5nU3luY01lc3NhZ2VzV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkoV2ViS2l0OjpXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wgaGFuZGxlZCkgU3luY2hyb25vdXMK
IAotICAgIFByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpCisgICAgUHJvY2Vzc1JlYWR5VG9TdXNwZW5k
KHVpbnQ2NF90IHBlbmRpbmdSZXF1ZXN0VG9TdXNwZW5kSUQpCiAgICAgU2V0SXNIb2xkaW5nTG9j
a2VkRmlsZXMoYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykKIAogICAgICMgRGlhZ25vc3RpYyBt
ZXNzYWdlcyBsb2dnaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9j
ZXNzVGhyb3R0bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRs
ZXIuY3BwCmluZGV4IDRjZTI2MmU5ZGNiYjRiMWIwZmYwYWQ1ZGI5N2ViOTdmMzYwNzM3NWEuLjZm
OTA0ZGNmZWNkZTYzOWJmODYzNGFkMTFiMTlmMWY2NDg4NGEyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwCkBAIC0zMSwyMSArMzEsMjUgQEAKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAgICAgCi1zdGF0aWMgY29uc3QgU2Vjb25kcyBwcm9jZXNzU3Vz
cGVuc2lvblRpbWVvdXQgeyAzMF9zIH07Ci0gICAgCitzdGF0aWMgY29uc3QgU2Vjb25kcyBwcm9j
ZXNzU3VzcGVuc2lvblRpbWVvdXQgeyAyMF9zIH07CisKK3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0
ZVByZXBhcmVUb1N1c3BlbmRSZXF1ZXN0SUQoKQoreworICAgIHN0YXRpYyB1aW50NjRfdCBwcmVw
YXJlVG9TdXNwZW5kUmVxdWVzdElEID0gMDsKKyAgICByZXR1cm4gKytwcmVwYXJlVG9TdXNwZW5k
UmVxdWVzdElEOworfQorCiBQcm9jZXNzVGhyb3R0bGVyOjpQcm9jZXNzVGhyb3R0bGVyKFByb2Nl
c3NUaHJvdHRsZXJDbGllbnQmIHByb2Nlc3MsIGJvb2wgc2hvdWxkVGFrZVVJQmFja2dyb3VuZEFz
c2VydGlvbikKICAgICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQotICAgICwgbV9zdXNwZW5kVGltZXIo
UnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmUHJvY2Vzc1Rocm90dGxlcjo6c3VzcGVuZFRpbWVyRmly
ZWQpCi0gICAgLCBtX2ZvcmVncm91bmRDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQpIHsg
dXBkYXRlQXNzZXJ0aW9uKCk7IH0pCi0gICAgLCBtX2JhY2tncm91bmRDb3VudGVyKFt0aGlzXShS
ZWZDb3VudGVyRXZlbnQpIHsgdXBkYXRlQXNzZXJ0aW9uKCk7IH0pCisgICAgLCBtX3ByZXBhcmVU
b1N1c3BlbmRUaW1lb3V0VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmUHJvY2Vzc1Rocm90
dGxlcjo6cHJlcGFyZVRvU3VzcGVuZFRpbWVvdXRUaW1lckZpcmVkKQorICAgICwgbV9mb3JlZ3Jv
dW5kQ291bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50KSB7IHVwZGF0ZUFzc2VydGlvbklmTmVl
ZGVkKCk7IH0pCisgICAgLCBtX2JhY2tncm91bmRDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZl
bnQpIHsgdXBkYXRlQXNzZXJ0aW9uSWZOZWVkZWQoKTsgfSkKICAgICAsIG1fc2hvdWxkVGFrZVVJ
QmFja2dyb3VuZEFzc2VydGlvbihzaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKQogewog
fQogICAgIAotQXNzZXJ0aW9uU3RhdGUgUHJvY2Vzc1Rocm90dGxlcjo6YXNzZXJ0aW9uU3RhdGUo
KQorQXNzZXJ0aW9uU3RhdGUgUHJvY2Vzc1Rocm90dGxlcjo6ZXhwZWN0ZWRBc3NlcnRpb25TdGF0
ZSgpCiB7Ci0gICAgQVNTRVJUKCFtX3N1c3BlbmRUaW1lci5pc0FjdGl2ZSgpKTsKLSAgICAKICAg
ICBpZiAobV9mb3JlZ3JvdW5kQ291bnRlci52YWx1ZSgpKQogICAgICAgICByZXR1cm4gQXNzZXJ0
aW9uU3RhdGU6OkZvcmVncm91bmQ7CiAgICAgaWYgKG1fYmFja2dyb3VuZENvdW50ZXIudmFsdWUo
KSkKQEAgLTUzLDg2ICs1NywxMTIgQEAgQXNzZXJ0aW9uU3RhdGUgUHJvY2Vzc1Rocm90dGxlcjo6
YXNzZXJ0aW9uU3RhdGUoKQogICAgIHJldHVybiBBc3NlcnRpb25TdGF0ZTo6U3VzcGVuZGVkOwog
fQogICAgIAotdm9pZCBQcm9jZXNzVGhyb3R0bGVyOjp1cGRhdGVBc3NlcnRpb25Ob3coKQordm9p
ZCBQcm9jZXNzVGhyb3R0bGVyOjp1cGRhdGVBc3NlcnRpb25TdGF0ZU5vdygpCiB7Ci0gICAgbV9z
dXNwZW5kVGltZXIuc3RvcCgpOwotICAgIGlmIChtX2Fzc2VydGlvbikgewotICAgICAgICBhdXRv
IG5ld1N0YXRlID0gYXNzZXJ0aW9uU3RhdGUoKTsKLSAgICAgICAgaWYgKG1fYXNzZXJ0aW9uLT5z
dGF0ZSgpID09IG5ld1N0YXRlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBSRUxFQVNF
X0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gUHJvY2Vzc1Rocm90dGxlcjo6dXBkYXRlQXNz
ZXJ0aW9uTm93KCkgdXBkYXRpbmcgcHJvY2VzcyBhc3NlcnRpb24gc3RhdGUgdG8gJXUgKGZvcmVn
cm91bmRBY3Rpdml0aWVzOiAlbHUsIGJhY2tncm91bmRBY3Rpdml0aWVzOiAlbHUpIiwgdGhpcywg
bmV3U3RhdGUsIG1fZm9yZWdyb3VuZENvdW50ZXIudmFsdWUoKSwgbV9iYWNrZ3JvdW5kQ291bnRl
ci52YWx1ZSgpKTsKLSAgICAgICAgbV9hc3NlcnRpb24tPnNldFN0YXRlKG5ld1N0YXRlKTsKLSAg
ICAgICAgbV9wcm9jZXNzLmRpZFNldEFzc2VydGlvblN0YXRlKG5ld1N0YXRlKTsKLSAgICB9Cisg
ICAgc2V0QXNzZXJ0aW9uU3RhdGUoZXhwZWN0ZWRBc3NlcnRpb25TdGF0ZSgpKTsKIH0KLSAgICAK
LXZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6dXBkYXRlQXNzZXJ0aW9uKCkKKwordm9pZCBQcm9jZXNz
VGhyb3R0bGVyOjpzZXRBc3NlcnRpb25TdGF0ZShBc3NlcnRpb25TdGF0ZSBuZXdTdGF0ZSkKIHsK
LSAgICBib29sIHNob3VsZEJlUnVubmFibGUgPSB0aGlzLT5zaG91bGRCZVJ1bm5hYmxlKCk7Ci0K
LSAgICAvLyBJZiB0aGUgcHJvY2VzcyBpcyBjdXJyZW50bHkgcnVubmFibGUgYnV0IHdpbGwgYmUg
c3VzcGVuZGVkIHRoZW4gZmlyc3QgZ2l2ZSBpdCBhIGNoYW5jZSB0byBjb21wbGV0ZSB3aGF0IGl0
IHdhcyBkb2luZwotICAgIC8vIGFuZCBjbGVhbiB1cCAtIG1vdmUgaXQgdG8gdGhlIGJhY2tncm91
bmQgYW5kIHNlbmQgaXQgYSBtZXNzYWdlIHRvIG5vdGlmeS4gU2NoZWR1bGUgYSB0aW1lb3V0IHNv
IGl0IGNhbid0IHN0YXkgcnVubmluZwotICAgIC8vIGluIHRoZSBiYWNrZ3JvdW5kIGZvciB0b28g
bG9uZy4KLSAgICBpZiAobV9hc3NlcnRpb24gJiYgbV9hc3NlcnRpb24tPnN0YXRlKCkgIT0gQXNz
ZXJ0aW9uU3RhdGU6OlN1c3BlbmRlZCAmJiAhc2hvdWxkQmVSdW5uYWJsZSkgewotICAgICAgICAr
K21fc3VzcGVuZE1lc3NhZ2VDb3VudDsKLSAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3Bl
bnNpb24sICIlcCAtIFByb2Nlc3NUaHJvdHRsZXI6OnVwZGF0ZUFzc2VydGlvbigpIHNlbmRpbmcg
UHJlcGFyZVRvU3VzcGVuZCBJUEMiLCB0aGlzKTsKLSAgICAgICAgbV9wcm9jZXNzLnNlbmRQcmVw
YXJlVG9TdXNwZW5kKCk7Ci0gICAgICAgIG1fc3VzcGVuZFRpbWVyLnN0YXJ0T25lU2hvdChwcm9j
ZXNzU3VzcGVuc2lvblRpbWVvdXQpOwotICAgICAgICBtX2Fzc2VydGlvbi0+c2V0U3RhdGUoQXNz
ZXJ0aW9uU3RhdGU6OkJhY2tncm91bmQpOwotICAgICAgICBtX3Byb2Nlc3MuZGlkU2V0QXNzZXJ0
aW9uU3RhdGUoQXNzZXJ0aW9uU3RhdGU6OkJhY2tncm91bmQpOworICAgIFJFTEVBU0VfQVNTRVJU
KG1fYXNzZXJ0aW9uKTsKKyAgICBpZiAobV9hc3NlcnRpb24tPnN0YXRlKCkgPT0gbmV3U3RhdGUp
CiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKLSAgICBpZiAoc2hvdWxkQmVSdW5uYWJsZSkgewot
ICAgICAgICAvLyBJZiB3ZSdyZSBjdXJyZW50bHkgd2FpdGluZyBmb3IgdGhlIFdlYiBwcm9jZXNz
IHRvIGRvIHN1c3BlbnNpb24gY2xlYW51cCwgYnV0IG5vIGxvbmdlciBuZWVkIHRvIGJlIHN1c3Bl
bmRlZCwgdGVsbCB0aGUgV2ViIHByb2Nlc3MgdG8gY2FuY2VsIHRoZSBjbGVhbnVwLgotICAgICAg
ICBpZiAobV9zdXNwZW5kVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgICAgIG1fcHJvY2Vzcy5z
ZW5kQ2FuY2VsUHJlcGFyZVRvU3VzcGVuZCgpOworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNw
ZW5zaW9uLCAiW1BJRDogJWRdICVwIC0gUHJvY2Vzc1Rocm90dGxlcjo6c2V0QXNzZXJ0aW9uU3Rh
dGUoKSBVcGRhdGluZyBwcm9jZXNzIGFzc2VydGlvbiBzdGF0ZSB0byAldSAoZm9yZWdyb3VuZEFj
dGl2aXRpZXM6ICVsdSwgYmFja2dyb3VuZEFjdGl2aXRpZXM6ICVsdSkiLCBtX3Byb2Nlc3NJZGVu
dGlmaWVyLCB0aGlzLCBuZXdTdGF0ZSwgbV9mb3JlZ3JvdW5kQ291bnRlci52YWx1ZSgpLCBtX2Jh
Y2tncm91bmRDb3VudGVyLnZhbHVlKCkpOworICAgIG1fYXNzZXJ0aW9uLT5zZXRTdGF0ZShuZXdT
dGF0ZSk7CisgICAgbV9wcm9jZXNzLmRpZFNldEFzc2VydGlvblN0YXRlKG5ld1N0YXRlKTsKK30K
KyAgICAKK3ZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6dXBkYXRlQXNzZXJ0aW9uSWZOZWVkZWQoKQor
eworICAgIGlmICghbV9hc3NlcnRpb24pCisgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAo
KG1fYXNzZXJ0aW9uICYmIG1fYXNzZXJ0aW9uLT5zdGF0ZSgpID09IEFzc2VydGlvblN0YXRlOjpT
dXNwZW5kZWQpIHx8IG1fdWlBc3NlcnRpb25FeHBpcmVkKSB7CisgICAgaWYgKHNob3VsZEJlUnVu
bmFibGUoKSkgeworICAgICAgICBpZiAobV9hc3NlcnRpb24tPnN0YXRlKCkgPT0gQXNzZXJ0aW9u
U3RhdGU6OlN1c3BlbmRlZCB8fCBtX3BlbmRpbmdSZXF1ZXN0VG9TdXNwZW5kSUQpIHsKKyAgICAg
ICAgICAgIGlmIChtX2Fzc2VydGlvbi0+c3RhdGUoKSA9PSBBc3NlcnRpb25TdGF0ZTo6U3VzcGVu
ZGVkKQorICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiW1BJ
RDogJWRdICVwIC0gUHJvY2Vzc1Rocm90dGxlcjo6dXBkYXRlQXNzZXJ0aW9uSWZOZWVkZWQoKSBz
ZW5kaW5nIFByb2Nlc3NEaWRSZXN1bWUgSVBDIGJlY2F1c2UgdGhlIHByb2Nlc3Mgd2FzIHN1c3Bl
bmRlZCIsIG1fcHJvY2Vzc0lkZW50aWZpZXIsIHRoaXMpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiW1BJRDogJWRdICVw
IC0gUHJvY2Vzc1Rocm90dGxlcjo6dXBkYXRlQXNzZXJ0aW9uSWZOZWVkZWQoKSBzZW5kaW5nIFBy
b2Nlc3NEaWRSZXN1bWUgSVBDIGJlY2F1c2UgdGhlIFdlYlByb2Nlc3MgaXMgc3RpbGwgcHJvY2Vz
c2luZyByZXF1ZXN0IHRvIHN1c3BlbmQ6ICUiIFBSSXU2NCwgbV9wcm9jZXNzSWRlbnRpZmllciwg
dGhpcywgKm1fcGVuZGluZ1JlcXVlc3RUb1N1c3BlbmRJRCk7CiAgICAgICAgICAgICBtX3Byb2Nl
c3Muc2VuZFByb2Nlc3NEaWRSZXN1bWUoKTsKLSAgICAgICAgICAgIG1fdWlBc3NlcnRpb25FeHBp
cmVkID0gZmFsc2U7CisgICAgICAgICAgICBjbGVhclBlbmRpbmdSZXF1ZXN0VG9TdXNwZW5kKCk7
CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICAvLyBJZiB0aGUgcHJvY2VzcyBpcyBj
dXJyZW50bHkgcnVubmFibGUgYnV0IHdpbGwgYmUgc3VzcGVuZGVkIHRoZW4gZmlyc3QgZ2l2ZSBp
dCBhIGNoYW5jZSB0byBjb21wbGV0ZSB3aGF0IGl0IHdhcyBkb2luZworICAgICAgICAvLyBhbmQg
Y2xlYW4gdXAgLSBtb3ZlIGl0IHRvIHRoZSBiYWNrZ3JvdW5kIGFuZCBzZW5kIGl0IGEgbWVzc2Fn
ZSB0byBub3RpZnkuIFNjaGVkdWxlIGEgdGltZW91dCBzbyBpdCBjYW4ndCBzdGF5IHJ1bm5pbmcK
KyAgICAgICAgLy8gaW4gdGhlIGJhY2tncm91bmQgZm9yIHRvbyBsb25nLgorICAgICAgICBpZiAo
bV9hc3NlcnRpb24tPnN0YXRlKCkgIT0gQXNzZXJ0aW9uU3RhdGU6OlN1c3BlbmRlZCkgeworICAg
ICAgICAgICAgc2VuZFByZXBhcmVUb1N1c3BlbmRJUEMoSXNTdXNwZW5zaW9uSW1taW5lbnQ6Ok5v
KTsKKyAgICAgICAgICAgIG1fcHJlcGFyZVRvU3VzcGVuZFRpbWVvdXRUaW1lci5zdGFydE9uZVNo
b3QocHJvY2Vzc1N1c3BlbnNpb25UaW1lb3V0KTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KIAotICAgIHVwZGF0ZUFzc2VydGlvbk5vdygpOworICAgIHVwZGF0ZUFzc2Vy
dGlvblN0YXRlTm93KCk7CiB9CiAKIHZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6ZGlkQ29ubmVjdFRv
UHJvY2VzcyhQcm9jZXNzSUQgcGlkKQogewotICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5z
aW9uLCAiJXAgLSBQcm9jZXNzVGhyb3R0bGVyOjpkaWRDb25uZWN0VG9Qcm9jZXNzKCVkKSIsIHRo
aXMsIHBpZCk7CisgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJbUElEOiAlZF0g
JXAgLSBQcm9jZXNzVGhyb3R0bGVyOjpkaWRDb25uZWN0VG9Qcm9jZXNzKCkiLCBwaWQsIHRoaXMp
OworICAgIFJFTEVBU0VfQVNTRVJUKCFtX2Fzc2VydGlvbik7CiAKLSAgICBtX3N1c3BlbmRUaW1l
ci5zdG9wKCk7CiAgICAgaWYgKG1fc2hvdWxkVGFrZVVJQmFja2dyb3VuZEFzc2VydGlvbikKLSAg
ICAgICAgbV9hc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBbmRVSUFzc2VydGlvbj4ocGlk
LCAiV2ViIGNvbnRlbnQgdmlzaWJpbGl0eSJfcywgYXNzZXJ0aW9uU3RhdGUoKSk7CisgICAgICAg
IG1fYXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQW5kVUlBc3NlcnRpb24+KHBpZCwgIldl
YiBjb250ZW50IHZpc2liaWxpdHkiX3MsIGV4cGVjdGVkQXNzZXJ0aW9uU3RhdGUoKSk7CiAgICAg
ZWxzZQotICAgICAgICBtX2Fzc2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4o
cGlkLCAiV2ViIGNvbnRlbnQgdmlzaWJpbGl0eSJfcywgYXNzZXJ0aW9uU3RhdGUoKSk7Ci0gICAg
bV9wcm9jZXNzLmRpZFNldEFzc2VydGlvblN0YXRlKGFzc2VydGlvblN0YXRlKCkpOworICAgICAg
ICBtX2Fzc2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocGlkLCAiV2ViIGNv
bnRlbnQgdmlzaWJpbGl0eSJfcywgZXhwZWN0ZWRBc3NlcnRpb25TdGF0ZSgpKTsKKworICAgIG1f
cHJvY2Vzc0lkZW50aWZpZXIgPSBwaWQ7CisgICAgbV9wcm9jZXNzLmRpZFNldEFzc2VydGlvblN0
YXRlKGV4cGVjdGVkQXNzZXJ0aW9uU3RhdGUoKSk7CiAgICAgbV9hc3NlcnRpb24tPnNldENsaWVu
dCgqdGhpcyk7CiB9CiAgICAgCi12b2lkIFByb2Nlc3NUaHJvdHRsZXI6OnN1c3BlbmRUaW1lckZp
cmVkKCkKK3ZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6cHJlcGFyZVRvU3VzcGVuZFRpbWVvdXRUaW1l
ckZpcmVkKCkKIHsKLSAgICB1cGRhdGVBc3NlcnRpb25Ob3coKTsKKyAgICBSRUxFQVNFX0xPRyhQ
cm9jZXNzU3VzcGVuc2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXI6OnByZXBh
cmVUb1N1c3BlbmRUaW1lb3V0VGltZXJGaXJlZCgpIFVwZGF0aW5nIHByb2Nlc3MgYXNzZXJ0aW9u
IHRvIGFsbG93IHN1c3BlbnNpb24iLCBtX3Byb2Nlc3NJZGVudGlmaWVyLCB0aGlzKTsKKyAgICBS
RUxFQVNFX0FTU0VSVChtX3BlbmRpbmdSZXF1ZXN0VG9TdXNwZW5kSUQpOworICAgIHVwZGF0ZUFz
c2VydGlvblN0YXRlTm93KCk7CiB9CiAgICAgCi12b2lkIFByb2Nlc3NUaHJvdHRsZXI6OnByb2Nl
c3NSZWFkeVRvU3VzcGVuZCgpCit2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OnByb2Nlc3NSZWFkeVRv
U3VzcGVuZCh1aW50NjRfdCByZXF1ZXN0VG9TdXNwZW5kSUQpCiB7Ci0gICAgaWYgKCEtLW1fc3Vz
cGVuZE1lc3NhZ2VDb3VudCkKLSAgICAgICAgdXBkYXRlQXNzZXJ0aW9uTm93KCk7Ci0gICAgQVNT
RVJUKG1fc3VzcGVuZE1lc3NhZ2VDb3VudCA+PSAwKTsKKyAgICBSRUxFQVNFX0FTU0VSVChyZXF1
ZXN0VG9TdXNwZW5kSUQpOworICAgIGlmICghbV9wZW5kaW5nUmVxdWVzdFRvU3VzcGVuZElEIHx8
ICptX3BlbmRpbmdSZXF1ZXN0VG9TdXNwZW5kSUQgIT0gcmVxdWVzdFRvU3VzcGVuZElEKQorICAg
ICAgICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIltQSUQ6
ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXI6OnByb2Nlc3NSZWFkeVRvU3VzcGVuZCglIiBQUkl1
NjQgIikgVXBkYXRpbmcgcHJvY2VzcyBhc3NlcnRpb24gdG8gYWxsb3cgc3VzcGVuc2lvbiIsIG1f
cHJvY2Vzc0lkZW50aWZpZXIsIHRoaXMsIHJlcXVlc3RUb1N1c3BlbmRJRCk7CisgICAgY2xlYXJQ
ZW5kaW5nUmVxdWVzdFRvU3VzcGVuZCgpOworCisgICAgaWYgKG1fYXNzZXJ0aW9uLT5zdGF0ZSgp
ICE9IEFzc2VydGlvblN0YXRlOjpTdXNwZW5kZWQpCisgICAgICAgIHVwZGF0ZUFzc2VydGlvblN0
YXRlTm93KCk7CiB9CiAKLXZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6ZGlkQ2FuY2VsUHJvY2Vzc1N1
c3BlbnNpb24oKQordm9pZCBQcm9jZXNzVGhyb3R0bGVyOjpjbGVhclBlbmRpbmdSZXF1ZXN0VG9T
dXNwZW5kKCkKIHsKLSAgICBpZiAoIS0tbV9zdXNwZW5kTWVzc2FnZUNvdW50KQotICAgICAgICB1
cGRhdGVBc3NlcnRpb25Ob3coKTsKLSAgICBBU1NFUlQobV9zdXNwZW5kTWVzc2FnZUNvdW50ID49
IDApOworICAgIG1fcHJlcGFyZVRvU3VzcGVuZFRpbWVvdXRUaW1lci5zdG9wKCk7CisgICAgbV9w
ZW5kaW5nUmVxdWVzdFRvU3VzcGVuZElEID0gV1RGOjpudWxsb3B0OwogfQogCi12b2lkIFByb2Nl
c3NUaHJvdHRsZXI6OnVpQXNzZXJ0aW9uV2lsbEV4cGlyZUltbWluZW50bHkoKQordm9pZCBQcm9j
ZXNzVGhyb3R0bGVyOjpzZW5kUHJlcGFyZVRvU3VzcGVuZElQQyhJc1N1c3BlbnNpb25JbW1pbmVu
dCBpc1N1c3BlbnNpb25JbW1pbmVudCkKIHsKLSAgICBtX3Byb2Nlc3Muc2VuZFByb2Nlc3NXaWxs
U3VzcGVuZEltbWluZW50bHkoKTsKLSAgICBtX3VpQXNzZXJ0aW9uRXhwaXJlZCA9IHRydWU7Cisg
ICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJbUElEOiAlZF0gJXAgLSBQcm9jZXNz
VGhyb3R0bGVyOjpzZW5kUHJlcGFyZVRvU3VzcGVuZElQQygpIGlzU3VzcGVuc2lvbkltbWluZW50
OiAlZCIsIG1fcHJvY2Vzc0lkZW50aWZpZXIsIHRoaXMsIGlzU3VzcGVuc2lvbkltbWluZW50ID09
IElzU3VzcGVuc2lvbkltbWluZW50OjpZZXMpOworICAgIGlmIChtX3BlbmRpbmdSZXF1ZXN0VG9T
dXNwZW5kSUQpIHsKKyAgICAgICAgLy8gRG8gbm90IHNlbmQgYSBuZXcgUHJlcGFyZVRvU3VzcGVu
ZCBJUEMgZm9yIGltbWluZW50IHN1c3BlbnNpb24gaWYgd2UndmUgYWxyZWFkeSBzZW50IGEgbm9u
LWltbWluZW50IFByZXBhcmVUb1N1c3BlbmQgSVBDLgorICAgICAgICBSRUxFQVNFX0FTU0VSVChp
c1N1c3BlbnNpb25JbW1pbmVudCA9PSBJc1N1c3BlbnNpb25JbW1pbmVudDo6WWVzKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJbUElEOiAlZF0gJXAgLSBQcm9jZXNz
VGhyb3R0bGVyOjpzZW5kUHJlcGFyZVRvU3VzcGVuZElQQygpIE5vdCBzZW5kaW5nIFByZXBhcmVU
b1N1c3BlbmQoKSBJUEMgYmVjYXVzZSB0aGVyZSBpcyBhbHJlYWR5IG9uZSBpbiBmbGlnaHQgKCUi
IFBSSXU2NCAiKSIsIG1fcHJvY2Vzc0lkZW50aWZpZXIsIHRoaXMsICptX3BlbmRpbmdSZXF1ZXN0
VG9TdXNwZW5kSUQpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fcGVuZGluZ1JlcXVlc3RUb1N1
c3BlbmRJRCA9IGdlbmVyYXRlUHJlcGFyZVRvU3VzcGVuZFJlcXVlc3RJRCgpOworICAgICAgICBS
RUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJv
dHRsZXI6OnNlbmRQcmVwYXJlVG9TdXNwZW5kSVBDKCkgU2VuZGluZyBQcmVwYXJlVG9TdXNwZW5k
KCUiIFBSSXU2NCAiLCBpc1N1c3BlbnNpb25JbW1pbmVudDogJWQpIElQQyIsIG1fcHJvY2Vzc0lk
ZW50aWZpZXIsIHRoaXMsICptX3BlbmRpbmdSZXF1ZXN0VG9TdXNwZW5kSUQsIGlzU3VzcGVuc2lv
bkltbWluZW50ID09IElzU3VzcGVuc2lvbkltbWluZW50OjpZZXMpOworICAgICAgICBtX3Byb2Nl
c3Muc2VuZFByZXBhcmVUb1N1c3BlbmQoKm1fcGVuZGluZ1JlcXVlc3RUb1N1c3BlbmRJRCwgaXNT
dXNwZW5zaW9uSW1taW5lbnQpOworICAgIH0KKworICAgIHNldEFzc2VydGlvblN0YXRlKGlzU3Vz
cGVuc2lvbkltbWluZW50ID09IElzU3VzcGVuc2lvbkltbWluZW50OjpZZXMgPyBBc3NlcnRpb25T
dGF0ZTo6U3VzcGVuZGVkIDogQXNzZXJ0aW9uU3RhdGU6OkJhY2tncm91bmQpOwogfQogCit2b2lk
IFByb2Nlc3NUaHJvdHRsZXI6OnVpQXNzZXJ0aW9uV2lsbEV4cGlyZUltbWluZW50bHkoKQorewor
ICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiW1BJRDogJWRdICVwIC0gUHJvY2Vz
c1Rocm90dGxlcjo6dWlBc3NlcnRpb25XaWxsRXhwaXJlSW1taW5lbnRseSgpIiwgbV9wcm9jZXNz
SWRlbnRpZmllciwgdGhpcyk7CisgICAgc2VuZFByZXBhcmVUb1N1c3BlbmRJUEMoSXNTdXNwZW5z
aW9uSW1taW5lbnQ6Olllcyk7CisgICAgbV9wcmVwYXJlVG9TdXNwZW5kVGltZW91dFRpbWVyLnN0
b3AoKTsKIH0KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm9jZXNzVGhyb3R0bGVyLmgKaW5kZXggZmQxNTI5Y2Q0Nzc1ZTg2MmMwZjYyNTE4OGU5MTA2
NTFmYTIxMjdiNy4uYjU4MDYyMzVmZjRmYjVjMTI0NjZhMDg3NmJmNmZmNGI3ZTEzZDE0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuaApAQCAtNDEsNiArNDEs
OCBAQCBlbnVtIFByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkQ291bnRlclR5cGUgeyB9OwogdHlw
ZWRlZiBSZWZDb3VudGVyPFByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkQ291bnRlclR5cGU+IFBy
b2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkQ291bnRlcjsKIHR5cGVkZWYgUHJvY2Vzc1N1cHByZXNz
aW9uRGlzYWJsZWRDb3VudGVyOjpUb2tlbiBQcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZFRva2Vu
OwogCitlbnVtIGNsYXNzIElzU3VzcGVuc2lvbkltbWluZW50IDogYm9vbCB7IE5vLCBZZXMgfTsK
KwogY2xhc3MgUHJvY2Vzc1Rocm90dGxlckNsaWVudDsKIAogY2xhc3MgUHJvY2Vzc1Rocm90dGxl
ciA6IHByaXZhdGUgUHJvY2Vzc0Fzc2VydGlvbjo6Q2xpZW50IHsKQEAgLTU0LDMxICs1NiwzNCBA
QCBwdWJsaWM6CiAKICAgICBQcm9jZXNzVGhyb3R0bGVyKFByb2Nlc3NUaHJvdHRsZXJDbGllbnQm
LCBib29sIHNob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24pOwogCi0gICAgaW5saW5lIEZv
cmVncm91bmRBY3Rpdml0eVRva2VuIGZvcmVncm91bmRBY3Rpdml0eVRva2VuKCkgY29uc3Q7Ci0g
ICAgaW5saW5lIEJhY2tncm91bmRBY3Rpdml0eVRva2VuIGJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkgY29uc3Q7CisgICAgRm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4gZm9yZWdyb3VuZEFjdGl2aXR5
VG9rZW4oKSBjb25zdDsKKyAgICBCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBiYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpIGNvbnN0OwogICAgIAogICAgIHZvaWQgZGlkQ29ubmVjdFRvUHJvY2VzcyhQ
cm9jZXNzSUQpOwotICAgIHZvaWQgcHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCk7Ci0gICAgdm9pZCBk
aWRDYW5jZWxQcm9jZXNzU3VzcGVuc2lvbigpOworICAgIHZvaWQgcHJvY2Vzc1JlYWR5VG9TdXNw
ZW5kKHVpbnQ2NF90IHBlbmRpbmdSZXF1ZXN0VG9TdXNwZW5kSUQpOwogICAgIGJvb2wgc2hvdWxk
QmVSdW5uYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9yZWdyb3VuZENvdW50ZXIudmFsdWUoKSB8
fCBtX2JhY2tncm91bmRDb3VudGVyLnZhbHVlKCk7IH0KIAogcHJpdmF0ZToKLSAgICBBc3NlcnRp
b25TdGF0ZSBhc3NlcnRpb25TdGF0ZSgpOwotICAgIHZvaWQgdXBkYXRlQXNzZXJ0aW9uKCk7Ci0g
ICAgdm9pZCB1cGRhdGVBc3NlcnRpb25Ob3coKTsKLSAgICB2b2lkIHN1c3BlbmRUaW1lckZpcmVk
KCk7CisgICAgQXNzZXJ0aW9uU3RhdGUgZXhwZWN0ZWRBc3NlcnRpb25TdGF0ZSgpOworICAgIHZv
aWQgdXBkYXRlQXNzZXJ0aW9uSWZOZWVkZWQoKTsKKyAgICB2b2lkIHVwZGF0ZUFzc2VydGlvblN0
YXRlTm93KCk7CisgICAgdm9pZCBzZXRBc3NlcnRpb25TdGF0ZShBc3NlcnRpb25TdGF0ZSk7Cisg
ICAgdm9pZCBwcmVwYXJlVG9TdXNwZW5kVGltZW91dFRpbWVyRmlyZWQoKTsKKyAgICB2b2lkIHNl
bmRQcmVwYXJlVG9TdXNwZW5kSVBDKElzU3VzcGVuc2lvbkltbWluZW50KTsKIAogICAgIC8vIFBy
b2Nlc3NBc3NlcnRpb25DbGllbnQKICAgICB2b2lkIHVpQXNzZXJ0aW9uV2lsbEV4cGlyZUltbWlu
ZW50bHkoKSBvdmVycmlkZTsKIAorICAgIHZvaWQgY2xlYXJQZW5kaW5nUmVxdWVzdFRvU3VzcGVu
ZCgpOworCiAgICAgUHJvY2Vzc1Rocm90dGxlckNsaWVudCYgbV9wcm9jZXNzOworICAgIFByb2Nl
c3NJRCBtX3Byb2Nlc3NJZGVudGlmaWVyIHsgMCB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9j
ZXNzQXNzZXJ0aW9uPiBtX2Fzc2VydGlvbjsKLSAgICBSdW5Mb29wOjpUaW1lcjxQcm9jZXNzVGhy
b3R0bGVyPiBtX3N1c3BlbmRUaW1lcjsKKyAgICBSdW5Mb29wOjpUaW1lcjxQcm9jZXNzVGhyb3R0
bGVyPiBtX3ByZXBhcmVUb1N1c3BlbmRUaW1lb3V0VGltZXI7CiAgICAgRm9yZWdyb3VuZEFjdGl2
aXR5Q291bnRlciBtX2ZvcmVncm91bmRDb3VudGVyOwogICAgIEJhY2tncm91bmRBY3Rpdml0eUNv
dW50ZXIgbV9iYWNrZ3JvdW5kQ291bnRlcjsKLSAgICBpbnQgbV9zdXNwZW5kTWVzc2FnZUNvdW50
IHsgMCB9OworICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtX3BlbmRpbmdSZXF1ZXN0VG9TdXNwZW5k
SUQ7CiAgICAgYm9vbCBtX3Nob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb247Ci0gICAgYm9v
bCBtX3VpQXNzZXJ0aW9uRXhwaXJlZCB7IGZhbHNlIH07CiB9OwogCiBpbmxpbmUgUHJvY2Vzc1Ro
cm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4gUHJvY2Vzc1Rocm90dGxlcjo6Zm9yZWdy
b3VuZEFjdGl2aXR5VG9rZW4oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvY2Vzc1Rocm90dGxlckNsaWVudC5oCmluZGV4IGY4ZGVmODdiNjgwYmQxNTY0YTc4MzBmNzQ5
Mjc1Mjg0MzdhYjM1ODIuLjBkYzg5MGVmODIxZWZjYTcxMjM2MGMyNWI2MmQ5NTNkNjkzZTMzOTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyQ2xpZW50
LmgKQEAgLTMwLDEzICszMCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorZW51bSBjbGFz
cyBJc1N1c3BlbnNpb25JbW1pbmVudCA6IGJvb2w7CisKIGNsYXNzIFByb2Nlc3NUaHJvdHRsZXJD
bGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgflByb2Nlc3NUaHJvdHRsZXJDbGllbnQoKSB7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZW5kUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2VuZFByZXBhcmVUb1N1c3BlbmQoKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHNlbmRDYW5jZWxQcmVwYXJlVG9TdXNwZW5kKCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZW5kUHJlcGFyZVRvU3VzcGVuZCh1aW50NjRfdCByZXF1ZXN0VG9TdXNwZW5kSUQs
IElzU3VzcGVuc2lvbkltbWluZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlbmRQcm9jZXNz
RGlkUmVzdW1lKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRBc3NlcnRpb25TdGF0ZShB
c3NlcnRpb25TdGF0ZSkgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCmluZGV4IDc5ZGQ1MDcyOTIzMjk0MmJlM2U2NGRjZjNjZTFhNGQxMzZiZTc2
NmEuLjJlMjQ4MzQ0NzdmMWYzZTFmYzg0ZmU4MWFhYjJjY2U4Y2RmNzU5OWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTIxNywyMiArMTIxNywx
MCBAQCBSZWZQdHI8QVBJOjpPYmplY3Q+IFdlYlByb2Nlc3NQcm94eTo6dHJhbnNmb3JtT2JqZWN0
c1RvSGFuZGxlcyhBUEk6Ok9iamVjdCogb2JqZQogICAgIHJldHVybiBVc2VyRGF0YTo6dHJhbnNm
b3JtKG9iamVjdCwgVHJhbnNmb3JtZXIoKSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpz
ZW5kUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6
c2VuZFByZXBhcmVUb1N1c3BlbmQodWludDY0X3QgcmVxdWVzdFRvU3VzcGVuZElELCBJc1N1c3Bl
bnNpb25JbW1pbmVudCBpc1N1c3BlbnNpb25JbW1pbmVudCkKIHsKICAgICBpZiAoY2FuU2VuZE1l
c3NhZ2UoKSkKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6UHJvY2Vzc1dpbGxT
dXNwZW5kSW1taW5lbnRseSgpLCAwKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmRQ
cmVwYXJlVG9TdXNwZW5kKCkKLXsKLSAgICBpZiAoY2FuU2VuZE1lc3NhZ2UoKSkKLSAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6UHJlcGFyZVRvU3VzcGVuZCgpLCAwKTsKLX0KLQot
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmRDYW5jZWxQcmVwYXJlVG9TdXNwZW5kKCkKLXsKLSAg
ICBpZiAoY2FuU2VuZE1lc3NhZ2UoKSkKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vz
czo6Q2FuY2VsUHJlcGFyZVRvU3VzcGVuZCgpLCAwKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUHJvY2Vzczo6UHJlcGFyZVRvU3VzcGVuZChyZXF1ZXN0VG9TdXNwZW5kSUQsIGlzU3VzcGVu
c2lvbkltbWluZW50ID09IElzU3VzcGVuc2lvbkltbWluZW50OjpZZXMpLCAwKTsKIH0KIAogdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnNlbmRQcm9jZXNzRGlkUmVzdW1lKCkKQEAgLTEyNDEsMTQgKzEy
MjksOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZFByb2Nlc3NEaWRSZXN1bWUoKQogICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpQcm9jZXNzRGlkUmVzdW1lKCksIDApOwog
fQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCkKLXsKLSAg
ICBtX3Rocm90dGxlci5wcm9jZXNzUmVhZHlUb1N1c3BlbmQoKTsKLX0KLQotdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmRpZENhbmNlbFByb2Nlc3NTdXNwZW5zaW9uKCkKK3ZvaWQgV2ViUHJvY2Vzc1By
b3h5Ojpwcm9jZXNzUmVhZHlUb1N1c3BlbmQodWludDY0X3QgcmVxdWVzdFRvU3VzcGVuZElEKQog
ewotICAgIG1fdGhyb3R0bGVyLmRpZENhbmNlbFByb2Nlc3NTdXNwZW5zaW9uKCk7CisgICAgbV90
aHJvdHRsZXIucHJvY2Vzc1JlYWR5VG9TdXNwZW5kKHJlcXVlc3RUb1N1c3BlbmRJRCk7CiB9CiAK
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRTZXRBc3NlcnRpb25TdGF0ZShBc3NlcnRpb25TdGF0
ZSBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXgg
YmVmZTFiZDVjZDAzNTgxNWYxNGUwNTc2N2I5NTBiMjliYjg0ZTFhOS4uYzBlMDQxYzUyYzJlOWFh
YzNlZmVhMmI1YzhjZDU3NmVkZDc4ZWIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgKQEAgLTIyMyw4ICsyMjMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdp
bmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKTsKIAotICAgIHZvaWQgcHJvY2Vzc1Jl
YWR5VG9TdXNwZW5kKCk7Ci0gICAgdm9pZCBkaWRDYW5jZWxQcm9jZXNzU3VzcGVuc2lvbigpOwor
ICAgIHZvaWQgcHJvY2Vzc1JlYWR5VG9TdXNwZW5kKHVpbnQ2NF90IHJlcXVlc3RUb1N1c3BlbmRJ
RCk7CiAKICAgICB2b2lkIHNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wpOwogCkBAIC0yOTks
OSArMjk4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JN
YWluRnJhbWUoY29uc3QgVVJMJik7CiAKICAgICAvLyBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50Ci0g
ICAgdm9pZCBzZW5kUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpIG92ZXJyaWRlOwotICAg
IHZvaWQgc2VuZFByZXBhcmVUb1N1c3BlbmQoKSBvdmVycmlkZTsKLSAgICB2b2lkIHNlbmRDYW5j
ZWxQcmVwYXJlVG9TdXNwZW5kKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZW5kUHJlcGFyZVRvU3Vz
cGVuZCh1aW50NjRfdCByZXF1ZXN0VG9TdXNwZW5kSUQsIElzU3VzcGVuc2lvbkltbWluZW50KSBv
dmVycmlkZTsKICAgICB2b2lkIHNlbmRQcm9jZXNzRGlkUmVzdW1lKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRTZXRBc3NlcnRpb25TdGF0ZShBc3NlcnRpb25TdGF0ZSkgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5p
bgppbmRleCAzYTE4M2FkODVmNjZlNDg2YWE5ZGY4MGM3NWMyOGQ2OGFmZTU5OTg1Li5lYjRiMjlj
OWI5Y2E1MDc2YTQzYWM2OWQwN2I5YmYwNjVlYjBlYmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0zNyw4ICszNyw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgR2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuKSAtPiAo
SVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25IYW5kbGUsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25v
dXNJbml0aWFsaXphdGlvbikgU3luY2hyb25vdXMKICNlbmRpZgogICAgIEdldE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpIC0+IChzdHJ1Y3QgV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b25JbmZvIGNvbm5lY3Rpb25JbmZvKSBTeW5jaHJvbm91cwotICAgIFByb2Nlc3NSZWFkeVRvU3Vz
cGVuZCgpCi0gICAgRGlkQ2FuY2VsUHJvY2Vzc1N1c3BlbnNpb24oKQorICAgIFByb2Nlc3NSZWFk
eVRvU3VzcGVuZCh1aW50NjRfdCByZXF1ZXN0VG9TdXNwZW5kSUQpCiAKICAgICBTZXRJc0hvbGRp
bmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggOTZlYmMwODU3ZTgwOTVlZWM4MWZiNGZjZTk4
NjIwOGJhZDdhNWUzNy4uMjY1MzI1NGM2NDBlZTA3YzFjOTA5MjE1MjFhNWRjOWI2Yjg2MGE5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTM3NSwxNiArMTM3
NSwxNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9ucygp
CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzOjphY3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNo
b3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kIHNob3VsZEFja25vd2xlZGdlV2hlblJl
YWR5VG9TdXNwZW5kKQordm9pZCBXZWJQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKHVpbnQ2NF90
IHJlcXVlc3RUb1N1c3BlbmRJRCwgYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCkKIHsKKyAgICBS
RUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vzczo6cHJlcGFyZVRv
U3VzcGVuZCglIiBQUkl1NjQgIikgaXNTdXNwZW5zaW9uSW1taW5lbnQ6ICVkIiwgdGhpcywgcmVx
dWVzdFRvU3VzcGVuZElELCBpc1N1c3BlbnNpb25JbW1pbmVudCk7CiAgICAgU2V0Rm9yU2NvcGU8
Ym9vbD4gc3VzcGVuc2lvblNjb3BlKG1faXNTdXNwZW5kaW5nLCB0cnVlKTsKICAgICBtX3Byb2Nl
c3NJc1N1c3BlbmRlZCA9IHRydWU7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAobV9w
cm9jZXNzVHlwZSA9PSBQcm9jZXNzVHlwZTo6UHJld2FybWVkV2ViQ29udGVudCkgewotICAgICAg
ICBpZiAoc2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQgPT0gU2hvdWxkQWNrbm93
bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQ6OlllcykgewotICAgICAgICAgICAgUkVMRUFTRV9MT0co
UHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlByb2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3Bl
bmQoKSBTZW5kaW5nIFByb2Nlc3NSZWFkeVRvU3VzcGVuZCBJUEMgbWVzc2FnZSIsIHRoaXMpOwot
ICAgICAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
UHJvY2Vzc1Byb3h5OjpQcm9jZXNzUmVhZHlUb1N1c3BlbmQoKSwgMCk7CisgICAgICAgIGlmIChy
ZXF1ZXN0VG9TdXNwZW5kSUQpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNw
ZW5zaW9uLCAiJXAgLSBXZWJQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCkgU2VuZGluZyBQcm9j
ZXNzUmVhZHlUb1N1c3BlbmQoJSIgUFJJdTY0ICIpIElQQyBtZXNzYWdlIiwgdGhpcywgcmVxdWVz
dFRvU3VzcGVuZElEKTsKKyAgICAgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6UHJvY2Vzc1JlYWR5VG9TdXNwZW5kKHJlcXVl
c3RUb1N1c3BlbmRJRCksIDApOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC0xNDAwLDcgKzE0MDEsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3Bl
bmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQgc2hvdQogICAgICAgICBNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpLnJlbGVhc2VNZW1vcnkoQ3JpdGljYWw6Olll
cywgU3luY2hyb25vdXM6Olllcyk7CiAKICAgICBmcmVlemVBbGxMYXllclRyZWVzKCk7Ci0gICAg
CisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBkZXN0cm95UmVuZGVyaW5nUmVzb3VyY2VzKCk7
CiAjZW5kaWYKQEAgLTE0MTQsNjggKzE0MTUsMTkgQEAgdm9pZCBXZWJQcm9jZXNzOjphY3R1YWxQ
cmVwYXJlVG9TdXNwZW5kKFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kIHNob3UK
ICAgICB1cGRhdGVGcmVlemVyU3RhdHVzKCk7CiAjZW5kaWYKIAotICAgIG1hcmtBbGxMYXllcnNW
b2xhdGlsZShbdGhpcywgc2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmRdKGJvb2wg
c3VjY2VzcykgeworICAgIG1hcmtBbGxMYXllcnNWb2xhdGlsZShbdGhpcywgcmVxdWVzdFRvU3Vz
cGVuZElEXShib29sIHN1Y2Nlc3MpIHsKICAgICAgICAgaWYgKHN1Y2Nlc3MpCiAgICAgICAgICAg
ICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vzczo6bWFya0Fs
bExheWVyc1ZvbGF0aWxlKCkgU3VjY2Vzc2Z1bHkgbWFya2VkIGFsbCBsYXllcnMgYXMgdm9sYXRp
bGUiLCB0aGlzKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vz
c1N1c3BlbnNpb24sICIlcCAtIFdlYlByb2Nlc3M6Om1hcmtBbGxMYXllcnNWb2xhdGlsZSgpIEZh
aWxlZCB0byBtYXJrIGFsbCBsYXllcnMgYXMgdm9sYXRpbGUiLCB0aGlzKTsKIAotICAgICAgICBp
ZiAoc2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQgPT0gU2hvdWxkQWNrbm93bGVk
Z2VXaGVuUmVhZHlUb1N1c3BlbmQ6OlllcykgewotICAgICAgICAgICAgUkVMRUFTRV9MT0coUHJv
Y2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlByb2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3BlbmQo
KSBTZW5kaW5nIFByb2Nlc3NSZWFkeVRvU3VzcGVuZCBJUEMgbWVzc2FnZSIsIHRoaXMpOwotICAg
ICAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpQcm9jZXNzUmVhZHlUb1N1c3BlbmQoKSwgMCk7CisgICAgICAgIGlmIChyZXF1
ZXN0VG9TdXNwZW5kSUQpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5z
aW9uLCAiJXAgLSBXZWJQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCkgU2VuZGluZyBQcm9jZXNz
UmVhZHlUb1N1c3BlbmQoJSIgUFJJdTY0ICIpIElQQyBtZXNzYWdlIiwgdGhpcywgcmVxdWVzdFRv
U3VzcGVuZElEKTsKKyAgICAgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6UHJvY2Vzc1JlYWR5VG9TdXNwZW5kKHJlcXVlc3RU
b1N1c3BlbmRJRCksIDApOwogICAgICAgICB9CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vz
czo6cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpCi17Ci0gICAgUkVMRUFTRV9MT0coUHJv
Y2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlByb2Nlc3M6OnByb2Nlc3NXaWxsU3VzcGVuZEltbWlu
ZW50bHkoKSBCRUdJTiIsIHRoaXMpOwotICAgIGFjdHVhbFByZXBhcmVUb1N1c3BlbmQoU2hvdWxk
QWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQ6Ok5vKTsKLSAgICBSRUxFQVNFX0xPRyhQcm9j
ZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5l
bnRseSgpIEVORCIsIHRoaXMpOwotfQotCi12b2lkIFdlYlByb2Nlc3M6OnByZXBhcmVUb1N1c3Bl
bmQoKQotewotICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQcm9j
ZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCkiLCB0aGlzKTsKLSAgICBhY3R1YWxQcmVwYXJlVG9TdXNw
ZW5kKFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kOjpZZXMpOwotfQotCi12b2lk
IFdlYlByb2Nlc3M6OmNhbmNlbFByZXBhcmVUb1N1c3BlbmQoKQotewotICAgIFJFTEVBU0VfTE9H
KFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQcm9jZXNzOjpjYW5jZWxQcmVwYXJlVG9TdXNw
ZW5kKCkiLCB0aGlzKTsKLQotICAgIG1fcHJvY2Vzc0lzU3VzcGVuZGVkID0gZmFsc2U7Ci0KLSNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICBpZiAobV9wcm9jZXNzVHlwZSA9PSBQcm9jZXNzVHlwZTo6
UHJld2FybWVkV2ViQ29udGVudCkKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0KLSAgICB1bmZy
ZWV6ZUFsbExheWVyVHJlZXMoKTsKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgbV93
ZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuc2V0SXNTdXNwZW5kZWQoZmFsc2UpOwotICAgIFNRTGl0
ZURhdGFiYXNlOjpzZXRJc0RhdGFiYXNlT3BlbmluZ0ZvcmJpZGRlbihmYWxzZSk7Ci0gICAgYWNj
ZXNzaWJpbGl0eVByb2Nlc3NTdXNwZW5kZWROb3RpZmljYXRpb24oZmFsc2UpOwotI2VuZGlmCi0K
LSNpZiBFTkFCTEUoVklERU8pCi0gICAgaWYgKGF1dG8qIHBsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlciA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcklmRXhpc3Rz
KCkpCi0gICAgICAgIHBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci0+cHJvY2Vzc0RpZFJlc3Vt
ZSgpOwotICAgIHJlc3VtZUFsbE1lZGlhQnVmZmVyaW5nKCk7Ci0jZW5kaWYKLQotICAgIC8vIElm
IHdlJ3ZlIGFscmVhZHkgZmluaXNoZWQgY2xlYW5pbmcgdXAgYW5kIHNlbnQgUHJvY2Vzc1JlYWR5
VG9TdXNwZW5kLCB3ZQotICAgIC8vIHNob3VsZG4ndCBzZW5kIERpZENhbmNlbFByb2Nlc3NTdXNw
ZW5zaW9uOyB0aGUgVUkgcHJvY2VzcyBzdHJpY3RseSBleHBlY3RzIG9uZSBvciB0aGUgb3RoZXIu
Ci0gICAgaWYgKCFtX3BhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXIpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGNhbmNlbE1hcmtBbGxMYXllcnNWb2xhdGlsZSgpOwotCi0gICAgUkVM
RUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlByb2Nlc3M6OmNhbmNlbFByZXBh
cmVUb1N1c3BlbmQoKSBTZW5kaW5nIERpZENhbmNlbFByb2Nlc3NTdXNwZW5zaW9uIElQQyBtZXNz
YWdlIiwgdGhpcyk7Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpEaWRDYW5jZWxQcm9jZXNzU3VzcGVuc2lvbigpLCAwKTsKLX0K
LQogdm9pZCBXZWJQcm9jZXNzOjptYXJrQWxsTGF5ZXJzVm9sYXRpbGUoV1RGOjpGdW5jdGlvbjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nl
c3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQcm9jZXNzOjptYXJrQWxsTGF5ZXJzVm9sYXRpbGUoKSIs
IHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggOGJlNzI2MDk0
ZjE0NWRjNzNmYzVhZDdjZDVlMDIzMGYyMDFmMzI5My4uYTYxZjZlZWM0MTVlNjFmNDM2MWYyNTNj
MWEzYzY5MDk5Y2VlNzcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBA
IC0yMzQsOSArMjM0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRIaWRkZW5QYWdlRE9NVGlt
ZXJUaHJvdHRsaW5nSW5jcmVhc2VMaW1pdChpbnQgbWlsbGlzZWNvbmRzKTsKIAotICAgIHZvaWQg
cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpOwotICAgIHZvaWQgcHJlcGFyZVRvU3VzcGVu
ZCgpOwotICAgIHZvaWQgY2FuY2VsUHJlcGFyZVRvU3VzcGVuZCgpOworICAgIHZvaWQgcHJlcGFy
ZVRvU3VzcGVuZCh1aW50NjRfdCByZXF1ZXN0VG9TdXNwZW5kSUQsIGJvb2wgaXNTdXNwZW5zaW9u
SW1taW5lbnQpOwogICAgIHZvaWQgcHJvY2Vzc0RpZFJlc3VtZSgpOwogCiAgICAgdm9pZCBzZW5k
UHJld2FybUluZm9ybWF0aW9uKGNvbnN0IFVSTCYpOwpAQCAtMzg4LDkgKzM4Niw2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZVBhcmFtZXRlcihjb25zdCBTdHJpbmcmIGtl
eSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRs
ZVBhcmFtZXRlcnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAKLSAgICBlbnVtIGNsYXNz
IFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kIHsgTm8sIFllcyB9OwotICAgIHZv
aWQgYWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3Vz
cGVuZCk7Ci0KICAgICBib29sIGFyZUFsbFBhZ2VzU3VzcGVuZGVkKCkgY29uc3Q7CiAKICAgICB2
b2lkIGVuc3VyZUF1dG9tYXRpb25TZXNzaW9uUHJveHkoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRl
bnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCmluZGV4IGQ4OGQ2MDc1Yjk3MzMwMGI4MjI0M2FjMWZiZWY0M2NkOTQzZjY3NmUuLmZi
MTU0ZWQ3YTFhZGYzMWQzZmE4NzRjMDEyNzllY2U2NTQ4ODhkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC05Myw5ICs5Myw3IEBA
IG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIEVuc3VyZUF1dG9t
YXRpb25TZXNzaW9uUHJveHkoU3RyaW5nIHNlc3Npb25JZGVudGlmaWVyKQogICAgIERlc3Ryb3lB
dXRvbWF0aW9uU2Vzc2lvblByb3h5KCkKIAotICAgIFByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50
bHkoKQotICAgIFByZXBhcmVUb1N1c3BlbmQoKQotICAgIENhbmNlbFByZXBhcmVUb1N1c3BlbmQo
KQorICAgIFByZXBhcmVUb1N1c3BlbmQodWludDY0X3QgcmVxdWVzdFRvU3VzcGVuZElELCBib29s
IGlzU3VzcGVuc2lvbkltbWluZW50KQogICAgIFByb2Nlc3NEaWRSZXN1bWUoKQogCiAgICAgTWFp
blRocmVhZFBpbmcoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381850</attachid>
            <date>2019-10-24 15:46:40 -0700</date>
            <delta_ts>2019-10-24 18:07:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203370-20191024154639.patch</filename>
            <type>text/plain</type>
            <size>38862</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBjYTBiNzU4ZTM4MWIyMmM4
ODMyZmFlODRiMjFiZDc5OWZkNjljOTUuLmYzM2NmODg2MDU0NmNkYWZmZTZkZTk0ZDYxNjViMzQ1
MmI3YWUxMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMTktMTAtMjQgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBQcm9jZXNzVGhyb3R0
bGVyIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDMzNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTaW1wbGlmeSBQcm9jZXNzVGhyb3R0bGVyIGltcGxlbWVudGF0aW9uIGJ5Ogor
ICAgICAgICAtIEdldHRpbmcgcmlkIG9mIENhbmNlbFByZXBhcmVUb1N1c3BlbmQgSVBDLiBJbnN0
ZWFkIGEgcmVndWxhciBQcm9jZXNzRGlkUmVzdW1lIElQQyBpcyBzZW50IHRvCisgICAgICAgICAg
dGhlIGNoaWxkIHByb2Nlc3MuCisgICAgICAgIC0gR2V0dGluZyByaWQgb2YgdGhlIFByb2Nlc3NX
aWxsU3VzcGVuZEltbWluZW50bHkgSVBDIGFuZCBzZW5kIGEgcmVndWxhciBQcm9jZXNzRGlkUmVz
dW1lIElQQworICAgICAgICAgIHdpdGggYSAnaXNTdXNwZW5zaW9uSW1taW5lbnQnIGZsYWcgaW5z
dGVhZC4KKyAgICAgICAgLSBXaGV0aGVyIHRoZSBzdXNwZW5zaW9uIGlzIGltbWluZW50IG9yIG5v
dCwgdGhlIGNoaWxkIHByb2Nlc3Mgbm93IGFsd2F5cyByZXNwb25kcyB3aXRoCisgICAgICAgICAg
YSBQcm9jZXNzUmVhZHlUb1N1c3BlbmQgSVBDLiBUaGlzIHNpbXBsaWZpZXMgb3VyIGxvZ2ljIGFz
IHRoZSBpZGVhIGlzIHRoYXQgdHJlYXRpbmcgaW1taW5lbnQKKyAgICAgICAgICBhbmQgbm9uLWlt
bWluZW50IHN1c3BlbnNpb24gc2hvdWxkIHNoYXJlIGFzIG11Y2ggb2YgdGhlIHNhbWUgbG9naWMg
YXMgcG9zc2libGUuCisgICAgICAgIC0gQWxsIFByZXBhcmVUb1N1c3BlbmQgSVBDcyBub3cgaGF2
ZSBhbiBhc3NvY2lhdGVkIGlkZW50aWZpZXIgYW5kIHRoZSBjaGlsZCBwcm9jZXNzIHNlbmRzIGJh
Y2sKKyAgICAgICAgICB0aGlzIGlkZW50aWZpZXIgd2hlbiByZXNwb25kaW5nIHdpdGggYSBQcm9j
ZXNzUmVhZHlUb1N1c3BlbmQgSVBDLiBUaGlzIGFsbG93cyB0aGUKKyAgICAgICAgICBQcm9jZXNz
VGhyb3R0bGVyIHRvIGVhc2lseSBpZ25vcmUgb3V0ZGF0ZWQgcmVxdWVzdHMgdG8gc3VzcGVuZCwg
d2l0aG91dCByZXF1aXJpbmcgdGhlCisgICAgICAgICAgbV9zdXNwZW5kTWVzc2FnZUNvdW50IGRh
dGEgbWVtYmVyIHdlIGhhZC4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyBtb3JlIGxv
Z2dpbmcgdG8gUHJvY2Vzc1Rocm90dGxlciBhbmQgdGhlIHN1c3BlbnNpb24gbG9naWMgaW4gdGhl
IGNoaWxkCisgICAgICAgIHByb2Nlc3Nlcy4gQWxsIFByb2Nlc3NUaHJvdHRsZXIgbG9nZ2luZyBu
b3cgYWxzbyBzaG93cyB0aGUgY2hpbGQgcHJvY2VzcydzIFBJRCBmb3IgY2xhcml0eS4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHlGb3JUZXN0aW5n
U3luYyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5k
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3By
b2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHlGb3JUZXN0aW5nXSk6CisgICAgICAgICogVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cHJvY2Vzc1JlYWR5VG9TdXNwZW5kKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBVSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdlbmVy
YXRlUHJlcGFyZVRvU3VzcGVuZFJlcXVlc3RJRCk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NU
aHJvdHRsZXI6OlByb2Nlc3NUaHJvdHRsZXIpOgorICAgICAgICAoV2ViS2l0OjptX2JhY2tncm91
bmRDb3VudGVyKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6ZXhwZWN0ZWRB
c3NlcnRpb25TdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6OnVwZGF0
ZUFzc2VydGlvblN0YXRlTm93KToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6
c2V0QXNzZXJ0aW9uU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjp1
cGRhdGVBc3NlcnRpb25JZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRs
ZXI6OmRpZENvbm5lY3RUb1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0
bGVyOjpwcmVwYXJlVG9TdXNwZW5kVGltZW91dFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0
OjpQcm9jZXNzVGhyb3R0bGVyOjpwcm9jZXNzUmVhZHlUb1N1c3BlbmQpOgorICAgICAgICAoV2Vi
S2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpjbGVhclBlbmRpbmdSZXF1ZXN0VG9TdXNwZW5kKToKKyAg
ICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6c2VuZFByZXBhcmVUb1N1c3BlbmRJUEMp
OgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjp1aUFzc2VydGlvbldpbGxFeHBp
cmVJbW1pbmVudGx5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyQ2xpZW50Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6c2VuZFByZXBhcmVUb1N1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OnByb2Nlc3NSZWFkeVRvU3VzcGVuZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluOgorCiAyMDE5LTEwLTI0ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1NdIE1pc21hdGNoIGluIGNvbS5hcHBsZS5jb3JlbWVkaWEuYXVkaW9k
ZXZpY2VjbG9jayBkZWNsYXJhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggZmYxZDZkYzg3OTk2MjRiMTUyNWQ4YmM2ZGIwNjIy
ODQ4Njc2OTJiNC4uYTE2NzIwMWI0NjgzMGE2NjcyMDU5YTA3ZTJlNTNhYmU2NjBmNjJhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAg
LTIwNzUsOCArMjA3NSwyMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzRGlkVHJhbnNp
dGlvblRvQmFja2dyb3VuZCgpCiAgICAgcGxhdGZvcm1Qcm9jZXNzRGlkVHJhbnNpdGlvblRvQmFj
a2dyb3VuZCgpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjphY3R1YWxQcmVwYXJlVG9TdXNw
ZW5kKFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kIHNob3VsZEFja25vd2xlZGdl
V2hlblJlYWR5VG9TdXNwZW5kKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNw
ZW5kSW1taW5lbnRseUZvclRlc3RpbmdTeW5jKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBwcmVwYXJlVG9TdXNwZW5kKDAsIHRydWUpOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVU
b1N1c3BlbmQodWludDY0X3QgcmVxdWVzdFRvU3VzcGVuZElELCBib29sIGlzU3VzcGVuc2lvbklt
bWluZW50KQogeworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3
b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCglIiBQUkl1NjQgIiksIGlzU3VzcGVuc2lvbklt
bWluZW50OiAlZCIsIHRoaXMsIHJlcXVlc3RUb1N1c3BlbmRJRCwgaXNTdXNwZW5zaW9uSW1taW5l
bnQpOworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCisgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX2lkYlNlcnZlcnMudmFsdWVzKCkpCisgICAg
ICAgIHNlcnZlci0+dHJ5U3RvcChpc1N1c3BlbnNpb25JbW1pbmVudCA/IElEQlNlcnZlcjo6U2hv
dWxkRm9yY2VTdG9wOjpZZXMgOiBJREJTZXJ2ZXI6OlNob3VsZEZvcmNlU3RvcDo6Tm8pOworI2Vu
ZGlmCisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIG1fd2ViU1FMaXRlRGF0YWJhc2VU
cmFja2VyLnNldElzU3VzcGVuZGVkKHRydWUpOwogI2VuZGlmCkBAIC0yMDg0LDExICsyMDk3LDEx
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3BlbmQoU2hvdWxkQWNr
bm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQKICAgICBsb3dNZW1vcnlIYW5kbGVyKENyaXRpY2Fs
OjpZZXMpOwogCiAgICAgUmVmUHRyPENhbGxiYWNrQWdncmVnYXRvcj4gY2FsbGJhY2tBZ2dyZWdh
dG9yOwotICAgIGlmIChzaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZCA9PSBTaG91
bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZDo6WWVzKSB7Ci0gICAgICAgIGNhbGxiYWNr
QWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFt0aGlzXSB7Ci0gICAgICAg
ICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6
Om5vdGlmeVByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpIFNlbmRpbmcgUHJvY2Vzc1JlYWR5VG9TdXNw
ZW5kIElQQyBtZXNzYWdlIiwgdGhpcyk7CisgICAgaWYgKHJlcXVlc3RUb1N1c3BlbmRJRCkgewor
ICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShb
dGhpcywgcmVxdWVzdFRvU3VzcGVuZElEXSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPRyhQcm9j
ZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6Om5vdGlmeVByb2Nlc3NSZWFkeVRv
U3VzcGVuZCglIiBQUkl1NjQgIikgU2VuZGluZyBQcm9jZXNzUmVhZHlUb1N1c3BlbmQgSVBDIG1l
c3NhZ2UiLCB0aGlzLCByZXF1ZXN0VG9TdXNwZW5kSUQpOwogICAgICAgICAgICAgaWYgKHBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UHJvY2Vzc1JlYWR5
VG9TdXNwZW5kKCksIDApOworICAgICAgICAgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlByb2Nlc3NSZWFkeVRvU3Vz
cGVuZChyZXF1ZXN0VG9TdXNwZW5kSUQpLCAwKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0y
MTA4LDQ0ICsyMTIxLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWN0dWFsUHJlcGFyZVRvU3Vz
cGVuZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZAogICAgIG1fc3RvcmFnZU1h
bmFnZXJTZXQtPnN1c3BlbmQoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0KIAotdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpCi17Ci0gICAgUkVM
RUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNz
V2lsbFN1c3BlbmRJbW1pbmVudGx5KCkgQkVHSU4iLCB0aGlzKTsKLSNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKSAmJiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBmb3IgKGF1dG8mIHNlcnZl
ciA6IG1faWRiU2VydmVycy52YWx1ZXMoKSkKLSAgICAgICAgc2VydmVyLT50cnlTdG9wKElEQlNl
cnZlcjo6U2hvdWxkRm9yY2VTdG9wOjpZZXMpOwotI2VuZGlmCi0gICAgYWN0dWFsUHJlcGFyZVRv
U3VzcGVuZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZDo6Tm8pOwotICAgIFJF
TEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vz
c1dpbGxTdXNwZW5kSW1taW5lbnRseSgpIEVORCIsIHRoaXMpOwotfQotCi12b2lkIE5ldHdvcmtQ
cm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5Rm9yVGVzdGluZ1N5bmMoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIHByb2Nlc3NX
aWxsU3VzcGVuZEltbWluZW50bHkoKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotfQotCi12
b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCkKLXsKLSAgICBSRUxFQVNFX0xP
RyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3Bl
bmQoKSIsIHRoaXMpOwotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCi0gICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX2lkYlNlcnZlcnMudmFsdWVz
KCkpCi0gICAgICAgIHNlcnZlci0+dHJ5U3RvcChJREJTZXJ2ZXI6OlNob3VsZEZvcmNlU3RvcDo6
Tm8pOwotI2VuZGlmCi0gICAgYWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tub3dsZWRn
ZVdoZW5SZWFkeVRvU3VzcGVuZDo6WWVzKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2Fu
Y2VsUHJlcGFyZVRvU3VzcGVuZCgpCi17Ci0gICAgLy8gQWx0aG91Z2ggaXQgaXMgdGVtcHRpbmcg
dG8gc2VuZCBhIE5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZENhbmNlbFByb2Nlc3NTdXNwZW5zaW9u
IG1lc3NhZ2UgZnJvbSBoZXJlCi0gICAgLy8gd2UgZG8gbm90IGJlY2F1c2UgcHJlcGFyZVRvU3Vz
cGVuZCgpIGFscmVhZHkgcmVwbGllZCB3aXRoIGEgTmV0d29ya1Byb2Nlc3NQcm94eTo6UHJvY2Vz
c1JlYWR5VG9TdXNwZW5kCi0gICAgLy8gbWVzc2FnZS4gQW5kIE5ldHdvcmtQcm9jZXNzUHJveHkg
ZXhwZWN0cyB0byByZWNlaXZlIGVpdGhlciBhIE5ldHdvcmtQcm9jZXNzUHJveHk6OlByb2Nlc3NS
ZWFkeVRvU3VzcGVuZC0KLSAgICAvLyBvciBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRDYW5jZWxQ
cm9jZXNzU3VzcGVuc2lvbi0gbWVzc2FnZSwgYnV0IG5vdCBib3RoLgotICAgIFJFTEVBU0VfTE9H
KFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzczo6Y2FuY2VsUHJlcGFyZVRv
U3VzcGVuZCgpIiwgdGhpcyk7Ci0gICAgcmVzdW1lKCk7Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkKIHsKICAgICBtX2Rvd25sb2FkTWFu
YWdlci5hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDM4N2VlZTI0MjBlZDU5NDJiMmFk
MjdlODgzMzM1OWEwY2E2YTFkZWUuLjJhOTU1ZmRhYmVjNzE4YzliOGZjODA2YjJlZDRlYzZmNGU0
NDIwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKQEAgLTE3NCwxMCArMTc0LDggQEAgcHVibGljOgogICAgIHZvaWQgZW5zdXJlU2Vzc2lvbihj
b25zdCBQQUw6OlNlc3Npb25JRCYsIGJvb2wgc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9u
LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpOwogI2VuZGlmCiAKLSAgICB2b2lkIHByb2Nlc3NX
aWxsU3VzcGVuZEltbWluZW50bHkoKTsKICAgICB2b2lkIHByb2Nlc3NXaWxsU3VzcGVuZEltbWlu
ZW50bHlGb3JUZXN0aW5nU3luYyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZv
aWQgcHJlcGFyZVRvU3VzcGVuZCgpOwotICAgIHZvaWQgY2FuY2VsUHJlcGFyZVRvU3VzcGVuZCgp
OworICAgIHZvaWQgcHJlcGFyZVRvU3VzcGVuZCh1aW50NjRfdCByZXF1ZXN0VG9TdXNwZW5kSUQs
IGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQpOwogICAgIHZvaWQgcHJvY2Vzc0RpZFJlc3VtZSgp
OwogICAgIHZvaWQgcmVzdW1lKCk7CiAKQEAgLTM1Nyw4ICszNTUsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgcGxhdGZvcm1Qcm9jZXNzRGlkVHJhbnNpdGlvblRvRm9yZWdyb3VuZCgpOwogICAgIHZv
aWQgcGxhdGZvcm1Qcm9jZXNzRGlkVHJhbnNpdGlvblRvQmFja2dyb3VuZCgpOwogCi0gICAgZW51
bSBjbGFzcyBTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZCB7IE5vLCBZZXMgfTsK
LSAgICB2b2lkIGFjdHVhbFByZXBhcmVUb1N1c3BlbmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVh
ZHlUb1N1c3BlbmQpOwogICAgIHZvaWQgcGxhdGZvcm1QcmVwYXJlVG9TdXNwZW5kKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybVByb2Nlc3NEaWRSZXN1bWUo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNzYyMzI1ZDJhNjNjMmQ1ZmJlNmIyODU2ODM5NDA1MDAx
NjEwNjkxMi4uZGFmNzlhOWE2NWNkNDRmOWJjNjM4OTk0YmU2NGIzY2Q5MDEwMTVmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC03NCwxMCArNzQsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgUHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0JhY2tncm91bmQoKQog
ICAgIFByb2Nlc3NEaWRUcmFuc2l0aW9uVG9Gb3JlZ3JvdW5kKCkKIAotICAgIFByb2Nlc3NXaWxs
U3VzcGVuZEltbWluZW50bHkoKQogICAgIFByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHlGb3JU
ZXN0aW5nU3luYygpIC0+ICgpIFN5bmNocm9ub3VzCi0gICAgUHJlcGFyZVRvU3VzcGVuZCgpCi0g
ICAgQ2FuY2VsUHJlcGFyZVRvU3VzcGVuZCgpCisgICAgUHJlcGFyZVRvU3VzcGVuZCh1aW50NjRf
dCByZXF1ZXN0VG9TdXNwZW5kSUQsIGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQpCiAgICAgUHJv
Y2Vzc0RpZFJlc3VtZSgpCiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXgg
MTAxMTcyZmVkNGU5YTkyOTUxNTY3OTM1Njk5NzEyZTY2YTQ1N2Q1Zi4uNmY3ZjNlY2M2ZmNhMGJl
MTc0ZDRhNjA2MWRjN2FiMmU5Zjk2ZDM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC03NjExLDcgKzc2MTEsNyBAQCAtIChfV0tGcmFt
ZUhhbmRsZSAqKV9tYWluRnJhbWUKIC0gKHZvaWQpX3Byb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50
bHlGb3JUZXN0aW5nCiB7CiAgICAgaWYgKF9wYWdlKQotICAgICAgICBfcGFnZS0+cHJvY2Vzcygp
LnNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCk7CisgICAgICAgIF9wYWdlLT5wcm9j
ZXNzKCkuc2VuZFByZXBhcmVUb1N1c3BlbmQoMCwgV2ViS2l0OjpJc1N1c3BlbnNpb25JbW1pbmVu
dDo6WWVzKTsKIH0KIAogLSAodm9pZClfcHJvY2Vzc0RpZFJlc3VtZUZvclRlc3RpbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCmluZGV4IDEyNTM0N2JmMzZkY2Q1YjczMjVhZTgwMzNkYmFmOTNiYmQzYTY1MjkuLmFm
N2M5MjdlNTBlMzEyZjRhNjAyZWViY2MzM2QwNjU3OTVlNDk0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApA
QCAtMTA2OCwyOCArMTA2OCwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFNob3Vs
ZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbgogfQogI2VuZGlm
IC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKLXZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6c2VuZFByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoKQotewotICAgIGlmIChj
YW5TZW5kTWVzc2FnZSgpKQotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
UHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpLCAwKTsKLX0KLQogdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpzZW5kUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmcoKQog
ewogICAgIGlmIChjYW5TZW5kTWVzc2FnZSgpKQogICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OlByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHlGb3JUZXN0aW5nU3lu
YygpLCBNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50
bHlGb3JUZXN0aW5nU3luYzo6UmVwbHkoKSwgMCk7CiB9CiAgICAgCi12b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnNlbmRQcmVwYXJlVG9TdXNwZW5kKCkKLXsKLSAgICBpZiAoY2FuU2VuZE1lc3Nh
Z2UoKSkKLSAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByZXBhcmVUb1N1
c3BlbmQoKSwgMCk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZENhbmNlbFBy
ZXBhcmVUb1N1c3BlbmQoKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kUHJlcGFyZVRv
U3VzcGVuZCh1aW50NjRfdCByZXF1ZXN0VG9TdXNwZW5kSUQsIElzU3VzcGVuc2lvbkltbWluZW50
IGlzU3VzcGVuc2lvbkltbWluZW50KQogewogICAgIGlmIChjYW5TZW5kTWVzc2FnZSgpKQotICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q2FuY2VsUHJlcGFyZVRvU3VzcGVu
ZCgpLCAwKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByZXBhcmVU
b1N1c3BlbmQocmVxdWVzdFRvU3VzcGVuZElELCBpc1N1c3BlbnNpb25JbW1pbmVudCA9PSBJc1N1
c3BlbnNpb25JbW1pbmVudDo6WWVzKSwgMCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6c2VuZFByb2Nlc3NEaWRSZXN1bWUoKQpAQCAtMTA5OCw5ICsxMDg2LDkgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vzc0RpZFJlc3VtZSgpCiAgICAgICAgIHNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcm9jZXNzRGlkUmVzdW1lKCksIDApOwogfQogCi12b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OnByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpCit2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnByb2Nlc3NSZWFkeVRvU3VzcGVuZCh1aW50NjRfdCByZXF1ZXN0VG9T
dXNwZW5kSUQpCiB7Ci0gICAgbV90aHJvdHRsZXIucHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCk7Cisg
ICAgbV90aHJvdHRsZXIucHJvY2Vzc1JlYWR5VG9TdXNwZW5kKHJlcXVlc3RUb1N1c3BlbmRJRCk7
CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkU2V0QXNzZXJ0aW9uU3RhdGUoQXNz
ZXJ0aW9uU3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDM1ZTA0M2U1NTJjYTBkMzk1MDg3N2E4NWM4OGVh
NTBlZWZiYmQyOWUuLjcxZTUwNDRkNDM3ZDA1MmIzN2YyYWYyZGFkNDE3MzM1MjAzNTQwN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oCkBAIC0xNjAsNyArMTYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvdWxk
QmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGJvb2wsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKIAotICAgIHZvaWQgcHJvY2Vzc1Jl
YWR5VG9TdXNwZW5kKCk7CisgICAgdm9pZCBwcm9jZXNzUmVhZHlUb1N1c3BlbmQodWludDY0X3Qg
cmVxdWVzdFRvU3VzcGVuZElEKTsKICAgICAKICAgICB2b2lkIHNlbmRQcm9jZXNzRGlkVHJhbnNp
dGlvblRvRm9yZWdyb3VuZCgpOwogICAgIHZvaWQgc2VuZFByb2Nlc3NEaWRUcmFuc2l0aW9uVG9C
YWNrZ3JvdW5kKCk7CkBAIC0xOTEsNyArMTkxLDYgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAv
LyBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50Ci0gICAgdm9pZCBzZW5kUHJvY2Vzc1dpbGxTdXNwZW5k
SW1taW5lbnRseSgpIGZpbmFsOwogICAgIHZvaWQgc2VuZFByb2Nlc3NEaWRSZXN1bWUoKSBmaW5h
bDsKICAgICAKICAgICB2b2lkIHNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5Rm9yVGVz
dGluZygpOwpAQCAtMjA5LDggKzIwOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckNhbGxi
YWNrU3RhdGVzKCk7CiAKICAgICAvLyBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50Ci0gICAgdm9pZCBz
ZW5kUHJlcGFyZVRvU3VzcGVuZCgpIGZpbmFsOwotICAgIHZvaWQgc2VuZENhbmNlbFByZXBhcmVU
b1N1c3BlbmQoKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRQcmVwYXJlVG9TdXNwZW5kKHVpbnQ2NF90
IHJlcXVlc3RUb1N1c3BlbmRJRCwgSXNTdXNwZW5zaW9uSW1taW5lbnQpIGZpbmFsOwogICAgIHZv
aWQgZGlkU2V0QXNzZXJ0aW9uU3RhdGUoQXNzZXJ0aW9uU3RhdGUpIGZpbmFsOwogCiAgICAgLy8g
SVBDOjpDb25uZWN0aW9uOjpDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCBmNWZiNTY1OWNmMzQzYTA5Yjg1NWUyZDZiMDBkNmVlZDExNGY2MTk2Li4zMWRiNDhhYmZlMmZl
NmU3OGZkMmVlMzYzYzg3NzVmODcyMzFiMTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluCkBAIC0zMSw3ICszMSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVn
YWN5UmVjZWl2ZXIgewogCiAgICAgVGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5X
YWl0aW5nRm9yU3luY1JlcGx5KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQp
IC0+IChib29sIGhhbmRsZWQpIFN5bmNocm9ub3VzCiAKLSAgICBQcm9jZXNzUmVhZHlUb1N1c3Bl
bmQoKQorICAgIFByb2Nlc3NSZWFkeVRvU3VzcGVuZCh1aW50NjRfdCBwZW5kaW5nUmVxdWVzdFRv
U3VzcGVuZElEKQogICAgIFNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xkaW5nTG9j
a2VkRmlsZXMpCiAKICAgICAjIERpYWdub3N0aWMgbWVzc2FnZXMgbG9nZ2luZwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAppbmRleCA0Y2UyNjJlOWRjYmI0
YjFiMGZmMGFkNWRiOTdlYjk3ZjM2MDczNzVhLi42ZjkwNGRjZmVjZGU2MzliZjg2MzRhZDExYjE5
ZjFmNjQ4ODRhMjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNz
VGhyb3R0bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0
bGVyLmNwcApAQCAtMzEsMjEgKzMxLDI1IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIAot
c3RhdGljIGNvbnN0IFNlY29uZHMgcHJvY2Vzc1N1c3BlbnNpb25UaW1lb3V0IHsgMzBfcyB9Owot
ICAgIAorc3RhdGljIGNvbnN0IFNlY29uZHMgcHJvY2Vzc1N1c3BlbnNpb25UaW1lb3V0IHsgMjBf
cyB9OworCitzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVQcmVwYXJlVG9TdXNwZW5kUmVxdWVzdElE
KCkKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgcHJlcGFyZVRvU3VzcGVuZFJlcXVlc3RJRCA9IDA7
CisgICAgcmV0dXJuICsrcHJlcGFyZVRvU3VzcGVuZFJlcXVlc3RJRDsKK30KKwogUHJvY2Vzc1Ro
cm90dGxlcjo6UHJvY2Vzc1Rocm90dGxlcihQcm9jZXNzVGhyb3R0bGVyQ2xpZW50JiBwcm9jZXNz
LCBib29sIHNob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24pCiAgICAgOiBtX3Byb2Nlc3Mo
cHJvY2VzcykKLSAgICAsIG1fc3VzcGVuZFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlBy
b2Nlc3NUaHJvdHRsZXI6OnN1c3BlbmRUaW1lckZpcmVkKQotICAgICwgbV9mb3JlZ3JvdW5kQ291
bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50KSB7IHVwZGF0ZUFzc2VydGlvbigpOyB9KQotICAg
ICwgbV9iYWNrZ3JvdW5kQ291bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50KSB7IHVwZGF0ZUFz
c2VydGlvbigpOyB9KQorICAgICwgbV9wcmVwYXJlVG9TdXNwZW5kVGltZW91dFRpbWVyKFJ1bkxv
b3A6Om1haW4oKSwgdGhpcywgJlByb2Nlc3NUaHJvdHRsZXI6OnByZXBhcmVUb1N1c3BlbmRUaW1l
b3V0VGltZXJGaXJlZCkKKyAgICAsIG1fZm9yZWdyb3VuZENvdW50ZXIoW3RoaXNdKFJlZkNvdW50
ZXJFdmVudCkgeyB1cGRhdGVBc3NlcnRpb25JZk5lZWRlZCgpOyB9KQorICAgICwgbV9iYWNrZ3Jv
dW5kQ291bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50KSB7IHVwZGF0ZUFzc2VydGlvbklmTmVl
ZGVkKCk7IH0pCiAgICAgLCBtX3Nob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24oc2hvdWxk
VGFrZVVJQmFja2dyb3VuZEFzc2VydGlvbikKIHsKIH0KICAgICAKLUFzc2VydGlvblN0YXRlIFBy
b2Nlc3NUaHJvdHRsZXI6OmFzc2VydGlvblN0YXRlKCkKK0Fzc2VydGlvblN0YXRlIFByb2Nlc3NU
aHJvdHRsZXI6OmV4cGVjdGVkQXNzZXJ0aW9uU3RhdGUoKQogewotICAgIEFTU0VSVCghbV9zdXNw
ZW5kVGltZXIuaXNBY3RpdmUoKSk7Ci0gICAgCiAgICAgaWYgKG1fZm9yZWdyb3VuZENvdW50ZXIu
dmFsdWUoKSkKICAgICAgICAgcmV0dXJuIEFzc2VydGlvblN0YXRlOjpGb3JlZ3JvdW5kOwogICAg
IGlmIChtX2JhY2tncm91bmRDb3VudGVyLnZhbHVlKCkpCkBAIC01Myw4NiArNTcsMTEyIEBAIEFz
c2VydGlvblN0YXRlIFByb2Nlc3NUaHJvdHRsZXI6OmFzc2VydGlvblN0YXRlKCkKICAgICByZXR1
cm4gQXNzZXJ0aW9uU3RhdGU6OlN1c3BlbmRlZDsKIH0KICAgICAKLXZvaWQgUHJvY2Vzc1Rocm90
dGxlcjo6dXBkYXRlQXNzZXJ0aW9uTm93KCkKK3ZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6dXBkYXRl
QXNzZXJ0aW9uU3RhdGVOb3coKQogewotICAgIG1fc3VzcGVuZFRpbWVyLnN0b3AoKTsKLSAgICBp
ZiAobV9hc3NlcnRpb24pIHsKLSAgICAgICAgYXV0byBuZXdTdGF0ZSA9IGFzc2VydGlvblN0YXRl
KCk7Ci0gICAgICAgIGlmIChtX2Fzc2VydGlvbi0+c3RhdGUoKSA9PSBuZXdTdGF0ZSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIl
cCAtIFByb2Nlc3NUaHJvdHRsZXI6OnVwZGF0ZUFzc2VydGlvbk5vdygpIHVwZGF0aW5nIHByb2Nl
c3MgYXNzZXJ0aW9uIHN0YXRlIHRvICV1IChmb3JlZ3JvdW5kQWN0aXZpdGllczogJWx1LCBiYWNr
Z3JvdW5kQWN0aXZpdGllczogJWx1KSIsIHRoaXMsIG5ld1N0YXRlLCBtX2ZvcmVncm91bmRDb3Vu
dGVyLnZhbHVlKCksIG1fYmFja2dyb3VuZENvdW50ZXIudmFsdWUoKSk7Ci0gICAgICAgIG1fYXNz
ZXJ0aW9uLT5zZXRTdGF0ZShuZXdTdGF0ZSk7Ci0gICAgICAgIG1fcHJvY2Vzcy5kaWRTZXRBc3Nl
cnRpb25TdGF0ZShuZXdTdGF0ZSk7Ci0gICAgfQorICAgIHNldEFzc2VydGlvblN0YXRlKGV4cGVj
dGVkQXNzZXJ0aW9uU3RhdGUoKSk7CiB9Ci0gICAgCi12b2lkIFByb2Nlc3NUaHJvdHRsZXI6OnVw
ZGF0ZUFzc2VydGlvbigpCisKK3ZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6c2V0QXNzZXJ0aW9uU3Rh
dGUoQXNzZXJ0aW9uU3RhdGUgbmV3U3RhdGUpCiB7Ci0gICAgYm9vbCBzaG91bGRCZVJ1bm5hYmxl
ID0gdGhpcy0+c2hvdWxkQmVSdW5uYWJsZSgpOwotCi0gICAgLy8gSWYgdGhlIHByb2Nlc3MgaXMg
Y3VycmVudGx5IHJ1bm5hYmxlIGJ1dCB3aWxsIGJlIHN1c3BlbmRlZCB0aGVuIGZpcnN0IGdpdmUg
aXQgYSBjaGFuY2UgdG8gY29tcGxldGUgd2hhdCBpdCB3YXMgZG9pbmcKLSAgICAvLyBhbmQgY2xl
YW4gdXAgLSBtb3ZlIGl0IHRvIHRoZSBiYWNrZ3JvdW5kIGFuZCBzZW5kIGl0IGEgbWVzc2FnZSB0
byBub3RpZnkuIFNjaGVkdWxlIGEgdGltZW91dCBzbyBpdCBjYW4ndCBzdGF5IHJ1bm5pbmcKLSAg
ICAvLyBpbiB0aGUgYmFja2dyb3VuZCBmb3IgdG9vIGxvbmcuCi0gICAgaWYgKG1fYXNzZXJ0aW9u
ICYmIG1fYXNzZXJ0aW9uLT5zdGF0ZSgpICE9IEFzc2VydGlvblN0YXRlOjpTdXNwZW5kZWQgJiYg
IXNob3VsZEJlUnVubmFibGUpIHsKLSAgICAgICAgKyttX3N1c3BlbmRNZXNzYWdlQ291bnQ7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBQcm9jZXNzVGhyb3R0
bGVyOjp1cGRhdGVBc3NlcnRpb24oKSBzZW5kaW5nIFByZXBhcmVUb1N1c3BlbmQgSVBDIiwgdGhp
cyk7Ci0gICAgICAgIG1fcHJvY2Vzcy5zZW5kUHJlcGFyZVRvU3VzcGVuZCgpOwotICAgICAgICBt
X3N1c3BlbmRUaW1lci5zdGFydE9uZVNob3QocHJvY2Vzc1N1c3BlbnNpb25UaW1lb3V0KTsKLSAg
ICAgICAgbV9hc3NlcnRpb24tPnNldFN0YXRlKEFzc2VydGlvblN0YXRlOjpCYWNrZ3JvdW5kKTsK
LSAgICAgICAgbV9wcm9jZXNzLmRpZFNldEFzc2VydGlvblN0YXRlKEFzc2VydGlvblN0YXRlOjpC
YWNrZ3JvdW5kKTsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Fzc2VydGlvbik7CisgICAgaWYgKG1f
YXNzZXJ0aW9uLT5zdGF0ZSgpID09IG5ld1N0YXRlKQogICAgICAgICByZXR1cm47Ci0gICAgfQog
Ci0gICAgaWYgKHNob3VsZEJlUnVubmFibGUpIHsKLSAgICAgICAgLy8gSWYgd2UncmUgY3VycmVu
dGx5IHdhaXRpbmcgZm9yIHRoZSBXZWIgcHJvY2VzcyB0byBkbyBzdXNwZW5zaW9uIGNsZWFudXAs
IGJ1dCBubyBsb25nZXIgbmVlZCB0byBiZSBzdXNwZW5kZWQsIHRlbGwgdGhlIFdlYiBwcm9jZXNz
IHRvIGNhbmNlbCB0aGUgY2xlYW51cC4KLSAgICAgICAgaWYgKG1fc3VzcGVuZFRpbWVyLmlzQWN0
aXZlKCkpCi0gICAgICAgICAgICBtX3Byb2Nlc3Muc2VuZENhbmNlbFByZXBhcmVUb1N1c3BlbmQo
KTsKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIltQSUQ6ICVkXSAlcCAtIFBy
b2Nlc3NUaHJvdHRsZXI6OnNldEFzc2VydGlvblN0YXRlKCkgVXBkYXRpbmcgcHJvY2VzcyBhc3Nl
cnRpb24gc3RhdGUgdG8gJXUgKGZvcmVncm91bmRBY3Rpdml0aWVzOiAlbHUsIGJhY2tncm91bmRB
Y3Rpdml0aWVzOiAlbHUpIiwgbV9wcm9jZXNzSWRlbnRpZmllciwgdGhpcywgbmV3U3RhdGUsIG1f
Zm9yZWdyb3VuZENvdW50ZXIudmFsdWUoKSwgbV9iYWNrZ3JvdW5kQ291bnRlci52YWx1ZSgpKTsK
KyAgICBtX2Fzc2VydGlvbi0+c2V0U3RhdGUobmV3U3RhdGUpOworICAgIG1fcHJvY2Vzcy5kaWRT
ZXRBc3NlcnRpb25TdGF0ZShuZXdTdGF0ZSk7Cit9CisgICAgCit2b2lkIFByb2Nlc3NUaHJvdHRs
ZXI6OnVwZGF0ZUFzc2VydGlvbklmTmVlZGVkKCkKK3sKKyAgICBpZiAoIW1fYXNzZXJ0aW9uKQor
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKChtX2Fzc2VydGlvbiAmJiBtX2Fzc2VydGlv
bi0+c3RhdGUoKSA9PSBBc3NlcnRpb25TdGF0ZTo6U3VzcGVuZGVkKSB8fCBtX3VpQXNzZXJ0aW9u
RXhwaXJlZCkgeworICAgIGlmIChzaG91bGRCZVJ1bm5hYmxlKCkpIHsKKyAgICAgICAgaWYgKG1f
YXNzZXJ0aW9uLT5zdGF0ZSgpID09IEFzc2VydGlvblN0YXRlOjpTdXNwZW5kZWQgfHwgbV9wZW5k
aW5nUmVxdWVzdFRvU3VzcGVuZElEKSB7CisgICAgICAgICAgICBpZiAobV9hc3NlcnRpb24tPnN0
YXRlKCkgPT0gQXNzZXJ0aW9uU3RhdGU6OlN1c3BlbmRlZCkKKyAgICAgICAgICAgICAgICBSRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRs
ZXI6OnVwZGF0ZUFzc2VydGlvbklmTmVlZGVkKCkgc2VuZGluZyBQcm9jZXNzRGlkUmVzdW1lIElQ
QyBiZWNhdXNlIHRoZSBwcm9jZXNzIHdhcyBzdXNwZW5kZWQiLCBtX3Byb2Nlc3NJZGVudGlmaWVy
LCB0aGlzKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPRyhQ
cm9jZXNzU3VzcGVuc2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXI6OnVwZGF0
ZUFzc2VydGlvbklmTmVlZGVkKCkgc2VuZGluZyBQcm9jZXNzRGlkUmVzdW1lIElQQyBiZWNhdXNl
IHRoZSBXZWJQcm9jZXNzIGlzIHN0aWxsIHByb2Nlc3NpbmcgcmVxdWVzdCB0byBzdXNwZW5kOiAl
IiBQUkl1NjQsIG1fcHJvY2Vzc0lkZW50aWZpZXIsIHRoaXMsICptX3BlbmRpbmdSZXF1ZXN0VG9T
dXNwZW5kSUQpOwogICAgICAgICAgICAgbV9wcm9jZXNzLnNlbmRQcm9jZXNzRGlkUmVzdW1lKCk7
Ci0gICAgICAgICAgICBtX3VpQXNzZXJ0aW9uRXhwaXJlZCA9IGZhbHNlOworICAgICAgICAgICAg
Y2xlYXJQZW5kaW5nUmVxdWVzdFRvU3VzcGVuZCgpOworICAgICAgICB9CisgICAgfSBlbHNlIHsK
KyAgICAgICAgLy8gSWYgdGhlIHByb2Nlc3MgaXMgY3VycmVudGx5IHJ1bm5hYmxlIGJ1dCB3aWxs
IGJlIHN1c3BlbmRlZCB0aGVuIGZpcnN0IGdpdmUgaXQgYSBjaGFuY2UgdG8gY29tcGxldGUgd2hh
dCBpdCB3YXMgZG9pbmcKKyAgICAgICAgLy8gYW5kIGNsZWFuIHVwIC0gbW92ZSBpdCB0byB0aGUg
YmFja2dyb3VuZCBhbmQgc2VuZCBpdCBhIG1lc3NhZ2UgdG8gbm90aWZ5LiBTY2hlZHVsZSBhIHRp
bWVvdXQgc28gaXQgY2FuJ3Qgc3RheSBydW5uaW5nCisgICAgICAgIC8vIGluIHRoZSBiYWNrZ3Jv
dW5kIGZvciB0b28gbG9uZy4KKyAgICAgICAgaWYgKG1fYXNzZXJ0aW9uLT5zdGF0ZSgpICE9IEFz
c2VydGlvblN0YXRlOjpTdXNwZW5kZWQpIHsKKyAgICAgICAgICAgIHNlbmRQcmVwYXJlVG9TdXNw
ZW5kSVBDKElzU3VzcGVuc2lvbkltbWluZW50OjpObyk7CisgICAgICAgICAgICBtX3ByZXBhcmVU
b1N1c3BlbmRUaW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KHByb2Nlc3NTdXNwZW5zaW9uVGltZW91
dCk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB1cGRhdGVB
c3NlcnRpb25Ob3coKTsKKyAgICB1cGRhdGVBc3NlcnRpb25TdGF0ZU5vdygpOwogfQogCiB2b2lk
IFByb2Nlc3NUaHJvdHRsZXI6OmRpZENvbm5lY3RUb1Byb2Nlc3MoUHJvY2Vzc0lEIHBpZCkKIHsK
LSAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gUHJvY2Vzc1Rocm90dGxl
cjo6ZGlkQ29ubmVjdFRvUHJvY2VzcyglZCkiLCB0aGlzLCBwaWQpOworICAgIFJFTEVBU0VfTE9H
KFByb2Nlc3NTdXNwZW5zaW9uLCAiW1BJRDogJWRdICVwIC0gUHJvY2Vzc1Rocm90dGxlcjo6ZGlk
Q29ubmVjdFRvUHJvY2VzcygpIiwgcGlkLCB0aGlzKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9h
c3NlcnRpb24pOwogCi0gICAgbV9zdXNwZW5kVGltZXIuc3RvcCgpOwogICAgIGlmIChtX3Nob3Vs
ZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24pCi0gICAgICAgIG1fYXNzZXJ0aW9uID0gbWFrZVVu
aXF1ZTxQcm9jZXNzQW5kVUlBc3NlcnRpb24+KHBpZCwgIldlYiBjb250ZW50IHZpc2liaWxpdHki
X3MsIGFzc2VydGlvblN0YXRlKCkpOworICAgICAgICBtX2Fzc2VydGlvbiA9IG1ha2VVbmlxdWU8
UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPihwaWQsICJXZWIgY29udGVudCB2aXNpYmlsaXR5Il9zLCBl
eHBlY3RlZEFzc2VydGlvblN0YXRlKCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9hc3NlcnRpb24g
PSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHBpZCwgIldlYiBjb250ZW50IHZpc2liaWxp
dHkiX3MsIGFzc2VydGlvblN0YXRlKCkpOwotICAgIG1fcHJvY2Vzcy5kaWRTZXRBc3NlcnRpb25T
dGF0ZShhc3NlcnRpb25TdGF0ZSgpKTsKKyAgICAgICAgbV9hc3NlcnRpb24gPSBtYWtlVW5pcXVl
PFByb2Nlc3NBc3NlcnRpb24+KHBpZCwgIldlYiBjb250ZW50IHZpc2liaWxpdHkiX3MsIGV4cGVj
dGVkQXNzZXJ0aW9uU3RhdGUoKSk7CisKKyAgICBtX3Byb2Nlc3NJZGVudGlmaWVyID0gcGlkOwor
ICAgIG1fcHJvY2Vzcy5kaWRTZXRBc3NlcnRpb25TdGF0ZShleHBlY3RlZEFzc2VydGlvblN0YXRl
KCkpOwogICAgIG1fYXNzZXJ0aW9uLT5zZXRDbGllbnQoKnRoaXMpOwogfQogICAgIAotdm9pZCBQ
cm9jZXNzVGhyb3R0bGVyOjpzdXNwZW5kVGltZXJGaXJlZCgpCit2b2lkIFByb2Nlc3NUaHJvdHRs
ZXI6OnByZXBhcmVUb1N1c3BlbmRUaW1lb3V0VGltZXJGaXJlZCgpCiB7Ci0gICAgdXBkYXRlQXNz
ZXJ0aW9uTm93KCk7CisgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJbUElEOiAl
ZF0gJXAgLSBQcm9jZXNzVGhyb3R0bGVyOjpwcmVwYXJlVG9TdXNwZW5kVGltZW91dFRpbWVyRmly
ZWQoKSBVcGRhdGluZyBwcm9jZXNzIGFzc2VydGlvbiB0byBhbGxvdyBzdXNwZW5zaW9uIiwgbV9w
cm9jZXNzSWRlbnRpZmllciwgdGhpcyk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9wZW5kaW5nUmVx
dWVzdFRvU3VzcGVuZElEKTsKKyAgICB1cGRhdGVBc3NlcnRpb25TdGF0ZU5vdygpOwogfQogICAg
IAotdm9pZCBQcm9jZXNzVGhyb3R0bGVyOjpwcm9jZXNzUmVhZHlUb1N1c3BlbmQoKQordm9pZCBQ
cm9jZXNzVGhyb3R0bGVyOjpwcm9jZXNzUmVhZHlUb1N1c3BlbmQodWludDY0X3QgcmVxdWVzdFRv
U3VzcGVuZElEKQogewotICAgIGlmICghLS1tX3N1c3BlbmRNZXNzYWdlQ291bnQpCi0gICAgICAg
IHVwZGF0ZUFzc2VydGlvbk5vdygpOwotICAgIEFTU0VSVChtX3N1c3BlbmRNZXNzYWdlQ291bnQg
Pj0gMCk7CisgICAgUkVMRUFTRV9BU1NFUlQocmVxdWVzdFRvU3VzcGVuZElEKTsKKyAgICBpZiAo
IW1fcGVuZGluZ1JlcXVlc3RUb1N1c3BlbmRJRCB8fCAqbV9wZW5kaW5nUmVxdWVzdFRvU3VzcGVu
ZElEICE9IHJlcXVlc3RUb1N1c3BlbmRJRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUkVMRUFT
RV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJbUElEOiAlZF0gJXAgLSBQcm9jZXNzVGhyb3R0bGVy
Ojpwcm9jZXNzUmVhZHlUb1N1c3BlbmQoJSIgUFJJdTY0ICIpIFVwZGF0aW5nIHByb2Nlc3MgYXNz
ZXJ0aW9uIHRvIGFsbG93IHN1c3BlbnNpb24iLCBtX3Byb2Nlc3NJZGVudGlmaWVyLCB0aGlzLCBy
ZXF1ZXN0VG9TdXNwZW5kSUQpOworICAgIGNsZWFyUGVuZGluZ1JlcXVlc3RUb1N1c3BlbmQoKTsK
KworICAgIGlmIChtX2Fzc2VydGlvbi0+c3RhdGUoKSAhPSBBc3NlcnRpb25TdGF0ZTo6U3VzcGVu
ZGVkKQorICAgICAgICB1cGRhdGVBc3NlcnRpb25TdGF0ZU5vdygpOwogfQogCi12b2lkIFByb2Nl
c3NUaHJvdHRsZXI6OmRpZENhbmNlbFByb2Nlc3NTdXNwZW5zaW9uKCkKK3ZvaWQgUHJvY2Vzc1Ro
cm90dGxlcjo6Y2xlYXJQZW5kaW5nUmVxdWVzdFRvU3VzcGVuZCgpCiB7Ci0gICAgaWYgKCEtLW1f
c3VzcGVuZE1lc3NhZ2VDb3VudCkKLSAgICAgICAgdXBkYXRlQXNzZXJ0aW9uTm93KCk7Ci0gICAg
QVNTRVJUKG1fc3VzcGVuZE1lc3NhZ2VDb3VudCA+PSAwKTsKKyAgICBtX3ByZXBhcmVUb1N1c3Bl
bmRUaW1lb3V0VGltZXIuc3RvcCgpOworICAgIG1fcGVuZGluZ1JlcXVlc3RUb1N1c3BlbmRJRCA9
IFdURjo6bnVsbG9wdDsKIH0KIAotdm9pZCBQcm9jZXNzVGhyb3R0bGVyOjp1aUFzc2VydGlvbldp
bGxFeHBpcmVJbW1pbmVudGx5KCkKK3ZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6c2VuZFByZXBhcmVU
b1N1c3BlbmRJUEMoSXNTdXNwZW5zaW9uSW1taW5lbnQgaXNTdXNwZW5zaW9uSW1taW5lbnQpCiB7
Ci0gICAgbV9wcm9jZXNzLnNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCk7Ci0gICAg
bV91aUFzc2VydGlvbkV4cGlyZWQgPSB0cnVlOworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNw
ZW5zaW9uLCAiW1BJRDogJWRdICVwIC0gUHJvY2Vzc1Rocm90dGxlcjo6c2VuZFByZXBhcmVUb1N1
c3BlbmRJUEMoKSBpc1N1c3BlbnNpb25JbW1pbmVudDogJWQiLCBtX3Byb2Nlc3NJZGVudGlmaWVy
LCB0aGlzLCBpc1N1c3BlbnNpb25JbW1pbmVudCA9PSBJc1N1c3BlbnNpb25JbW1pbmVudDo6WWVz
KTsKKyAgICBpZiAobV9wZW5kaW5nUmVxdWVzdFRvU3VzcGVuZElEKSB7CisgICAgICAgIC8vIERv
IG5vdCBzZW5kIGEgbmV3IFByZXBhcmVUb1N1c3BlbmQgSVBDIGZvciBpbW1pbmVudCBzdXNwZW5z
aW9uIGlmIHdlJ3ZlIGFscmVhZHkgc2VudCBhIG5vbi1pbW1pbmVudCBQcmVwYXJlVG9TdXNwZW5k
IElQQy4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNTdXNwZW5zaW9uSW1taW5lbnQgPT0gSXNT
dXNwZW5zaW9uSW1taW5lbnQ6Olllcyk7CisgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNw
ZW5zaW9uLCAiW1BJRDogJWRdICVwIC0gUHJvY2Vzc1Rocm90dGxlcjo6c2VuZFByZXBhcmVUb1N1
c3BlbmRJUEMoKSBOb3Qgc2VuZGluZyBQcmVwYXJlVG9TdXNwZW5kKCkgSVBDIGJlY2F1c2UgdGhl
cmUgaXMgYWxyZWFkeSBvbmUgaW4gZmxpZ2h0ICglIiBQUkl1NjQgIikiLCBtX3Byb2Nlc3NJZGVu
dGlmaWVyLCB0aGlzLCAqbV9wZW5kaW5nUmVxdWVzdFRvU3VzcGVuZElEKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBtX3BlbmRpbmdSZXF1ZXN0VG9TdXNwZW5kSUQgPSBnZW5lcmF0ZVByZXBhcmVU
b1N1c3BlbmRSZXF1ZXN0SUQoKTsKKyAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNp
b24sICJbUElEOiAlZF0gJXAgLSBQcm9jZXNzVGhyb3R0bGVyOjpzZW5kUHJlcGFyZVRvU3VzcGVu
ZElQQygpIFNlbmRpbmcgUHJlcGFyZVRvU3VzcGVuZCglIiBQUkl1NjQgIiwgaXNTdXNwZW5zaW9u
SW1taW5lbnQ6ICVkKSBJUEMiLCBtX3Byb2Nlc3NJZGVudGlmaWVyLCB0aGlzLCAqbV9wZW5kaW5n
UmVxdWVzdFRvU3VzcGVuZElELCBpc1N1c3BlbnNpb25JbW1pbmVudCA9PSBJc1N1c3BlbnNpb25J
bW1pbmVudDo6WWVzKTsKKyAgICAgICAgbV9wcm9jZXNzLnNlbmRQcmVwYXJlVG9TdXNwZW5kKCpt
X3BlbmRpbmdSZXF1ZXN0VG9TdXNwZW5kSUQsIGlzU3VzcGVuc2lvbkltbWluZW50KTsKKyAgICB9
CisKKyAgICBzZXRBc3NlcnRpb25TdGF0ZShpc1N1c3BlbnNpb25JbW1pbmVudCA9PSBJc1N1c3Bl
bnNpb25JbW1pbmVudDo6WWVzID8gQXNzZXJ0aW9uU3RhdGU6OlN1c3BlbmRlZCA6IEFzc2VydGlv
blN0YXRlOjpCYWNrZ3JvdW5kKTsKIH0KIAordm9pZCBQcm9jZXNzVGhyb3R0bGVyOjp1aUFzc2Vy
dGlvbldpbGxFeHBpcmVJbW1pbmVudGx5KCkKK3sKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3Vz
cGVuc2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXI6OnVpQXNzZXJ0aW9uV2ls
bEV4cGlyZUltbWluZW50bHkoKSIsIG1fcHJvY2Vzc0lkZW50aWZpZXIsIHRoaXMpOworICAgIHNl
bmRQcmVwYXJlVG9TdXNwZW5kSVBDKElzU3VzcGVuc2lvbkltbWluZW50OjpZZXMpOworICAgIG1f
cHJlcGFyZVRvU3VzcGVuZFRpbWVvdXRUaW1lci5zdG9wKCk7CiB9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90
dGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5oCmluZGV4
IGZkMTUyOWNkNDc3NWU4NjJjMGY2MjUxODhlOTEwNjUxZmEyMTI3YjcuLmI1ODA2MjM1ZmY0ZmI1
YzEyNDY2YTA4NzZiZjZmZjRiN2UxM2QxNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm9jZXNzVGhyb3R0bGVyLmgKQEAgLTQxLDYgKzQxLDggQEAgZW51bSBQcm9jZXNzU3VwcHJlc3Np
b25EaXNhYmxlZENvdW50ZXJUeXBlIHsgfTsKIHR5cGVkZWYgUmVmQ291bnRlcjxQcm9jZXNzU3Vw
cHJlc3Npb25EaXNhYmxlZENvdW50ZXJUeXBlPiBQcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZENv
dW50ZXI7CiB0eXBlZGVmIFByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkQ291bnRlcjo6VG9rZW4g
UHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRUb2tlbjsKIAorZW51bSBjbGFzcyBJc1N1c3BlbnNp
b25JbW1pbmVudCA6IGJvb2wgeyBObywgWWVzIH07CisKIGNsYXNzIFByb2Nlc3NUaHJvdHRsZXJD
bGllbnQ7CiAKIGNsYXNzIFByb2Nlc3NUaHJvdHRsZXIgOiBwcml2YXRlIFByb2Nlc3NBc3NlcnRp
b246OkNsaWVudCB7CkBAIC01NCwzMSArNTYsMzQgQEAgcHVibGljOgogCiAgICAgUHJvY2Vzc1Ro
cm90dGxlcihQcm9jZXNzVGhyb3R0bGVyQ2xpZW50JiwgYm9vbCBzaG91bGRUYWtlVUlCYWNrZ3Jv
dW5kQXNzZXJ0aW9uKTsKIAotICAgIGlubGluZSBGb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbiBmb3Jl
Z3JvdW5kQWN0aXZpdHlUb2tlbigpIGNvbnN0OwotICAgIGlubGluZSBCYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbiBiYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpIGNvbnN0OworICAgIEZvcmVncm91bmRB
Y3Rpdml0eVRva2VuIGZvcmVncm91bmRBY3Rpdml0eVRva2VuKCkgY29uc3Q7CisgICAgQmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4gYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSBjb25zdDsKICAgICAK
ICAgICB2b2lkIGRpZENvbm5lY3RUb1Byb2Nlc3MoUHJvY2Vzc0lEKTsKLSAgICB2b2lkIHByb2Nl
c3NSZWFkeVRvU3VzcGVuZCgpOwotICAgIHZvaWQgZGlkQ2FuY2VsUHJvY2Vzc1N1c3BlbnNpb24o
KTsKKyAgICB2b2lkIHByb2Nlc3NSZWFkeVRvU3VzcGVuZCh1aW50NjRfdCBwZW5kaW5nUmVxdWVz
dFRvU3VzcGVuZElEKTsKICAgICBib29sIHNob3VsZEJlUnVubmFibGUoKSBjb25zdCB7IHJldHVy
biBtX2ZvcmVncm91bmRDb3VudGVyLnZhbHVlKCkgfHwgbV9iYWNrZ3JvdW5kQ291bnRlci52YWx1
ZSgpOyB9CiAKIHByaXZhdGU6Ci0gICAgQXNzZXJ0aW9uU3RhdGUgYXNzZXJ0aW9uU3RhdGUoKTsK
LSAgICB2b2lkIHVwZGF0ZUFzc2VydGlvbigpOwotICAgIHZvaWQgdXBkYXRlQXNzZXJ0aW9uTm93
KCk7Ci0gICAgdm9pZCBzdXNwZW5kVGltZXJGaXJlZCgpOworICAgIEFzc2VydGlvblN0YXRlIGV4
cGVjdGVkQXNzZXJ0aW9uU3RhdGUoKTsKKyAgICB2b2lkIHVwZGF0ZUFzc2VydGlvbklmTmVlZGVk
KCk7CisgICAgdm9pZCB1cGRhdGVBc3NlcnRpb25TdGF0ZU5vdygpOworICAgIHZvaWQgc2V0QXNz
ZXJ0aW9uU3RhdGUoQXNzZXJ0aW9uU3RhdGUpOworICAgIHZvaWQgcHJlcGFyZVRvU3VzcGVuZFRp
bWVvdXRUaW1lckZpcmVkKCk7CisgICAgdm9pZCBzZW5kUHJlcGFyZVRvU3VzcGVuZElQQyhJc1N1
c3BlbnNpb25JbW1pbmVudCk7CiAKICAgICAvLyBQcm9jZXNzQXNzZXJ0aW9uQ2xpZW50CiAgICAg
dm9pZCB1aUFzc2VydGlvbldpbGxFeHBpcmVJbW1pbmVudGx5KCkgb3ZlcnJpZGU7CiAKKyAgICB2
b2lkIGNsZWFyUGVuZGluZ1JlcXVlc3RUb1N1c3BlbmQoKTsKKwogICAgIFByb2Nlc3NUaHJvdHRs
ZXJDbGllbnQmIG1fcHJvY2VzczsKKyAgICBQcm9jZXNzSUQgbV9wcm9jZXNzSWRlbnRpZmllciB7
IDAgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc0Fzc2VydGlvbj4gbV9hc3NlcnRpb247
Ci0gICAgUnVuTG9vcDo6VGltZXI8UHJvY2Vzc1Rocm90dGxlcj4gbV9zdXNwZW5kVGltZXI7Cisg
ICAgUnVuTG9vcDo6VGltZXI8UHJvY2Vzc1Rocm90dGxlcj4gbV9wcmVwYXJlVG9TdXNwZW5kVGlt
ZW91dFRpbWVyOwogICAgIEZvcmVncm91bmRBY3Rpdml0eUNvdW50ZXIgbV9mb3JlZ3JvdW5kQ291
bnRlcjsKICAgICBCYWNrZ3JvdW5kQWN0aXZpdHlDb3VudGVyIG1fYmFja2dyb3VuZENvdW50ZXI7
Ci0gICAgaW50IG1fc3VzcGVuZE1lc3NhZ2VDb3VudCB7IDAgfTsKKyAgICBPcHRpb25hbDx1aW50
NjRfdD4gbV9wZW5kaW5nUmVxdWVzdFRvU3VzcGVuZElEOwogICAgIGJvb2wgbV9zaG91bGRUYWtl
VUlCYWNrZ3JvdW5kQXNzZXJ0aW9uOwotICAgIGJvb2wgbV91aUFzc2VydGlvbkV4cGlyZWQgeyBm
YWxzZSB9OwogfTsKIAogaW5saW5lIFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0
eVRva2VuIFByb2Nlc3NUaHJvdHRsZXI6OmZvcmVncm91bmRBY3Rpdml0eVRva2VuKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXJDbGllbnQuaApp
bmRleCBmOGRlZjg3YjY4MGJkMTU2NGE3ODMwZjc0OTI3NTI4NDM3YWIzNTgyLi4wZGM4OTBlZjgy
MWVmY2E3MTIzNjBjMjViNjJkOTUzZDY5M2UzMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oCkBAIC0zMCwxMyArMzAsMTMgQEAKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKK2VudW0gY2xhc3MgSXNTdXNwZW5zaW9uSW1taW5lbnQgOiBi
b29sOworCiBjbGFzcyBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5Qcm9jZXNzVGhyb3R0bGVyQ2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2Vu
ZFByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNl
bmRQcmVwYXJlVG9TdXNwZW5kKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZW5kQ2FuY2VsUHJl
cGFyZVRvU3VzcGVuZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2VuZFByZXBhcmVUb1N1c3Bl
bmQodWludDY0X3QgcmVxdWVzdFRvU3VzcGVuZElELCBJc1N1c3BlbnNpb25JbW1pbmVudCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzZW5kUHJvY2Vzc0RpZFJlc3VtZSgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkU2V0QXNzZXJ0aW9uU3RhdGUoQXNzZXJ0aW9uU3RhdGUpID0gMDsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA3OWRkNTA3
MjkyMzI5NDJiZTNlNjRkY2YzY2UxYTRkMTM2YmU3NjZhLi4yZTI0ODM0NDc3ZjFmM2UxZmM4NGZl
ODFhYWIyY2NlOGNkZjc1OTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKQEAgLTEyMTcsMjIgKzEyMTcsMTAgQEAgUmVmUHRyPEFQSTo6T2JqZWN0PiBX
ZWJQcm9jZXNzUHJveHk6OnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMoQVBJOjpPYmplY3QqIG9i
amUKICAgICByZXR1cm4gVXNlckRhdGE6OnRyYW5zZm9ybShvYmplY3QsIFRyYW5zZm9ybWVyKCkp
OwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZFByb2Nlc3NXaWxsU3VzcGVuZEltbWlu
ZW50bHkoKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmRQcmVwYXJlVG9TdXNwZW5kKHVpbnQ2
NF90IHJlcXVlc3RUb1N1c3BlbmRJRCwgSXNTdXNwZW5zaW9uSW1taW5lbnQgaXNTdXNwZW5zaW9u
SW1taW5lbnQpCiB7CiAgICAgaWYgKGNhblNlbmRNZXNzYWdlKCkpCi0gICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OlByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoKSwgMCk7Ci19
Ci0KLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kUHJlcGFyZVRvU3VzcGVuZCgpCi17Ci0gICAg
aWYgKGNhblNlbmRNZXNzYWdlKCkpCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OlByZXBhcmVUb1N1c3BlbmQoKSwgMCk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZW5k
Q2FuY2VsUHJlcGFyZVRvU3VzcGVuZCgpCi17Ci0gICAgaWYgKGNhblNlbmRNZXNzYWdlKCkpCi0g
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNhbmNlbFByZXBhcmVUb1N1c3BlbmQo
KSwgMCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlByZXBhcmVUb1N1c3Bl
bmQocmVxdWVzdFRvU3VzcGVuZElELCBpc1N1c3BlbnNpb25JbW1pbmVudCA9PSBJc1N1c3BlbnNp
b25JbW1pbmVudDo6WWVzKSwgMCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kUHJv
Y2Vzc0RpZFJlc3VtZSgpCkBAIC0xMjQxLDE0ICsxMjI5LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnNlbmRQcm9jZXNzRGlkUmVzdW1lKCkKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUHJv
Y2Vzczo6UHJvY2Vzc0RpZFJlc3VtZSgpLCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6
OnByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpCi17Ci0gICAgbV90aHJvdHRsZXIucHJvY2Vzc1JlYWR5
VG9TdXNwZW5kKCk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRDYW5jZWxQcm9jZXNz
U3VzcGVuc2lvbigpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1JlYWR5VG9TdXNwZW5k
KHVpbnQ2NF90IHJlcXVlc3RUb1N1c3BlbmRJRCkKIHsKLSAgICBtX3Rocm90dGxlci5kaWRDYW5j
ZWxQcm9jZXNzU3VzcGVuc2lvbigpOworICAgIG1fdGhyb3R0bGVyLnByb2Nlc3NSZWFkeVRvU3Vz
cGVuZChyZXF1ZXN0VG9TdXNwZW5kSUQpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlk
U2V0QXNzZXJ0aW9uU3RhdGUoQXNzZXJ0aW9uU3RhdGUgc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGJlZmUxYmQ1Y2QwMzU4MTVmMTRlMDU3Njdi
OTUwYjI5YmI4NGUxYTkuLmMwZTA0MWM1MmMyZTlhYWMzZWZlYTJiNWM4Y2Q1NzZlZGQ3OGViM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0yMjMsOCAr
MjIzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVD
aGFuZ2VkKCk7CiAKLSAgICB2b2lkIHByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpOwotICAgIHZvaWQg
ZGlkQ2FuY2VsUHJvY2Vzc1N1c3BlbnNpb24oKTsKKyAgICB2b2lkIHByb2Nlc3NSZWFkeVRvU3Vz
cGVuZCh1aW50NjRfdCByZXF1ZXN0VG9TdXNwZW5kSUQpOwogCiAgICAgdm9pZCBzZXRJc0hvbGRp
bmdMb2NrZWRGaWxlcyhib29sKTsKIApAQCAtMjk5LDkgKzI5OCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFVSTCYpOwogCiAg
ICAgLy8gUHJvY2Vzc1Rocm90dGxlckNsaWVudAotICAgIHZvaWQgc2VuZFByb2Nlc3NXaWxsU3Vz
cGVuZEltbWluZW50bHkoKSBvdmVycmlkZTsKLSAgICB2b2lkIHNlbmRQcmVwYXJlVG9TdXNwZW5k
KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZW5kQ2FuY2VsUHJlcGFyZVRvU3VzcGVuZCgpIG92ZXJy
aWRlOworICAgIHZvaWQgc2VuZFByZXBhcmVUb1N1c3BlbmQodWludDY0X3QgcmVxdWVzdFRvU3Vz
cGVuZElELCBJc1N1c3BlbnNpb25JbW1pbmVudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZW5kUHJv
Y2Vzc0RpZFJlc3VtZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkU2V0QXNzZXJ0aW9uU3RhdGUo
QXNzZXJ0aW9uU3RhdGUpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggM2ExODNhZDg1ZjY2ZTQ4NmFh
OWRmODBjNzVjMjhkNjhhZmU1OTk4NS4uZWI0YjI5YzliOWNhNTA3NmE0M2FjNjlkMDdiOWJmMDY1
ZWIwZWJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMzcsOCArMzcsNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNz
UHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVp
bnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbikgLT4gKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9u
SGFuZGxlLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pIFN5bmNocm9u
b3VzCiAjZW5kaWYKICAgICBHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKSAtPiAoc3RydWN0
IFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mbyBjb25uZWN0aW9uSW5mbykgU3lu
Y2hyb25vdXMKLSAgICBQcm9jZXNzUmVhZHlUb1N1c3BlbmQoKQotICAgIERpZENhbmNlbFByb2Nl
c3NTdXNwZW5zaW9uKCkKKyAgICBQcm9jZXNzUmVhZHlUb1N1c3BlbmQodWludDY0X3QgcmVxdWVz
dFRvU3VzcGVuZElEKQogCiAgICAgU2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0hvbGRp
bmdMb2NrZWRGaWxlcykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmlu
ZGV4IGVhYTMyYWZiMTZkYTEwN2I0MGQ1OTljZGE3ZWRmNWIxZTM4Y2EzMGMuLjNhNzkwMDI1YjEz
YjY2MzQ4OTU5YzA0MzkyMDA3ODAzNWE4MjVjNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKQEAgLTEzNzcsMTYgKzEzNzcsMTcgQEAgdm9pZCBXZWJQcm9jZXNzOjpy
ZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbnMoKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUHJv
Y2Vzczo6YWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRv
U3VzcGVuZCBzaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZCkKK3ZvaWQgV2ViUHJv
Y2Vzczo6cHJlcGFyZVRvU3VzcGVuZCh1aW50NjRfdCByZXF1ZXN0VG9TdXNwZW5kSUQsIGJvb2wg
aXNTdXNwZW5zaW9uSW1taW5lbnQpCiB7CisgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNp
b24sICIlcCAtIFdlYlByb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoJSIgUFJJdTY0ICIpIGlzU3Vz
cGVuc2lvbkltbWluZW50OiAlZCIsIHRoaXMsIHJlcXVlc3RUb1N1c3BlbmRJRCwgaXNTdXNwZW5z
aW9uSW1taW5lbnQpOwogICAgIFNldEZvclNjb3BlPGJvb2w+IHN1c3BlbnNpb25TY29wZShtX2lz
U3VzcGVuZGluZywgdHJ1ZSk7CiAgICAgbV9wcm9jZXNzSXNTdXNwZW5kZWQgPSB0cnVlOwogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKG1fcHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc1R5cGU6
OlByZXdhcm1lZFdlYkNvbnRlbnQpIHsKLSAgICAgICAgaWYgKHNob3VsZEFja25vd2xlZGdlV2hl
blJlYWR5VG9TdXNwZW5kID09IFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kOjpZ
ZXMpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBX
ZWJQcm9jZXNzOjphY3R1YWxQcmVwYXJlVG9TdXNwZW5kKCkgU2VuZGluZyBQcm9jZXNzUmVhZHlU
b1N1c3BlbmQgSVBDIG1lc3NhZ2UiLCB0aGlzKTsKLSAgICAgICAgICAgIHBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6UHJvY2Vzc1JlYWR5
VG9TdXNwZW5kKCksIDApOworICAgICAgICBpZiAocmVxdWVzdFRvU3VzcGVuZElEKSB7CisgICAg
ICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vzczo6
cHJlcGFyZVRvU3VzcGVuZCgpIFNlbmRpbmcgUHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCUiIFBSSXU2
NCAiKSBJUEMgbWVzc2FnZSIsIHRoaXMsIHJlcXVlc3RUb1N1c3BlbmRJRCk7CisgICAgICAgICAg
ICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OlByb2Nlc3NSZWFkeVRvU3VzcGVuZChyZXF1ZXN0VG9TdXNwZW5kSUQpLCAwKTsKICAgICAg
ICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQwMiw3ICsxNDAzLDcgQEAgdm9pZCBX
ZWJQcm9jZXNzOjphY3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNob3VsZEFja25vd2xlZGdlV2hlblJl
YWR5VG9TdXNwZW5kIHNob3UKICAgICAgICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0
b24oKS5yZWxlYXNlTWVtb3J5KENyaXRpY2FsOjpZZXMsIFN5bmNocm9ub3VzOjpZZXMpOwogCiAg
ICAgZnJlZXplQWxsTGF5ZXJUcmVlcygpOwotICAgIAorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgZGVzdHJveVJlbmRlcmluZ1Jlc291cmNlcygpOwogI2VuZGlmCkBAIC0xNDE2LDY4ICsxNDE3
LDE5IEBAIHZvaWQgV2ViUHJvY2Vzczo6YWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tu
b3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZCBzaG91CiAgICAgdXBkYXRlRnJlZXplclN0YXR1cygp
OwogI2VuZGlmCiAKLSAgICBtYXJrQWxsTGF5ZXJzVm9sYXRpbGUoW3RoaXMsIHNob3VsZEFja25v
d2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kXShib29sIHN1Y2Nlc3MpIHsKKyAgICBtYXJrQWxsTGF5
ZXJzVm9sYXRpbGUoW3RoaXMsIHJlcXVlc3RUb1N1c3BlbmRJRF0oYm9vbCBzdWNjZXNzKSB7CiAg
ICAgICAgIGlmIChzdWNjZXNzKQogICAgICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3Bl
bnNpb24sICIlcCAtIFdlYlByb2Nlc3M6Om1hcmtBbGxMYXllcnNWb2xhdGlsZSgpIFN1Y2Nlc3Nm
dWx5IG1hcmtlZCBhbGwgbGF5ZXJzIGFzIHZvbGF0aWxlIiwgdGhpcyk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQcm9j
ZXNzOjptYXJrQWxsTGF5ZXJzVm9sYXRpbGUoKSBGYWlsZWQgdG8gbWFyayBhbGwgbGF5ZXJzIGFz
IHZvbGF0aWxlIiwgdGhpcyk7CiAKLSAgICAgICAgaWYgKHNob3VsZEFja25vd2xlZGdlV2hlblJl
YWR5VG9TdXNwZW5kID09IFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kOjpZZXMp
IHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQ
cm9jZXNzOjphY3R1YWxQcmVwYXJlVG9TdXNwZW5kKCkgU2VuZGluZyBQcm9jZXNzUmVhZHlUb1N1
c3BlbmQgSVBDIG1lc3NhZ2UiLCB0aGlzKTsKLSAgICAgICAgICAgIHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6UHJvY2Vzc1JlYWR5VG9T
dXNwZW5kKCksIDApOworICAgICAgICBpZiAocmVxdWVzdFRvU3VzcGVuZElEKSB7CisgICAgICAg
ICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vzczo6cHJl
cGFyZVRvU3VzcGVuZCgpIFNlbmRpbmcgUHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCUiIFBSSXU2NCAi
KSBJUEMgbWVzc2FnZSIsIHRoaXMsIHJlcXVlc3RUb1N1c3BlbmRJRCk7CisgICAgICAgICAgICBw
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OlByb2Nlc3NSZWFkeVRvU3VzcGVuZChyZXF1ZXN0VG9TdXNwZW5kSUQpLCAwKTsKICAgICAgICAg
fQogICAgIH0pOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OnByb2Nlc3NXaWxsU3VzcGVuZEltbWlu
ZW50bHkoKQotewotICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQ
cm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkgQkVHSU4iLCB0aGlzKTsKLSAg
ICBhY3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNw
ZW5kOjpObyk7Ci0gICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlBy
b2Nlc3M6OnByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoKSBFTkQiLCB0aGlzKTsKLX0KLQot
dm9pZCBXZWJQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCkKLXsKLSAgICBSRUxFQVNFX0xPRyhQ
cm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCgpIiwg
dGhpcyk7Ci0gICAgYWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tub3dsZWRnZVdoZW5S
ZWFkeVRvU3VzcGVuZDo6WWVzKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzOjpjYW5jZWxQcmVwYXJl
VG9TdXNwZW5kKCkKLXsKLSAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0g
V2ViUHJvY2Vzczo6Y2FuY2VsUHJlcGFyZVRvU3VzcGVuZCgpIiwgdGhpcyk7Ci0KLSAgICBtX3By
b2Nlc3NJc1N1c3BlbmRlZCA9IGZhbHNlOwotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgaWYg
KG1fcHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc1R5cGU6OlByZXdhcm1lZFdlYkNvbnRlbnQpCi0gICAg
ICAgIHJldHVybjsKLSNlbmRpZgotCi0gICAgdW5mcmVlemVBbGxMYXllclRyZWVzKCk7Ci0KLSNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIG1fd2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLnNl
dElzU3VzcGVuZGVkKGZhbHNlKTsKLSAgICBTUUxpdGVEYXRhYmFzZTo6c2V0SXNEYXRhYmFzZU9w
ZW5pbmdGb3JiaWRkZW4oZmFsc2UpOwotICAgIGFjY2Vzc2liaWxpdHlQcm9jZXNzU3VzcGVuZGVk
Tm90aWZpY2F0aW9uKGZhbHNlKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFZJREVPKQotICAgIGlm
IChhdXRvKiBwbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnNoYXJlZE1hbmFnZXJJZkV4aXN0cygpKQotICAgICAgICBwbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXItPnByb2Nlc3NEaWRSZXN1bWUoKTsKLSAgICByZXN1bWVBbGxNZWRpYUJ1
ZmZlcmluZygpOwotI2VuZGlmCi0KLSAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IGZpbmlzaGVkIGNs
ZWFuaW5nIHVwIGFuZCBzZW50IFByb2Nlc3NSZWFkeVRvU3VzcGVuZCwgd2UKLSAgICAvLyBzaG91
bGRuJ3Qgc2VuZCBEaWRDYW5jZWxQcm9jZXNzU3VzcGVuc2lvbjsgdGhlIFVJIHByb2Nlc3Mgc3Ry
aWN0bHkgZXhwZWN0cyBvbmUgb3IgdGhlIG90aGVyLgotICAgIGlmICghbV9wYWdlTWFya2luZ0xh
eWVyc0FzVm9sYXRpbGVDb3VudGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjYW5jZWxNYXJr
QWxsTGF5ZXJzVm9sYXRpbGUoKTsKLQotICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9u
LCAiJXAgLSBXZWJQcm9jZXNzOjpjYW5jZWxQcmVwYXJlVG9TdXNwZW5kKCkgU2VuZGluZyBEaWRD
YW5jZWxQcm9jZXNzU3VzcGVuc2lvbiBJUEMgbWVzc2FnZSIsIHRoaXMpOwotICAgIHBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6RGlkQ2Fu
Y2VsUHJvY2Vzc1N1c3BlbnNpb24oKSwgMCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzczo6bWFya0Fs
bExheWVyc1ZvbGF0aWxlKFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJv
Y2Vzczo6bWFya0FsbExheWVyc1ZvbGF0aWxlKCkiLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCmluZGV4IGZmODE4MzIzMjUwYmM3ZmFiZDlmNTFjNjI4ZDM5ZmE2NmNk
YmY3YWQuLjdlZDYyYTYyOWFjNmJiYTJhMjY0NGJiOTM0MDJmNzZkMzhhMGI5MzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMjM0LDkgKzIzNCw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0SGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0luY3JlYXNlTGltaXQo
aW50IG1pbGxpc2Vjb25kcyk7CiAKLSAgICB2b2lkIHByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50
bHkoKTsKLSAgICB2b2lkIHByZXBhcmVUb1N1c3BlbmQoKTsKLSAgICB2b2lkIGNhbmNlbFByZXBh
cmVUb1N1c3BlbmQoKTsKKyAgICB2b2lkIHByZXBhcmVUb1N1c3BlbmQodWludDY0X3QgcmVxdWVz
dFRvU3VzcGVuZElELCBib29sIGlzU3VzcGVuc2lvbkltbWluZW50KTsKICAgICB2b2lkIHByb2Nl
c3NEaWRSZXN1bWUoKTsKIAogICAgIHZvaWQgc2VuZFByZXdhcm1JbmZvcm1hdGlvbihjb25zdCBV
UkwmKTsKQEAgLTM4OCw5ICszODYsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0SW5qZWN0ZWRC
dW5kbGVQYXJhbWV0ZXIoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYpOwogICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVQYXJhbWV0ZXJzKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYpOwogCi0gICAgZW51bSBjbGFzcyBTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFk
eVRvU3VzcGVuZCB7IE5vLCBZZXMgfTsKLSAgICB2b2lkIGFjdHVhbFByZXBhcmVUb1N1c3BlbmQo
U2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQpOwotCiAgICAgYm9vbCBhcmVBbGxQ
YWdlc1N1c3BlbmRlZCgpIGNvbnN0OwogCiAgICAgdm9pZCBlbnN1cmVBdXRvbWF0aW9uU2Vzc2lv
blByb3h5KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBkODhkNjA3NWI5NzMz
MDBiODIyNDNhYzFmYmVmNDNjZDk0M2Y2NzZlLi5mYjE1NGVkN2ExYWRmMzFkM2ZhODc0YzAxMjc5
ZWNlNjU0ODg4ZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgpAQCAtOTMsOSArOTMsNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBFbnN1cmVBdXRvbWF0aW9uU2Vzc2lvblByb3h5KFN0cmluZyBz
ZXNzaW9uSWRlbnRpZmllcikKICAgICBEZXN0cm95QXV0b21hdGlvblNlc3Npb25Qcm94eSgpCiAK
LSAgICBQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkKLSAgICBQcmVwYXJlVG9TdXNwZW5k
KCkKLSAgICBDYW5jZWxQcmVwYXJlVG9TdXNwZW5kKCkKKyAgICBQcmVwYXJlVG9TdXNwZW5kKHVp
bnQ2NF90IHJlcXVlc3RUb1N1c3BlbmRJRCwgYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCkKICAg
ICBQcm9jZXNzRGlkUmVzdW1lKCkKIAogICAgIE1haW5UaHJlYWRQaW5nKCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>