<?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>191533</bug_id>
          
          <creation_ts>2018-11-11 18:31:28 -0800</creation_ts>
          <short_desc>[WebAuthN] Use a real nonce for CTAPHID_INIT</short_desc>
          <delta_ts>2021-03-05 09:46:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>181943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>66ed3rrd</cc>
    
    <cc>alex.gaynor</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1477460</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-11-11 18:31:28 -0800</bug_when>
    <thetext>Use a real nonce for CTAPHID_INIT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478362</commentid>
    <comment_count>1</comment_count>
      <attachid>354782</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-11-14 01:34:11 -0800</bug_when>
    <thetext>Created attachment 354782
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478446</commentid>
    <comment_count>2</comment_count>
      <attachid>354782</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-11-14 08:21:22 -0800</bug_when>
    <thetext>Comment on attachment 354782
Patch

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

Looks good. r=me

&gt; Source/WebKit/ChangeLog:4
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=191533

Please always include a radar for these changes.

&gt; Source/WebKit/ChangeLog:14
&gt; +        sufficient as the arrived init response will piped in HidConnection::m_inputReports, which is designed in

&quot;will BE piped THROUGH HidConnection::m_inputReports...&quot;

&gt; Source/WebKit/ChangeLog:15
&gt; +        purpose to store any data packets within (initialized, terminated) time interval to prevent data loss in

&quot;... which is designed ON purpose to ...&quot;

&gt; Source/WebKit/UIProcess/WebAuthentication/fido/CtapHidDriver.cpp:59
&gt; +    // HidConnection could hold data from other applications, and thereofore invalidate it before each transaction.

It seems like this could be the source of difficult-to-debug issues in the future, though I guess not in WebKit after this change. I wonder how other groups deal with HID connections that contain existing data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479014</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-15 12:07:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/46103502&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479040</commentid>
    <comment_count>4</comment_count>
      <attachid>354782</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-11-15 12:42:17 -0800</bug_when>
    <thetext>Comment on attachment 354782
Patch

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

Thanks Brent for r+ this change.

&gt;&gt; Source/WebKit/ChangeLog:4
&gt;&gt; +        https://bugs.webkit.org/show_bug.cgi?id=191533
&gt; 
&gt; Please always include a radar for these changes.

Sure.

&gt;&gt; Source/WebKit/ChangeLog:14
&gt;&gt; +        sufficient as the arrived init response will piped in HidConnection::m_inputReports, which is designed in
&gt; 
&gt; &quot;will BE piped THROUGH HidConnection::m_inputReports...&quot;

Fixed.

&gt;&gt; Source/WebKit/ChangeLog:15
&gt;&gt; +        purpose to store any data packets within (initialized, terminated) time interval to prevent data loss in
&gt; 
&gt; &quot;... which is designed ON purpose to ...&quot;

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/fido/CtapHidDriver.cpp:59
&gt;&gt; +    // HidConnection could hold data from other applications, and thereofore invalidate it before each transaction.
&gt; 
&gt; It seems like this could be the source of difficult-to-debug issues in the future, though I guess not in WebKit after this change. I wonder how other groups deal with HID connections that contain existing data.

Well, actually the CTAPHID_INIT response is the only one we need to pay attention to as the channel id embedded is the same for every application. Other cmd will use a dedicated channel id which is unique per app. Chromium is kind of merging our CtapHidDriver::Worker and CtapHidDriver together, so they just keep reading the pipe when a wrong nonce arrive.This design is free of the deadlock I describe in the change log however it makes the whole driver has much more complicated states than us. At the meantime, our design is simple, CtapHidDriver::Worker only handles each transaction, it doesn&apos;t care the content of each transaction. CtapHidDriver manages all states such as channel allocation. Since the worker doesn&apos;t care the content of each transaction, it won&apos;t know the nonce of the incoming legitimate response (a completed response with a right channel id) is not the expected one, and therefore terminates the transaction. And there is no ways for CtapHidDriver to ask the worker to open a semi transaction which is read only to exhaust the pipe. Therefore, it issues a new transaction. Since the described dead lock should be a quite rare situation in real world as it requires two apps send init cmd at the same time to trigger. I couldn&apos;t image how a legitimate user would do this. Therefore, there is no need to make a huge change to tackle this particular issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479042</commentid>
    <comment_count>5</comment_count>
      <attachid>354972</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-11-15 12:47:12 -0800</bug_when>
    <thetext>Created attachment 354972
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479074</commentid>
    <comment_count>6</comment_count>
      <attachid>354972</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-15 13:25:00 -0800</bug_when>
    <thetext>Comment on attachment 354972
Patch for landing

Clearing flags on attachment: 354972

Committed r238246: &lt;https://trac.webkit.org/changeset/238246&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479075</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-15 13:25:02 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354782</attachid>
            <date>2018-11-14 01:34:11 -0800</date>
            <delta_ts>2018-11-15 12:47:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191533-20181114013411.patch</filename>
            <type>text/plain</type>
            <size>20891</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGVmZDBlYmE2OGRlYWUz
