<?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>158887</bug_id>
          
          <creation_ts>2016-06-17 14:17:43 -0700</creation_ts>
          <short_desc>Use WTF::NoncopyableFunction in NetworkDataTaskClient</short_desc>
          <delta_ts>2016-06-17 16:27:35 -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>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1203414</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-17 14:17:43 -0700</bug_when>
    <thetext>Use WTF::NoncopyableFunction in NetworkDataTaskClient instead of std::function and consistently move it around. This avoids some unnecessary copying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203415</commentid>
    <comment_count>1</comment_count>
      <attachid>281587</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-17 14:19:37 -0700</bug_when>
    <thetext>Created attachment 281587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203459</commentid>
    <comment_count>2</comment_count>
      <attachid>281587</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-17 15:52:23 -0700</bug_when>
    <thetext>Comment on attachment 281587
Patch

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

R=me

&gt; Source/WebKit2/Shared/Authentication/mac/AuthenticationManager.mac.mm:69
&gt; +bool AuthenticationManager::tryUseCertificateInfoForChallenge(const AuthenticationChallenge&amp; challenge, const CertificateInfo&amp; certificateInfo, const ChallengeCompletionHandler&amp; completionHandler)

It would be cool if we could make a function pointer that can only be called once and then becomes null, because that is the intent of this callback.
Instead of returning bool, we could take a ChallengeCompletionHandler&amp;&amp; and return nullptr if it was used and return the completion handler if it wasn&apos;t used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203460</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-17 15:55:23 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 281587 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=281587&amp;action=review
&gt; 
&gt; R=me
&gt; 
&gt; &gt; Source/WebKit2/Shared/Authentication/mac/AuthenticationManager.mac.mm:69
&gt; &gt; +bool AuthenticationManager::tryUseCertificateInfoForChallenge(const AuthenticationChallenge&amp; challenge, const CertificateInfo&amp; certificateInfo, const ChallengeCompletionHandler&amp; completionHandler)
&gt; 
&gt; It would be cool if we could make a function pointer that can only be called
&gt; once and then becomes null, because that is the intent of this callback.
&gt; Instead of returning bool, we could take a ChallengeCompletionHandler&amp;&amp; and
&gt; return nullptr if it was used and return the completion handler if it wasn&apos;t
&gt; used.

We may need to do this in cases where the implementation needs to take ownership of the NoncopyableFunction in some cases. However, in this case, it does not and therefore passing as a const reference works and is more readable IMHO.

I would prefer to leave as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203467</commentid>
    <comment_count>4</comment_count>
      <attachid>281587</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-17 16:27:30 -0700</bug_when>
    <thetext>Comment on attachment 281587
Patch

Clearing flags on attachment: 281587

Committed r202184: &lt;http://trac.webkit.org/changeset/202184&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203468</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-17 16:27:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281587</attachid>
            <date>2016-06-17 14:19:37 -0700</date>
            <delta_ts>2016-06-17 16:27:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158887-20160617141934.patch</filename>
            <type>text/plain</type>
            <size>31121</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTAyYzJhOWQ0MzRiYjdh