Y2JkYTM5MDAzMDA5MjZiNDY3Yjk3MThlMS4uYWNhYTI4ODFkZWM1MDE4NjYyMzAzMDhiNDRlYzVi
M2FlZDkwMzc1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTExLTE0ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhOXSBVc2Ug
YSByZWFsIG5vbmNlIGZvciBDVEFQSElEX0lOSVQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTUzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5ldyB0ZXN0cyBhcmUgYWRkZWQgaW50byBleGlzdGluZyB0
ZXN0IGZpbGVzLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFu
dHMuaDoKKwogMjAxOC0xMS0xMyAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtXZWJBdXRoTl0gU3VwcG9ydCBDVEFQIEhJRCBhdXRoZW50aWNhdG9ycyBvbiBt
YWNPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA3MTc2MzczYzYyZjI3M2RhYjRiZjQ2YzQ3ODAxYzkzYjg5ZDM1NDcy
Li5iNDhhNDY2OTljM2JiZGYyN2YyZTA0ZmZjOWM0MWEyNmI0ZmMwZjk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQzIEBACisyMDE4LTExLTE0ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5j
b20+CisKKyAgICAgICAgW1dlYkF1dGhOXSBVc2UgYSByZWFsIG5vbmNlIGZvciBDVEFQSElEX0lO
SVQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTUz
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBh
IHJlYWwgbm9uY2UgZm9yIENUQVBISURfSU5JVCByZXF1ZXN0IGFjY29yZGluZyB0bzoKKyAgICAg
ICAgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1wcy0yMDE3MDkyNy9m
aWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtcHMtMjAxNzA5MjcuaHRt
bCNjdGFwaGlkX2luaXQtMHgwNi4KKyAgICAgICAgVGhlIGNoYWxsZW5nZSBoZXJlIGlzIHRoZSBu
ZXcgdHJhbnNhY3Rpb24gbmVlZHMgdG8gc3RhcnQgaW4gdGhlIG5leHQgcnVubG9vcCBvdGhlcndp
c2UgYSBkZWFkIGxvY2sgd2lsbCBmb3JtOgorICAgICAgICB3cm9uZyBub25jZSAtPiBuZXcgdHJh
bnNhY3Rpb24gLT4gbmV3IG5vbmNlIC0+IHdyaXRlIGluaXQgcmVxdWVzdCAtPiByZWFkIGluaXQg
cmVzcG9uc2UgZnJvbSBsYXN0IHJ1biBhcyBpdAorICAgICAgICBwaXBlZCBpbiB0aGUgcnVuIGxv
b3AgLT4gd3Jvbmcgbm9uY2Ugb2YgY291cnNlIC0+IC4uLgorICAgICAgICBUbyBicmVhayB0aGUg
YWJvdmUgZGVhZCBsb2NrLCB3ZSBoYXZlIHRvIHN0YXJ0IHRoZSBuZXcgdHJhbnNhY3Rpb24gaW4g
dGhlIG5leHQgcnVuLiBIb3dldmVyLCB0aGF0IGlzbid0CisgICAgICAgIHN1ZmZpY2llbnQgYXMg
dGhlIGFycml2ZWQgaW5pdCByZXNwb25zZSB3aWxsIHBpcGVkIGluIEhpZENvbm5lY3Rpb246Om1f
aW5wdXRSZXBvcnRzLCB3aGljaCBpcyBkZXNpZ25lZCBpbgorICAgICAgICBwdXJwb3NlIHRvIHN0
b3JlIGFueSBkYXRhIHBhY2tldHMgd2l0aGluIChpbml0aWFsaXplZCwgdGVybWluYXRlZCkgdGlt
ZSBpbnRlcnZhbCB0byBwcmV2ZW50IGRhdGEgbG9zcyBpbgorICAgICAgICB0aGUgY2FzZSB3aGVu
IEhpZENvbm5lY3Rpb246OnJlZ2lzdGVyRGF0YVJlY2VpdmVkQ2FsbGJhY2sgaXMgY2FsbGVkIGFm
dGVyIHRoZSBmaXJzdCBkYXRhIHBhY2tldCdzIGFycml2YWwuCisgICAgICAgIEluIG9yZGVyIHRv
IGJyZWFrIHRoZSBkZWFkIGxvY2sgY29tcGxldGVseSwgSGlkQ29ubmVjdGlvbjo6aW52YWxpZGF0
ZUNhY2hlIHdpbGwgYmUgY2FsbGVkIHByaW9yIHRvIGV2ZXJ5CisgICAgICAgIHNlbmQgdG8gZGVs
ZXRlIGFueSBwb3RlbnRpYWwgaW5pdCByZXNwb25zZSBmcm9tIGxhc3QgcnVuLiBIaWRDb25uZWN0
aW9uOjppbnZhbGlkYXRlQ2FjaGUgaXMgbm90IG5lY2Vzc2FyeQorICAgICAgICBmb3Igb3RoZXIg
cHJvdG9jb2xzIHRob3VnaC4gVGhlIGFib3ZlIHNjZW5hcmlvIGlzIG1vcmUgb3IgbGVzcyBhIGRl
c2lnbiBmbGF3IGluIENUQVAgSElELgorCisgICAgICAgIE9mIGNvdXJzZSwgYWxsIGFib3ZlIHNj
ZW5hcmlvcyBhcmUgY292ZXJlZCBpbiBvdXIgbW9jayB0ZXN0cy4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlU2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZENvbm5lY3Rpb24uaDoKKyAg
ICAgICAgKFdlYktpdDo6SGlkQ29ubmVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok1vY2tIaWRDb25uZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKFdl
YktpdDo6TW9ja0hpZENvbm5lY3Rpb246OnBhcnNlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6
Ok1vY2tIaWRDb25uZWN0aW9uOjpmZWVkUmVwb3J0cyk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3Rh
cEhpZERyaXZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkN0YXBIaWREcml2ZXI6Oldvcmtlcjo6
dHJhbnNhY3QpOgorICAgICAgICAoV2ViS2l0OjpDdGFwSGlkRHJpdmVyOjpDdGFwSGlkRHJpdmVy
KToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZERyaXZlcjo6dHJhbnNhY3QpOgorICAgICAgICAo
V2ViS2l0OjpDdGFwSGlkRHJpdmVyOjpjb250aW51ZUFmdGVyQ2hhbm5lbEFsbG9jYXRlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OkN0YXBIaWREcml2ZXI6OnJldHVyblJlc3BvbnNlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmg6CisKIDIw
MTgtMTEtMTMgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
V2ViQXV0aE5dIFN1cHBvcnQgQ1RBUCBISUQgYXV0aGVudGljYXRvcnMgb24gbWFjT1MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvQ29uc3RhbnRz
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0NvbnN0YW50cy5o
CmluZGV4IGY4ZDNlYTM3NjdhZDY1NDFmZmU1ODdkN2RhMWM5ZmNlMDUxNjc2ZDMuLjY5YjkxOTky
MDZmYTA2OTFkMjQ4MDZjZjdkMjY1MzU2NTYzMTVmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvQ29uc3RhbnRzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaApAQCAtMTYwLDYgKzE2
MCw3IEBAIGNvbnN0IHNpemVfdCBrSGlkTWF4UGFja2V0U2l6ZSA9IDY0OwogY29uc3Qgc2l6ZV90
IGtIaWRJbml0UGFja2V0RGF0YVNpemUgPSBrSGlkTWF4UGFja2V0U2l6ZSAtIGtIaWRJbml0UGFj
a2V0SGVhZGVyU2l6ZTsKIGNvbnN0IHNpemVfdCBrSGlkQ29udGludWF0aW9uUGFja2V0RGF0YVNp
emUgPSBrSGlkTWF4UGFja2V0U2l6ZSAtIGtIaWRDb250aW51YXRpb25QYWNrZXRIZWFkZXI7CiBj
b25zdCBzaXplX3Qga0hpZEluaXRSZXNwb25zZVNpemUgPSAxNzsKK2NvbnN0IHNpemVfdCBrSGlk
SW5pdE5vbmNlTGVuZ3RoID0gODsKIAogY29uc3QgdWludDhfdCBrSGlkTWF4TG9ja1NlY29uZHMg
PSAxMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggNDAxMjgwOGFjM2YyNWZlZWRhODJmOGIwODI5Mzdl
NjNhZGQ2Nzc1My4uMWRkODFlZDkyNTc3MDBhNzRhYTJiMmQyZTZlYTNkMDhmNjgxN2Y2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVSZWYuY3BwCkBAIC02MjUsNiArNjI1LDggQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVIK
ICAgICAgICAgICAgIGhpZC5lcnJvciA9IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b246OkhpZDo6RXJyb3I6Ok1hbGljaW91c1BheWxvYWQ7CiAgICAgICAgIGlmIChlcnJvciA9PSAi
dW5zdXBwb3J0ZWQtb3B0aW9ucyIpCiAgICAgICAgICAgICBoaWQuZXJyb3IgPSBNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OkVycm9yOjpVbnN1cHBvcnRlZE9wdGlvbnM7
CisgICAgICAgIGlmIChlcnJvciA9PSAid3Jvbmctbm9uY2UiKQorICAgICAgICAgICAgaGlkLmVy
cm9yID0gTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpFcnJvcjo6V3Jv
bmdOb25jZTsKIAogICAgICAgICBpZiAoYXV0byBwYXlsb2FkQmFzZTY0ID0gc3RhdGljX2Nhc3Q8
V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQYXlsb2FkQmFzZTY0IikpLmdldCgpKSkpCiAg
ICAgICAgICAgICBoaWQucGF5bG9hZEJhc2U2NCA9IFdlYktpdDo6dG9JbXBsKHBheWxvYWRCYXNl
NjQpLT5zdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0hpZENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZENvbm5lY3Rpb24uaAppbmRleCAyMWJlYzdl
NjZiMGI4NWEzNjRjYTg5OGU5NDc3NGEzZGJjMzUxY2EwLi43YzQ1OGVhOTZiMzkxYTdjOGRiMjBm
ZTY3ZjJhMjJlZDYxMWU4NDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkQ29ubmVjdGlvbi5oCkBAIC01
OSw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2VuZChWZWN0b3I8dWludDhf
dD4mJiBkYXRhLCBEYXRhU2VudENhbGxiYWNrJiYpOwogICAgIHZvaWQgcmVnaXN0ZXJEYXRhUmVj
ZWl2ZWRDYWxsYmFjayhEYXRhUmVjZWl2ZWRDYWxsYmFjayYmKTsKICAgICB2b2lkIHVucmVnaXN0
ZXJEYXRhUmVjZWl2ZWRDYWxsYmFjaygpOworICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlKCkgeyBt
X2lucHV0UmVwb3J0cy5jbGVhcigpOyB9CiAKICAgICB2b2lkIHJlY2VpdmVSZXBvcnQoVmVjdG9y
PHVpbnQ4X3Q+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3BwCmlu
ZGV4IGU2NDhiYjhjMDIyMjU5MTNhNDE0NGEwZGQwMTBlMDZiN2RhOTIyNjMuLmViN2YwZWFkYjJi
M2I1ZmU2ZWU5NzBiMTIxODk0OGU0OTFiNTgyYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hp
ZENvbm5lY3Rpb24uY3BwCkBAIC03MCwxNSArNzAsMTcgQEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlv
bjo6dGVybWluYXRlKCkKIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OnNlbmQoVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSwgRGF0YVNlbnRDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVCht
X2luaXRpYWxpemVkKTsKLSAgICBhc3NlbWJsZVJlcXVlc3QoV1RGTW92ZShkYXRhKSk7CisgICAg
YXV0byB0YXNrID0gQmxvY2tQdHI8dm9pZCgpPjo6ZnJvbUNhbGxhYmxlKFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzLCBkYXRhID0g
V1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byBzZW50ID0gRGF0YVNlbnQ6OlllczsKLSAgICBpZiAoc3RhZ2VzTWF0Y2goKSAmJiBt
X2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2NrOjpFcnJvcjo6RGF0YU5vdFNlbnQpCi0g
ICAgICAgIHNlbnQgPSBEYXRhU2VudDo6Tm87CisgICAgICAgICAgICB3ZWFrVGhpcy0+YXNzZW1i
bGVSZXF1ZXN0KFdURk1vdmUoZGF0YSkpOwogCi0gICAgYXV0byB0YXNrID0gQmxvY2tQdHI8dm9p
ZCgpPjo6ZnJvbUNhbGxhYmxlKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBzZW50XSgp
IG11dGFibGUgewotICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBz
ZW50XSgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byBzZW50ID0gRGF0YVNlbnQ6OlllczsK
KyAgICAgICAgICAgIGlmICh3ZWFrVGhpcy0+c3RhZ2VzTWF0Y2goKSAmJiB3ZWFrVGhpcy0+bV9j
b25maWd1cmF0aW9uLmhpZC0+ZXJyb3IgPT0gTW9jazo6RXJyb3I6OkRhdGFOb3RTZW50KQorICAg
ICAgICAgICAgICAgIHNlbnQgPSBEYXRhU2VudDo6Tm87CiAgICAgICAgICAgICBjYWxsYmFjayhz
ZW50KTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC0xNjMsNiArMTY1LDEyIEBAIHZvaWQgTW9j
a0hpZENvbm5lY3Rpb246OnBhcnNlUmVxdWVzdCgpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICAv
LyBTdG9yZSBub25jZS4KKyAgICBpZiAobV9zdWJTdGFnZSA9PSBNb2NrOjpTdWJTdGFnZTo6SW5p
dCkgeworICAgICAgICBtX25vbmNlID0gbV9yZXF1ZXN0TWVzc2FnZS0+Z2V0TWVzc2FnZVBheWxv
YWQoKTsKKyAgICAgICAgQVNTRVJUKG1fbm9uY2Uuc2l6ZSgpID09IGtIaWRJbml0Tm9uY2VMZW5n
dGgpOworICAgIH0KKwogICAgIG1fY3VycmVudENoYW5uZWwgPSBtX3JlcXVlc3RNZXNzYWdlLT5j
aGFubmVsSWQoKTsKICAgICBtX3JlcXVlc3RNZXNzYWdlID0gc3RkOjpudWxsb3B0OwogICAgIGlm
IChtX2NvbmZpZ3VyYXRpb24uaGlkLT5mYXN0RGF0YUFycml2YWwpCkBAIC0xNzYsOCArMTg0LDkg
QEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlvbjo6ZmVlZFJlcG9ydHMoKQogICAgIGlmIChtX3N1YlN0
YWdlID09IE1vY2s6OlN1YlN0YWdlOjpJbml0KSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBw
YXlsb2FkOwogICAgICAgICBwYXlsb2FkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoa0hpZEluaXRS
ZXNwb25zZVNpemUpOwotICAgICAgICAvLyBGSVhNRSgxOTE1MzMpOiBVc2UgYSByZWFsIG5vbmNl
LgotICAgICAgICBwYXlsb2FkLmFwcGVuZFZlY3RvcihWZWN0b3I8dWludDhfdD4oeyAweDAwLCAw
eDAxLCAweDAyLCAweDAzLCAweDA0LCAweDA1LCAweDA2LCAweDA3IH0pKTsKKyAgICAgICAgcGF5
bG9hZC5hcHBlbmRWZWN0b3IobV9ub25jZSk7CisgICAgICAgIGlmIChzdGFnZXNNYXRjaCgpICYm
IG1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9yID09IE1vY2s6OkVycm9yOjpXcm9uZ05vbmNlKQor
ICAgICAgICAgICAgcGF5bG9hZFswXS0tOwogICAgICAgICBwYXlsb2FkLmdyb3coa0hpZEluaXRS
ZXNwb25zZVNpemUpOwogICAgICAgICBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyhwYXls
b2FkLmRhdGEoKSArIHBheWxvYWQuc2l6ZSgpLCBDdGFwQ2hhbm5lbElkU2l6ZSk7CiAgICAgICAg
IGF1dG8gY2hhbm5lbCA9IGtIaWRCcm9hZGNhc3RDaGFubmVsOwpAQCAtMTkxLDcgKzIwMCw3IEBA
IHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OmZlZWRSZXBvcnRzKCkKIAogICAgIHN0ZDo6b3B0aW9u
YWw8Rmlkb0hpZE1lc3NhZ2U+IG1lc3NhZ2U7CiAgICAgaWYgKG1fc3RhZ2UgPT0gTW9jazo6U3Rh
Z2U6OkluZm8gJiYgbV9zdWJTdGFnZSA9PSBNb2NrOjpTdWJTdGFnZTo6TXNnKSB7Ci0gICAgICAg
IGF1dG8gaW5mb0RhdGEgPSBlbmNvZGVBc0NCT1IoQXV0aGVudGljYXRvckdldEluZm9SZXNwb25z
ZSh7IFByb3RvY29sVmVyc2lvbjo6a0N0YXAgfSwgVmVjdG9yPHVpbnQ4X3Q+KGtBYWd1aWRMZW5n
dGgpKSk7CisgICAgICAgIGF1dG8gaW5mb0RhdGEgPSBlbmNvZGVBc0NCT1IoQXV0aGVudGljYXRv
ckdldEluZm9SZXNwb25zZSh7IFByb3RvY29sVmVyc2lvbjo6a0N0YXAgfSwgVmVjdG9yPHVpbnQ4
X3Q+KGtBYWd1aWRMZW5ndGgsIDB1KSkpOwogICAgICAgICBpbmZvRGF0YS5pbnNlcnQoMCwgc3Rh
dGljX2Nhc3Q8dWludDhfdD4oQ3RhcERldmljZVJlc3BvbnNlQ29kZTo6a1N1Y2Nlc3MpKTsgLy8g
UHJlcGVuZCBzdGF0dXMgY29kZS4KICAgICAgICAgaWYgKHN0YWdlc01hdGNoKCkgJiYgbV9jb25m
aWd1cmF0aW9uLmhpZC0+ZXJyb3IgPT0gTW9jazo6RXJyb3I6Oldyb25nQ2hhbm5lbElkKQogICAg
ICAgICAgICAgbWVzc2FnZSA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUobV9jdXJyZW50Q2hhbm5l
bCAtIDEsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprQ2JvciwgaW5mb0RhdGEpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlk
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
TW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5oCmluZGV4IDhiNTk2OWVmZmE4ZDg0MjYzZTYxMmZlZWM2
YjAxN2FkZTkzNjUwMDIuLjMxNjQ3N2U4ODA0ZDJkMzk3Mjc3M2FkODA3YzM4ZDNkZTA2YTBlYmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01v
Y2svTW9ja0hpZENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmgKQEAgLTY1LDYgKzY1LDcgQEAg
cHJpdmF0ZToKICAgICB1aW50MzJfdCBtX2N1cnJlbnRDaGFubmVsIHsgZmlkbzo6a0hpZEJyb2Fk
Y2FzdENoYW5uZWwgfTsKICAgICBib29sIG1fcmVxdWlyZVJlc2lkZW50S2V5IHsgZmFsc2UgfTsK
ICAgICBib29sIG1fcmVxdWlyZVVzZXJWZXJpZmljYXRpb24gIHsgZmFsc2UgfTsKKyAgICBWZWN0
b3I8dWludDhfdD4gbV9ub25jZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24uaAppbmRleCBjNDIxNmM2YjA5ZDBkNDA5ZDNjM2ViOWNjMDEzNzM1MzBjNWMwNjAyLi4zMDVl
ZmQ4NzE3NTRkYmY3MzdhNjg2MTBkOGRlYzAzZDdmNGIyMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaApAQCAt
NTcsNyArNTcsOCBAQCBzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiB7
CiAgICAgICAgICAgICBFbXB0eVJlcG9ydCwKICAgICAgICAgICAgIFdyb25nQ2hhbm5lbElkLAog
ICAgICAgICAgICAgTWFsaWNpb3VzUGF5bG9hZCwKLSAgICAgICAgICAgIFVuc3VwcG9ydGVkT3B0
aW9ucworICAgICAgICAgICAgVW5zdXBwb3J0ZWRPcHRpb25zLAorICAgICAgICAgICAgV3JvbmdO
b25jZQogICAgICAgICB9OwogCiAgICAgICAgIFN0cmluZyBwYXlsb2FkQmFzZTY0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFw
SGlkRHJpdmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L2ZpZG8vQ3RhcEhpZERyaXZlci5jcHAKaW5kZXggMzlkN2MxYThkOGYxNDVhODMyODRjMzUyZGNk
NGM5OGJmYmVhZjJmZC4uNzdlMjI3MWZiZDRhZmExMzM0MWI2MjZlYjVkODA3NzVhNTc5YmU2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlk
by9DdGFwSGlkRHJpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuY3BwCkBAIC0yOSw3ICsyOSw5IEBACiAjaWYg
RU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQogCiAjaW5jbHVkZSA8V2ViQ29yZS9G
aWRvQ29uc3RhbnRzLmg+CisjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVt
YmVyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NTQsNiArNTYsOCBAQCB2b2lkIEN0YXBIaWREcml2ZXI6Oldvcmtlcjo6dHJhbnNhY3QoZmlkbzo6
Rmlkb0hpZE1lc3NhZ2UmJiByZXF1ZXN0TWVzc2FnZSwgTWVzcwogICAgIG1fcmVzcG9uc2VNZXNz
YWdlLnJlc2V0KCk7CiAgICAgbV9jYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwogCisgICAg
Ly8gSGlkQ29ubmVjdGlvbiBjb3VsZCBob2xkIGRhdGEgZnJvbSBvdGhlciBhcHBsaWNhdGlvbnMs
IGFuZCB0aGVyZW9mb3JlIGludmFsaWRhdGUgaXQgYmVmb3JlIGVhY2ggdHJhbnNhY3Rpb24uCisg
ICAgbV9jb25uZWN0aW9uLT5pbnZhbGlkYXRlQ2FjaGUoKTsKICAgICBtX2Nvbm5lY3Rpb24tPnNl
bmQobV9yZXF1ZXN0TWVzc2FnZS0+cG9wTmV4dFBhY2tldCgpLCBbd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyldKEhpZENvbm5lY3Rpb246OkRhdGFTZW50IHNlbnQpIG11dGFibGUgewogICAg
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBpZiAoIXdlYWtUaGlzKQpA
QCAtMTI5LDYgKzEzMyw3IEBAIHZvaWQgQ3RhcEhpZERyaXZlcjo6V29ya2VyOjpyZXR1cm5NZXNz
YWdlKHN0ZDo6b3B0aW9uYWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+JiYKIAogQ3RhcEhpZERyaXZl
cjo6Q3RhcEhpZERyaXZlcihVbmlxdWVSZWY8SGlkQ29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQog
ICAgIDogbV93b3JrZXIobWFrZVVuaXF1ZVJlZjxXb3JrZXI+KFdURk1vdmUoY29ubmVjdGlvbikp
KQorICAgICwgbV9ub25jZShrSGlkSW5pdE5vbmNlTGVuZ3RoKQogewogfQogCkBAIC0xMzYsMTIg
KzE0MSwxNCBAQCB2b2lkIEN0YXBIaWREcml2ZXI6OnRyYW5zYWN0KFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEsIFJlc3BvbnNlQ2FsbGJhY2smJiBjYWxsYmFjawogewogICAgIEFTU0VSVChtX3N0YXRl
ID09IFN0YXRlOjpJZGxlKTsKICAgICBtX3N0YXRlID0gU3RhdGU6OkFsbG9jYXRlQ2hhbm5lbDsK
KyAgICBtX2NoYW5uZWxJZCA9IGtIaWRCcm9hZGNhc3RDaGFubmVsOwogICAgIG1fcmVxdWVzdERh
dGEgPSBXVEZNb3ZlKGRhdGEpOwogICAgIG1fcmVzcG9uc2VDYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spOwogCiAgICAgLy8gQWxsb2NhdGUgYSBjaGFubmVsLgotICAgIC8vIEZJWE1FKDE5MTUz
Myk6IEdldCBhIHJlYWwgbm9uY2UuCi0gICAgYXV0byBpbml0Q29tbWFuZCA9IEZpZG9IaWRNZXNz
YWdlOjpjcmVhdGUoa0hpZEJyb2FkY2FzdENoYW5uZWwsIEZpZG9IaWREZXZpY2VDb21tYW5kOjpr
SW5pdCwgeyAweDAwLCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDA1LCAweDA2LCAweDA3IH0p
OworICAgIEFTU0VSVChtX25vbmNlLnNpemUoKSA9PSBrSGlkSW5pdE5vbmNlTGVuZ3RoKTsKKyAg
ICBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyhtX25vbmNlLmRhdGEoKSwgbV9ub25jZS5z
aXplKCkpOworICAgIGF1dG8gaW5pdENvbW1hbmQgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKG1f
Y2hhbm5lbElkLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0luaXQsIG1fbm9uY2UpOwogICAgIEFT
U0VSVChpbml0Q29tbWFuZCk7CiAgICAgbV93b3JrZXItPnRyYW5zYWN0KFdURk1vdmUoKmluaXRD
b21tYW5kKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShzdGQ6Om9wdGlvbmFsPEZp
ZG9IaWRNZXNzYWdlPiYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKQEAgLTE1OCwxNyArMTY1LDI4IEBAIHZvaWQgQ3RhcEhpZERyaXZlcjo6
Y29udGludWVBZnRlckNoYW5uZWxBbGxvY2F0ZWQoc3RkOjpvcHRpb25hbDxGaWRvSGlkTWVzc2Fn
ZT4mCiAgICAgICAgIHJldHVyblJlc3BvbnNlKHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkeTsKICAgICBBU1NFUlQobWVzc2FnZS0+Y2hhbm5l
bElkKCkgPT0gbV9jaGFubmVsSWQpOwogCi0gICAgLy8gRklYTUUoMTkxNTM0KTogQ2hlY2sgUGF5
bG9hZCBpbmNsdWRpbmcgbm9uY2UgYW5kIGV2ZXJ5dGhpbmcKICAgICBhdXRvIHBheWxvYWQgPSBt
ZXNzYWdlLT5nZXRNZXNzYWdlUGF5bG9hZCgpOwotICAgIHNpemVfdCBpbmRleCA9IDg7CiAgICAg
QVNTRVJUKHBheWxvYWQuc2l6ZSgpID09IGtIaWRJbml0UmVzcG9uc2VTaXplKTsKKyAgICAvLyBS
ZXN0YXJ0IHRoZSB0cmFuc2FjdGlvbiBpbiB0aGUgbmV4dCBydW4gbG9vcCB3aGVuIG5vbmNlIG1p
c21hdGNoZXMuCisgICAgaWYgKG1lbWNtcChwYXlsb2FkLmRhdGEoKSwgbV9ub25jZS5kYXRhKCks
IG1fbm9uY2Uuc2l6ZSgpKSkgeworICAgICAgICBtX3N0YXRlID0gU3RhdGU6OklkbGU7CisgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhp
cyksIGRhdGEgPSBXVEZNb3ZlKG1fcmVxdWVzdERhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUobV9y
ZXNwb25zZUNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgd2Vha1RoaXMtPnRyYW5zYWN0
KFdURk1vdmUoZGF0YSksIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWR5OworICAgIGF1dG8g
aW5kZXggPSBrSGlkSW5pdE5vbmNlTGVuZ3RoOwogICAgIG1fY2hhbm5lbElkID0gc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KHBheWxvYWRbaW5kZXgrK10pIDw8IDI0OwogICAgIG1fY2hhbm5lbElkIHw9
IHN0YXRpY19jYXN0PHVpbnQzMl90PihwYXlsb2FkW2luZGV4KytdKSA8PCAxNjsKICAgICBtX2No
YW5uZWxJZCB8PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocGF5bG9hZFtpbmRleCsrXSkgPDwgODsK
ICAgICBtX2NoYW5uZWxJZCB8PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocGF5bG9hZFtpbmRleF0p
OworICAgIC8vIEZJWE1FKDE5MTUzNCk6IENoZWNrIHRoZSByZXNldCBvZiB0aGUgcGF5bG9hZC4K
ICAgICBhdXRvIGNtZCA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUobV9jaGFubmVsSWQsIEZpZG9I
aWREZXZpY2VDb21tYW5kOjprQ2JvciwgbV9yZXF1ZXN0RGF0YSk7CiAgICAgQVNTRVJUKGNtZCk7
CiAgICAgbV93b3JrZXItPnRyYW5zYWN0KFdURk1vdmUoKmNtZCksIFt3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKV0oc3RkOjpvcHRpb25hbDxGaWRvSGlkTWVzc2FnZT4mJiByZXNwb25zZSkg
bXV0YWJsZSB7CkBAIC0xOTAsOCArMjA4LDYgQEAgdm9pZCBDdGFwSGlkRHJpdmVyOjpyZXR1cm5S
ZXNwb25zZShWZWN0b3I8dWludDhfdD4mJiByZXNwb25zZSkKIHsKICAgICAvLyBSZXNldCBzdGF0
ZSBiZWZvcmUgY2FsbGluZyB0aGUgcmVzcG9uc2UgY2FsbGJhY2sgdG8gYXZvaWQgYmVpbmcgZGVs
ZXRlZC4KICAgICBtX3N0YXRlID0gU3RhdGU6OklkbGU7Ci0gICAgbV9jaGFubmVsSWQgPSBmaWRv
OjprSGlkQnJvYWRjYXN0Q2hhbm5lbDsKLSAgICBtX3JlcXVlc3REYXRhID0geyB9OwogICAgIG1f
cmVzcG9uc2VDYWxsYmFjayhXVEZNb3ZlKHJlc3BvbnNlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZl
ci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFw
SGlkRHJpdmVyLmgKaW5kZXggNjhiMWM0NmVjZjFiMGNkN2ZlZGFlNTEwMTM5Nzc2ZDRjN2Y5MTM1
YS4uNDkyM2EzYzE4Zjg0NmQ0MWQzNGQ2NGRhNWJhOTkxMmUwZTc1MDc3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJp
dmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlk
by9DdGFwSGlkRHJpdmVyLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICAvLyBXb3JrZXIgaXMgdGhlIGhlbHBlciB0aGF0IG1haW50YWlucyB0aGUgdHJhbnNhY3Rpb24u
CiAgICAgLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1wcy0yMDE3
MDkyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtcHMtMjAxNzA5
MjcuaHRtbCNhcmJpdHJhdGlvbgotICAgIC8vIEZTTTogSWRsZSA9PiBXcml0ZSA9PiBSZWFkCisg
ICAgLy8gRlNNOiBJZGxlID0+IFdyaXRlID0+IFJlYWQuCiAgICAgY2xhc3MgV29ya2VyIDogcHVi
bGljIENhbk1ha2VXZWFrUHRyPFdvcmtlcj4gewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2VyKTsKQEAgLTEwMiw2ICsx
MDIsNyBAQCBwcml2YXRlOgogICAgIC8vIE9uZSByZXF1ZXN0IGF0IGEgdGltZS4KICAgICBWZWN0
b3I8dWludDhfdD4gbV9yZXF1ZXN0RGF0YTsKICAgICBSZXNwb25zZUNhbGxiYWNrIG1fcmVzcG9u
c2VDYWxsYmFjazsKKyAgICBWZWN0b3I8dWludDhfdD4gbV9ub25jZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg2Yzg0YzI2NWRjZTQzMjkwYWE4ZjQ4MzA2Y2Y4NjljNzQz
ZDBmMDYuLmRlYTg1NTNiNjBlYmUwOGM3ZjIwNzk1MDZiZTY4YjdmOTJkOWVhNTEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAxOC0xMS0xNCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFtXZWJBdXRoTl0gVXNlIGEgcmVhbCBub25jZSBmb3IgQ1RBUEhJRF9J
TklUCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE1
MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0
dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLWZhaWx1cmUuaHR0cHMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLWZhaWx1cmUuaHR0cHMuaHRtbDoKKyAg
ICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1zdWNjZXNzLmh0dHBzLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1zdWNjZXNzLmh0dHBz
Lmh0bWw6CisKIDIwMTgtMTEtMTMgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4K
IAogICAgICAgICBbV2ViQXV0aE5dIFN1cHBvcnQgQ1RBUCBISUQgYXV0aGVudGljYXRvcnMgb24g
bWFjT1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlk
LWZhaWx1cmUuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vY3RhcC1oaWQtZmFpbHVyZS5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggZjdhZGI4MjgyMGU3
OTYwMzljZmQ3ZTQyY2EyYmJkMjJiNDk1MTM3Mi4uMzhjZThjNjYyMTUzMWI1ZjVhMDM5ZTY2M2Zi
NTMxYzgwZmQwMmU2NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
Y3RhcC1oaWQtZmFpbHVyZS5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtZmFpbHVyZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTIs
NiArMiw3IEBACiBQQVNTIENUQVAgSElEIHdpdGggaW5pdCBzdWIgc3RhZ2UgZGF0YSBub3Qgc2Vu
dCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAogUEFTUyBDVEFQIEhJRCB3aXRo
IGluaXQgc3ViIHN0YWdlIGVtcHR5IHJlcG9ydCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRp
Y2F0b3IuIAogUEFTUyBDVEFQIEhJRCB3aXRoIGluaXQgc3ViIHN0YWdlIHdyb25nIGNoYW5uZWwg
aWQgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgQ1RBUCBISUQgd2l0
aCBpbml0IHN1YiBzdGFnZSB3cm9uZyBub25jZSBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRp
Y2F0b3IuIAogUEFTUyBDVEFQIEhJRCB3aXRoIG1zZyBzdWIgc3RhZ2UgZGF0YSBub3Qgc2VudCBl
cnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAogUEFTUyBDVEFQIEhJRCB3aXRoIG1z
ZyBzdWIgc3RhZ2UgZW1wdHkgcmVwb3J0IGVycm9yIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRv
ci4gCiBQQVNTIENUQVAgSElEIHdpdGggbXNnIHN1YiBzdGFnZSB3cm9uZyBjaGFubmVsIGlkIGVy
cm9yIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1mYWlsdXJlLmh0dHBzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1mYWlsdXJlLmh0dHBzLmh0bWwKaW5kZXgg
ZTUzNWQ4YmM5MWViOTc3OWUyM2M2ODUyMDU2YmY5ODYwMTE1ZGQ5YS4uZTI0NDA1ZmFmZTdhOWY3
N2JiMzA3NDIxNjJlMGIxODg4NGNhYWZkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vY3RhcC1oaWQtZmFpbHVyZS5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLWZhaWx1cmUuaHR0cHMuaHRtbApAQCAtMzgsNiAr
MzgsMTIgQEAKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJy
b3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGRlZmF1bHRPcHRpb25zKSwgIk9wZXJh
dGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIkNUQVAgSElEIHdpdGggaW5pdCBzdWIgc3RhZ2Ug
d3JvbmcgY2hhbm5lbCBpZCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAK
KyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0Nv
bmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJy
b3I6ICJ3cm9uZy1ub25jZSIgfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQs
ICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGRlZmF1bHRP
cHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CisgICAgfSwgIkNUQVAgSElEIHdpdGgg
aW5pdCBzdWIgc3RhZ2Ugd3Jvbmcgbm9uY2UgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNh
dG9yLiIpOworCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNh
dGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAi
bXNnIiwgZXJyb3I6ICJkYXRhLW5vdC1zZW50IiB9IH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtc3VjY2Vzcy5odHRwcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1zdWNjZXNzLmh0dHBzLWV4
cGVjdGVkLnR4dAppbmRleCBlMmE0NTMzOGRmZGYzNjczYTJkNmZkMDRjZmYzMzMxMDFmZjI1NjM4
Li5kYWRiY2FjMTk2ZWZkNmEzOWE2ZjVmYzE2ZGM1NzI1ZjFhODdkYjEzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1zdWNjZXNzLmh0dHBzLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1zdWNj
ZXNzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMyw0ICszLDUgQEAgUEFTUyBDVEFQIEhJRCB3aXRo
IGtlZXAgYWxpdmUgbWVzc2FnZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuCiBQQVNTIENU
QVAgSElEIHdpdGggZmFzdCBkYXRhIGFycml2YWwgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9y
LiAKIFBBU1MgQ1RBUCBISUQgd2l0aCBjb250aW51ZSBhZnRlciBlbXB0eSByZXBvcnQgaW4gYSBt
b2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKIFBBU1MgQ1RBUCBISUQgd2l0aCBjb250aW51ZSBhZnRl
ciB3cm9uZyBjaGFubmVsIGlkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIENU
QVAgSElEIHdpdGggY29udGludWUgYWZ0ZXIgd3Jvbmcgbm9uY2UgZXJyb3IgaW4gYSBtb2NrIGhp
ZCBhdXRoZW50aWNhdG9yLiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vY3RhcC1oaWQtc3VjY2Vzcy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vY3RhcC1oaWQtc3VjY2Vzcy5odHRwcy5odG1sCmluZGV4IDE3OWMwNjlhN2IxOThi
NjJmMWM5MDEyYTFkNWNmOTQ4ODVmYWRlMTIuLmRiMDJkNTQxOGE2YzA1YzM4NGFlNWE4MjI2ZjVi
ZjI5OWIzYWU4N2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0
YXAtaGlkLXN1Y2Nlc3MuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9jdGFwLWhpZC1zdWNjZXNzLmh0dHBzLmh0bWwKQEAgLTU0LDQgKzU0LDEzIEBACiAgICAg
ICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCBudWxsKTsKICAgICAgICAgfSk7
CiAgICAgfSwgIkNUQVAgSElEIHdpdGggY29udGludWUgYWZ0ZXIgd3JvbmcgY2hhbm5lbCBpZCBp
biBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rp
b24odCkgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3Rh
Z2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJ3cm9uZy1ub25jZSIsIHBheWxv
YWRCYXNlNjQ6IHRlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjQsIGNvbnRpbnVlQWZ0ZXJFcnJvckRh
dGE6IHRydWUgfSB9KTsKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVh
dGUoZGVmYXVsdE9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBhc3Nl
cnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCB1bmRlZmluZWQpOworICAgICAgICAgICAgYXNzZXJ0
X25vdF9lcXVhbHMoY3JlZGVudGlhbCwgbnVsbCk7CisgICAgICAgIH0pOworICAgIH0sICJDVEFQ
IEhJRCB3aXRoIGNvbnRpbnVlIGFmdGVyIHdyb25nIG5vbmNlIGVycm9yIGluIGEgbW9jayBoaWQg
YXV0aGVudGljYXRvci4iKTsKIDwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354972</attachid>
            <date>2018-11-15 12:47:12 -0800</date>
            <delta_ts>2018-11-15 13:25:00 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-191533-20181115124711.patch</filename>
            <type>text/plain</type>
            <size>20999</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGVmZDBlYmE2OGRlYWUz
Y2JkYTM5MDAzMDA5MjZiNDY3Yjk3MThlMS4uOTRmMmQxMzdmYTVmNTJlNjkxNGNkNjY1NDZhZjcz
ODJhZWQ3MmFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE4LTExLTE0ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhOXSBVc2Ug
YSByZWFsIG5vbmNlIGZvciBDVEFQSElEX0lOSVQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDYx
MDM1MDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAgICBO
ZXcgdGVzdHMgYXJlIGFkZGVkIGludG8gZXhpc3RpbmcgdGVzdCBmaWxlcy4KKworICAgICAgICAq
IE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvQ29uc3RhbnRzLmg6CisKIDIwMTgtMTEtMTMgIEpp
ZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aE5dIFN1
cHBvcnQgQ1RBUCBISUQgYXV0aGVudGljYXRvcnMgb24gbWFjT1MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzE3NjM3
M2M2MmYyNzNkYWI0YmY0NmM0NzgwMWM5M2I4OWQzNTQ3Mi4uOWJlMjIzYjViYjFiNmNmZGJmMTc3
M2I0ODVhYzliNmZmMWVmMTFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxOC0xMS0x
NCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRo
Tl0gVXNlIGEgcmVhbCBub25jZSBmb3IgQ1RBUEhJRF9JTklUCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE1MzMKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzQ2MTAzNTAyPgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAg
ICAgICAgVXNlIGEgcmVhbCBub25jZSBmb3IgQ1RBUEhJRF9JTklUIHJlcXVlc3QgYWNjb3JkaW5n
IHRvOgorICAgICAgICBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlkby12Mi4wLXBz
LTIwMTcwOTI3L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1wcy0y
MDE3MDkyNy5odG1sI2N0YXBoaWRfaW5pdC0weDA2LgorICAgICAgICBUaGUgY2hhbGxlbmdlIGhl
cmUgaXMgdGhlIG5ldyB0cmFuc2FjdGlvbiBuZWVkcyB0byBzdGFydCBpbiB0aGUgbmV4dCBydW5s
b29wIG90aGVyd2lzZSBhIGRlYWQgbG9jayB3aWxsIGZvcm06CisgICAgICAgIHdyb25nIG5vbmNl
IC0+IG5ldyB0cmFuc2FjdGlvbiAtPiBuZXcgbm9uY2UgLT4gd3JpdGUgaW5pdCByZXF1ZXN0IC0+
IHJlYWQgaW5pdCByZXNwb25zZSBmcm9tIGxhc3QgcnVuIGFzIGl0CisgICAgICAgIHBpcGVkIGlu
IHRoZSBydW4gbG9vcCAtPiB3cm9uZyBub25jZSBvZiBjb3Vyc2UgLT4gLi4uCisgICAgICAgIFRv
IGJyZWFrIHRoZSBhYm92ZSBkZWFkIGxvY2ssIHdlIGhhdmUgdG8gc3RhcnQgdGhlIG5ldyB0cmFu
c2FjdGlvbiBpbiB0aGUgbmV4dCBydW4uIEhvd2V2ZXIsIHRoYXQgaXNuJ3QKKyAgICAgICAgc3Vm
ZmljaWVudCBhcyB0aGUgYXJyaXZlZCBpbml0IHJlc3BvbnNlIHdpbGwgYmUgcGlwZWQgaW4gSGlk
Q29ubmVjdGlvbjo6bV9pbnB1dFJlcG9ydHMsIHdoaWNoIGlzIGRlc2lnbmVkCisgICAgICAgIG9u
IHB1cnBvc2UgdG8gc3RvcmUgYW55IGRhdGEgcGFja2V0cyB3aXRoaW4gKGluaXRpYWxpemVkLCB0
ZXJtaW5hdGVkKSB0aW1lIGludGVydmFsIHRvIHByZXZlbnQgZGF0YSBsb3NzIGluCisgICAgICAg
IHRoZSBjYXNlIHdoZW4gSGlkQ29ubmVjdGlvbjo6cmVnaXN0ZXJEYXRhUmVjZWl2ZWRDYWxsYmFj
ayBpcyBjYWxsZWQgYWZ0ZXIgdGhlIGZpcnN0IGRhdGEgcGFja2V0J3MgYXJyaXZhbC4KKyAgICAg
ICAgSW4gb3JkZXIgdG8gYnJlYWsgdGhlIGRlYWQgbG9jayBjb21wbGV0ZWx5LCBIaWRDb25uZWN0
aW9uOjppbnZhbGlkYXRlQ2FjaGUgd2lsbCBibm5uZSBjYWxsZWQgcHJpb3IgdG8gZXZlcnkKKyAg
ICAgICAgc2VuZCB0byBkZWxldGUgYW55IHBvdGVudGlhbCBpbml0IHJlc3BvbnNlIGZyb20gbGFz
dCBydW4uIEhpZENvbm5lY3Rpb246OmludmFsaWRhdGVDYWNoZSBpcyBub3QgbmVjZXNzYXJ5Cisg
ICAgICAgIGZvciBvdGhlciBwcm90b2NvbHMgdGhvdWdoLiBUaGUgYWJvdmUgc2NlbmFyaW8gaXMg
bW9yZSBvciBsZXNzIGEgZGVzaWduIGZsYXcgaW4gQ1RBUCBISUQuCisKKyAgICAgICAgT2YgY291
cnNlLCBhbGwgYWJvdmUgc2NlbmFyaW9zIGFyZSBjb3ZlcmVkIGluIG91ciBtb2NrIHRlc3RzLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6Cisg
ICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1
cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlk
Q29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpIaWRDb25uZWN0aW9uOjppbnZhbGlkYXRl
Q2FjaGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tI
aWRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TW9ja0hpZENvbm5lY3Rpb246OnNl
bmQpOgorICAgICAgICAoV2ViS2l0OjpNb2NrSGlkQ29ubmVjdGlvbjo6cGFyc2VSZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6TW9ja0hpZENvbm5lY3Rpb246OmZlZWRSZXBvcnRzKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhp
ZERyaXZlcjo6V29ya2VyOjp0cmFuc2FjdCk6CisgICAgICAgIChXZWJLaXQ6OkN0YXBIaWREcml2
ZXI6OkN0YXBIaWREcml2ZXIpOgorICAgICAgICAoV2ViS2l0OjpDdGFwSGlkRHJpdmVyOjp0cmFu
c2FjdCk6CisgICAgICAgIChXZWJLaXQ6OkN0YXBIaWREcml2ZXI6OmNvbnRpbnVlQWZ0ZXJDaGFu
bmVsQWxsb2NhdGVkKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZERyaXZlcjo6cmV0dXJuUmVz
cG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBI
aWREcml2ZXIuaDoKKwogMjAxOC0xMS0xMyAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXZWJBdXRoTl0gU3VwcG9ydCBDVEFQIEhJRCBhdXRoZW50aWNhdG9y
cyBvbiBtYWNPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9m
aWRvL0ZpZG9Db25zdGFudHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlk
by9GaWRvQ29uc3RhbnRzLmgKaW5kZXggZjhkM2VhMzc2N2FkNjU0MWZmZTU4N2Q3ZGExYzlmY2Uw
NTE2NzZkMy4uNjliOTE5OTIwNmZhMDY5MWQyNDgwNmNmN2QyNjUzNTY1NjMxNWYyNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0NvbnN0YW50
cy5oCkBAIC0xNjAsNiArMTYwLDcgQEAgY29uc3Qgc2l6ZV90IGtIaWRNYXhQYWNrZXRTaXplID0g
NjQ7CiBjb25zdCBzaXplX3Qga0hpZEluaXRQYWNrZXREYXRhU2l6ZSA9IGtIaWRNYXhQYWNrZXRT
aXplIC0ga0hpZEluaXRQYWNrZXRIZWFkZXJTaXplOwogY29uc3Qgc2l6ZV90IGtIaWRDb250aW51
YXRpb25QYWNrZXREYXRhU2l6ZSA9IGtIaWRNYXhQYWNrZXRTaXplIC0ga0hpZENvbnRpbnVhdGlv
blBhY2tldEhlYWRlcjsKIGNvbnN0IHNpemVfdCBrSGlkSW5pdFJlc3BvbnNlU2l6ZSA9IDE3Owor
Y29uc3Qgc2l6ZV90IGtIaWRJbml0Tm9uY2VMZW5ndGggPSA4OwogCiBjb25zdCB1aW50OF90IGtI
aWRNYXhMb2NrU2Vjb25kcyA9IDEwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAppbmRleCA0MDEyODA4YWMzZjI1
ZmVlZGE4MmY4YjA4MjkzN2U2M2FkZDY3NzUzLi4xZGQ4MWVkOTI1NzcwMGE3NGFhMmIyZDJlNmVh
M2QwOGY2ODE3ZjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTYyNSw2ICs2MjUsOCBAQCB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oV0tX
ZWJzaXRlRGF0YVN0b3JlUgogICAgICAgICAgICAgaGlkLmVycm9yID0gTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpFcnJvcjo6TWFsaWNpb3VzUGF5bG9hZDsKICAgICAg
ICAgaWYgKGVycm9yID09ICJ1bnN1cHBvcnRlZC1vcHRpb25zIikKICAgICAgICAgICAgIGhpZC5l
cnJvciA9IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZDo6RXJyb3I6OlVu
c3VwcG9ydGVkT3B0aW9uczsKKyAgICAgICAgaWYgKGVycm9yID09ICJ3cm9uZy1ub25jZSIpCisg
ICAgICAgICAgICBoaWQuZXJyb3IgPSBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
OjpIaWQ6OkVycm9yOjpXcm9uZ05vbmNlOwogCiAgICAgICAgIGlmIChhdXRvIHBheWxvYWRCYXNl
NjQgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleSho
aWRSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlBheWxvYWRCYXNl
NjQiKSkuZ2V0KCkpKSkKICAgICAgICAgICAgIGhpZC5wYXlsb2FkQmFzZTY0ID0gV2ViS2l0Ojp0
b0ltcGwocGF5bG9hZEJhc2U2NCktPnN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkQ29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkQ29ubmVjdGlv
bi5oCmluZGV4IDIxYmVjN2U2NmIwYjg1YTM2NGNhODk4ZTk0Nzc0YTNkYmMzNTFjYTAuLjdjNDU4
ZWE5NmIzOTFhN2M4ZGIyMGZlNjdmMmEyMmVkNjExZTg0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZENvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRD
b25uZWN0aW9uLmgKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
ZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIERhdGFTZW50Q2FsbGJhY2smJik7CiAgICAgdm9p
ZCByZWdpc3RlckRhdGFSZWNlaXZlZENhbGxiYWNrKERhdGFSZWNlaXZlZENhbGxiYWNrJiYpOwog
ICAgIHZvaWQgdW5yZWdpc3RlckRhdGFSZWNlaXZlZENhbGxiYWNrKCk7CisgICAgdm9pZCBpbnZh
bGlkYXRlQ2FjaGUoKSB7IG1faW5wdXRSZXBvcnRzLmNsZWFyKCk7IH0KIAogICAgIHZvaWQgcmVj
ZWl2ZVJlcG9ydChWZWN0b3I8dWludDhfdD4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlk
Q29ubmVjdGlvbi5jcHAKaW5kZXggZTY0OGJiOGMwMjIyNTkxM2E0MTQ0YTBkZDAxMGUwNmI3ZGE5
MjI2My4uZWI3ZjBlYWRiMmIzYjVmZTZlZTk3MGIxMjE4OTQ4ZTQ5MWI1ODJiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlk
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKQEAgLTcwLDE1ICs3MCwxNyBAQCB2b2lk
IE1vY2tIaWRDb25uZWN0aW9uOjp0ZXJtaW5hdGUoKQogdm9pZCBNb2NrSGlkQ29ubmVjdGlvbjo6
c2VuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBEYXRhU2VudENhbGxiYWNrJiYgY2FsbGJhY2sp
CiB7CiAgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOwotICAgIGFzc2VtYmxlUmVxdWVzdChXVEZN
b3ZlKGRhdGEpKTsKKyAgICBhdXRvIHRhc2sgPSBCbG9ja1B0cjx2b2lkKCk+Ojpmcm9tQ2FsbGFi
bGUoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
d2Vha1RoaXMsIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIHNlbnQgPSBEYXRhU2VudDo6WWVzOwotICAgIGlmIChz
dGFnZXNNYXRjaCgpICYmIG1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9yID09IE1vY2s6OkVycm9y
OjpEYXRhTm90U2VudCkKLSAgICAgICAgc2VudCA9IERhdGFTZW50OjpObzsKKyAgICAgICAgICAg
IHdlYWtUaGlzLT5hc3NlbWJsZVJlcXVlc3QoV1RGTW92ZShkYXRhKSk7CiAKLSAgICBhdXRvIHRh
c2sgPSBCbG9ja1B0cjx2b2lkKCk+Ojpmcm9tQ2FsbGFibGUoW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIHNlbnRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayksIHNlbnRdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBhdXRvIHNlbnQg
PSBEYXRhU2VudDo6WWVzOworICAgICAgICAgICAgaWYgKHdlYWtUaGlzLT5zdGFnZXNNYXRjaCgp
ICYmIHdlYWtUaGlzLT5tX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2NrOjpFcnJvcjo6
RGF0YU5vdFNlbnQpCisgICAgICAgICAgICAgICAgc2VudCA9IERhdGFTZW50OjpObzsKICAgICAg
ICAgICAgIGNhbGxiYWNrKHNlbnQpOwogICAgICAgICB9KTsKICAgICB9KTsKQEAgLTE2Myw2ICsx
NjUsMTIgQEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlvbjo6cGFyc2VSZXF1ZXN0KCkKICAgICAgICAg
fQogICAgIH0KIAorICAgIC8vIFN0b3JlIG5vbmNlLgorICAgIGlmIChtX3N1YlN0YWdlID09IE1v
Y2s6OlN1YlN0YWdlOjpJbml0KSB7CisgICAgICAgIG1fbm9uY2UgPSBtX3JlcXVlc3RNZXNzYWdl
LT5nZXRNZXNzYWdlUGF5bG9hZCgpOworICAgICAgICBBU1NFUlQobV9ub25jZS5zaXplKCkgPT0g
a0hpZEluaXROb25jZUxlbmd0aCk7CisgICAgfQorCiAgICAgbV9jdXJyZW50Q2hhbm5lbCA9IG1f
cmVxdWVzdE1lc3NhZ2UtPmNoYW5uZWxJZCgpOwogICAgIG1fcmVxdWVzdE1lc3NhZ2UgPSBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKG1fY29uZmlndXJhdGlvbi5oaWQtPmZhc3REYXRhQXJyaXZhbCkK
QEAgLTE3Niw4ICsxODQsOSBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpmZWVkUmVwb3J0cygp
CiAgICAgaWYgKG1fc3ViU3RhZ2UgPT0gTW9jazo6U3ViU3RhZ2U6OkluaXQpIHsKICAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IHBheWxvYWQ7CiAgICAgICAgIHBheWxvYWQucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShrSGlkSW5pdFJlc3BvbnNlU2l6ZSk7Ci0gICAgICAgIC8vIEZJWE1FKDE5MTUzMyk6
IFVzZSBhIHJlYWwgbm9uY2UuCi0gICAgICAgIHBheWxvYWQuYXBwZW5kVmVjdG9yKFZlY3Rvcjx1
aW50OF90Pih7IDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDUsIDB4MDYsIDB4MDcg
fSkpOworICAgICAgICBwYXlsb2FkLmFwcGVuZFZlY3RvcihtX25vbmNlKTsKKyAgICAgICAgaWYg
KHN0YWdlc01hdGNoKCkgJiYgbV9jb25maWd1cmF0aW9uLmhpZC0+ZXJyb3IgPT0gTW9jazo6RXJy
b3I6Oldyb25nTm9uY2UpCisgICAgICAgICAgICBwYXlsb2FkWzBdLS07CiAgICAgICAgIHBheWxv
YWQuZ3JvdyhrSGlkSW5pdFJlc3BvbnNlU2l6ZSk7CiAgICAgICAgIGNyeXB0b2dyYXBoaWNhbGx5
UmFuZG9tVmFsdWVzKHBheWxvYWQuZGF0YSgpICsgcGF5bG9hZC5zaXplKCksIEN0YXBDaGFubmVs
SWRTaXplKTsKICAgICAgICAgYXV0byBjaGFubmVsID0ga0hpZEJyb2FkY2FzdENoYW5uZWw7CkBA
IC0xOTEsNyArMjAwLDcgQEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlvbjo6ZmVlZFJlcG9ydHMoKQog
CiAgICAgc3RkOjpvcHRpb25hbDxGaWRvSGlkTWVzc2FnZT4gbWVzc2FnZTsKICAgICBpZiAobV9z
dGFnZSA9PSBNb2NrOjpTdGFnZTo6SW5mbyAmJiBtX3N1YlN0YWdlID09IE1vY2s6OlN1YlN0YWdl
OjpNc2cpIHsKLSAgICAgICAgYXV0byBpbmZvRGF0YSA9IGVuY29kZUFzQ0JPUihBdXRoZW50aWNh
dG9yR2V0SW5mb1Jlc3BvbnNlKHsgUHJvdG9jb2xWZXJzaW9uOjprQ3RhcCB9LCBWZWN0b3I8dWlu
dDhfdD4oa0FhZ3VpZExlbmd0aCkpKTsKKyAgICAgICAgYXV0byBpbmZvRGF0YSA9IGVuY29kZUFz
Q0JPUihBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlKHsgUHJvdG9jb2xWZXJzaW9uOjprQ3Rh
cCB9LCBWZWN0b3I8dWludDhfdD4oa0FhZ3VpZExlbmd0aCwgMHUpKSk7CiAgICAgICAgIGluZm9E
YXRhLmluc2VydCgwLCBzdGF0aWNfY2FzdDx1aW50OF90PihDdGFwRGV2aWNlUmVzcG9uc2VDb2Rl
OjprU3VjY2VzcykpOyAvLyBQcmVwZW5kIHN0YXR1cyBjb2RlLgogICAgICAgICBpZiAoc3RhZ2Vz
TWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2NrOjpFcnJvcjo6V3Jv
bmdDaGFubmVsSWQpCiAgICAgICAgICAgICBtZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0
ZShtX2N1cnJlbnRDaGFubmVsIC0gMSwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYm9yLCBpbmZv
RGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmgKaW5kZXggOGI1OTY5ZWZm
YThkODQyNjNlNjEyZmVlYzZiMDE3YWRlOTM2NTAwMi4uMzE2NDc3ZTg4MDRkMmQzOTcyNzczYWQ4
MDdjMzhkM2RlMDZhMGViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uaApA
QCAtNjUsNiArNjUsNyBAQCBwcml2YXRlOgogICAgIHVpbnQzMl90IG1fY3VycmVudENoYW5uZWwg
eyBmaWRvOjprSGlkQnJvYWRjYXN0Q2hhbm5lbCB9OwogICAgIGJvb2wgbV9yZXF1aXJlUmVzaWRl
bnRLZXkgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9yZXF1aXJlVXNlclZlcmlmaWNhdGlvbiAgeyBm
YWxzZSB9OworICAgIFZlY3Rvcjx1aW50OF90PiBtX25vbmNlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbi5oCmluZGV4IGM0MjE2YzZiMDlkMGQ0MDlkM2MzZWI5Y2MwMTM3
MzUzMGM1YzA2MDIuLjMwNWVmZDg3MTc1NGRiZjczN2E2ODYxMGQ4ZGVjMDNkN2Y0YjIzNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2sv
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbi5oCkBAIC01Nyw3ICs1Nyw4IEBAIHN0cnVjdCBNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uIHsKICAgICAgICAgICAgIEVtcHR5UmVwb3J0LAogICAgICAgICAgICAg
V3JvbmdDaGFubmVsSWQsCiAgICAgICAgICAgICBNYWxpY2lvdXNQYXlsb2FkLAotICAgICAgICAg
ICAgVW5zdXBwb3J0ZWRPcHRpb25zCisgICAgICAgICAgICBVbnN1cHBvcnRlZE9wdGlvbnMsCisg
ICAgICAgICAgICBXcm9uZ05vbmNlCiAgICAgICAgIH07CiAKICAgICAgICAgU3RyaW5nIHBheWxv
YWRCYXNlNjQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmNwcAppbmRleCAzOWQ3YzFhOGQ4
ZjE0NWE4MzI4NGMzNTJkY2Q0Yzk4YmZiZWFmMmZkLi43N2UyMjcxZmJkNGFmYTEzMzQxYjYyNmVi
NWQ4MDc3NWE1NzliZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHAKQEAgLTI5
LDcgKzI5LDkgQEAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShNQUMpCiAKICNp
bmNsdWRlIDxXZWJDb3JlL0ZpZG9Db25zdGFudHMuaD4KKyNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3Jh
cGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC01NCw2ICs1Niw4IEBAIHZvaWQgQ3RhcEhpZERyaXZlcjo6V29ya2Vy
Ojp0cmFuc2FjdChmaWRvOjpGaWRvSGlkTWVzc2FnZSYmIHJlcXVlc3RNZXNzYWdlLCBNZXNzCiAg
ICAgbV9yZXNwb25zZU1lc3NhZ2UucmVzZXQoKTsKICAgICBtX2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayk7CiAKKyAgICAvLyBIaWRDb25uZWN0aW9uIGNvdWxkIGhvbGQgZGF0YSBmcm9tIG90
aGVyIGFwcGxpY2F0aW9ucywgYW5kIHRoZXJlb2ZvcmUgaW52YWxpZGF0ZSBpdCBiZWZvcmUgZWFj
aCB0cmFuc2FjdGlvbi4KKyAgICBtX2Nvbm5lY3Rpb24tPmludmFsaWRhdGVDYWNoZSgpOwogICAg
IG1fY29ubmVjdGlvbi0+c2VuZChtX3JlcXVlc3RNZXNzYWdlLT5wb3BOZXh0UGFja2V0KCksIFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oSGlkQ29ubmVjdGlvbjo6RGF0YVNlbnQgc2Vu
dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAg
IGlmICghd2Vha1RoaXMpCkBAIC0xMjksNiArMTMzLDcgQEAgdm9pZCBDdGFwSGlkRHJpdmVyOjpX
b3JrZXI6OnJldHVybk1lc3NhZ2Uoc3RkOjpvcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4m
JgogCiBDdGFwSGlkRHJpdmVyOjpDdGFwSGlkRHJpdmVyKFVuaXF1ZVJlZjxIaWRDb25uZWN0aW9u
PiYmIGNvbm5lY3Rpb24pCiAgICAgOiBtX3dvcmtlcihtYWtlVW5pcXVlUmVmPFdvcmtlcj4oV1RG
TW92ZShjb25uZWN0aW9uKSkpCisgICAgLCBtX25vbmNlKGtIaWRJbml0Tm9uY2VMZW5ndGgpCiB7
CiB9CiAKQEAgLTEzNiwxMiArMTQxLDE0IEBAIHZvaWQgQ3RhcEhpZERyaXZlcjo6dHJhbnNhY3Qo
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgUmVzcG9uc2VDYWxsYmFjayYmIGNhbGxiYWNrCiB7CiAg
ICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OklkbGUpOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6
QWxsb2NhdGVDaGFubmVsOworICAgIG1fY2hhbm5lbElkID0ga0hpZEJyb2FkY2FzdENoYW5uZWw7
CiAgICAgbV9yZXF1ZXN0RGF0YSA9IFdURk1vdmUoZGF0YSk7CiAgICAgbV9yZXNwb25zZUNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayk7CiAKICAgICAvLyBBbGxvY2F0ZSBhIGNoYW5uZWwuCi0g
ICAgLy8gRklYTUUoMTkxNTMzKTogR2V0IGEgcmVhbCBub25jZS4KLSAgICBhdXRvIGluaXRDb21t
YW5kID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShrSGlkQnJvYWRjYXN0Q2hhbm5lbCwgRmlkb0hp
ZERldmljZUNvbW1hbmQ6OmtJbml0LCB7IDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4
MDUsIDB4MDYsIDB4MDcgfSk7CisgICAgQVNTRVJUKG1fbm9uY2Uuc2l6ZSgpID09IGtIaWRJbml0
Tm9uY2VMZW5ndGgpOworICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKG1fbm9uY2Uu
ZGF0YSgpLCBtX25vbmNlLnNpemUoKSk7CisgICAgYXV0byBpbml0Q29tbWFuZCA9IEZpZG9IaWRN
ZXNzYWdlOjpjcmVhdGUobV9jaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprSW5pdCwg
bV9ub25jZSk7CiAgICAgQVNTRVJUKGluaXRDb21tYW5kKTsKICAgICBtX3dvcmtlci0+dHJhbnNh
Y3QoV1RGTW92ZSgqaW5pdENvbW1hbmQpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyld
KHN0ZDo6b3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+JiYgcmVzcG9uc2UpIG11dGFibGUgewogICAg
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMTU4LDE3ICsxNjUsMjggQEAgdm9p
ZCBDdGFwSGlkRHJpdmVyOjpjb250aW51ZUFmdGVyQ2hhbm5lbEFsbG9jYXRlZChzdGQ6Om9wdGlv
bmFsPEZpZG9IaWRNZXNzYWdlPiYKICAgICAgICAgcmV0dXJuUmVzcG9uc2UoeyB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWR5OwogICAgIEFTU0VS
VChtZXNzYWdlLT5jaGFubmVsSWQoKSA9PSBtX2NoYW5uZWxJZCk7CiAKLSAgICAvLyBGSVhNRSgx
OTE1MzQpOiBDaGVjayBQYXlsb2FkIGluY2x1ZGluZyBub25jZSBhbmQgZXZlcnl0aGluZwogICAg
IGF1dG8gcGF5bG9hZCA9IG1lc3NhZ2UtPmdldE1lc3NhZ2VQYXlsb2FkKCk7Ci0gICAgc2l6ZV90
IGluZGV4ID0gODsKICAgICBBU1NFUlQocGF5bG9hZC5zaXplKCkgPT0ga0hpZEluaXRSZXNwb25z
ZVNpemUpOworICAgIC8vIFJlc3RhcnQgdGhlIHRyYW5zYWN0aW9uIGluIHRoZSBuZXh0IHJ1biBs
b29wIHdoZW4gbm9uY2UgbWlzbWF0Y2hlcy4KKyAgICBpZiAobWVtY21wKHBheWxvYWQuZGF0YSgp
LCBtX25vbmNlLmRhdGEoKSwgbV9ub25jZS5zaXplKCkpKSB7CisgICAgICAgIG1fc3RhdGUgPSBT
dGF0ZTo6SWRsZTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKSwgZGF0YSA9IFdURk1vdmUobV9yZXF1ZXN0RGF0YSksIGNhbGxi
YWNrID0gV1RGTW92ZShtX3Jlc3BvbnNlQ2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB3
ZWFrVGhpcy0+dHJhbnNhY3QoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShjYWxsYmFjaykpOworICAg
ICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fc3RhdGUgPSBTdGF0ZTo6
UmVhZHk7CisgICAgYXV0byBpbmRleCA9IGtIaWRJbml0Tm9uY2VMZW5ndGg7CiAgICAgbV9jaGFu
bmVsSWQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocGF5bG9hZFtpbmRleCsrXSkgPDwgMjQ7CiAg
ICAgbV9jaGFubmVsSWQgfD0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBheWxvYWRbaW5kZXgrK10p
IDw8IDE2OwogICAgIG1fY2hhbm5lbElkIHw9IHN0YXRpY19jYXN0PHVpbnQzMl90PihwYXlsb2Fk
W2luZGV4KytdKSA8PCA4OwogICAgIG1fY2hhbm5lbElkIHw9IHN0YXRpY19jYXN0PHVpbnQzMl90
PihwYXlsb2FkW2luZGV4XSk7CisgICAgLy8gRklYTUUoMTkxNTM0KTogQ2hlY2sgdGhlIHJlc2V0
IG9mIHRoZSBwYXlsb2FkLgogICAgIGF1dG8gY21kID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZSht
X2NoYW5uZWxJZCwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYm9yLCBtX3JlcXVlc3REYXRhKTsK
ICAgICBBU1NFUlQoY21kKTsKICAgICBtX3dvcmtlci0+dHJhbnNhY3QoV1RGTW92ZSgqY21kKSwg
W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShzdGQ6Om9wdGlvbmFsPEZpZG9IaWRNZXNz
YWdlPiYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKQEAgLTE5MCw4ICsyMDgsNiBAQCB2b2lkIEN0YXBI
aWREcml2ZXI6OnJldHVyblJlc3BvbnNlKFZlY3Rvcjx1aW50OF90PiYmIHJlc3BvbnNlKQogewog
ICAgIC8vIFJlc2V0IHN0YXRlIGJlZm9yZSBjYWxsaW5nIHRoZSByZXNwb25zZSBjYWxsYmFjayB0
byBhdm9pZCBiZWluZyBkZWxldGVkLgogICAgIG1fc3RhdGUgPSBTdGF0ZTo6SWRsZTsKLSAgICBt
X2NoYW5uZWxJZCA9IGZpZG86OmtIaWRCcm9hZGNhc3RDaGFubmVsOwotICAgIG1fcmVxdWVzdERh
dGEgPSB7IH07CiAgICAgbV9yZXNwb25zZUNhbGxiYWNrKFdURk1vdmUocmVzcG9uc2UpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Zmlkby9DdGFwSGlkRHJpdmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuaAppbmRleCA2OGIxYzQ2ZWNmMWIwY2Q3ZmVkYWU1
MTAxMzk3NzZkNGM3ZjkxMzVhLi40OTIzYTNjMThmODQ2ZDQxZDM0ZDY0ZGE1YmE5OTEyZTBlNzUw
Nzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL0N0YXBIaWREcml2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIC8vIFdvcmtlciBpcyB0aGUgaGVscGVyIHRoYXQgbWFpbnRhaW5z
IHRoZSB0cmFuc2FjdGlvbi4KICAgICAvLyBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3Mv
Zmlkby12Mi4wLXBzLTIwMTcwOTI3L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0b3ItcHJvdG9j
b2wtdjIuMC1wcy0yMDE3MDkyNy5odG1sI2FyYml0cmF0aW9uCi0gICAgLy8gRlNNOiBJZGxlID0+
IFdyaXRlID0+IFJlYWQKKyAgICAvLyBGU006IElkbGUgPT4gV3JpdGUgPT4gUmVhZC4KICAgICBj
bGFzcyBXb3JrZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V29ya2VyPiB7CiAgICAgICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3Jr
ZXIpOwpAQCAtMTAyLDYgKzEwMiw3IEBAIHByaXZhdGU6CiAgICAgLy8gT25lIHJlcXVlc3QgYXQg
YSB0aW1lLgogICAgIFZlY3Rvcjx1aW50OF90PiBtX3JlcXVlc3REYXRhOwogICAgIFJlc3BvbnNl
Q2FsbGJhY2sgbV9yZXNwb25zZUNhbGxiYWNrOworICAgIFZlY3Rvcjx1aW50OF90PiBtX25vbmNl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODZjODRjMjY1ZGNlNDMyOTBh
YThmNDgzMDZjZjg2OWM3NDNkMGYwNi4uNzcwODA2MTdmMDE5MDM1NjE5YTgxNWFmZmU3YjliOTMz
MTFiZDI4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTExLTE0ICBKaWV3ZW4gVGFuICA8
amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhOXSBVc2UgYSByZWFsIG5v
bmNlIGZvciBDVEFQSElEX0lOSVQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MTUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDYxMDM1MDI+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAgICAqIGh0dHAvd3B0
L3dlYmF1dGhuL2N0YXAtaGlkLWZhaWx1cmUuaHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGh0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLWZhaWx1cmUuaHR0cHMuaHRtbDoKKyAgICAgICAg
KiBodHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1zdWNjZXNzLmh0dHBzLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1zdWNjZXNzLmh0dHBzLmh0bWw6
CisKIDIwMTgtMTEtMTMgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbV2ViQXV0aE5dIFN1cHBvcnQgQ1RBUCBISUQgYXV0aGVudGljYXRvcnMgb24gbWFjT1MK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLWZhaWx1
cmUuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3Rh
cC1oaWQtZmFpbHVyZS5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggZjdhZGI4MjgyMGU3OTYwMzlj
ZmQ3ZTQyY2EyYmJkMjJiNDk1MTM3Mi4uMzhjZThjNjYyMTUzMWI1ZjVhMDM5ZTY2M2ZiNTMxYzgw
ZmQwMmU2NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1o
aWQtZmFpbHVyZS5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vY3RhcC1oaWQtZmFpbHVyZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTIsNiArMiw3
IEBACiBQQVNTIENUQVAgSElEIHdpdGggaW5pdCBzdWIgc3RhZ2UgZGF0YSBub3Qgc2VudCBlcnJv
ciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAogUEFTUyBDVEFQIEhJRCB3aXRoIGluaXQg
c3ViIHN0YWdlIGVtcHR5IHJlcG9ydCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3Iu
IAogUEFTUyBDVEFQIEhJRCB3aXRoIGluaXQgc3ViIHN0YWdlIHdyb25nIGNoYW5uZWwgaWQgZXJy
b3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgQ1RBUCBISUQgd2l0aCBpbml0
IHN1YiBzdGFnZSB3cm9uZyBub25jZSBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3Iu
IAogUEFTUyBDVEFQIEhJRCB3aXRoIG1zZyBzdWIgc3RhZ2UgZGF0YSBub3Qgc2VudCBlcnJvciBp
biBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAogUEFTUyBDVEFQIEhJRCB3aXRoIG1zZyBzdWIg
c3RhZ2UgZW1wdHkgcmVwb3J0IGVycm9yIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCiBQ
QVNTIENUQVAgSElEIHdpdGggbXNnIHN1YiBzdGFnZSB3cm9uZyBjaGFubmVsIGlkIGVycm9yIGlu
IGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9jdGFwLWhpZC1mYWlsdXJlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1mYWlsdXJlLmh0dHBzLmh0bWwKaW5kZXggZTUzNWQ4
YmM5MWViOTc3OWUyM2M2ODUyMDU2YmY5ODYwMTE1ZGQ5YS4uZTI0NDA1ZmFmZTdhOWY3N2JiMzA3
NDIxNjJlMGIxODg4NGNhYWZkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vY3RhcC1oaWQtZmFpbHVyZS5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL2N0YXAtaGlkLWZhaWx1cmUuaHR0cHMuaHRtbApAQCAtMzgsNiArMzgsMTIg
QEAKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGRlZmF1bHRPcHRpb25zKSwgIk9wZXJhdGlvbiB0
aW1lZCBvdXQuIik7CiAgICAgfSwgIkNUQVAgSElEIHdpdGggaW5pdCBzdWIgc3RhZ2Ugd3Jvbmcg
Y2hhbm5lbCBpZCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKKyAgICBw
cm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJ3
cm9uZy1ub25jZSIgfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RB
bGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGRlZmF1bHRPcHRpb25z
KSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CisgICAgfSwgIkNUQVAgSElEIHdpdGggaW5pdCBz
dWIgc3RhZ2Ugd3Jvbmcgbm9uY2UgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIp
OworCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKICAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQogICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1v
Y2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAibXNnIiwg
ZXJyb3I6ICJkYXRhLW5vdC1zZW50IiB9IH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtc3VjY2Vzcy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1zdWNjZXNzLmh0dHBzLWV4cGVjdGVk
LnR4dAppbmRleCBlMmE0NTMzOGRmZGYzNjczYTJkNmZkMDRjZmYzMzMxMDFmZjI1NjM4Li5kYWRi
Y2FjMTk2ZWZkNmEzOWE2ZjVmYzE2ZGM1NzI1ZjFhODdkYjEzIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1zdWNjZXNzLmh0dHBzLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1zdWNjZXNzLmh0
dHBzLWV4cGVjdGVkLnR4dApAQCAtMyw0ICszLDUgQEAgUEFTUyBDVEFQIEhJRCB3aXRoIGtlZXAg
YWxpdmUgbWVzc2FnZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuCiBQQVNTIENUQVAgSElE
IHdpdGggZmFzdCBkYXRhIGFycml2YWwgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKIFBB
U1MgQ1RBUCBISUQgd2l0aCBjb250aW51ZSBhZnRlciBlbXB0eSByZXBvcnQgaW4gYSBtb2NrIGhp
ZCBhdXRoZW50aWNhdG9yLiAKIFBBU1MgQ1RBUCBISUQgd2l0aCBjb250aW51ZSBhZnRlciB3cm9u
ZyBjaGFubmVsIGlkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIENUQVAgSElE
IHdpdGggY29udGludWUgYWZ0ZXIgd3Jvbmcgbm9uY2UgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRo
ZW50aWNhdG9yLiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
Y3RhcC1oaWQtc3VjY2Vzcy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vY3RhcC1oaWQtc3VjY2Vzcy5odHRwcy5odG1sCmluZGV4IDE3OWMwNjlhN2IxOThiNjJmMWM5
MDEyYTFkNWNmOTQ4ODVmYWRlMTIuLmRiMDJkNTQxOGE2YzA1YzM4NGFlNWE4MjI2ZjViZjI5OWIz
YWU4N2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlk
LXN1Y2Nlc3MuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9j
dGFwLWhpZC1zdWNjZXNzLmh0dHBzLmh0bWwKQEAgLTU0LDQgKzU0LDEzIEBACiAgICAgICAgICAg
ICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCBudWxsKTsKICAgICAgICAgfSk7CiAgICAg
fSwgIkNUQVAgSElEIHdpdGggY29udGludWUgYWZ0ZXIgd3JvbmcgY2hhbm5lbCBpZCBpbiBhIG1v
Y2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkg
eworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJp
bmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJ3cm9uZy1ub25jZSIsIHBheWxvYWRCYXNl
NjQ6IHRlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjQsIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGE6IHRy
dWUgfSB9KTsKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVm
YXVsdE9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBhc3NlcnRfbm90
X2VxdWFscyhjcmVkZW50aWFsLCB1bmRlZmluZWQpOworICAgICAgICAgICAgYXNzZXJ0X25vdF9l
cXVhbHMoY3JlZGVudGlhbCwgbnVsbCk7CisgICAgICAgIH0pOworICAgIH0sICJDVEFQIEhJRCB3
aXRoIGNvbnRpbnVlIGFmdGVyIHdyb25nIG5vbmNlIGVycm9yIGluIGEgbW9jayBoaWQgYXV0aGVu
dGljYXRvci4iKTsKIDwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>