YjE4NzMxYTI0NTU5NzVlZWMxODA0N2NjOC4uYjEzYjA2ZjRlYmJiN2U4OWEyMGE1ZGQzYTMyNzk1
NWQyZjZjMThlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE2LTA2LTE3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFdURjo6Tm9uY29weWFi
bGVGdW5jdGlvbiBpbiBOZXR3b3JrRGF0YVRhc2tDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODg4NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBXVEY6Ok5vbmNvcHlhYmxlRnVuY3Rpb24g
aW4gTmV0d29ya0RhdGFUYXNrQ2xpZW50IGluc3RlYWQgb2Ygc3RkOjpmdW5jdGlvbgorICAgICAg
ICBhbmQgY29uc2lzdGVudGx5IG1vdmUgaXQgYXJvdW5kLiBUaGlzIGF2b2lkcyBzb21lIHVubmVj
ZXNzYXJ5IGNvcHlpbmcuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjp3aWxs
RGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZE1hbmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24pOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2Fk
Ojp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtM
b2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6
OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0xvYWQ6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpmaW5kUGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xv
YWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlQ2hhbGxl
bmdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OndpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjp0cnlQYXNzd29y
ZEJhc2VkQXV0aGVudGljYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0
ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkUmVjZWl2ZUNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpd
KToKKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjphZGRDaGFsbGVu
Z2VUb0NoYWxsZW5nZU1hcCk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6Y29hbGVzY2VDaGFsbGVuZ2VzTWF0Y2hpbmcpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50
aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAg
ICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6dHJ5VXNlQ2VydGlmaWNhdGVJbmZv
Rm9yQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjp1
c2VDcmVkZW50aWFsRm9yU2luZ2xlQ2hhbGxlbmdlKToKKyAgICAgICAgKiBTaGFyZWQvQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogU2hhcmVkL0F1dGhl
bnRpY2F0aW9uL21hYy9BdXRoZW50aWNhdGlvbk1hbmFnZXIubWFjLm1tOgorICAgICAgICAoV2Vi
S2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnRyeVVzZUNlcnRpZmljYXRlSW5mb0ZvckNoYWxs
ZW5nZSk6CisKIDIwMTYtMDYtMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBObyBuZWVkIHRvIHJlZiBjb25uZWN0aW9uIGluIGxhbWJkYSBpbnNpZGUgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIu
Y3BwCmluZGV4IDQ3ZGY5Yjk4NmZhNzI4N2ExZTFjODdmMTAwM2IzNjNkMmJkOGJlMjguLmRlZGYx
MTA1OWRmOTg1ZWE4ZDU4ZDM2N2Q4NzAzMTBlYzUwMWMyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIu
Y3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZVdpbGxT
ZW5kUmVxdWVzdChEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlCiAgICAgICAgIHBl
bmRpbmdEb3dubG9hZC0+Y29udGludWVXaWxsU2VuZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7
CiB9CiAKLXZvaWQgRG93bmxvYWRNYW5hZ2VyOjp3aWxsRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVz
dGluYXRpb24oTmV0d29ya0RhdGFUYXNrJiBuZXR3b3JrRGF0YVRhc2ssIFJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERvd25sb2FkTWFuYWdlcjo6d2ls
bERlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKE5ldHdvcmtEYXRhVGFzayYgbmV0d29y
a0RhdGFUYXNrLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgYXV0byBkb3dubG9hZElEID0gbmV0d29ya0RhdGFUYXNrLnBlbmRpbmdEb3dubG9h
ZElEKCk7CiAgICAgYXV0byBwZW5kaW5nRG93bmxvYWQgPSBtX3BlbmRpbmdEb3dubG9hZHMudGFr
ZShkb3dubG9hZElEKTsKQEAgLTEwNyw4ICsxMDcsOCBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6
d2lsbERlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKE5ldHdvcmtEYXRhVGFzayYgbmV0
dwogdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVz
dGluYXRpb24oRG93bmxvYWRJRCBkb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIGNvbnN0
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBh
bGxvd092ZXJ3cml0ZSkKIHsKICAgICBhdXRvIHBhaXIgPSBtX2Rvd25sb2Fkc1dhaXRpbmdGb3JE
ZXN0aW5hdGlvbi50YWtlKGRvd25sb2FkSUQpOwotICAgIGF1dG8gbmV0d29ya0RhdGFUYXNrID0g
cGFpci5maXJzdDsKLSAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gcGFpci5zZWNvbmQ7Cisg
ICAgYXV0byBuZXR3b3JrRGF0YVRhc2sgPSBXVEZNb3ZlKHBhaXIuZmlyc3QpOworICAgIGF1dG8g
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHBhaXIuc2Vjb25kKTsKICAgICBpZiAoIW5ldHdv
cmtEYXRhVGFzayB8fCAhY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5oCmluZGV4IDdkMDM4YjY3NDA5ODQzZTA0OGQ3YzMwYTI2NTA2OGE1NjQwZmJk
ZGUuLjk4NzZhODRjNmE4ZWYxM2UzNjkxN2Q5ZjJjOGU4NDMwYzhiM2IyY2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmgKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHN0ZDo6cGFpcjxSZWZQdHI8
TmV0d29ya0RhdGFUYXNrPiwgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdEb3dubG9hZD4+IGRhdGFU
YXNrQmVjYW1lRG93bmxvYWRUYXNrKERvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9h
ZD4mJik7CiAgICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UoRG93bmxvYWRJRCwgYm9vbCBjYW5BdXRoZW50aWNhdGUpOwogICAgIHZvaWQgY29udGlu
dWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
OwotICAgIHZvaWQgd2lsbERlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKE5ldHdvcmtE
YXRhVGFzayYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgd2lsbERlY2lk
ZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKE5ldHdvcmtEYXRhVGFzayYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCBjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9h
ZERlc3RpbmF0aW9uKERvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgY29uc3QgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7CiAjZWxzZQogICAgIHZv
aWQgY29udmVydEhhbmRsZVRvRG93bmxvYWQoRG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2suaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFzay5oCmluZGV4IDBjZWVlODIwNjk1YmZkY2E0NmIxYmVhZWE1YmI3YWM0NjBi
NzgxMDAuLmRiYTJjODhkOTFhMmNkYjQwMGEwNDg2MDJjMmEwY2QwOTNlZGFlMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGlt
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNjIs
MTUgKzYzLDE1IEBAIGVudW0gY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlv
biB7CiAgICAgUmVqZWN0UHJvdGVjdGlvblNwYWNlCiB9OwogICAgIAotdHlwZWRlZiBzdGQ6OmZ1
bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik+IFJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXI7Ci10eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZChBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+IENoYWxs
ZW5nZUNvbXBsZXRpb25IYW5kbGVyOwotdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQoV2ViQ29y
ZTo6UG9saWN5QWN0aW9uKT4gUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcjsKK3R5cGVkZWYgTm9u
Y29weWFibGVGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpPiBS
ZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyOwordHlwZWRlZiBOb25jb3B5YWJsZUZ1bmN0aW9uPHZv
aWQoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3Jl
ZGVudGlhbCYpPiBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcjsKK3R5cGVkZWYgTm9uY29weWFi
bGVGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlBvbGljeUFjdGlvbik+IFJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXI7CiAKIGNsYXNzIE5ldHdvcmtEYXRhVGFza0NsaWVudCB7CiBwdWJsaWM6Ci0gICAg
dmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlv
bkhhbmRsZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25z
dCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25I
YW5kbGVyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtT
ZXNzaW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBS
ZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBS
ZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRCZWNvbWVEb3dubG9hZCgpID0gMDsKQEAgLTk4LDkg
Kzk5LDkgQEAgcHVibGljOgogICAgIH5OZXR3b3JrRGF0YVRhc2soKTsKICAgICAKICAgICB2b2lk
IGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVz
RXhwZWN0ZWRUb1NlbmQpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lk
IGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOwog
ICAgIHZvaWQgZGlkQmVjb21lRG93bmxvYWQoKTsKICAgICAKQEAgLTEyNiwxNCArMTI3LDE0IEBA
IHB1YmxpYzoKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIGZpcnN0UmVxdWVz
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RSZXF1ZXN0OyB9CiAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IGN1cnJlbnRSZXF1ZXN0KCk7CiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1l
KCk7Ci0gICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0
Q29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCB0cmFuc2ZlclNhbmRib3hFeHRlbnNpb25U
b0Rvd25sb2FkKERvd25sb2FkJik7CiAgICAgYm9vbCBhbGxvd3NTcGVjaWZpY0hUVFBTQ2VydGlm
aWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAg
ICAgCiBwcml2YXRlOgogICAgIE5ldHdvcmtEYXRhVGFzayhOZXR3b3JrU2Vzc2lvbiYsIE5ldHdv
cmtEYXRhVGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzLCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIGJv
b2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCk7CiAKLSAgICBib29s
IHRyeVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBib29sIHRy
eVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYsIGNvbnN0IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJik7CiAgICAgCiAg
ICAgZW51bSBGYWlsdXJlVHlwZSB7CiAgICAgICAgIE5vRmFpbHVyZSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAppbmRleCAwM2QwMDUxOWU4N2VlNWNl
NDAxYTVjYWY1OWI4MzI5NTMyNjI5OWM2Li45OTZhY2YwZjA2OTVkYmY5Y2E3NzQwNzI4NmQ5ZmRl
ZDM4ZDBlOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuY3BwCkBAIC0yMDUsMTQgKzIwNSwxNCBAQCB2b2lkIE5ldHdvcmtMb2FkOjpzZXRQZW5kaW5n
RG93bmxvYWQoUGVuZGluZ0Rvd25sb2FkJiBwZW5kaW5nRG93bmxvYWQpCiAgICAgbV90YXNrLT5z
ZXRQZW5kaW5nRG93bmxvYWQocGVuZGluZ0Rvd25sb2FkKTsKIH0KIAotdm9pZCBOZXR3b3JrTG9h
ZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb24oUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgQVNTRVJUKCFtX3JlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpOwotICAgIG1fcmVkaXJlY3RD
b21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyOworICAgIG1fcmVkaXJlY3RDb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHNoYXJlZFdp
bGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25z
ZSkpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIHN0ZDo6ZnVuY3Rpb248dm9pZChBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBDcmVkZW50aWFsJik+IGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIC8vIE5ldHdvcmtSZXNvdXJjZUxv
YWRlciBkb2VzIG5vdCBrbm93IHdoZXRoZXIgdGhlIHJlcXVlc3QgaXMgY3Jvc3Mgb3JpZ2luLCBz
byBXZWIgcHJvY2VzcyBjb21wdXRlcyBhbiBhcHBsaWNhYmxlIGNyZWRlbnRpYWwgcG9saWN5IGZv
ciBpdC4KICAgICBBU1NFUlQobV9wYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgIT0g
RG9Ob3RBc2tDbGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRpYWxzKTsKQEAgLTIyNyw3ICsyMjcs
NyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBtX2NoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisgICAg
bV9jaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
OwogICAgIG1fY2hhbGxlbmdlID0gY2hhbGxlbmdlOwogCiAgICAgaWYgKG1fY2xpZW50LmlzU3lu
Y2hyb25vdXMoKSkgewpAQCAtMjQwLDE1ICsyNDAsMTUgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlk
UmVjZWl2ZUNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdl
LAogICAgICAgICBtX2NsaWVudC5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
QXN5bmMoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpKTsKIH0KIAotdm9pZCBOZXR3b3JrTG9h
ZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oUmVzb3VyY2VSZXNwb25zZSYmIHJl
c3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oUmVzb3VyY2VS
ZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAobV90YXNr
ICYmIG1fdGFzay0+cGVuZGluZ0Rvd25sb2FkSUQoKS5kb3dubG9hZElEKCkpCi0gICAgICAgIE5l
dHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5maW5kUGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKm1f
dGFzay5nZXQoKSwgY29tcGxldGlvbkhhbmRsZXIsIG1fdGFzay0+Y3VycmVudFJlcXVlc3QoKSk7
CisgICAgICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5maW5kUGVuZGluZ0Rvd25sb2Fk
TG9jYXRpb24oKm1fdGFzay5nZXQoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fdGFz
ay0+Y3VycmVudFJlcXVlc3QoKSk7CiAgICAgZWxzZSBpZiAoc2hhcmVkRGlkUmVjZWl2ZVJlc3Bv
bnNlKFdURk1vdmUocmVzcG9uc2UpKSA9PSBOZXR3b3JrTG9hZENsaWVudDo6U2hvdWxkQ29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2U6OlllcykKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9s
aWN5VXNlKTsKICAgICBlbHNlCi0gICAgICAgIG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciA9
IGNvbXBsZXRpb25IYW5kbGVyOworICAgICAgICBtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKIH0KIAogdm9pZCBOZXR3b3JrTG9hZDo6ZGlk
UmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCkBAIC0zODAsOSArMzgwLDkg
QEAgdm9pZCBOZXR3b3JrTG9hZDo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlKGJvb2wgcmVzdWx0KQogICAgIAogICAgIGlmIChtX3Rhc2spIHsKICAgICAgICAg
aWYgKGF1dG8qIHBlbmRpbmdEb3dubG9hZCA9IG1fdGFzay0+cGVuZGluZ0Rvd25sb2FkKCkpCi0g
ICAgICAgICAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuYXV0aGVudGljYXRpb25NYW5h
Z2VyKCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCpwZW5kaW5nRG93bmxvYWQs
ICptX2NoYWxsZW5nZSwgY29tcGxldGlvbkhhbmRsZXIpOworICAgICAgICAgICAgTmV0d29ya1By
b2Nlc3M6OnNpbmdsZXRvbigpLmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSgqcGVuZGluZ0Rvd25sb2FkLCAqbV9jaGFsbGVuZ2UsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgTmV0d29y
a1Byb2Nlc3M6OnNpbmdsZXRvbigpLmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRl
cnMud2ViRnJhbWVJRCwgKm1fY2hhbGxlbmdlLCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgICAg
ICAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuYXV0aGVudGljYXRpb25NYW5hZ2VyKCku
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG1fcGFyYW1ldGVycy53ZWJQYWdlSUQs
IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAqbV9jaGFsbGVuZ2UsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAobV9oYW5kbGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAppbmRleCA2OWQ0Y2FiYjMzNzVkNTFi
OWY3N2EyZWE4M2I1NTU2NzUyOWNhZjAzLi5kZjE5OTBlOWY5YmUzOWE2MTMxZGZiN2E3ZTJhMTRm
MTI3ZTQ3MTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
LmgKQEAgLTY2LDkgKzY2LDkgQEAgcHVibGljOgogICAgIERvd25sb2FkSUQgcGVuZGluZ0Rvd25s
b2FkSUQoKSB7IHJldHVybiBtX3Rhc2stPnBlbmRpbmdEb3dubG9hZElEKCk7IH0KICAgICAKICAg
ICAvLyBOZXR3b3JrRGF0YVRhc2tDbGllbnQKLSAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZU5ldHdvcmtTZXNzaW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlcikgZmluYWw7CisgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVj
dGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVj
ZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlTmV0d29ya1Nlc3Npb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdp
dGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBk
aWRCZWNvbWVEb3dubG9hZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGYxNThhYWM3ZWRmNGEzZDc3YjU3OTNmMDVk
MTk5Y2MwY2ZjOGZiY2IuLjJmY2VmOGFkMWZlYjIzMTU2N2M2MzQwY2EzODNjOGU5NWYxNWI5YWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKQEAgLTQ5NiwxMiArNDk2LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBlbmRpbmdEb3du
bG9hZENhbmNlbGVkKERvd25sb2FkSUQgZG93bmxvYWRJRCkKICAgICBkb3dubG9hZFByb3h5Q29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRDYW5jZWwoeyB9KSwg
ZG93bmxvYWRJRC5kb3dubG9hZElEKCkpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpmaW5k
UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oTmV0d29ya0RhdGFUYXNrJiBuZXR3b3JrRGF0YVRhc2ss
IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgdXBkYXRlZFJlcXVlc3QpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpmaW5kUGVu
ZGluZ0Rvd25sb2FkTG9jYXRpb24oTmV0d29ya0RhdGFUYXNrJiBuZXR3b3JrRGF0YVRhc2ssIFJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlciwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiB1cGRhdGVkUmVxdWVzdCkKIHsKICAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklE
ID0gbmV0d29ya0RhdGFUYXNrLnBlbmRpbmdEb3dubG9hZElEKCkuZG93bmxvYWRJRCgpOwogICAg
IGRvd25sb2FkUHJveHlDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6
OkRpZFN0YXJ0KHVwZGF0ZWRSZXF1ZXN0LCBTdHJpbmcoKSksIGRlc3RpbmF0aW9uSUQpOwogCi0g
ICAgZG93bmxvYWRNYW5hZ2VyKCkud2lsbERlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9u
KG5ldHdvcmtEYXRhVGFzaywgY29tcGxldGlvbkhhbmRsZXIpOworICAgIGRvd25sb2FkTWFuYWdl
cigpLndpbGxEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihuZXR3b3JrRGF0YVRhc2ss
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBkb3dubG9hZFByb3h5Q29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZUFzeW5jKG5ldHdvcmtEYXRhVGFzay5wZW5kaW5nRG93bmxvYWRJRCgp
LCBuZXR3b3JrRGF0YVRhc2suc3VnZ2VzdGVkRmlsZW5hbWUoKSksIGRlc3RpbmF0aW9uSUQpOwog
fQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKaW5kZXggNDcwNWNlYWVhYjE1MzZjMjcyNTAzNmFjMzQ3MDMzNjQwYmM1MmIxMi4uY2I4MDA5
ZWQ0NzY0NDNlMGI3NGNiYTFhOTJjMGQ0ZDJmZWQ0OWMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHVi
bGljOgogI2VuZGlmCiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIHZvaWQgZmluZFBl
bmRpbmdEb3dubG9hZExvY2F0aW9uKE5ldHdvcmtEYXRhVGFzayYsIFJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgZmlu
ZFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKE5ldHdvcmtEYXRhVGFzayYsIFJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXImJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYK
ICAgICAKICAgICB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKaW5kZXggYjQwYjY4MjJjMzBmMGU5YjU5YWZjNTM4
ODE3ZWIwYTY4ZjhkOGUzNS4uMmNjZWQ4MjIxMTM1Y2E1YTNkNGRmN2JkMTc2ZDM1MmVhZDlhNTY3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCkBAIC00OCwxNyAr
NDgsMTcgQEAgcHVibGljOgogICAgIH0KICAgICAKIHByaXZhdGU6Ci0gICAgdm9pZCB3aWxsUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25I
YW5kbGVyKSBvdmVycmlkZQorICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVk
aXJlY3RDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQogICAg
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgZGVsZXRlIHRoaXM7
CiAgICAgfQotICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRp
b25IYW5kbGVyKSBvdmVycmlkZQorICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5k
bGVyJiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWwsIHsg
fSk7CiAgICAgICAgIGRlbGV0ZSB0aGlzOwogICAgIH0KLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZU5ldHdvcmtTZXNzaW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKKyAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlk
ZQogICAgIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6UG9saWN5QWN0aW9u
OjpQb2xpY3lJZ25vcmUpOwogICAgICAgICBkZWxldGUgdGhpczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW0KaW5kZXggMThmNWMwOWQxYTRkM2VmMTRmYzIxZWU4ZWQ2YjRmYTdlNWE2ODZhMC4uMWRhZGIw
Mzg2YjlkZjdmZDMxZDU3MzRmMDUyZTEwNzVmMjRiYTFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW0KQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFzazo6ZGlkU2VuZERhdGEo
dWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeAogICAgICAgICBt
X2NsaWVudC0+ZGlkU2VuZERhdGEodG90YWxCeXRlc1NlbnQsIHRvdGFsQnl0ZXNFeHBlY3RlZFRv
U2VuZCk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNv
bnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENoYWxsZW5n
ZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrRGF0YVRh
c2s6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmIGNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICAvLyBQcm94eSBhdXRoZW50aWNhdGlvbiBpcyBoYW5kbGVkIGJ5IENG
TmV0d29yayBpbnRlcm5hbGx5LiBXZSBjYW4gZ2V0IGhlcmUgaWYgdGhlIHVzZXIgY2FuY2Vscwog
ICAgIC8vIENGTmV0d29yayBhdXRoZW50aWNhdGlvbiBkaWFsb2csIGFuZCB3ZSBzaG91bGRuJ3Qg
YXNrIHRoZSBjbGllbnQgdG8gZGlzcGxheSBhbm90aGVyIG9uZSBpbiB0aGF0IGNhc2UuCkBAIC0x
NTIsNyArMTUyLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVDaGFsbGVuZ2Uo
Y29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUNoYWxsZW5n
ZShjaGFsbGVuZ2UsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVDaGFsbGVuZ2UoY2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVm
YXVsdEhhbmRsaW5nLCB7IH0pOwpAQCAtMTY1LDEwICsxNjUsMTAgQEAgdm9pZCBOZXR3b3JrRGF0
YVRhc2s6OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
IGVycm9yKQogICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoZXJyb3IpOwog
fQogCi12b2lkIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKG1fY2xpZW50KQotICAgICAg
ICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oV1RGTW92ZShyZXNw
b25zZSksIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVS
ZXNwb25zZU5ldHdvcmtTZXNzaW9uKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpQb2xpY3lBY3Rpb246OlBvbGljeUln
bm9yZSk7CkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZEJlY29t
ZURvd25sb2FkKCkKICAgICAgICAgbV9jbGllbnQtPmRpZEJlY29tZURvd25sb2FkKCk7CiB9CiAK
LXZvaWQgTmV0d29ya0RhdGFUYXNrOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgTmV0d29ya0RhdGFUYXNrOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGlmIChyZWRpcmVjdFJlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCkgPT0gMzA3IHx8IHJlZGlyZWN0UmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDgpIHsK
ICAgICAgICAgQVNTRVJUKG1fbGFzdEhUVFBNZXRob2QgPT0gcmVxdWVzdC5odHRwTWV0aG9kKCkp
OwpAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrOjp3aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkCiAgICAgfQogICAg
IAogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPndpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uKFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIFdURk1vdmUocmVxdWVzdCksIGNv
bXBsZXRpb25IYW5kbGVyKTsKKyAgICAgICAgbV9jbGllbnQtPndpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uKFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBlbHNlIHsKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CkBAIC0yNzksNyArMjc5
LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2s6OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNv
bnN0IFdURjo6U3RyaW5nJiBmaWxlbmFtZSwgY28KICAgICBtX3Rhc2suZ2V0KCkuX3BhdGhUb0Rv
d25sb2FkVGFza0ZpbGUgPSBmaWxlbmFtZTsKIH0KIAotYm9vbCBOZXR3b3JrRGF0YVRhc2s6OnRy
eVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0
aW9uSGFuZGxlcikKK2Jvb2wgTmV0d29ya0RhdGFUYXNrOjp0cnlQYXNzd29yZEJhc2VkQXV0aGVu
dGljYXRpb24oY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5n
ZSwgY29uc3QgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGlmICghY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmlzUGFzc3dvcmRCYXNlZCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCAzYThmZjQ3
ZGMyZTc2ZGRiZDhjMGNkYTEwZDY0ZGVlOGFkYjA3ZmM3Li5lNjBkYmJmMjQwYmYwYzQyZGJhNTVk
YmM0MTJjYmIwMzRjMjYwMjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTE5Nyw3ICsxOTcs
NyBAQCBzdGF0aWMgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIHRvTlNVUkxT
ZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aQogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyQ29weSh0b05TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNwb3Np
dGlvbiksIGNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkpOwogICAgICAgICAgICAgQmxvY2tfcmVs
ZWFzZShjb21wbGV0aW9uSGFuZGxlckNvcHkpOwogICAgICAgICB9OwotICAgICAgICBuZXR3b3Jr
RGF0YVRhc2stPmRpZFJlY2VpdmVDaGFsbGVuZ2UoY2hhbGxlbmdlLCBjaGFsbGVuZ2VDb21wbGV0
aW9uSGFuZGxlcik7CisgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZUNoYWxsZW5n
ZShjaGFsbGVuZ2UsIFdURk1vdmUoY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9
IGVsc2UgewogICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlbGx1IGRpZFJlY2VpdmVDaGFs
bGVuZ2UgY29tcGxldGlvbkhhbmRsZXIgKGNhbmNlbCkiLCB0YXNrSWRlbnRpZmllcik7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSwgbmlsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKaW5k
ZXggZWM2YWNkYWUxYjUzZWFiYzA4ZDI4MTI5ZDVlOTAyYWVlYmRjYjEwMS4uZjE2ZmZhNTBmNTBk
Y2IyZGI3MzY2MDE1YmE4YzA1YjM4MmUzMTkwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5j
cHAKQEAgLTY4LDEyICs2OCwxMiBAQCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OkF1dGhlbnRpY2F0
aW9uTWFuYWdlcihDaGlsZFByb2Nlc3MqIHByb2Nlc3MpCiAgICAgbV9wcm9jZXNzLT5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCAqdGhpcyk7CiB9CiAKLXVpbnQ2NF90IEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6
YWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VNYXAoY29uc3QgQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCit1
aW50NjRfdCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmFkZENoYWxsZW5nZVRvQ2hhbGxlbmdlTWFw
KENoYWxsZW5nZSYmIGNoYWxsZW5nZSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCiAgICAgdWludDY0X3QgY2hhbGxlbmdlSUQgPSBnZW5lcmF0ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlSUQoKTsKLSAgICBtX2NoYWxsZW5nZXMuc2V0KGNoYWxsZW5nZUlELCBjaGFsbGVuZ2Up
OworICAgIG1fY2hhbGxlbmdlcy5zZXQoY2hhbGxlbmdlSUQsIFdURk1vdmUoY2hhbGxlbmdlKSk7
CiAgICAgcmV0dXJuIGNoYWxsZW5nZUlEOwogfQogCkBAIC05MSw4ICs5MSwxMCBAQCBib29sIEF1
dGhlbnRpY2F0aW9uTWFuYWdlcjo6c2hvdWxkQ29hbGVzY2VDaGFsbGVuZ2UodWludDY0X3QgcGFn
ZUlELCB1aW50NjRfdCBjaAogCiBWZWN0b3I8dWludDY0X3Q+IEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6Y29hbGVzY2VDaGFsbGVuZ2VzTWF0Y2hpbmcodWludDY0X3QgY2hhbGxlbmdlSUQpIGNvbnN0
CiB7Ci0gICAgYXV0byBjaGFsbGVuZ2UgPSBtX2NoYWxsZW5nZXMuZ2V0KGNoYWxsZW5nZUlEKTsK
LSAgICBBU1NFUlQoIWNoYWxsZW5nZS5jaGFsbGVuZ2UuaXNOdWxsKCkpOworICAgIGF1dG8gaXRl
cmF0b3IgPSBtX2NoYWxsZW5nZXMuZmluZChjaGFsbGVuZ2VJRCk7CisgICAgQVNTRVJUKGl0ZXJh
dG9yICE9IG1fY2hhbGxlbmdlcy5lbmQoKSk7CisKKyAgICBhdXRvJiBjaGFsbGVuZ2UgPSBpdGVy
YXRvci0+dmFsdWU7CiAKICAgICBWZWN0b3I8dWludDY0X3Q+IGNoYWxsZW5nZXNUb0NvYWxlc2Nl
OwogICAgIGNoYWxsZW5nZXNUb0NvYWxlc2NlLmFwcGVuZChjaGFsbGVuZ2VJRCk7CkBAIC0xMjgs
MTIgKzEzMCwxMiBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkZyYW1lKiBmcmFtZSwgYwogfQogCiAjaWYgVVNFKE5FVFdP
UktfU0VTU0lPTikKLXZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIENoYWxs
ZW5nZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBBdXRoZW50aWNh
dGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQocGFnZUlEKTsKICAgICBBU1NFUlQoZnJhbWVJ
RCk7CiAKLSAgICB1aW50NjRfdCBjaGFsbGVuZ2VJRCA9IGFkZENoYWxsZW5nZVRvQ2hhbGxlbmdl
TWFwKHtwYWdlSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjb21wbGV0aW9uSGFuZGxlcn0p
OworICAgIHVpbnQ2NF90IGNoYWxsZW5nZUlEID0gYWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VNYXAo
eyBwYWdlSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSB9KTsKIAogICAgIC8vIENvYWxlc2NlIGNoYWxsZW5nZXMgaW4gdGhlIHNhbWUgcHJvdGVj
dGlvbiBzcGFjZSBhbmQgaW4gdGhlIHNhbWUgcGFnZS4KICAgICBpZiAoc2hvdWxkQ29hbGVzY2VD
aGFsbGVuZ2UocGFnZUlELCBjaGFsbGVuZ2VJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKQpA
QCAtMTQyLDEwICsxNDQsMTAgQEAgdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHUKICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShwYWdlSUQsIGZyYW1lSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LCBjaGFsbGVuZ2VJRCkpOwogfQogCi12b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBlbmRpbmdEb3dubG9hZCYgcGVuZGluZ0Rvd25s
b2FkLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShQZW5kaW5nRG93bmxvYWQmIHBlbmRpbmdEb3dubG9hZCwgY29uc3QgV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVu
Z2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHVpbnQ2NF90
IGR1bW15UGFnZUlEID0gMDsKLSAgICB1aW50NjRfdCBjaGFsbGVuZ2VJRCA9IGFkZENoYWxsZW5n
ZVRvQ2hhbGxlbmdlTWFwKHtkdW1teVBhZ2VJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNv
bXBsZXRpb25IYW5kbGVyfSk7CisgICAgdWludDY0X3QgY2hhbGxlbmdlSUQgPSBhZGRDaGFsbGVu
Z2VUb0NoYWxsZW5nZU1hcCh7IGR1bW15UGFnZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikgfSk7CiAgICAgCiAgICAgLy8gQ29hbGVzY2UgY2hh
bGxlbmdlcyBpbiB0aGUgc2FtZSBwcm90ZWN0aW9uIHNwYWNlIGFuZCBpbiB0aGUgc2FtZSBwYWdl
LgogICAgIGlmIChzaG91bGRDb2FsZXNjZUNoYWxsZW5nZShkdW1teVBhZ2VJRCwgY2hhbGxlbmdl
SUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSkKQEAgLTE4OCw3ICsxOTAsNyBAQCB2b2lkIEF1
dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERv
d25sb2FkJiBkb3dubG9hZAogCiAvLyBDdXJyZW50bHksIG9ubHkgTWFjIGtub3dzIGhvdyB0byBy
ZXNwb25kIHRvIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZXMgd2l0aCBjZXJ0aWZpY2F0ZSBpbmZv
LgogI2lmICFIQVZFKFNFQ19JREVOVElUWSkKLWJvb2wgQXV0aGVudGljYXRpb25NYW5hZ2VyOjp0
cnlVc2VDZXJ0aWZpY2F0ZUluZm9Gb3JDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBDaGFsbGVuZ2VDb21wbGV0
aW9uSGFuZGxlcikKK2Jvb2wgQXV0aGVudGljYXRpb25NYW5hZ2VyOjp0cnlVc2VDZXJ0aWZpY2F0
ZUluZm9Gb3JDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxl
ciYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMjA4LDcgKzIxMCw3IEBAIHZvaWQgQXV0
aGVudGljYXRpb25NYW5hZ2VyOjp1c2VDcmVkZW50aWFsRm9yU2luZ2xlQ2hhbGxlbmdlKHVpbnQ2
NF90IGNoYWxsZW5nZUlECiAgICAgQVNTRVJUKCFjaGFsbGVuZ2UuY2hhbGxlbmdlLmlzTnVsbCgp
KTsKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgYXV0byBjb21wbGV0aW9uSGFuZGxl
ciA9IGNoYWxsZW5nZS5jb21wbGV0aW9uSGFuZGxlcjsKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRsZXIpOwogI2Vsc2UKICAgICBD
aGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlciA9IG51bGxwdHI7CiAj
ZW5kaWYKQEAgLTIyMiw3ICsyMjQsNyBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6dXNl
Q3JlZGVudGlhbEZvclNpbmdsZUNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRAogICAgIC8v
IEZJWE1FOiBSZW1vdmUgdGhlIHVzZSBvZiBBdXRoZW50aWNhdGlvbkNsaWVudCBpbiBXZWJLaXQy
IG9uY2UgTkVUV09SS19TRVNTSU9OIGlzIHVzZWQgZm9yIGFsbCBsb2Fkcy4KICAgICBpZiAoY29t
cGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgQVNTRVJUKCFjb3JlQ2xpZW50KTsKLSAgICAgICAg
Y2hhbGxlbmdlLmNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb246OlVzZUNyZWRlbnRpYWwsIGNyZWRlbnRpYWwpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLCBj
cmVkZW50aWFsKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9u
TWFuYWdlci5oCmluZGV4IDI3ZmZkMDE3M2MyODRlOTgwYTY3YzI3NDg0NTU4Y2IzMWJiNjkyM2Yu
Ljg4NTVmNDUzZjliYjkxYWU3NzdlOTYzNjdjNGI3ODNmY2IwMzcwYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25NYW5hZ2VyLmgKQEAgLTU2LDggKzU2LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICB2
b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwg
Q2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFBlbmRpbmdEb3dubG9hZCYsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0
X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFs
bGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShQZW5kaW5nRG93bmxvYWQmLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQg
Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKERvd25sb2FkSUQs
IGJvb2wgY2FuQXV0aGVudGljYXRlKTsKICNlbmRpZgogICAgIC8vIENhbGxlZCBmb3IgcmVzb3Vy
Y2VzIGluIHRoZSBXZWJQcm9jZXNzIChOZXR3b3JrUHJvY2VzcyBkaXNhYmxlZCkKQEAgLTk0LDkg
Kzk0LDkgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYp
IG92ZXJyaWRlOwogCi0gICAgYm9vbCB0cnlVc2VDZXJ0aWZpY2F0ZUluZm9Gb3JDaGFsbGVuZ2Uo
Y29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8mLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcik7CisgICAgYm9vbCB0
cnlVc2VDZXJ0aWZpY2F0ZUluZm9Gb3JDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBD
aGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYpOwogCi0gICAgdWludDY0X3QgYWRkQ2hhbGxlbmdl
VG9DaGFsbGVuZ2VNYXAoY29uc3QgQ2hhbGxlbmdlJik7CisgICAgdWludDY0X3QgYWRkQ2hhbGxl
bmdlVG9DaGFsbGVuZ2VNYXAoQ2hhbGxlbmdlJiYpOwogICAgIGJvb2wgc2hvdWxkQ29hbGVzY2VD
aGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBjb25zdDsKIAogICAgIHZvaWQgdXNlQ3Jl
ZGVudGlhbEZvclNpbmdsZUNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2Vi
Q29yZTo6Q3JlZGVudGlhbCYsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL21hYy9BdXRoZW50
aWNhdGlvbk1hbmFnZXIubWFjLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0
aW9uL21hYy9BdXRoZW50aWNhdGlvbk1hbmFnZXIubWFjLm1tCmluZGV4IDVmNzEzNDhmNjkyYmFk
MjI0ZDkyYWY1MzdiNzZlYzhhYTQ1ODA4YmEuLjBmMjczN2U3YWVjNDcyODlhNTBiZTE0MDQwOGJk
NTJmMzNjZTA1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNh
dGlvbi9tYWMvQXV0aGVudGljYXRpb25NYW5hZ2VyLm1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQXV0aGVudGljYXRpb24vbWFjL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5tYWMubW0K
QEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIE5TQXJyYXkgKmNoYWluKGNvbnN0IENlcnRpZmljYXRl
SW5mbyYgY2VydGlmaWNhdGVJbmZvKQogCiAKIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGNyZWF0
ZXMgYW4gaWRlbnRpdHkgZnJvbSBhIGNlcnRpZmljYXRlLCB3aGljaCBzaG91bGQgbm90IGJlIG5l
ZWRlZC4gV2Ugc2hvdWxkIHBhc3MgYW4gaWRlbnRpdHkgb3ZlciBJUEMgKGFzIHdlIGRvIG9uIGlP
UykuCi1ib29sIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6dHJ5VXNlQ2VydGlmaWNhdGVJbmZvRm9y
Q2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIGNvbnN0
IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFu
ZGxlciBjb21wbGV0aW9uSGFuZGxlcikKK2Jvb2wgQXV0aGVudGljYXRpb25NYW5hZ2VyOjp0cnlV
c2VDZXJ0aWZpY2F0ZUluZm9Gb3JDaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGNoYWxsZW5nZSwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNv
bnN0IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAoY2VydGlmaWNhdGVJbmZvLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>