<?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>104143</bug_id>
          
          <creation_ts>2012-12-05 11:07:49 -0800</creation_ts>
          <short_desc>[WK2] Would like to queue messages while NetworkProcess is launching</short_desc>
          <delta_ts>2012-12-05 15:29:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>abecsi</cc>
    
    <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>menard</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>783919</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-05 11:07:49 -0800</bug_when>
    <thetext>The code to queue messages while launching only exists in WebProcessProxy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783927</commentid>
    <comment_count>1</comment_count>
      <attachid>177798</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-05 11:20:05 -0800</bug_when>
    <thetext>Created attachment 177798
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783932</commentid>
    <comment_count>2</comment_count>
      <attachid>177798</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-12-05 11:25:20 -0800</bug_when>
    <thetext>Comment on attachment 177798
proposed patch

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

&gt; Source/WebKit2/Shared/ChildProcessProxy.cpp:128
&gt; +    if (m_connection) {

Would be cleaner to just return early if m_connection is null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783983</commentid>
    <comment_count>3</comment_count>
      <attachid>177798</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-05 12:20:56 -0800</bug_when>
    <thetext>Comment on attachment 177798
proposed patch

Attachment 177798 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15153519</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783986</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 12:23:07 -0800</bug_when>
    <thetext>Attachment 177798 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebKit2/Shared/ChildProcessProxy.h:48:  The parameter name &quot;reply&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784011</commentid>
    <comment_count>5</comment_count>
      <attachid>177812</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-05 12:47:56 -0800</bug_when>
    <thetext>Created attachment 177812
with a Windows build fix

I don&apos;t understand the MSVC failure. Trying to fix by using public inheritance in ChildProcessProxy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784186</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-05 15:29:38 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r136770&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177798</attachid>
            <date>2012-12-05 11:20:05 -0800</date>
            <delta_ts>2012-12-05 12:47:56 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>ChildProcessProxy.txt</filename>
            <type>text/plain</type>
            <size>44301</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNjcxNykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc4IEBACisyMDEyLTEyLTA1ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFdvdWxkIGxpa2Ug
dG8gcXVldWUgbWVzc2FnZXMgd2hpbGUgTmV0d29ya1Byb2Nlc3MgaXMgbGF1bmNoaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQxNDMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGYWN0b3JlZCBvdXQg
cHJvY2VzcyBsYXVuY2hpbmcgYW5kIG1lc3NhZ2Ugc2VuZGluZyBjb2RlIHRvIGEgQ2hpbGRQcm9j
ZXNzUHJveHkgY2xhc3MuCisgICAgICAgIFByb2Nlc3MgY2xvc2luZyBhbmQgY3Jhc2hpbmcgY29k
ZSBzaG91bGQgYmUgbW92ZWQgb25jZSB3ZSBiZXR0ZXIgdW5kZXJzdGFuZCBjb21tb24KKyAgICAg
ICAgcmVxdWlyZW1lbnRzIGZvciB0aGUgcHJvY2Vzc2VzLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQu
cHJpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiB3aW4vV2ViS2l0Mi52Y3Byb2o6CisgICAgICAgIEFkZGVkIENoaWxkUHJvY2Vzc1Byb3h5
IGZpbGVzLgorCisgICAgICAgICogU2hhcmVkL0NoaWxkUHJvY2Vzc1Byb3h5LmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc1Byb3h5OjpDaGlsZFByb2Nlc3NQcm94eSk6
CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc1Byb3h5Ojp+Q2hpbGRQcm9jZXNzUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NQcm94eTo6ZnJvbUNvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NQcm94eTo6Y29ubmVjdCk6CisgICAgICAgIChX
ZWJLaXQ6OkNoaWxkUHJvY2Vzc1Byb3h5Ojp0ZXJtaW5hdGUpOgorICAgICAgICAoV2ViS2l0OjpD
aGlsZFByb2Nlc3NQcm94eTo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFBy
b2Nlc3NQcm94eTo6aXNMYXVuY2hpbmcpOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NQ
cm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNz
UHJveHk6OmNsZWFyQ29ubmVjdGlvbik6CisgICAgICAgICogU2hhcmVkL0NoaWxkUHJvY2Vzc1By
b3h5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NQcm94eTo6Y29ubmVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc1Byb3h5Ojppc1ZhbGlkKToKKyAg
ICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzUHJveHk6OmNhblNlbmRNZXNzYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzUHJveHk6OnByb2Nlc3NJZGVudGlmaWVyKToKKyAgICAg
ICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzUHJveHk6OnNlbmQpOgorICAgICAgICAoV2ViS2l0OjpD
aGlsZFByb2Nlc3NQcm94eTo6c2VuZFN5bmMpOgorICAgICAgICBNb3ZlZCBjb2RlIGZyb20gV2Vi
UHJvY2Vzc1Byb3h5LiBFdmVyeSBDaGlsZFByb2Nlc3NQcm94eSBpcyBhIGNvbm5lY3Rpb24gY2xp
ZW50LAorICAgICAgICBidXQgZXZlcnkgb25lIGlzIGEgY29ubmVjdGlvbiBxdWV1ZSBjbGllbnQs
IHNvIHRoYXQgbGF0dGVyIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudC4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgUmVtb3ZlZCB1bnVz
ZWQgc3luY01lc3NhZ2VTZW5kVGltZWRPdXQoKSwgdGhhbmsgeW91IE9WRVJSSURFLgorCisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ok5ldHdvcmtQcm9jZXNzUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6fk5ldHdvcmtQcm9jZXNzUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRG
aW5pc2hMYXVuY2hpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nl
c3NQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0
QXBwbGljYXRpb25Jc09jY2x1ZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6On5XZWJQcm9jZXNzUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpc2Nvbm5lY3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAgIFVz
ZSBzaGFyZWQgY29kZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDog
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpmcm9tQ29ubmVjdGlvbik6CisgICAgICAgIE5ldHdv
cmtQcm9jZXNzIGluaGVyaXRzIGZyb20gY29ubmVjaXRvbiBjbGllbnQgcHJpdmF0ZWx5LCBzbyB3
ZSBuZWVkIHRvIGRvIG1vc3QKKyAgICAgICAgb2YgdGhlIHdvcmsgaW4gQ2xpZW50UHJvY2Vzc1By
b3h5LCBhbmQgZnVydGhlciB1cGNhc3QgaGVyZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9lZmwv
V2ViUHJvY2Vzc1Byb3h5RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpwbGF0Zm9ybUdldExhdW5jaE9wdGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2Vi
UHJvY2Vzc1Byb3h5R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpw
bGF0Zm9ybUdldExhdW5jaE9wdGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUHJv
Y2Vzc1Byb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnBsYXRm
b3JtR2V0TGF1bmNoT3B0aW9ucyk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1dlYlByb2Nlc3NQ
cm94eVF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUdl
dExhdW5jaE9wdGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Byb3h5
V2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUdldExh
dW5jaE9wdGlvbnMpOgorICAgICAgICBVcGRhdGVkIGZvciByZW5hbWluZywgcGxhdGZvcm1Db25u
ZWN0IC0+IHBsYXRmb3JtR2V0TGF1bmNoT3B0aW9ucygpLgorCiAyMDEyLTEyLTA1ICBNaWNoYWVs
IEJyw7xuaW5nICA8bWljaGFlbC5icnVuaW5nQGRpZ2lhLmNvbT4KIAogICAgICAgICBGaXggY29t
cGlsYXRpb24gZm9yIFF0NS4wLjAgc3RhYmxlIGJyYW5jaC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMu
dHh0CShyZXZpc2lvbiAxMzY1MzApCisrKyBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNyw3IEBAIFNFVChXZWJLaXQyX1NPVVJDRVMKICAg
ICBTaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNwcAogICAgIFNoYXJlZC9BUElPYmplY3QuY3BwCiAg
ICAgU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAKKyAgICBTaGFyZWQvQ2hpbGRQcm9jZXNzUHJveHku
Y3BwCiAgICAgU2hhcmVkL0Nvbm5lY3Rpb25TdGFjay5jcHAKICAgICBTaGFyZWQvRGljdGlvbmFy
eVBvcHVwSW5mby5jcHAKICAgICBTaGFyZWQvRWRpdG9yU3RhdGUuY3BwCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEzNjUzMCkKKysrIFNvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTM2OSw2ICszNjksOCBAQCB3
ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DYWNoZU1vZGVsLmgg
XAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmggXAorCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGls
ZFByb2Nlc3NQcm94eS5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3NQ
cm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29tbWFuZExpbmUuaCBcCiAJU291cmNl
L1dlYktpdDIvU2hhcmVkL0Nvbm5lY3Rpb25TdGFjay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db25uZWN0aW9uU3RhY2suaCBcCkBAIC0xMjc0LDYgKzEyNzYsOCBAQCB3ZWJraXQyX3Bs
dWdpbl9wcm9jZXNzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
dW5peC9QbHVnaW5Qcm9jZXNzVW5peC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGls
ZFByb2Nlc3MuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmggXAor
CVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3NQcm94eS5jcHAgXAorCVNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3NQcm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ29ubmVjdGlvblN0YWNrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvbm5lY3Rp
b25TdGFjay5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUHJvY2Vzc0V4ZWN1dGFibGVQYXRo
LmggXApJbmRleDogU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9UYXJnZXQucHJpCShyZXZpc2lvbiAxMzY1MzApCisrKyBTb3VyY2UvV2ViS2l0
Mi9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCw3IEBAIEhFQURFUlMgKz0g
XAogICAgIFNoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmggXAogICAgIFNoYXJlZC9DYWNoZU1vZGVs
LmggXAogICAgIFNoYXJlZC9DaGlsZFByb2Nlc3MuaCBcCisgICAgU2hhcmVkL0NoaWxkUHJvY2Vz
c1Byb3h5LmggXAogICAgIFNoYXJlZC9Db25uZWN0aW9uU3RhY2suaCBcCiAgICAgU2hhcmVkL0Rp
Y3Rpb25hcnlQb3B1cEluZm8uaCBcCiAgICAgU2hhcmVkL0VkaXRvclN0YXRlLmggXApAQCAtNDUw
LDYgKzQ1MSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFNoYXJlZC9QbHVnaW5zL1BsdWdpbk1vZHVs
ZUluZm8uY3BwIFwKICAgICBTaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcCBcCiAgICAgU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAgXAorICAgIFNoYXJlZC9D
aGlsZFByb2Nlc3NQcm94eS5jcHAgXAogICAgIFNoYXJlZC9Db25uZWN0aW9uU3RhY2suY3BwIFwK
ICAgICBTaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5jcHAgXAogICAgIFNoYXJlZC9FZGl0b3JT
dGF0ZS5jcHAgXApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMTM2NTMwKQorKysgU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMCAr
OTIsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lCiAgICAgUnVu
TG9vcDo6Y3VycmVudCgpLT5zdG9wKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnN5bmNN
ZXNzYWdlU2VuZFRpbWVkT3V0KENvcmVJUEM6OkNvbm5lY3Rpb24qKQotewotfQotCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgcGxhdGZvcm1Jbml0aWFs
aXplKHBhcmFtZXRlcnMpOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCShyZXZpc2lvbiAxMzY1MzApCisrKyBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSwxMyAr
NTksMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwogCiAgICAgLy8gQ2hpbGRQcm9jZXNzCi0g
ICAgdmlydHVhbCBib29sIHNob3VsZFRlcm1pbmF0ZSgpOworICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRUZXJtaW5hdGUoKSBPVkVSUklERTsKIAogICAgIC8vIENvcmVJUEM6OkNvbm5lY3Rpb246OkNs
aWVudAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0
aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKik7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29y
ZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIENvcmVJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlTmFtZSk7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNNZXNzYWdlU2Vu
ZFRpbWVkT3V0KENvcmVJUEM6OkNvbm5lY3Rpb24qKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29y
ZUlQQzo6TWVzc2FnZURlY29kZXImKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xv
c2UoQ29yZUlQQzo6Q29ubmVjdGlvbiopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZU5hbWUpIE9WRVJSSURFOwogCiAgICAgLy8gTWVzc2FnZSBIYW5kbGVycwogICAgIHZv
aWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwg
Q29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwpJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQ2hpbGRQcm9jZXNzUHJveHkuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9v
cC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K0NoaWxkUHJvY2Vzc1Byb3h5OjpDaGlsZFByb2Nlc3NQcm94eShDb3JlSVBDOjpDb25uZWN0aW9u
OjpRdWV1ZUNsaWVudCogcXVldWVDbGllbnQpCisgICAgOiBtX3F1ZXVlQ2xpZW50KHF1ZXVlQ2xp
ZW50KQoreworfQorCitDaGlsZFByb2Nlc3NQcm94eTo6fkNoaWxkUHJvY2Vzc1Byb3h5KCkKK3sK
KyAgICBpZiAobV9jb25uZWN0aW9uKQorICAgICAgICBtX2Nvbm5lY3Rpb24tPmludmFsaWRhdGUo
KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wZW5kaW5nTWVzc2FnZXMuc2l6ZSgp
OyArK2kpCisgICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzW2ldLmZpcnN0LnJlbGVhc2VBcmd1bWVu
dHMoKTsKKworICAgIGlmIChtX3Byb2Nlc3NMYXVuY2hlcikgeworICAgICAgICBtX3Byb2Nlc3NM
YXVuY2hlci0+aW52YWxpZGF0ZSgpOworICAgICAgICBtX3Byb2Nlc3NMYXVuY2hlciA9IDA7Cisg
ICAgfQorfQorCitDaGlsZFByb2Nlc3NQcm94eSogQ2hpbGRQcm9jZXNzUHJveHk6OmZyb21Db25u
ZWN0aW9uKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUKGNv
bm5lY3Rpb24pOworCisgICAgQ2hpbGRQcm9jZXNzUHJveHkqIGNoaWxkUHJvY2Vzc1Byb3h5ID0g
c3RhdGljX2Nhc3Q8Q2hpbGRQcm9jZXNzUHJveHkqPihjb25uZWN0aW9uLT5jbGllbnQoKSk7Cisg
ICAgQVNTRVJUKGNoaWxkUHJvY2Vzc1Byb3h5LT5jb25uZWN0aW9uKCkgPT0gY29ubmVjdGlvbik7
CisKKyAgICByZXR1cm4gY2hpbGRQcm9jZXNzUHJveHk7Cit9CisKK3ZvaWQgQ2hpbGRQcm9jZXNz
UHJveHk6OmNvbm5lY3QoKQoreworICAgIEFTU0VSVCghbV9wcm9jZXNzTGF1bmNoZXIpOworICAg
IFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyBsYXVuY2hPcHRpb25zOworICAgIGdldExh
dW5jaE9wdGlvbnMobGF1bmNoT3B0aW9ucyk7CisgICAgbV9wcm9jZXNzTGF1bmNoZXIgPSBQcm9j
ZXNzTGF1bmNoZXI6OmNyZWF0ZSh0aGlzLCBsYXVuY2hPcHRpb25zKTsKK30KKwordm9pZCBDaGls
ZFByb2Nlc3NQcm94eTo6dGVybWluYXRlKCkKK3sKKyAgICBpZiAobV9wcm9jZXNzTGF1bmNoZXIp
CisgICAgICAgIG1fcHJvY2Vzc0xhdW5jaGVyLT50ZXJtaW5hdGVQcm9jZXNzKCk7Cit9CisKK2Jv
b2wgQ2hpbGRQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlKENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNz
YWdlSUQsIFBhc3NPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+IGVuY29kZXIsIHVuc2ln
bmVkIG1lc3NhZ2VTZW5kRmxhZ3MpCit7CisgICAgLy8gSWYgd2UncmUgd2FpdGluZyBmb3IgdGhl
IHdlYiBwcm9jZXNzIHRvIGxhdW5jaCwgd2UgbmVlZCB0byBzdGFzaCBhd2F5IHRoZSBtZXNzYWdl
cyBzbyB3ZSBjYW4gc2VuZCB0aGVtIG9uY2Ugd2UgaGF2ZQorICAgIC8vIGEgQ29yZUlQQyBjb25u
ZWN0aW9uLgorICAgIGlmIChpc0xhdW5jaGluZygpKSB7CisgICAgICAgIG1fcGVuZGluZ01lc3Nh
Z2VzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihDb3JlSVBDOjpDb25uZWN0aW9uOjpPdXRnb2luZ01l
c3NhZ2UobWVzc2FnZUlELCBlbmNvZGVyKSwgbWVzc2FnZVNlbmRGbGFncykpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBJZiB0aGUgd2ViIHByb2Nlc3MgaGFzIGV4aXRl
ZCwgY29ubmVjdGlvbiB3aWxsIGJlIG51bGwgaGVyZS4KKyAgICBpZiAoIWNvbm5lY3Rpb24oKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGNvbm5lY3Rpb24oKS0+c2VuZE1l
c3NhZ2UobWVzc2FnZUlELCBlbmNvZGVyLCBtZXNzYWdlU2VuZEZsYWdzKTsKK30KKworYm9vbCBD
aGlsZFByb2Nlc3NQcm94eTo6aXNMYXVuY2hpbmcoKSBjb25zdAoreworICAgIGlmIChtX3Byb2Nl
c3NMYXVuY2hlcikKKyAgICAgICAgcmV0dXJuIG1fcHJvY2Vzc0xhdW5jaGVyLT5pc0xhdW5jaGlu
ZygpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENoaWxkUHJvY2Vzc1Byb3h5Ojpk
aWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoIW1fY29ubmVj
dGlvbik7CisKKyAgICBtX2Nvbm5lY3Rpb24gPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVT
ZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCB0aGlzLCBSdW5Mb29wOjptYWlu
KCkpOworI2lmIE9TKERBUldJTikKKyAgICBtX2Nvbm5lY3Rpb24tPnNldFNob3VsZENsb3NlQ29u
bmVjdGlvbk9uTWFjaEV4Y2VwdGlvbnMoKTsKKyNlbGlmIFBMQVRGT1JNKFFUKSAmJiAhT1MoV0lO
RE9XUykKKyAgICBtX2Nvbm5lY3Rpb24tPnNldFNob3VsZENsb3NlQ29ubmVjdGlvbk9uUHJvY2Vz
c1Rlcm1pbmF0aW9uKHByb2Nlc3NJZGVudGlmaWVyKCkpOworI2VuZGlmCisKKyAgICBpZiAobV9x
dWV1ZUNsaWVudCkKKyAgICAgICAgbV9jb25uZWN0aW9uLT5hZGRRdWV1ZUNsaWVudChtX3F1ZXVl
Q2xpZW50KTsKKyAgICBtX2Nvbm5lY3Rpb24tPm9wZW4oKTsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9wZW5kaW5nTWVzc2FnZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQ29yZUlQ
Qzo6Q29ubmVjdGlvbjo6T3V0Z29pbmdNZXNzYWdlJiBvdXRnb2luZ01lc3NhZ2UgPSBtX3BlbmRp
bmdNZXNzYWdlc1tpXS5maXJzdDsKKyAgICAgICAgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFncyA9
IG1fcGVuZGluZ01lc3NhZ2VzW2ldLnNlY29uZDsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5k
TWVzc2FnZShvdXRnb2luZ01lc3NhZ2UubWVzc2FnZUlEKCksIGFkb3B0UHRyKG91dGdvaW5nTWVz
c2FnZS5hcmd1bWVudHMoKSksIG1lc3NhZ2VTZW5kRmxhZ3MpOworICAgIH0KKworICAgIG1fcGVu
ZGluZ01lc3NhZ2VzLmNsZWFyKCk7Cit9CisKK3ZvaWQgQ2hpbGRQcm9jZXNzUHJveHk6OmNsZWFy
Q29ubmVjdGlvbigpCit7CisgICAgaWYgKG1fY29ubmVjdGlvbikgeworICAgICAgICBpZiAobV9x
dWV1ZUNsaWVudCkKKyAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlUXVldWVDbGllbnQo
bV9xdWV1ZUNsaWVudCk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOworICAg
ICAgICBtX2Nvbm5lY3Rpb24gPSBudWxscHRyOworICAgIH0KK30KKworfQoKUHJvcGVydHkgY2hh
bmdlcyBvbjogU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzc1Byb3h5LmNwcApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogU291cmNlL1dl
YktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENoaWxkUHJvY2Vzc1Byb3h5X2gKKyNkZWZp
bmUgQ2hpbGRQcm9jZXNzUHJveHlfaAorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ2hp
bGRQcm9jZXNzUHJveHkgOiBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudCwgQ29yZUlQQzo6Q29ubmVj
dGlvbjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDaGlsZFByb2Nlc3NQcm94
eSk7CisKK3B1YmxpYzoKKyAgICBDaGlsZFByb2Nlc3NQcm94eShDb3JlSVBDOjpDb25uZWN0aW9u
OjpRdWV1ZUNsaWVudCogPSAwKTsKKyAgICB2aXJ0dWFsIH5DaGlsZFByb2Nlc3NQcm94eSgpOwor
CisgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gZG9lcyBhbiB1bmNoZWNrZWQgdXBjYXN0LCBh
bmQgaXQgaXMgb25seSB1c2VkIGluIGEgZGVwcmVjYXRlZCBjb2RlIHBhdGguIFdvdWxkIGxpa2Ug
dG8gZ2V0IHJpZCBvZiBpdC4KKyAgICBzdGF0aWMgQ2hpbGRQcm9jZXNzUHJveHkqIGZyb21Db25u
ZWN0aW9uKENvcmVJUEM6OkNvbm5lY3Rpb24qKTsKKworICAgIHZvaWQgY29ubmVjdCgpOworICAg
IHZvaWQgdGVybWluYXRlKCk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQo
Y29uc3QgVCYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdW5zaWduZWQgbWVzc2Fn
ZVNlbmRGbGFncyA9IDApOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZFN5bmMo
Y29uc3QgVSYgbWVzc2FnZSwgY29uc3QgdHlwZW5hbWUgVTo6UmVwbHkmIHJlcGx5LCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCBkb3VibGUgdGltZW91dCA9IDEpOworICAgIAorICAgIENvcmVJUEM6
OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
Y29ubmVjdGlvbik7CisgICAgICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7CisgICAgfQor
CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9CisgICAg
Ym9vbCBpc0xhdW5jaGluZygpIGNvbnN0OworICAgIGJvb2wgY2FuU2VuZE1lc3NhZ2UoKSBjb25z
dCB7IHJldHVybiBpc1ZhbGlkKCkgfHwgaXNMYXVuY2hpbmcoKTsgfQorCisgICAgUGxhdGZvcm1Q
cm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
Y2Vzc0xhdW5jaGVyLT5wcm9jZXNzSWRlbnRpZmllcigpOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2
b2lkIGNsZWFyQ29ubmVjdGlvbigpOworCisgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIENv
cmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpIE9WRVJSSURFOworCitwcml2YXRlOgorICAg
IHZpcnR1YWwgdm9pZCBnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0
aW9ucyYpID0gMDsKKworICAgIGJvb2wgc2VuZE1lc3NhZ2UoQ29yZUlQQzo6TWVzc2FnZUlELCBQ
YXNzT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiwgdW5zaWduZWQgbWVzc2FnZVNlbmRG
bGFncyk7CisKKyAgICBWZWN0b3I8c3RkOjpwYWlyPENvcmVJUEM6OkNvbm5lY3Rpb246Ok91dGdv
aW5nTWVzc2FnZSwgdW5zaWduZWQ+ID4gbV9wZW5kaW5nTWVzc2FnZXM7CisgICAgUmVmUHRyPFBy
b2Nlc3NMYXVuY2hlcj4gbV9wcm9jZXNzTGF1bmNoZXI7CisgICAgUmVmUHRyPENvcmVJUEM6OkNv
bm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpRdWV1ZUNs
aWVudCogbV9xdWV1ZUNsaWVudDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citib29sIENo
aWxkUHJvY2Vzc1Byb3h5OjpzZW5kKGNvbnN0IFQmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MpCit7CisgICAgQ09NUElMRV9BU1NFUlQo
IVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOworCisgICAgT3duUHRyPENvcmVJUEM6
Ok1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyID0gQ29yZUlQQzo6TWVzc2FnZUVuY29kZXI6OmNyZWF0
ZShUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBlbmNv
ZGVyLT5lbmNvZGUobWVzc2FnZSk7CisKKyAgICByZXR1cm4gc2VuZE1lc3NhZ2UoQ29yZUlQQzo6
TWVzc2FnZUlEKFQ6Om1lc3NhZ2VJRCksIGVuY29kZXIucmVsZWFzZSgpLCBtZXNzYWdlU2VuZEZs
YWdzKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVT4gCitib29sIENoaWxkUHJvY2Vzc1Byb3h5
OjpzZW5kU3luYyhjb25zdCBVJiBtZXNzYWdlLCBjb25zdCB0eXBlbmFtZSBVOjpSZXBseSYgcmVw
bHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGRvdWJsZSB0aW1lb3V0KQoreworICAgIENPTVBJ
TEVfQVNTRVJUKFU6OmlzU3luYywgU3luY01lc3NhZ2VFeHBlY3RlZCk7CisKKyAgICBpZiAoIW1f
Y29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGNvbm5lY3Rp
b24oKS0+c2VuZFN5bmMobWVzc2FnZSwgcmVwbHksIGRlc3RpbmF0aW9uSUQsIHRpbWVvdXQpOwor
fQorCit9CisKKyNlbmRpZiAvLyBDaGlsZFByb2Nlc3NQcm94eV9oCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzUHJveHkuaApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDEzNjUzMCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05MCw3ICs5MCw4IEBAIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNz
UHIKIH0KIAogV2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkoUGFzc1JlZlB0cjxXZWJD
b250ZXh0PiBjb250ZXh0KQotICAgIDogbV9yZXNwb25zaXZlbmVzc1RpbWVyKHRoaXMpCisgICAg
OiBDaGlsZFByb2Nlc3NQcm94eSh0aGlzKQorICAgICwgbV9yZXNwb25zaXZlbmVzc1RpbWVyKHRo
aXMpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fbWF5SGF2ZVVuaXZlcnNhbEZp
bGVSZWFkU2FuZGJveEV4dGVuc2lvbihmYWxzZSkKICNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09M
UykKQEAgLTEwMiw0OSArMTAzLDE5IEBAIFdlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5
KFBhc3NSZWYKIAogV2ViUHJvY2Vzc1Byb3h5Ojp+V2ViUHJvY2Vzc1Byb3h5KCkKIHsKLSAgICBp
ZiAobV9jb25uZWN0aW9uKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKLQog
ICAgIGlmIChtX3dlYkNvbm5lY3Rpb24pCiAgICAgICAgIG1fd2ViQ29ubmVjdGlvbi0+aW52YWxp
ZGF0ZSgpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BlbmRpbmdNZXNzYWdlcy5z
aXplKCk7ICsraSkKLSAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXNbaV0uZmlyc3QucmVsZWFzZUFy
Z3VtZW50cygpOwotCi0gICAgaWYgKG1fcHJvY2Vzc0xhdW5jaGVyKSB7Ci0gICAgICAgIG1fcHJv
Y2Vzc0xhdW5jaGVyLT5pbnZhbGlkYXRlKCk7Ci0gICAgICAgIG1fcHJvY2Vzc0xhdW5jaGVyID0g
MDsKLSAgICB9Ci19Ci0KLVdlYlByb2Nlc3NQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojpmcm9tQ29u
bmVjdGlvbihDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKQotewotICAgIEFTU0VSVChj
b25uZWN0aW9uKTsKLQotICAgIFdlYlByb2Nlc3NQcm94eSogd2ViUHJvY2Vzc1Byb3h5ID0gc3Rh
dGljX2Nhc3Q8V2ViUHJvY2Vzc1Byb3h5Kj4oY29ubmVjdGlvbi0+Y2xpZW50KCkpOwotICAgIEFT
U0VSVCh3ZWJQcm9jZXNzUHJveHktPmNvbm5lY3Rpb24oKSA9PSBjb25uZWN0aW9uKTsKLQotICAg
IHJldHVybiB3ZWJQcm9jZXNzUHJveHk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpjb25u
ZWN0KCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVu
Y2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucykKIHsKLSAgICBBU1NFUlQoIW1fcHJv
Y2Vzc0xhdW5jaGVyKTsKLQotICAgIFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyBsYXVu
Y2hPcHRpb25zOwogICAgIGxhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPSBQcm9jZXNzTGF1bmNo
ZXI6OldlYlByb2Nlc3M7Ci0gICAgcGxhdGZvcm1Db25uZWN0KGxhdW5jaE9wdGlvbnMpOwotICAg
IAotICAgIG1fcHJvY2Vzc0xhdW5jaGVyID0gUHJvY2Vzc0xhdW5jaGVyOjpjcmVhdGUodGhpcywg
bGF1bmNoT3B0aW9ucyk7CisgICAgcGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKGxhdW5jaE9wdGlv
bnMpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzY29ubmVjdCgpCiB7Ci0gICAgaWYg
KG1fY29ubmVjdGlvbikgewotICAgICAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZVF1ZXVlQ2xpZW50
KHRoaXMpOwotICAgICAgICBtX2Nvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKLSAgICAgICAgbV9j
b25uZWN0aW9uID0gbnVsbHB0cjsKLSAgICB9CisgICAgY2xlYXJDb25uZWN0aW9uKCk7CiAKICAg
ICBpZiAobV93ZWJDb25uZWN0aW9uKSB7CiAgICAgICAgIG1fd2ViQ29ubmVjdGlvbi0+aW52YWxp
ZGF0ZSgpOwpAQCAtMTYzLDM2ICsxMzQsNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzY29u
bmVjdCgpCiAgICAgbV9jb250ZXh0LT5kaXNjb25uZWN0UHJvY2Vzcyh0aGlzKTsKIH0KIAotYm9v
bCBXZWJQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlKENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdl
SUQsIFBhc3NPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+IGVuY29kZXIsIHVuc2lnbmVk
IG1lc3NhZ2VTZW5kRmxhZ3MpCi17Ci0gICAgLy8gSWYgd2UncmUgd2FpdGluZyBmb3IgdGhlIHdl
YiBwcm9jZXNzIHRvIGxhdW5jaCwgd2UgbmVlZCB0byBzdGFzaCBhd2F5IHRoZSBtZXNzYWdlcyBz
byB3ZSBjYW4gc2VuZCB0aGVtIG9uY2Ugd2UgaGF2ZQotICAgIC8vIGEgQ29yZUlQQyBjb25uZWN0
aW9uLgotICAgIGlmIChpc0xhdW5jaGluZygpKSB7Ci0gICAgICAgIG1fcGVuZGluZ01lc3NhZ2Vz
LmFwcGVuZChtYWtlX3BhaXIoQ29yZUlQQzo6Q29ubmVjdGlvbjo6T3V0Z29pbmdNZXNzYWdlKG1l
c3NhZ2VJRCwgZW5jb2RlciksIG1lc3NhZ2VTZW5kRmxhZ3MpKTsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotCi0gICAgLy8gSWYgdGhlIHdlYiBwcm9jZXNzIGhhcyBleGl0ZWQsIG1fY29u
bmVjdGlvbiB3aWxsIGJlIG51bGwgaGVyZS4KLSAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGNvbm5lY3Rpb24oKS0+c2VuZE1lc3NhZ2Uo
bWVzc2FnZUlELCBlbmNvZGVyLCBtZXNzYWdlU2VuZEZsYWdzKTsKLX0KLQotYm9vbCBXZWJQcm9j
ZXNzUHJveHk6OmlzTGF1bmNoaW5nKCkgY29uc3QKLXsKLSAgICBpZiAobV9wcm9jZXNzTGF1bmNo
ZXIpCi0gICAgICAgIHJldHVybiBtX3Byb2Nlc3NMYXVuY2hlci0+aXNMYXVuY2hpbmcoKTsKLQot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZSgp
Ci17Ci0gICAgaWYgKG1fcHJvY2Vzc0xhdW5jaGVyKQotICAgICAgICBtX3Byb2Nlc3NMYXVuY2hl
ci0+dGVybWluYXRlUHJvY2VzcygpOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkTWVz
c2FnZVJlY2VpdmVyKENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIqIG1lc3NhZ2VSZWNlaXZlcikKIHsKICAgICBtX21l
c3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwg
bWVzc2FnZVJlY2VpdmVyKTsKQEAgLTU1NCwzNSArNDk1LDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpkaWRCZWNvbWVSZXNwb25zaXYKICAgICAgICAgcGFnZXNbaV0tPnByb2Nlc3NEaWRCZWNv
bWVSZXNwb25zaXZlKCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVu
Y2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBj
b25uZWN0aW9uSWRlbnRpZmllcikKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVu
Y2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBkaWRGaW5pc2hMYXVuY2hpbmco
Y29ubmVjdGlvbklkZW50aWZpZXIpOwotfQotCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkRmlu
aXNoTGF1bmNoaW5nKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklk
ZW50aWZpZXIpCi17Ci0gICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24pOwotCi0gICAgbV9jb25uZWN0
aW9uID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29ubmVjdGlvbihjb25uZWN0
aW9uSWRlbnRpZmllciwgdGhpcywgUnVuTG9vcDo6bWFpbigpKTsKLSNpZiBPUyhEQVJXSU4pCi0g
ICAgbV9jb25uZWN0aW9uLT5zZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25Pbk1hY2hFeGNlcHRpb25z
KCk7Ci0jZWxpZiBQTEFURk9STShRVCkgJiYgIU9TKFdJTkRPV1MpCi0gICAgbV9jb25uZWN0aW9u
LT5zZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25PblByb2Nlc3NUZXJtaW5hdGlvbihwcm9jZXNzSWRl
bnRpZmllcigpKTsKLSNlbmRpZgotCi0gICAgbV9jb25uZWN0aW9uLT5hZGRRdWV1ZUNsaWVudCh0
aGlzKTsKLSAgICBtX2Nvbm5lY3Rpb24tPm9wZW4oKTsKKyAgICBDaGlsZFByb2Nlc3NQcm94eTo6
ZGlkRmluaXNoTGF1bmNoaW5nKGxhdW5jaGVyLCBjb25uZWN0aW9uSWRlbnRpZmllcik7CiAKICAg
ICBtX3dlYkNvbm5lY3Rpb24gPSBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUodGhp
cyk7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcGVuZGluZ01lc3NhZ2VzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIENvcmVJUEM6OkNvbm5lY3Rpb246Ok91dGdvaW5nTWVzc2FnZSYg
b3V0Z29pbmdNZXNzYWdlID0gbV9wZW5kaW5nTWVzc2FnZXNbaV0uZmlyc3Q7Ci0gICAgICAgIHVu
c2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MgPSBtX3BlbmRpbmdNZXNzYWdlc1tpXS5zZWNvbmQ7Ci0g
ICAgICAgIGNvbm5lY3Rpb24oKS0+c2VuZE1lc3NhZ2Uob3V0Z29pbmdNZXNzYWdlLm1lc3NhZ2VJ
RCgpLCBhZG9wdFB0cihvdXRnb2luZ01lc3NhZ2UuYXJndW1lbnRzKCkpLCBtZXNzYWdlU2VuZEZs
YWdzKTsKLSAgICB9Ci0KLSAgICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwotCiAgICAgLy8g
VGVsbCB0aGUgY29udGV4dCB0aGF0IHdlIGZpbmlzaGVkIGxhdW5jaGluZy4KICAgICBtX2NvbnRl
eHQtPnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcodGhpcyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDEzNjUzMCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBXZWJQcm9jZXNzUHJveHlfaAogI2RlZmluZSBXZWJQ
cm9jZXNzUHJveHlfaAogCisjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb1N0b3JlLmgiCkBAIC02MCw3ICs2MSw3IEBAIGNs
YXNzIFdlYkNvbnRleHQ7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBzdHJ1Y3QgV2ViTmF2aWdhdGlv
bkRhdGFTdG9yZTsKIAotY2xhc3MgV2ViUHJvY2Vzc1Byb3h5IDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFdlYlByb2Nlc3NQcm94eT4sIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudCwg
UmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50LCBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudCwgQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6UXVldWVDbGllbnQgeworY2xhc3MgV2ViUHJvY2Vzc1Byb3h5IDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlByb2Nlc3NQcm94eT4sIHB1YmxpYyBDaGls
ZFByb2Nlc3NQcm94eSwgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50LCBDb3JlSVBDOjpDb25u
ZWN0aW9uOjpRdWV1ZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2
NF90LCBSZWZQdHI8V2ViRnJhbWVQcm94eT4gPiBXZWJGcmFtZVByb3h5TWFwOwogICAgIHR5cGVk
ZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+ID4gV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbU1hcDsKQEAgLTY4LDE3ICs2OSw5IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYkNv
bnRleHQ+KTsKICAgICB+V2ViUHJvY2Vzc1Byb3h5KCk7CiAKLSAgICBzdGF0aWMgV2ViUHJvY2Vz
c1Byb3h5KiBmcm9tQ29ubmVjdGlvbihDb3JlSVBDOjpDb25uZWN0aW9uKik7Ci0KLSAgICB2b2lk
IHRlcm1pbmF0ZSgpOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kKGNvbnN0
IFQmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVuc2lnbmVkIG1lc3NhZ2VTZW5k
RmxhZ3MgPSAwKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHNlbmRTeW5jKGNvbnN0
IFUmIG1lc3NhZ2UsIGNvbnN0IHR5cGVuYW1lIFU6OlJlcGx5JiByZXBseSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCwgZG91YmxlIHRpbWVvdXQgPSAxKTsKLSAgICAKLSAgICBDb3JlSVBDOjpDb25u
ZWN0aW9uKiBjb25uZWN0aW9uKCkgY29uc3QKLSAgICB7IAotICAgICAgICBBU1NFUlQobV9jb25u
ZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsKKyAgICBzdGF0aWMg
V2ViUHJvY2Vzc1Byb3h5KiBmcm9tQ29ubmVjdGlvbihDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25u
ZWN0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYlByb2Nlc3NQcm94
eSo+KENoaWxkUHJvY2Vzc1Byb3h5Ojpmcm9tQ29ubmVjdGlvbihjb25uZWN0aW9uKSk7CiAgICAg
fQogCiAgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciopOwpAQCAtODks
OCArODIsNiBAQCBwdWJsaWM6CiAKICAgICBXZWJDb250ZXh0KiBjb250ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CiAKLSAgICBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVy
IHByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzTGF1bmNoZXItPnBy
b2Nlc3NJZGVudGlmaWVyKCk7IH0KLQogICAgIFdlYlBhZ2VQcm94eSogd2ViUGFnZSh1aW50NjRf
dCBwYWdlSUQpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQ
YWdlKFBhZ2VDbGllbnQqLCBXZWJDb250ZXh0KiwgV2ViUGFnZUdyb3VwKik7CiAgICAgdm9pZCBh
ZGRFeGlzdGluZ1dlYlBhZ2UoV2ViUGFnZVByb3h5KiwgdWludDY0X3QgcGFnZUlEKTsKQEAgLTEw
NSwxMCArOTYsNiBAQCBwdWJsaWM6CiAKICAgICBSZXNwb25zaXZlbmVzc1RpbWVyKiByZXNwb25z
aXZlbmVzc1RpbWVyKCkgeyByZXR1cm4gJm1fcmVzcG9uc2l2ZW5lc3NUaW1lcjsgfQogCi0gICAg
Ym9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9Ci0gICAgYm9vbCBp
c0xhdW5jaGluZygpIGNvbnN0OwotICAgIGJvb2wgY2FuU2VuZE1lc3NhZ2UoKSBjb25zdCB7IHJl
dHVybiBpc1ZhbGlkKCkgfHwgaXNMYXVuY2hpbmcoKTsgfQotCiAgICAgV2ViRnJhbWVQcm94eSog
d2ViRnJhbWUodWludDY0X3QpIGNvbnN0OwogICAgIGJvb2wgY2FuQ3JlYXRlRnJhbWUodWludDY0
X3QgZnJhbWVJRCkgY29uc3Q7CiAgICAgdm9pZCBmcmFtZUNyZWF0ZWQodWludDY0X3QsIFdlYkZy
YW1lUHJveHkqKTsKQEAgLTEzMCwxNiArMTE3LDEzIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgV2ViUHJvY2Vzc1Byb3h5KFBhc3NSZWZQdHI8V2ViQ29udGV4dD4pOwogCi0gICAg
Ly8gSW5pdGlhbGl6ZXMgdGhlIHByb2Nlc3MgbGF1bmNoZXIgd2hpY2ggd2lsbCBiZWdpbiBsYXVu
Y2hpbmcgdGhlIHByb2Nlc3MuCi0gICAgdm9pZCBjb25uZWN0KCk7Ci0gICAgdm9pZCBwbGF0Zm9y
bUNvbm5lY3QoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJik7CisgICAgdm9pZCBnZXRM
YXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYpOworICAgIHZvaWQg
cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYp
OwogCiAgICAgLy8gQ2FsbGVkIHdoZW4gdGhlIHdlYiBwcm9jZXNzIGhhcyBjcmFzaGVkIG9yIHdl
IGtub3cgdGhhdCBpdCB3aWxsIHRlcm1pbmF0ZSBzb29uLgogICAgIC8vIFdpbGwgcG90ZW50aWFs
bHkgY2F1c2UgdGhlIFdlYlByb2Nlc3NQcm94eSBvYmplY3QgdG8gYmUgZnJlZWQuCiAgICAgdm9p
ZCBkaXNjb25uZWN0KCk7CiAKLSAgICBib29sIHNlbmRNZXNzYWdlKENvcmVJUEM6Ok1lc3NhZ2VJ
RCwgUGFzc093blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4sIHVuc2lnbmVkIG1lc3NhZ2VT
ZW5kRmxhZ3MpOwotCiAgICAgLy8gQ29yZUlQQyBtZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQg
YWRkQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5h
bFVSTFN0cmluZywgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdGl0bGUs
IGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIGJhY2tGb3J3YXJkRGF0YSk7CiAgICAgdm9p
ZCBkaWREZXN0cm95RnJhbWUodWludDY0X3QpOwpAQCAtMTczLDEyICsxNTcsMTIgQEAgcHJpdmF0
ZToKIAogICAgIC8vIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIGZyaWVuZCBjbGFz
cyBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBD
OjpNZXNzYWdlRGVjb2RlciYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU3luY01lc3Nh
Z2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVz
c2FnZURlY29kZXImLCBPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+Jik7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgQ29yZUlQQzo6U3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VOYW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2Fn
ZURlY29kZXImKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1l
c3NhZ2VEZWNvZGVyJiwgT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpD
b25uZWN0aW9uKiwgQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgT1ZFUlJJREU7CiAjaWYgUExB
VEZPUk0oV0lOKQotICAgIHZpcnR1YWwgVmVjdG9yPEhXTkQ+IHdpbmRvd3NUb1JlY2VpdmVTZW50
TWVzc2FnZXNXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkoKTsKKyAgICB2aXJ0dWFsIFZlY3RvcjxI
V05EPiB3aW5kb3dzVG9SZWNlaXZlU2VudE1lc3NhZ2VzV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5
KCkgT1ZFUlJJREU7CiAjZW5kaWYKIAogICAgIC8vIENvcmVJUEM6OkNvbm5lY3Rpb246OlF1ZXVl
Q2xpZW50CkBAIC0xOTAsOSArMTc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEJlY29tZVJl
c3BvbnNpdmUoUmVzcG9uc2l2ZW5lc3NUaW1lciopIE9WRVJSSURFOwogCiAgICAgLy8gUHJvY2Vz
c0xhdW5jaGVyOjpDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFBy
b2Nlc3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwotCi0gICAg
dm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7
CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBD
b3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKSBPVkVSUklERTsKIAogICAgIC8vIEhpc3Rv
cnkgY2xpZW50CiAgICAgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSh1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmLCB1aW50NjRfdCBmcmFtZUlE
KTsKQEAgLTIwNywxNCArMTg5LDkgQEAgcHJpdmF0ZToKIAogICAgIFJlc3BvbnNpdmVuZXNzVGlt
ZXIgbV9yZXNwb25zaXZlbmVzc1RpbWVyOwogICAgIAotCi0gICAgUmVmUHRyPENvcmVJUEM6OkNv
bm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBSZWZQdHI8V2ViQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcz4gbV93ZWJDb25uZWN0aW9uOwogICAgIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCBt
X21lc3NhZ2VSZWNlaXZlck1hcDsKIAotICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29yZUlQQzo6Q29u
bmVjdGlvbjo6T3V0Z29pbmdNZXNzYWdlLCB1bnNpZ25lZD4gPiBtX3BlbmRpbmdNZXNzYWdlczsK
LSAgICBSZWZQdHI8UHJvY2Vzc0xhdW5jaGVyPiBtX3Byb2Nlc3NMYXVuY2hlcjsKLQogICAgIFJl
ZlB0cjxXZWJDb250ZXh0PiBtX2NvbnRleHQ7CiAKICAgICBib29sIG1fbWF5SGF2ZVVuaXZlcnNh
bEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbjsgLy8gVHJ1ZSBpZiBhIHJlYWQgZXh0ZW5zaW9uIGZv
ciAiLyIgd2FzIGV2ZXIgZ3JhbnRlZCAtIHdlIGRvbid0IHRyYWNrIHdoZXRoZXIgV2ViUHJvY2Vz
cyBzdGlsbCBoYXMgaXQuCkBAIC0yMjgsMjggKzIwNSw2IEBAIHByaXZhdGU6CiAgICAgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTsKICNlbmRp
ZgogfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpzZW5k
KGNvbnN0IFQmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVuc2lnbmVkIG1lc3Nh
Z2VTZW5kRmxhZ3MpCi17Ci0gICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNz
YWdlRXhwZWN0ZWQpOwotCi0gICAgT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiBlbmNv
ZGVyID0gQ29yZUlQQzo6TWVzc2FnZUVuY29kZXI6OmNyZWF0ZShUOjpyZWNlaXZlck5hbWUoKSwg
VDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZSk7
Ci0KLSAgICByZXR1cm4gc2VuZE1lc3NhZ2UoQ29yZUlQQzo6TWVzc2FnZUlEKFQ6Om1lc3NhZ2VJ
RCksIGVuY29kZXIucmVsZWFzZSgpLCBtZXNzYWdlU2VuZEZsYWdzKTsKLX0KLQotdGVtcGxhdGU8
dHlwZW5hbWUgVT4gCi1ib29sIFdlYlByb2Nlc3NQcm94eTo6c2VuZFN5bmMoY29uc3QgVSYgbWVz
c2FnZSwgY29uc3QgdHlwZW5hbWUgVTo6UmVwbHkmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlv
bklELCBkb3VibGUgdGltZW91dCkKLXsKLSAgICBDT01QSUxFX0FTU0VSVChVOjppc1N5bmMsIFN5
bmNNZXNzYWdlRXhwZWN0ZWQpOwotCi0gICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIHJldHVybiBjb25uZWN0aW9uKCktPnNlbmRTeW5jKG1lc3NhZ2Us
IHJlcGx5LCBkZXN0aW5hdGlvbklELCB0aW1lb3V0KTsKLX0KICAgICAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMTM2NTMwKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDExIEBAIE5ldHdvcmtQcm9jZXNzUHJveHk6Ok5ldHdv
cmtQcm9jZXNzUHJveHkKICAgICA6IG1fbmV0d29ya1Byb2Nlc3NNYW5hZ2VyKG1hbmFnZXIpCiAg
ICAgLCBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHMoMCkKIHsKLSAgICBQcm9jZXNzTGF1
bmNoZXI6OkxhdW5jaE9wdGlvbnMgbGF1bmNoT3B0aW9uczsKKyAgICBjb25uZWN0KCk7Cit9CisK
K3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNo
ZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMpCit7CiAgICAgbGF1bmNoT3B0aW9ucy5w
cm9jZXNzVHlwZSA9IFByb2Nlc3NMYXVuY2hlcjo6TmV0d29ya1Byb2Nlc3M7CiAKICNpZiBQTEFU
Rk9STShNQUMpCkBAIC01OCwyNSArNjIsMjIgQEAgTmV0d29ya1Byb2Nlc3NQcm94eTo6TmV0d29y
a1Byb2Nlc3NQcm94eQogICAgIGxhdW5jaE9wdGlvbnMudXNlWFBDID0gZmFsc2U7CiAjZW5kaWYK
ICNlbmRpZgotCi0gICAgbV9wcm9jZXNzTGF1bmNoZXIgPSBQcm9jZXNzTGF1bmNoZXI6OmNyZWF0
ZSh0aGlzLCBsYXVuY2hPcHRpb25zKTsKIH0KIAogTmV0d29ya1Byb2Nlc3NQcm94eTo6fk5ldHdv
cmtQcm9jZXNzUHJveHkoKQogewotCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5KQog
ewogICAgIG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmFwcGVuZChyZXBseSk7CiAKLSAgICBp
ZiAobV9wcm9jZXNzTGF1bmNoZXItPmlzTGF1bmNoaW5nKCkpIHsKKyAgICBpZiAoaXNMYXVuY2hp
bmcoKSkgewogICAgICAgICBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHMrKzsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OkNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCksIDAsIENv
cmVJUEM6OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAg
Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q3JlYXRlTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSwgMCwgQ29yZUlQQzo6RGlzcGF0Y2hNZXNzYWdlRXZl
bldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCkKQEAgLTExNCwxMiArMTE1
LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShDb3JlSQogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25u
ZWN0aW9uKiwgQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlLCBDb3JlSVBDOjpTdHJpbmdSZWZlcmVu
Y2UpCiB7Ci0KLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzeW5jTWVzc2FnZVNlbmRU
aW1lZE91dChDb3JlSVBDOjpDb25uZWN0aW9uKikKLXsKLQogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbnN0IENv
cmVJUEM6OkF0dGFjaG1lbnQmIGNvbm5lY3Rpb25JZGVudGlmaWVyKQpAQCAtMTM2LDM2ICsxMzEs
MjkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVOZXR3bwogI2VuZGlmCiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NM
YXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50
aWZpZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9j
ZXNzTGF1bmNoZXIqIGxhdW5jaGVyLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNv
bm5lY3Rpb25JZGVudGlmaWVyKQogewotICAgIEFTU0VSVCghbV9jb25uZWN0aW9uKTsKKyAgICBD
aGlsZFByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKGxhdW5jaGVyLCBjb25uZWN0aW9u
SWRlbnRpZmllcik7CiAKICAgICBpZiAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklz
TnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikpIHsKICAgICAgICAgLy8gRklYTUU6IERvIGJldHRl
ciBjbGVhbnVwIGhlcmUuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2Nvbm5lY3Rp
b24gPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rp
b25JZGVudGlmaWVyLCB0aGlzLCBSdW5Mb29wOjptYWluKCkpOwotI2lmIFBMQVRGT1JNKE1BQykK
LSAgICBtX2Nvbm5lY3Rpb24tPnNldFNob3VsZENsb3NlQ29ubmVjdGlvbk9uTWFjaEV4Y2VwdGlv
bnMoKTsKLSNlbmRpZgotCi0gICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7Ci0KICAgICBOZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBsYXRmb3JtSW5pdGlh
bGl6ZU5ldHdvcmtQcm9jZXNzKHBhcmFtZXRlcnMpOwogCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUg
bmV0d29yayBob3N0IHByb2Nlc3MuCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6SW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKHBhcmFtZXRlcnMpLCAwKTsK
KyAgICBjb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpJbml0aWFs
aXplTmV0d29ya1Byb2Nlc3MocGFyYW1ldGVycyksIDApOwogCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0czsgKytpKQotICAgICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDcmVhdGVOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLCAwKTsKKyAgICAgICAgY29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoKSwgMCk7CiAgICAgCiAgICAgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzID0g
MDsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoV2ViQ29udGV4dDo6YXBwbGljYXRpb25J
c09jY2x1ZGVkKCkpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKSwgMCk7CisgICAgICAgIGNv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEFwcGxpY2F0aW9u
SXNPY2NsdWRlZCh0cnVlKSwgMCk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2
aXNpb24gMTM2NTMwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQogCisjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzUHJveHkuaCIK
ICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0xhdW5jaGVyLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKQEAgLTM4LDE1ICszOSwxMyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzTWFuYWdlcjsKIHN0cnVjdCBO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIAotY2xhc3MgTmV0d29ya1Byb2Nlc3NQ
cm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtQcm9jZXNzUHJveHk+LCBDb3JlSVBDOjpD
b25uZWN0aW9uOjpDbGllbnQsIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50IHsKK2NsYXNzIE5ldHdv
cmtQcm9jZXNzUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxOZXR3b3JrUHJvY2Vzc1Byb3h5Piwg
cHVibGljIENoaWxkUHJvY2Vzc1Byb3h5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiBjcmVhdGUoTmV0d29ya1Byb2Nlc3NNYW5hZ2VyKik7CiAg
ICAgfk5ldHdvcmtQcm9jZXNzUHJveHkoKTsKIAogICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKIAotICAgIGJvb2wgaXNWYWxpZCgp
IGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbjsgfQotCiAjaWYgUExBVEZPUk0oTUFDKQogICAg
IHZvaWQgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wpOwogI2VuZGlmCkBAIC01NCwxNSAr
NTMsMTUgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5KE5ldHdv
cmtQcm9jZXNzTWFuYWdlciopOwogCisgICAgdmlydHVhbCB2b2lkIGdldExhdW5jaE9wdGlvbnMo
UHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJikgT1ZFUlJJREU7CiAgICAgdm9pZCBwbGF0
Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyYpOwogCiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNo
KCk7CiAKICAgICAvLyBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3Nh
Z2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xv
c2UoQ29yZUlQQzo6Q29ubmVjdGlvbiopOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5h
bWUpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jTWVzc2FnZVNlbmRUaW1lZE91dChDb3JlSVBDOjpD
b25uZWN0aW9uKik7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6
OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVy
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rp
b24qKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBPVkVSUklE
RTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3Jr
UHJvY2Vzc1Byb3h5TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2Fn
ZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwpAQCAtNzEsMTIgKzcwLDYgQEAgcHJpdmF0
ZToKICAgICAvLyBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllcik7CiAKLSAgICAvLyBUaGUgY29ubmVjdGlvbiB0byB0aGUgbmV0d29yayBwcm9jZXNz
LgotICAgIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247Ci0KLSAgICAv
LyBUaGUgcHJvY2VzcyBsYXVuY2hlciBmb3IgdGhlIG5ldHdvcmsgcHJvY2Vzcy4KLSAgICBSZWZQ
dHI8UHJvY2Vzc0xhdW5jaGVyPiBtX3Byb2Nlc3NMYXVuY2hlcjsKLQogICAgIE5ldHdvcmtQcm9j
ZXNzTWFuYWdlciogbV9uZXR3b3JrUHJvY2Vzc01hbmFnZXI7CiAgICAgCiAgICAgdW5zaWduZWQg
bV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05ldHdvcmsvbWFjL05ldHdvcmtQcm9jZXNzUHJveHlNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvbWFjL05ldHdvcmtQcm9jZXNzUHJv
eHlNYWMubW0JKHJldmlzaW9uIDEzNjUzMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL21hYy9OZXR3b3JrUHJvY2Vzc1Byb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00
NSw3ICs0NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0QXBwbGljYXRpb24KICAg
ICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRl
ZChhcHBsaWNhdGlvbklzT2NjbHVkZWQpLCAwKTsKKyAgICBjb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoYXBwbGljYXRp
b25Jc09jY2x1ZGVkKSwgMCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQcm9jZXNzUHJveHlFZmwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Byb3h5RWZsLmNw
cAkocmV2aXNpb24gMTM2NTMwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQ
cm9jZXNzUHJveHlFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6cGxhdGZvcm1Db25uZWN0
KFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucykKK3ZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpM
YXVuY2hPcHRpb25zJiBsYXVuY2hPcHRpb25zKQogewogI2lmbmRlZiBOREVCVUcKICAgICBjb25z
dCBjaGFyKiB3ZWJQcm9jZXNzQ21kUHJlZml4ID0gZ2V0ZW52KCJXRUJfUFJPQ0VTU19DTURfUFJF
RklYIik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQcm94
eUd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQ
cm9jZXNzUHJveHlHdGsuY3BwCShyZXZpc2lvbiAxMzY1MzApCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQcm94eUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpwbGF0Zm9ybUNvbm5lY3QoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJikKK3ZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVy
OjpMYXVuY2hPcHRpb25zJikKIHsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XZWJQcm9jZXNzUHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9XZWJQcm9jZXNzUHJveHlNYWMubW0JKHJldmlzaW9uIDEzNjUzMCkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1Byb3h5TWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjMsNyArMTYzLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkVXNlWFBDKCkK
IH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6cGxhdGZvcm1Db25uZWN0KFByb2Nl
c3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucykKK3ZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpwbGF0Zm9ybUdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hP
cHRpb25zJiBsYXVuY2hPcHRpb25zKQogewogICAgIC8vIFdlIHdhbnQgdGhlIHdlYiBwcm9jZXNz
IHRvIG1hdGNoIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIFVJIHByb2Nlc3MuCiAgICAgbGF1bmNo
T3B0aW9ucy5hcmNoaXRlY3R1cmUgPSBQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnM6Ok1h
dGNoQ3VycmVudEFyY2hpdGVjdHVyZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9XZWJQcm9jZXNzUHJveHlRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1dlYlByb2Nlc3NQcm94eVF0LmNwcAkocmV2aXNpb24gMTM2NTMwKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlByb2Nlc3NQcm94eVF0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnBsYXRmb3JtQ29ubmVjdChQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlv
bnMmKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNoT3B0aW9ucyhQcm9j
ZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQcm94eVdpbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUHJveHlXaW4uY3BwCShyZXZpc2lv
biAxMzY1MzApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQcm94
eVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgVmVjdG9yPEhXTkQ+IFdl
YlByb2Nlc3NQcm94eTo6d2luZG93c1RvUgogICAgIHJldHVybiBWZWN0b3I8SFdORD4oKTsKIH0K
IAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtQ29ubmVjdChQcm9jZXNzTGF1bmNoZXI6
OkxhdW5jaE9wdGlvbnMmKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNo
T3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmKQogewogfQogCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxMzY1MzApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwMjMsNiArMTAyMyw4IEBACiAJCUUxMzRG
MDE3MTJFQTVEMzMwMDRFQzU4RCAvKiBXS1ByaW50aW5nVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEzNEYwMTUxMkVBNUQxMTAwNEVDNThEIC8q
IFdLUHJpbnRpbmdWaWV3LmggKi87IH07CiAJCUUxMzRGMDFBMTJFQTVEOTkwMDRFQzU4RCAvKiBX
S1ByaW50aW5nVmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxMzRGMDE5MTJFQTVEOTkwMDRFQzU4RCAvKiBXS1ByaW50aW5nVmlldy5tbSAqLzsg
fTsKIAkJRTEzQThBMzAxNjI4NzlBQzAwMzkyOTI5IC8qIENvY29hLmZyYW1ld29yayBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxM0E4QTJGMTYyODc5
QUMwMDM5MjkyOSAvKiBDb2NvYS5mcmFtZXdvcmsgKi87IH07CisJCUUxNTEzQzY2MTY2RUFCQjIw
MDE0OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTUxM0M2NDE2NkVBQkIyMDAxNDlGQ0IgLyogQ2hpbGRQ
cm9jZXNzUHJveHkuY3BwICovOyB9OworCQlFMTUxM0M2NzE2NkVBQkIyMDAxNDlGQ0IgLyogQ2hp
bGRQcm9jZXNzUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxNTEzQzY1MTY2RUFCQjIwMDE0OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94eS5oICov
OyB9OwogCQlFMTc5RkQ5QzEzNEQzODA2MDAxNUI4ODMgLyogQXJndW1lbnRDb2RlcnNNYWMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzlGRDlCMTM0
RDM4MDYwMDE1Qjg4MyAvKiBBcmd1bWVudENvZGVyc01hYy5oICovOyB9OwogCQlFMTc5RkQ5RjEz
NEQzODI1MDAxNUI4ODMgLyogQXJndW1lbnRDb2RlcnNNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTc5RkQ5RTEzNEQzODI1MDAxNUI4ODMgLyog
QXJndW1lbnRDb2RlcnNNYWMubW0gKi87IH07CiAJCUUxN0JGOTk2MTREMEE3M0UwMEE1QTA2OSAv
KiBOZXRzY2FwZVNhbmRib3hGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxN0JGOTk1MTREMEE3M0UwMEE1QTA2OSAvKiBOZXRzY2FwZVNh
bmRib3hGdW5jdGlvbnMuaCAqLzsgfTsKQEAgLTIzMjAsNiArMjMyMiw4IEBACiAJCUUxM0E4QTRC
MTYyODdBMUIwMDM5MjkyOSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzLnhjY29uZmlnICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsg
cGF0aCA9IFNoYXJlZFdvcmtlclByb2Nlc3MueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUxNEU5OUY4MTREODc5QjQwMDFEMjIxRiAvKiBQbHVnaW5Qcm9jZXNzLmVudGl0
bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQueG1sOyBwYXRoID0gUGx1Z2luUHJvY2Vzcy5lbnRpdGxlbWVudHM7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxNEU5OUY5MTREODc5QzkwMDFEMjIxRiAvKiBhZGQtZW50aXRs
ZW1lbnRzLnNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5zY3JpcHQuc2g7IHBhdGggPSAiYWRkLWVudGl0bGVtZW50cy5zaCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxNTEzQzY0MTY2RUFCQjIwMDE0OUZDQiAvKiBDaGlsZFBy
b2Nlc3NQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDaGls
ZFByb2Nlc3NQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxNTEzQzY1
MTY2RUFCQjIwMDE0OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDaGlsZFByb2Nlc3NQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMTc5RkQ5QjEzNEQzODA2MDAxNUI4ODMgLyogQXJndW1lbnRDb2RlcnNNYWMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJndW1lbnRDb2RlcnNNYWMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3OUZEOUUxMzREMzgyNTAwMTVCODgzIC8q
IEFyZ3VtZW50Q29kZXJzTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gQXJndW1lbnRDb2RlcnNNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUxN0JGOTk1MTREMEE3M0UwMEE1QTA2OSAvKiBOZXRzY2FwZVNhbmRib3hGdW5jdGlvbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0c2NhcGVTYW5kYm94RnVuY3Rpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzcwLDYgKzI3NzQsOCBAQAogCQkJ
CUJDMzA2NUY5MTI1OTM0NEUwMEU3MTI3OCAvKiBDYWNoZU1vZGVsLmggKi8sCiAJCQkJMUEyRDk1
NkUxMjg0ODU2NDAwMUVCOTYyIC8qIENoaWxkUHJvY2Vzcy5jcHAgKi8sCiAJCQkJMUEyRDk1NkQx
Mjg0ODU2NDAwMUVCOTYyIC8qIENoaWxkUHJvY2Vzcy5oICovLAorCQkJCUUxNTEzQzY0MTY2RUFC
QjIwMDE0OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94eS5jcHAgKi8sCisJCQkJRTE1MTNDNjUxNjZF
QUJCMjAwMTQ5RkNCIC8qIENoaWxkUHJvY2Vzc1Byb3h5LmggKi8sCiAJCQkJMUE2RjlGOEUxMUUx
M0VGQzAwREIxMzcxIC8qIENvbW1hbmRMaW5lLmggKi8sCiAJCQkJNTEzNjE4M0IxNjMxMjZEQTAw
QTk5RERFIC8qIENvbm5lY3Rpb25TdGFjay5jcHAgKi8sCiAJCQkJNTEzNjE4M0MxNjMxMjZEQTAw
QTk5RERFIC8qIENvbm5lY3Rpb25TdGFjay5oICovLApAQCAtNTAxNiw2ICs1MDIyLDcgQEAKIAkJ
CQk1MTc1OTQ0QjE2NTcwODA0MDBERDc3MUQgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOEFDQTEzMTY2NzBEODkwMDRDMTk0MSAvKiBPYmpD
T2JqZWN0R3JhcGguaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOEFDQTE1MTY2NzBEODkwMDRDMTk0
MSAvKiBPYmpDT2JqZWN0R3JhcGhDb2RlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUxNTEzQzY3
MTY2RUFCQjIwMDE0OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC01OTcyLDYgKzU5NzksNyBAQAogCQkJCTUxNzU5NDRBMTY1NzA4MDQwMERENzcxRCAvKiBOZXR3
b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM4QUNBMTQxNjY3MEQ4OTAwNEMxOTQxIC8qIE9iakNPYmplY3RHcmFwaC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDOEFDQTE2MTY2NzBEODkwMDRDMTk0MSAvKiBPYmpDT2JqZWN0R3JhcGhDb2Rl
cnMubW0gaW4gU291cmNlcyAqLywKKwkJCQlFMTUxM0M2NjE2NkVBQkIyMDAxNDlGQ0IgLyogQ2hp
bGRQcm9jZXNzUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi93
aW4vV2ViS2l0Mi52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvd2luL1dlYktp
dDIudmNwcm9qCShyZXZpc2lvbiAxMzY1MzApCisrKyBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0
Mi52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTQyMyw2ICs0MjMsMTQgQEAKIAkJCQk+CiAJCQk8
L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXENoaWxkUHJvY2Vz
c1Byb3h5LmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cU2hhcmVkXENoaWxkUHJvY2Vzc1Byb3h5LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxDb21tYW5kTGluZS5oIgogCQkJCT4K
IAkJCTwvRmlsZT4K
</data>
<flag name="review"
          id="194067"
          type_id="1"
          status="+"
          setter="andersca"
    />
    <flag name="commit-queue"
          id="194082"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177812</attachid>
            <date>2012-12-05 12:47:56 -0800</date>
            <delta_ts>2012-12-05 12:47:56 -0800</delta_ts>
            <desc>with a Windows build fix</desc>
            <filename>ChildProcessProxy.txt</filename>
            <type>text/plain</type>
            <size>44298</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNjczNSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc4IEBACisyMDEyLTEyLTA1ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFdvdWxkIGxpa2Ug
dG8gcXVldWUgbWVzc2FnZXMgd2hpbGUgTmV0d29ya1Byb2Nlc3MgaXMgbGF1bmNoaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQxNDMKKworICAg
ICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCisKKyAgICAgICAgRmFjdG9yZWQgb3V0
IHByb2Nlc3MgbGF1bmNoaW5nIGFuZCBtZXNzYWdlIHNlbmRpbmcgY29kZSB0byBhIENoaWxkUHJv
Y2Vzc1Byb3h5IGNsYXNzLgorICAgICAgICBQcm9jZXNzIGNsb3NpbmcgYW5kIGNyYXNoaW5nIGNv
ZGUgc2hvdWxkIGJlIG1vdmVkIG9uY2Ugd2UgYmV0dGVyIHVuZGVyc3RhbmQgY29tbW9uCisgICAg
ICAgIHJlcXVpcmVtZW50cyBmb3IgdGhlIHByb2Nlc3Nlcy4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0
LnByaToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogd2luL1dlYktpdDIudmNwcm9qOgorICAgICAgICBBZGRlZCBDaGlsZFByb2Nlc3NQcm94
eSBmaWxlcy4KKworICAgICAgICAqIFNoYXJlZC9DaGlsZFByb2Nlc3NQcm94eS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NQcm94eTo6Q2hpbGRQcm9jZXNzUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NQcm94eTo6fkNoaWxkUHJvY2Vzc1Byb3h5
KToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzUHJveHk6OmZyb21Db25uZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzUHJveHk6OmNvbm5lY3QpOgorICAgICAgICAo
V2ViS2l0OjpDaGlsZFByb2Nlc3NQcm94eTo6dGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6
Q2hpbGRQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQ
cm9jZXNzUHJveHk6OmlzTGF1bmNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNz
UHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vz
c1Byb3h5OjpjbGVhckNvbm5lY3Rpb24pOgorICAgICAgICAqIFNoYXJlZC9DaGlsZFByb2Nlc3NQ
cm94eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzUHJveHk6OmNvbm5l
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NQcm94eTo6aXNWYWxpZCk6Cisg
ICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc1Byb3h5OjpjYW5TZW5kTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzSWRlbnRpZmllcik6CisgICAg
ICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc1Byb3h5OjpzZW5kKToKKyAgICAgICAgKFdlYktpdDo6
Q2hpbGRQcm9jZXNzUHJveHk6OnNlbmRTeW5jKToKKyAgICAgICAgTW92ZWQgY29kZSBmcm9tIFdl
YlByb2Nlc3NQcm94eS4gRXZlcnkgQ2hpbGRQcm9jZXNzUHJveHkgaXMgYSBjb25uZWN0aW9uIGNs
aWVudCwKKyAgICAgICAgYnV0IGV2ZXJ5IG9uZSBpcyBhIGNvbm5lY3Rpb24gcXVldWUgY2xpZW50
LCBzbyB0aGF0IGxhdHRlciBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIFJlbW92ZWQgdW51
c2VkIHN5bmNNZXNzYWdlU2VuZFRpbWVkT3V0KCksIHRoYW5rIHlvdSBPVkVSUklERS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpOZXR3b3JrUHJvY2Vzc1Byb3h5KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6On5OZXR3b3JrUHJvY2Vzc1Byb3h5
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlk
RmluaXNoTGF1bmNoaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvbWFjL05ldHdvcmtQcm9j
ZXNzUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNl
dEFwcGxpY2F0aW9uSXNPY2NsdWRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1By
b3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp+V2ViUHJvY2Vzc1Byb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaXNjb25uZWN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOgorICAgICAgICBV
c2Ugc2hhcmVkIGNvZGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZnJvbUNvbm5lY3Rpb24pOgorICAgICAgICBOZXR3
b3JrUHJvY2VzcyBpbmhlcml0cyBmcm9tIGNvbm5lY2l0b24gY2xpZW50IHByaXZhdGVseSwgc28g
d2UgbmVlZCB0byBkbyBtb3N0CisgICAgICAgIG9mIHRoZSB3b3JrIGluIENsaWVudFByb2Nlc3NQ
cm94eSwgYW5kIGZ1cnRoZXIgdXBjYXN0IGhlcmUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZs
L1dlYlByb2Nlc3NQcm94eUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94
eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dl
YlByb2Nlc3NQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBy
b2Nlc3NQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpwbGF0
Zm9ybUdldExhdW5jaE9wdGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJQcm9jZXNz
UHJveHlRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cGxhdGZvcm1H
ZXRMYXVuY2hPcHRpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQcm94
eVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cGxhdGZvcm1HZXRM
YXVuY2hPcHRpb25zKToKKyAgICAgICAgVXBkYXRlZCBmb3IgcmVuYW1pbmcsIHBsYXRmb3JtQ29u
bmVjdCAtPiBwbGF0Zm9ybUdldExhdW5jaE9wdGlvbnMoKS4KKwogMjAxMi0xMi0wNSAgTWljaGFl
bCBCcsO8bmluZyAgPG1pY2hhZWwuYnJ1bmluZ0BkaWdpYS5jb20+CiAKICAgICAgICAgRml4IGNv
bXBpbGF0aW9uIGZvciBRdDUuMC4wIHN0YWJsZSBicmFuY2guCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMTM2NzM1KQorKysgU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEzNyw2ICsxMzcsNyBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAg
ICAgU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHAKICAgICBTaGFyZWQvQVBJT2JqZWN0LmNwcAog
ICAgIFNoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCisgICAgU2hhcmVkL0NoaWxkUHJvY2Vzc1Byb3h5
LmNwcAogICAgIFNoYXJlZC9Db25uZWN0aW9uU3RhY2suY3BwCiAgICAgU2hhcmVkL0RpY3Rpb25h
cnlQb3B1cEluZm8uY3BwCiAgICAgU2hhcmVkL0VkaXRvclN0YXRlLmNwcApJbmRleDogU291cmNl
L1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMzY3MzUpCisrKyBTb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zNjksNiArMzY5LDggQEAg
d2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2FjaGVNb2RlbC5o
IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcCBcCiAJU291cmNlL1dl
YktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hp
bGRQcm9jZXNzUHJveHkuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNz
UHJveHkuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0NvbW1hbmRMaW5lLmggXAogCVNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db25uZWN0aW9uU3RhY2suY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29ubmVjdGlvblN0YWNrLmggXApAQCAtMTI3NCw2ICsxMjc2LDggQEAgd2Via2l0Ml9w
bHVnaW5fcHJvY2Vzc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXguY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hp
bGRQcm9jZXNzLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5oIFwK
KwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzUHJveHkuY3BwIFwKKwlTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzUHJveHkuaCBcCiAJU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvbm5lY3Rpb25TdGFjay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db25uZWN0
aW9uU3RhY2suaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0
aC5oIFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVGFyZ2V0LnByaQkocmV2aXNpb24gMTM2NzM1KQorKysgU291cmNlL1dlYktp
dDIvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQCBIRUFERVJTICs9
IFwKICAgICBTaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5oIFwKICAgICBTaGFyZWQvQ2FjaGVNb2Rl
bC5oIFwKICAgICBTaGFyZWQvQ2hpbGRQcm9jZXNzLmggXAorICAgIFNoYXJlZC9DaGlsZFByb2Nl
c3NQcm94eS5oIFwKICAgICBTaGFyZWQvQ29ubmVjdGlvblN0YWNrLmggXAogICAgIFNoYXJlZC9E
aWN0aW9uYXJ5UG9wdXBJbmZvLmggXAogICAgIFNoYXJlZC9FZGl0b3JTdGF0ZS5oIFwKQEAgLTQ1
MCw2ICs0NTEsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBTaGFyZWQvUGx1Z2lucy9QbHVnaW5Nb2R1
bGVJbmZvLmNwcCBcCiAgICAgU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHAgXAogICAgIFNoYXJlZC9DaGlsZFByb2Nlc3MuY3BwIFwKKyAgICBTaGFyZWQv
Q2hpbGRQcm9jZXNzUHJveHkuY3BwIFwKICAgICBTaGFyZWQvQ29ubmVjdGlvblN0YWNrLmNwcCBc
CiAgICAgU2hhcmVkL0RpY3Rpb25hcnlQb3B1cEluZm8uY3BwIFwKICAgICBTaGFyZWQvRWRpdG9y
U3RhdGUuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDEzNjczNSkKKysrIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsMTAg
KzkyLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZQogICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS0+c3RvcCgpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpzeW5j
TWVzc2FnZVNlbmRUaW1lZE91dChDb3JlSVBDOjpDb25uZWN0aW9uKikKLXsKLX0KLQogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIHBsYXRmb3JtSW5pdGlh
bGl6ZShwYXJhbWV0ZXJzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAkocmV2aXNpb24gMTM2NzM1KQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNTksMTMg
KzU5LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKIAogICAgIC8vIENoaWxkUHJvY2Vzcwot
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRUZXJtaW5hdGUoKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkVGVybWluYXRlKCkgT1ZFUlJJREU7CiAKICAgICAvLyBDb3JlSVBDOjpDb25uZWN0aW9uOjpD
bGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVj
dGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UoQ29yZUlQQzo6Q29ubmVjdGlvbiopOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENv
cmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBDb3JlSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jTWVzc2FnZVNl
bmRUaW1lZE91dChDb3JlSVBDOjpDb25uZWN0aW9uKik7CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENv
cmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENs
b3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VOYW1lKSBPVkVSUklERTsKIAogICAgIC8vIE1lc3NhZ2UgSGFuZGxlcnMKICAgICB2
b2lkIGRpZFJlY2VpdmVOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbios
IENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkNoaWxkUHJvY2Vzc1Byb3h5LmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL1J1bkxv
b3AuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitDaGlsZFByb2Nlc3NQcm94eTo6Q2hpbGRQcm9jZXNzUHJveHkoQ29yZUlQQzo6Q29ubmVjdGlv
bjo6UXVldWVDbGllbnQqIHF1ZXVlQ2xpZW50KQorICAgIDogbV9xdWV1ZUNsaWVudChxdWV1ZUNs
aWVudCkKK3sKK30KKworQ2hpbGRQcm9jZXNzUHJveHk6On5DaGlsZFByb2Nlc3NQcm94eSgpCit7
CisgICAgaWYgKG1fY29ubmVjdGlvbikKKyAgICAgICAgbV9jb25uZWN0aW9uLT5pbnZhbGlkYXRl
KCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcGVuZGluZ01lc3NhZ2VzLnNpemUo
KTsgKytpKQorICAgICAgICBtX3BlbmRpbmdNZXNzYWdlc1tpXS5maXJzdC5yZWxlYXNlQXJndW1l
bnRzKCk7CisKKyAgICBpZiAobV9wcm9jZXNzTGF1bmNoZXIpIHsKKyAgICAgICAgbV9wcm9jZXNz
TGF1bmNoZXItPmludmFsaWRhdGUoKTsKKyAgICAgICAgbV9wcm9jZXNzTGF1bmNoZXIgPSAwOwor
ICAgIH0KK30KKworQ2hpbGRQcm9jZXNzUHJveHkqIENoaWxkUHJvY2Vzc1Byb3h5Ojpmcm9tQ29u
bmVjdGlvbihDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKQoreworICAgIEFTU0VSVChj
b25uZWN0aW9uKTsKKworICAgIENoaWxkUHJvY2Vzc1Byb3h5KiBjaGlsZFByb2Nlc3NQcm94eSA9
IHN0YXRpY19jYXN0PENoaWxkUHJvY2Vzc1Byb3h5Kj4oY29ubmVjdGlvbi0+Y2xpZW50KCkpOwor
ICAgIEFTU0VSVChjaGlsZFByb2Nlc3NQcm94eS0+Y29ubmVjdGlvbigpID09IGNvbm5lY3Rpb24p
OworCisgICAgcmV0dXJuIGNoaWxkUHJvY2Vzc1Byb3h5OworfQorCit2b2lkIENoaWxkUHJvY2Vz
c1Byb3h5Ojpjb25uZWN0KCkKK3sKKyAgICBBU1NFUlQoIW1fcHJvY2Vzc0xhdW5jaGVyKTsKKyAg
ICBQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMgbGF1bmNoT3B0aW9uczsKKyAgICBnZXRM
YXVuY2hPcHRpb25zKGxhdW5jaE9wdGlvbnMpOworICAgIG1fcHJvY2Vzc0xhdW5jaGVyID0gUHJv
Y2Vzc0xhdW5jaGVyOjpjcmVhdGUodGhpcywgbGF1bmNoT3B0aW9ucyk7Cit9CisKK3ZvaWQgQ2hp
bGRQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZSgpCit7CisgICAgaWYgKG1fcHJvY2Vzc0xhdW5jaGVy
KQorICAgICAgICBtX3Byb2Nlc3NMYXVuY2hlci0+dGVybWluYXRlUHJvY2VzcygpOworfQorCiti
b29sIENoaWxkUHJvY2Vzc1Byb3h5OjpzZW5kTWVzc2FnZShDb3JlSVBDOjpNZXNzYWdlSUQgbWVz
c2FnZUlELCBQYXNzT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyLCB1bnNp
Z25lZCBtZXNzYWdlU2VuZEZsYWdzKQoreworICAgIC8vIElmIHdlJ3JlIHdhaXRpbmcgZm9yIHRo
ZSB3ZWIgcHJvY2VzcyB0byBsYXVuY2gsIHdlIG5lZWQgdG8gc3Rhc2ggYXdheSB0aGUgbWVzc2Fn
ZXMgc28gd2UgY2FuIHNlbmQgdGhlbSBvbmNlIHdlIGhhdmUKKyAgICAvLyBhIENvcmVJUEMgY29u
bmVjdGlvbi4KKyAgICBpZiAoaXNMYXVuY2hpbmcoKSkgeworICAgICAgICBtX3BlbmRpbmdNZXNz
YWdlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoQ29yZUlQQzo6Q29ubmVjdGlvbjo6T3V0Z29pbmdN
ZXNzYWdlKG1lc3NhZ2VJRCwgZW5jb2RlciksIG1lc3NhZ2VTZW5kRmxhZ3MpKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gSWYgdGhlIHdlYiBwcm9jZXNzIGhhcyBleGl0
ZWQsIGNvbm5lY3Rpb24gd2lsbCBiZSBudWxsIGhlcmUuCisgICAgaWYgKCFjb25uZWN0aW9uKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBjb25uZWN0aW9uKCktPnNlbmRN
ZXNzYWdlKG1lc3NhZ2VJRCwgZW5jb2RlciwgbWVzc2FnZVNlbmRGbGFncyk7Cit9CisKK2Jvb2wg
Q2hpbGRQcm9jZXNzUHJveHk6OmlzTGF1bmNoaW5nKCkgY29uc3QKK3sKKyAgICBpZiAobV9wcm9j
ZXNzTGF1bmNoZXIpCisgICAgICAgIHJldHVybiBtX3Byb2Nlc3NMYXVuY2hlci0+aXNMYXVuY2hp
bmcoKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDaGlsZFByb2Nlc3NQcm94eTo6
ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKCFtX2Nvbm5l
Y3Rpb24pOworCisgICAgbV9jb25uZWN0aW9uID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRl
U2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgdGhpcywgUnVuTG9vcDo6bWFp
bigpKTsKKyNpZiBPUyhEQVJXSU4pCisgICAgbV9jb25uZWN0aW9uLT5zZXRTaG91bGRDbG9zZUNv
bm5lY3Rpb25Pbk1hY2hFeGNlcHRpb25zKCk7CisjZWxpZiBQTEFURk9STShRVCkgJiYgIU9TKFdJ
TkRPV1MpCisgICAgbV9jb25uZWN0aW9uLT5zZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25PblByb2Nl
c3NUZXJtaW5hdGlvbihwcm9jZXNzSWRlbnRpZmllcigpKTsKKyNlbmRpZgorCisgICAgaWYgKG1f
cXVldWVDbGllbnQpCisgICAgICAgIG1fY29ubmVjdGlvbi0+YWRkUXVldWVDbGllbnQobV9xdWV1
ZUNsaWVudCk7CisgICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7CisKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fcGVuZGluZ01lc3NhZ2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgIENvcmVJ
UEM6OkNvbm5lY3Rpb246Ok91dGdvaW5nTWVzc2FnZSYgb3V0Z29pbmdNZXNzYWdlID0gbV9wZW5k
aW5nTWVzc2FnZXNbaV0uZmlyc3Q7CisgICAgICAgIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3Mg
PSBtX3BlbmRpbmdNZXNzYWdlc1tpXS5zZWNvbmQ7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZE1lc3NhZ2Uob3V0Z29pbmdNZXNzYWdlLm1lc3NhZ2VJRCgpLCBhZG9wdFB0cihvdXRnb2luZ01l
c3NhZ2UuYXJndW1lbnRzKCkpLCBtZXNzYWdlU2VuZEZsYWdzKTsKKyAgICB9CisKKyAgICBtX3Bl
bmRpbmdNZXNzYWdlcy5jbGVhcigpOworfQorCit2b2lkIENoaWxkUHJvY2Vzc1Byb3h5OjpjbGVh
ckNvbm5lY3Rpb24oKQoreworICAgIGlmICghbV9jb25uZWN0aW9uKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAobV9xdWV1ZUNsaWVudCkKKyAgICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVR
dWV1ZUNsaWVudChtX3F1ZXVlQ2xpZW50KTsKKyAgICBtX2Nvbm5lY3Rpb24tPmludmFsaWRhdGUo
KTsKKyAgICBtX2Nvbm5lY3Rpb24gPSBudWxscHRyOworfQorCit9CgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzUHJveHkuY3BwCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9DaGlsZFByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEw
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ2hpbGRQcm9jZXNzUHJveHlfaAorI2RlZmluZSBD
aGlsZFByb2Nlc3NQcm94eV9oCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
UHJvY2Vzc0xhdW5jaGVyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBDaGlsZFBy
b2Nlc3NQcm94eSA6IFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50LCBwdWJsaWMgQ29yZUlQQzo6Q29u
bmVjdGlvbjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDaGlsZFByb2Nlc3NQ
cm94eSk7CisKK3B1YmxpYzoKKyAgICBDaGlsZFByb2Nlc3NQcm94eShDb3JlSVBDOjpDb25uZWN0
aW9uOjpRdWV1ZUNsaWVudCogPSAwKTsKKyAgICB2aXJ0dWFsIH5DaGlsZFByb2Nlc3NQcm94eSgp
OworCisgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gZG9lcyBhbiB1bmNoZWNrZWQgdXBjYXN0
LCBhbmQgaXQgaXMgb25seSB1c2VkIGluIGEgZGVwcmVjYXRlZCBjb2RlIHBhdGguIFdvdWxkIGxp
a2UgdG8gZ2V0IHJpZCBvZiBpdC4KKyAgICBzdGF0aWMgQ2hpbGRQcm9jZXNzUHJveHkqIGZyb21D
b25uZWN0aW9uKENvcmVJUEM6OkNvbm5lY3Rpb24qKTsKKworICAgIHZvaWQgY29ubmVjdCgpOwor
ICAgIHZvaWQgdGVybWluYXRlKCk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNl
bmQoY29uc3QgVCYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdW5zaWduZWQgbWVz
c2FnZVNlbmRGbGFncyA9IDApOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZFN5
bmMoY29uc3QgVSYgbWVzc2FnZSwgY29uc3QgdHlwZW5hbWUgVTo6UmVwbHkmLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklELCBkb3VibGUgdGltZW91dCA9IDEpOworICAgIAorICAgIENvcmVJUEM6OkNv
bm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY29u
bmVjdGlvbik7CisgICAgICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7CisgICAgfQorCisg
ICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9CisgICAgYm9v
bCBpc0xhdW5jaGluZygpIGNvbnN0OworICAgIGJvb2wgY2FuU2VuZE1lc3NhZ2UoKSBjb25zdCB7
IHJldHVybiBpc1ZhbGlkKCkgfHwgaXNMYXVuY2hpbmcoKTsgfQorCisgICAgUGxhdGZvcm1Qcm9j
ZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vz
c0xhdW5jaGVyLT5wcm9jZXNzSWRlbnRpZmllcigpOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lk
IGNsZWFyQ29ubmVjdGlvbigpOworCisgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIENvcmVJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIHZp
cnR1YWwgdm9pZCBnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9u
cyYpID0gMDsKKworICAgIGJvb2wgc2VuZE1lc3NhZ2UoQ29yZUlQQzo6TWVzc2FnZUlELCBQYXNz
T3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFn
cyk7CisKKyAgICBWZWN0b3I8c3RkOjpwYWlyPENvcmVJUEM6OkNvbm5lY3Rpb246Ok91dGdvaW5n
TWVzc2FnZSwgdW5zaWduZWQ+ID4gbV9wZW5kaW5nTWVzc2FnZXM7CisgICAgUmVmUHRyPFByb2Nl
c3NMYXVuY2hlcj4gbV9wcm9jZXNzTGF1bmNoZXI7CisgICAgUmVmUHRyPENvcmVJUEM6OkNvbm5l
Y3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpRdWV1ZUNsaWVu
dCogbV9xdWV1ZUNsaWVudDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citib29sIENoaWxk
UHJvY2Vzc1Byb3h5OjpzZW5kKGNvbnN0IFQmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MpCit7CisgICAgQ09NUElMRV9BU1NFUlQoIVQ6
OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOworCisgICAgT3duUHRyPENvcmVJUEM6Ok1l
c3NhZ2VFbmNvZGVyPiBlbmNvZGVyID0gQ29yZUlQQzo6TWVzc2FnZUVuY29kZXI6OmNyZWF0ZShU
OjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBlbmNvZGVy
LT5lbmNvZGUobWVzc2FnZSk7CisKKyAgICByZXR1cm4gc2VuZE1lc3NhZ2UoQ29yZUlQQzo6TWVz
c2FnZUlEKFQ6Om1lc3NhZ2VJRCksIGVuY29kZXIucmVsZWFzZSgpLCBtZXNzYWdlU2VuZEZsYWdz
KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVT4gCitib29sIENoaWxkUHJvY2Vzc1Byb3h5Ojpz
ZW5kU3luYyhjb25zdCBVJiBtZXNzYWdlLCBjb25zdCB0eXBlbmFtZSBVOjpSZXBseSYgcmVwbHks
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGRvdWJsZSB0aW1lb3V0KQoreworICAgIENPTVBJTEVf
QVNTRVJUKFU6OmlzU3luYywgU3luY01lc3NhZ2VFeHBlY3RlZCk7CisKKyAgICBpZiAoIW1fY29u
bmVjdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGNvbm5lY3Rpb24o
KS0+c2VuZFN5bmMobWVzc2FnZSwgcmVwbHksIGRlc3RpbmF0aW9uSUQsIHRpbWVvdXQpOworfQor
Cit9CisKKyNlbmRpZiAvLyBDaGlsZFByb2Nlc3NQcm94eV9oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzUHJveHkuaApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFk
ZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDEzNjczNSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05MCw3ICs5MCw4IEBAIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHIK
IH0KIAogV2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkoUGFzc1JlZlB0cjxXZWJDb250
ZXh0PiBjb250ZXh0KQotICAgIDogbV9yZXNwb25zaXZlbmVzc1RpbWVyKHRoaXMpCisgICAgOiBD
aGlsZFByb2Nlc3NQcm94eSh0aGlzKQorICAgICwgbV9yZXNwb25zaXZlbmVzc1RpbWVyKHRoaXMp
CiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fbWF5SGF2ZVVuaXZlcnNhbEZpbGVS
ZWFkU2FuZGJveEV4dGVuc2lvbihmYWxzZSkKICNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykK
QEAgLTEwMiw0OSArMTAzLDE5IEBAIFdlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KFBh
c3NSZWYKIAogV2ViUHJvY2Vzc1Byb3h5Ojp+V2ViUHJvY2Vzc1Byb3h5KCkKIHsKLSAgICBpZiAo
bV9jb25uZWN0aW9uKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKLQogICAg
IGlmIChtX3dlYkNvbm5lY3Rpb24pCiAgICAgICAgIG1fd2ViQ29ubmVjdGlvbi0+aW52YWxpZGF0
ZSgpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BlbmRpbmdNZXNzYWdlcy5zaXpl
KCk7ICsraSkKLSAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXNbaV0uZmlyc3QucmVsZWFzZUFyZ3Vt
ZW50cygpOwotCi0gICAgaWYgKG1fcHJvY2Vzc0xhdW5jaGVyKSB7Ci0gICAgICAgIG1fcHJvY2Vz
c0xhdW5jaGVyLT5pbnZhbGlkYXRlKCk7Ci0gICAgICAgIG1fcHJvY2Vzc0xhdW5jaGVyID0gMDsK
LSAgICB9Ci19Ci0KLVdlYlByb2Nlc3NQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojpmcm9tQ29ubmVj
dGlvbihDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKQotewotICAgIEFTU0VSVChjb25u
ZWN0aW9uKTsKLQotICAgIFdlYlByb2Nlc3NQcm94eSogd2ViUHJvY2Vzc1Byb3h5ID0gc3RhdGlj
X2Nhc3Q8V2ViUHJvY2Vzc1Byb3h5Kj4oY29ubmVjdGlvbi0+Y2xpZW50KCkpOwotICAgIEFTU0VS
VCh3ZWJQcm9jZXNzUHJveHktPmNvbm5lY3Rpb24oKSA9PSBjb25uZWN0aW9uKTsKLQotICAgIHJl
dHVybiB3ZWJQcm9jZXNzUHJveHk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpjb25uZWN0
KCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hl
cjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucykKIHsKLSAgICBBU1NFUlQoIW1fcHJvY2Vz
c0xhdW5jaGVyKTsKLQotICAgIFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyBsYXVuY2hP
cHRpb25zOwogICAgIGxhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPSBQcm9jZXNzTGF1bmNoZXI6
OldlYlByb2Nlc3M7Ci0gICAgcGxhdGZvcm1Db25uZWN0KGxhdW5jaE9wdGlvbnMpOwotICAgIAot
ICAgIG1fcHJvY2Vzc0xhdW5jaGVyID0gUHJvY2Vzc0xhdW5jaGVyOjpjcmVhdGUodGhpcywgbGF1
bmNoT3B0aW9ucyk7CisgICAgcGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKGxhdW5jaE9wdGlvbnMp
OwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzY29ubmVjdCgpCiB7Ci0gICAgaWYgKG1f
Y29ubmVjdGlvbikgewotICAgICAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZVF1ZXVlQ2xpZW50KHRo
aXMpOwotICAgICAgICBtX2Nvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKLSAgICAgICAgbV9jb25u
ZWN0aW9uID0gbnVsbHB0cjsKLSAgICB9CisgICAgY2xlYXJDb25uZWN0aW9uKCk7CiAKICAgICBp
ZiAobV93ZWJDb25uZWN0aW9uKSB7CiAgICAgICAgIG1fd2ViQ29ubmVjdGlvbi0+aW52YWxpZGF0
ZSgpOwpAQCAtMTYzLDM2ICsxMzQsNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzY29ubmVj
dCgpCiAgICAgbV9jb250ZXh0LT5kaXNjb25uZWN0UHJvY2Vzcyh0aGlzKTsKIH0KIAotYm9vbCBX
ZWJQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlKENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQs
IFBhc3NPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+IGVuY29kZXIsIHVuc2lnbmVkIG1l
c3NhZ2VTZW5kRmxhZ3MpCi17Ci0gICAgLy8gSWYgd2UncmUgd2FpdGluZyBmb3IgdGhlIHdlYiBw
cm9jZXNzIHRvIGxhdW5jaCwgd2UgbmVlZCB0byBzdGFzaCBhd2F5IHRoZSBtZXNzYWdlcyBzbyB3
ZSBjYW4gc2VuZCB0aGVtIG9uY2Ugd2UgaGF2ZQotICAgIC8vIGEgQ29yZUlQQyBjb25uZWN0aW9u
LgotICAgIGlmIChpc0xhdW5jaGluZygpKSB7Ci0gICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFw
cGVuZChtYWtlX3BhaXIoQ29yZUlQQzo6Q29ubmVjdGlvbjo6T3V0Z29pbmdNZXNzYWdlKG1lc3Nh
Z2VJRCwgZW5jb2RlciksIG1lc3NhZ2VTZW5kRmxhZ3MpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotCi0gICAgLy8gSWYgdGhlIHdlYiBwcm9jZXNzIGhhcyBleGl0ZWQsIG1fY29ubmVj
dGlvbiB3aWxsIGJlIG51bGwgaGVyZS4KLSAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGNvbm5lY3Rpb24oKS0+c2VuZE1lc3NhZ2UobWVz
c2FnZUlELCBlbmNvZGVyLCBtZXNzYWdlU2VuZEZsYWdzKTsKLX0KLQotYm9vbCBXZWJQcm9jZXNz
UHJveHk6OmlzTGF1bmNoaW5nKCkgY29uc3QKLXsKLSAgICBpZiAobV9wcm9jZXNzTGF1bmNoZXIp
Ci0gICAgICAgIHJldHVybiBtX3Byb2Nlc3NMYXVuY2hlci0+aXNMYXVuY2hpbmcoKTsKLQotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZSgpCi17
Ci0gICAgaWYgKG1fcHJvY2Vzc0xhdW5jaGVyKQotICAgICAgICBtX3Byb2Nlc3NMYXVuY2hlci0+
dGVybWluYXRlUHJvY2VzcygpOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkTWVzc2Fn
ZVJlY2VpdmVyKENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBD
b3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIqIG1lc3NhZ2VSZWNlaXZlcikKIHsKICAgICBtX21lc3Nh
Z2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVz
c2FnZVJlY2VpdmVyKTsKQEAgLTU1NCwzNSArNDk1LDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpkaWRCZWNvbWVSZXNwb25zaXYKICAgICAgICAgcGFnZXNbaV0tPnByb2Nlc3NEaWRCZWNvbWVS
ZXNwb25zaXZlKCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hp
bmcoUHJvY2Vzc0xhdW5jaGVyKiwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25u
ZWN0aW9uSWRlbnRpZmllcikKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hp
bmcoUHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
ZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBkaWRGaW5pc2hMYXVuY2hpbmcoY29u
bmVjdGlvbklkZW50aWZpZXIpOwotfQotCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNo
TGF1bmNoaW5nKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50
aWZpZXIpCi17Ci0gICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24pOwotCi0gICAgbV9jb25uZWN0aW9u
ID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9u
SWRlbnRpZmllciwgdGhpcywgUnVuTG9vcDo6bWFpbigpKTsKLSNpZiBPUyhEQVJXSU4pCi0gICAg
bV9jb25uZWN0aW9uLT5zZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25Pbk1hY2hFeGNlcHRpb25zKCk7
Ci0jZWxpZiBQTEFURk9STShRVCkgJiYgIU9TKFdJTkRPV1MpCi0gICAgbV9jb25uZWN0aW9uLT5z
ZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25PblByb2Nlc3NUZXJtaW5hdGlvbihwcm9jZXNzSWRlbnRp
ZmllcigpKTsKLSNlbmRpZgotCi0gICAgbV9jb25uZWN0aW9uLT5hZGRRdWV1ZUNsaWVudCh0aGlz
KTsKLSAgICBtX2Nvbm5lY3Rpb24tPm9wZW4oKTsKKyAgICBDaGlsZFByb2Nlc3NQcm94eTo6ZGlk
RmluaXNoTGF1bmNoaW5nKGxhdW5jaGVyLCBjb25uZWN0aW9uSWRlbnRpZmllcik7CiAKICAgICBt
X3dlYkNvbm5lY3Rpb24gPSBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUodGhpcyk7
CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcGVuZGluZ01lc3NhZ2VzLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIENvcmVJUEM6OkNvbm5lY3Rpb246Ok91dGdvaW5nTWVzc2FnZSYgb3V0
Z29pbmdNZXNzYWdlID0gbV9wZW5kaW5nTWVzc2FnZXNbaV0uZmlyc3Q7Ci0gICAgICAgIHVuc2ln
bmVkIG1lc3NhZ2VTZW5kRmxhZ3MgPSBtX3BlbmRpbmdNZXNzYWdlc1tpXS5zZWNvbmQ7Ci0gICAg
ICAgIGNvbm5lY3Rpb24oKS0+c2VuZE1lc3NhZ2Uob3V0Z29pbmdNZXNzYWdlLm1lc3NhZ2VJRCgp
LCBhZG9wdFB0cihvdXRnb2luZ01lc3NhZ2UuYXJndW1lbnRzKCkpLCBtZXNzYWdlU2VuZEZsYWdz
KTsKLSAgICB9Ci0KLSAgICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwotCiAgICAgLy8gVGVs
bCB0aGUgY29udGV4dCB0aGF0IHdlIGZpbmlzaGVkIGxhdW5jaGluZy4KICAgICBtX2NvbnRleHQt
PnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcodGhpcyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDEzNjczNSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsNyBAQAogI2lmbmRlZiBXZWJQcm9jZXNzUHJveHlfaAogI2RlZmluZSBXZWJQcm9j
ZXNzUHJveHlfaAogCisjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXJNYXAuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb1N0b3JlLmgiCkBAIC02MCw3ICs2MSw3IEBAIGNsYXNz
IFdlYkNvbnRleHQ7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBzdHJ1Y3QgV2ViTmF2aWdhdGlvbkRh
dGFTdG9yZTsKIAotY2xhc3MgV2ViUHJvY2Vzc1Byb3h5IDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFdlYlByb2Nlc3NQcm94eT4sIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudCwgUmVz
cG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50LCBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudCwgQ29yZUlQ
Qzo6Q29ubmVjdGlvbjo6UXVldWVDbGllbnQgeworY2xhc3MgV2ViUHJvY2Vzc1Byb3h5IDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlByb2Nlc3NQcm94eT4sIHB1YmxpYyBDaGlsZFBy
b2Nlc3NQcm94eSwgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50LCBDb3JlSVBDOjpDb25uZWN0
aW9uOjpRdWV1ZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90
LCBSZWZQdHI8V2ViRnJhbWVQcm94eT4gPiBXZWJGcmFtZVByb3h5TWFwOwogICAgIHR5cGVkZWYg
SGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+ID4gV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbU1hcDsKQEAgLTY4LDE3ICs2OSw5IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYkNvbnRl
eHQ+KTsKICAgICB+V2ViUHJvY2Vzc1Byb3h5KCk7CiAKLSAgICBzdGF0aWMgV2ViUHJvY2Vzc1By
b3h5KiBmcm9tQ29ubmVjdGlvbihDb3JlSVBDOjpDb25uZWN0aW9uKik7Ci0KLSAgICB2b2lkIHRl
cm1pbmF0ZSgpOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kKGNvbnN0IFQm
IG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxh
Z3MgPSAwKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHNlbmRTeW5jKGNvbnN0IFUm
IG1lc3NhZ2UsIGNvbnN0IHR5cGVuYW1lIFU6OlJlcGx5JiByZXBseSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCwgZG91YmxlIHRpbWVvdXQgPSAxKTsKLSAgICAKLSAgICBDb3JlSVBDOjpDb25uZWN0
aW9uKiBjb25uZWN0aW9uKCkgY29uc3QKLSAgICB7IAotICAgICAgICBBU1NFUlQobV9jb25uZWN0
aW9uKTsKLSAgICAgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsKKyAgICBzdGF0aWMgV2Vi
UHJvY2Vzc1Byb3h5KiBmcm9tQ29ubmVjdGlvbihDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0
aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYlByb2Nlc3NQcm94eSo+
KENoaWxkUHJvY2Vzc1Byb3h5Ojpmcm9tQ29ubmVjdGlvbihjb25uZWN0aW9uKSk7CiAgICAgfQog
CiAgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUsIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciopOwpAQCAtODksOCAr
ODIsNiBAQCBwdWJsaWM6CiAKICAgICBXZWJDb250ZXh0KiBjb250ZXh0KCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZXh0LmdldCgpOyB9CiAKLSAgICBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyIHBy
b2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzTGF1bmNoZXItPnByb2Nl
c3NJZGVudGlmaWVyKCk7IH0KLQogICAgIFdlYlBhZ2VQcm94eSogd2ViUGFnZSh1aW50NjRfdCBw
YWdlSUQpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdl
KFBhZ2VDbGllbnQqLCBXZWJDb250ZXh0KiwgV2ViUGFnZUdyb3VwKik7CiAgICAgdm9pZCBhZGRF
eGlzdGluZ1dlYlBhZ2UoV2ViUGFnZVByb3h5KiwgdWludDY0X3QgcGFnZUlEKTsKQEAgLTEwNSwx
MCArOTYsNiBAQCBwdWJsaWM6CiAKICAgICBSZXNwb25zaXZlbmVzc1RpbWVyKiByZXNwb25zaXZl
bmVzc1RpbWVyKCkgeyByZXR1cm4gJm1fcmVzcG9uc2l2ZW5lc3NUaW1lcjsgfQogCi0gICAgYm9v
bCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9Ci0gICAgYm9vbCBpc0xh
dW5jaGluZygpIGNvbnN0OwotICAgIGJvb2wgY2FuU2VuZE1lc3NhZ2UoKSBjb25zdCB7IHJldHVy
biBpc1ZhbGlkKCkgfHwgaXNMYXVuY2hpbmcoKTsgfQotCiAgICAgV2ViRnJhbWVQcm94eSogd2Vi
RnJhbWUodWludDY0X3QpIGNvbnN0OwogICAgIGJvb2wgY2FuQ3JlYXRlRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCkgY29uc3Q7CiAgICAgdm9pZCBmcmFtZUNyZWF0ZWQodWludDY0X3QsIFdlYkZyYW1l
UHJveHkqKTsKQEAgLTEzMCwxNiArMTE3LDEzIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgV2ViUHJvY2Vzc1Byb3h5KFBhc3NSZWZQdHI8V2ViQ29udGV4dD4pOwogCi0gICAgLy8g
SW5pdGlhbGl6ZXMgdGhlIHByb2Nlc3MgbGF1bmNoZXIgd2hpY2ggd2lsbCBiZWdpbiBsYXVuY2hp
bmcgdGhlIHByb2Nlc3MuCi0gICAgdm9pZCBjb25uZWN0KCk7Ci0gICAgdm9pZCBwbGF0Zm9ybUNv
bm5lY3QoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJik7CisgICAgdm9pZCBnZXRMYXVu
Y2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYpOworICAgIHZvaWQgcGxh
dGZvcm1HZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYpOwog
CiAgICAgLy8gQ2FsbGVkIHdoZW4gdGhlIHdlYiBwcm9jZXNzIGhhcyBjcmFzaGVkIG9yIHdlIGtu
b3cgdGhhdCBpdCB3aWxsIHRlcm1pbmF0ZSBzb29uLgogICAgIC8vIFdpbGwgcG90ZW50aWFsbHkg
Y2F1c2UgdGhlIFdlYlByb2Nlc3NQcm94eSBvYmplY3QgdG8gYmUgZnJlZWQuCiAgICAgdm9pZCBk
aXNjb25uZWN0KCk7CiAKLSAgICBib29sIHNlbmRNZXNzYWdlKENvcmVJUEM6Ok1lc3NhZ2VJRCwg
UGFzc093blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4sIHVuc2lnbmVkIG1lc3NhZ2VTZW5k
RmxhZ3MpOwotCiAgICAgLy8gQ29yZUlQQyBtZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgYWRk
QmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVS
TFN0cmluZywgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNv
bnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIGJhY2tGb3J3YXJkRGF0YSk7CiAgICAgdm9pZCBk
aWREZXN0cm95RnJhbWUodWludDY0X3QpOwpAQCAtMTcyLDEyICsxNTYsMTIgQEAgcHJpdmF0ZToK
IAogICAgIC8vIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIGZyaWVuZCBjbGFzcyBX
ZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpN
ZXNzYWdlRGVjb2RlciYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2Fn
ZURlY29kZXImLCBPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+Jik7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgQ29yZUlQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VOYW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURl
Y29kZXImKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3Nh
Z2VEZWNvZGVyJiwgT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25u
ZWN0aW9uKiwgQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIENv
cmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgT1ZFUlJJREU7CiAjaWYgUExBVEZP
Uk0oV0lOKQotICAgIHZpcnR1YWwgVmVjdG9yPEhXTkQ+IHdpbmRvd3NUb1JlY2VpdmVTZW50TWVz
c2FnZXNXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkoKTsKKyAgICB2aXJ0dWFsIFZlY3RvcjxIV05E
PiB3aW5kb3dzVG9SZWNlaXZlU2VudE1lc3NhZ2VzV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5KCkg
T1ZFUlJJREU7CiAjZW5kaWYKIAogICAgIC8vIENvcmVJUEM6OkNvbm5lY3Rpb246OlF1ZXVlQ2xp
ZW50CkBAIC0xODksOSArMTczLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEJlY29tZVJlc3Bv
bnNpdmUoUmVzcG9uc2l2ZW5lc3NUaW1lciopIE9WRVJSSURFOwogCiAgICAgLy8gUHJvY2Vzc0xh
dW5jaGVyOjpDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nl
c3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwotCi0gICAgdm9p
ZCBkaWRGaW5pc2hMYXVuY2hpbmcoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBDb3Jl
SVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKSBPVkVSUklERTsKIAogICAgIC8vIEhpc3Rvcnkg
Y2xpZW50CiAgICAgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSh1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmLCB1aW50NjRfdCBmcmFtZUlEKTsK
QEAgLTIwNiwxNCArMTg4LDkgQEAgcHJpdmF0ZToKIAogICAgIFJlc3BvbnNpdmVuZXNzVGltZXIg
bV9yZXNwb25zaXZlbmVzc1RpbWVyOwogICAgIAotCi0gICAgUmVmUHRyPENvcmVJUEM6OkNvbm5l
Y3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBSZWZQdHI8V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cz4gbV93ZWJDb25uZWN0aW9uOwogICAgIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCBtX21l
c3NhZ2VSZWNlaXZlck1hcDsKIAotICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29yZUlQQzo6Q29ubmVj
dGlvbjo6T3V0Z29pbmdNZXNzYWdlLCB1bnNpZ25lZD4gPiBtX3BlbmRpbmdNZXNzYWdlczsKLSAg
ICBSZWZQdHI8UHJvY2Vzc0xhdW5jaGVyPiBtX3Byb2Nlc3NMYXVuY2hlcjsKLQogICAgIFJlZlB0
cjxXZWJDb250ZXh0PiBtX2NvbnRleHQ7CiAKICAgICBib29sIG1fbWF5SGF2ZVVuaXZlcnNhbEZp
bGVSZWFkU2FuZGJveEV4dGVuc2lvbjsgLy8gVHJ1ZSBpZiBhIHJlYWQgZXh0ZW5zaW9uIGZvciAi
LyIgd2FzIGV2ZXIgZ3JhbnRlZCAtIHdlIGRvbid0IHRyYWNrIHdoZXRoZXIgV2ViUHJvY2VzcyBz
dGlsbCBoYXMgaXQuCkBAIC0yMjcsMjggKzIwNCw2IEBAIHByaXZhdGU6CiAgICAgQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTsKICNlbmRpZgog
fTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kKGNv
bnN0IFQmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVuc2lnbmVkIG1lc3NhZ2VT
ZW5kRmxhZ3MpCi17Ci0gICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdl
RXhwZWN0ZWQpOwotCi0gICAgT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVy
ID0gQ29yZUlQQzo6TWVzc2FnZUVuY29kZXI6OmNyZWF0ZShUOjpyZWNlaXZlck5hbWUoKSwgVDo6
bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZSk7Ci0K
LSAgICByZXR1cm4gc2VuZE1lc3NhZ2UoQ29yZUlQQzo6TWVzc2FnZUlEKFQ6Om1lc3NhZ2VJRCks
IGVuY29kZXIucmVsZWFzZSgpLCBtZXNzYWdlU2VuZEZsYWdzKTsKLX0KLQotdGVtcGxhdGU8dHlw
ZW5hbWUgVT4gCi1ib29sIFdlYlByb2Nlc3NQcm94eTo6c2VuZFN5bmMoY29uc3QgVSYgbWVzc2Fn
ZSwgY29uc3QgdHlwZW5hbWUgVTo6UmVwbHkmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
LCBkb3VibGUgdGltZW91dCkKLXsKLSAgICBDT01QSUxFX0FTU0VSVChVOjppc1N5bmMsIFN5bmNN
ZXNzYWdlRXhwZWN0ZWQpOwotCi0gICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHJldHVybiBjb25uZWN0aW9uKCktPnNlbmRTeW5jKG1lc3NhZ2UsIHJl
cGx5LCBkZXN0aW5hdGlvbklELCB0aW1lb3V0KTsKLX0KICAgICAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMTM2NzM1KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ4LDcgKzQ4LDExIEBAIE5ldHdvcmtQcm9jZXNzUHJveHk6Ok5ldHdvcmtQ
cm9jZXNzUHJveHkKICAgICA6IG1fbmV0d29ya1Byb2Nlc3NNYW5hZ2VyKG1hbmFnZXIpCiAgICAg
LCBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHMoMCkKIHsKLSAgICBQcm9jZXNzTGF1bmNo
ZXI6OkxhdW5jaE9wdGlvbnMgbGF1bmNoT3B0aW9uczsKKyAgICBjb25uZWN0KCk7Cit9CisKK3Zv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6
OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMpCit7CiAgICAgbGF1bmNoT3B0aW9ucy5wcm9j
ZXNzVHlwZSA9IFByb2Nlc3NMYXVuY2hlcjo6TmV0d29ya1Byb2Nlc3M7CiAKICNpZiBQTEFURk9S
TShNQUMpCkBAIC01OCwyNSArNjIsMjIgQEAgTmV0d29ya1Byb2Nlc3NQcm94eTo6TmV0d29ya1By
b2Nlc3NQcm94eQogICAgIGxhdW5jaE9wdGlvbnMudXNlWFBDID0gZmFsc2U7CiAjZW5kaWYKICNl
bmRpZgotCi0gICAgbV9wcm9jZXNzTGF1bmNoZXIgPSBQcm9jZXNzTGF1bmNoZXI6OmNyZWF0ZSh0
aGlzLCBsYXVuY2hPcHRpb25zKTsKIH0KIAogTmV0d29ya1Byb2Nlc3NQcm94eTo6fk5ldHdvcmtQ
cm9jZXNzUHJveHkoKQogewotCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94
eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5KQogewog
ICAgIG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmFwcGVuZChyZXBseSk7CiAKLSAgICBpZiAo
bV9wcm9jZXNzTGF1bmNoZXItPmlzTGF1bmNoaW5nKCkpIHsKKyAgICBpZiAoaXNMYXVuY2hpbmco
KSkgewogICAgICAgICBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHMrKzsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OkNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCksIDAsIENvcmVJ
UEM6OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAgY29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q3JlYXRlTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSwgMCwgQ29yZUlQQzo6RGlzcGF0Y2hNZXNzYWdlRXZlbldo
ZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpu
ZXR3b3JrUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCkKQEAgLTExNCwxMiArMTE1LDYg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShDb3JlSQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0
aW9uKiwgQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlLCBDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2Up
CiB7Ci0KLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzeW5jTWVzc2FnZVNlbmRUaW1l
ZE91dChDb3JlSVBDOjpDb25uZWN0aW9uKikKLXsKLQogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbnN0IENvcmVJ
UEM6OkF0dGFjaG1lbnQmIGNvbm5lY3Rpb25JZGVudGlmaWVyKQpAQCAtMTM2LDM2ICsxMzEsMjkg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVOZXR3bwogI2VuZGlmCiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVu
Y2hlciosIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZp
ZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNz
TGF1bmNoZXIqIGxhdW5jaGVyLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5l
Y3Rpb25JZGVudGlmaWVyKQogewotICAgIEFTU0VSVCghbV9jb25uZWN0aW9uKTsKKyAgICBDaGls
ZFByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKGxhdW5jaGVyLCBjb25uZWN0aW9uSWRl
bnRpZmllcik7CiAKICAgICBpZiAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzTnVs
bChjb25uZWN0aW9uSWRlbnRpZmllcikpIHsKICAgICAgICAgLy8gRklYTUU6IERvIGJldHRlciBj
bGVhbnVwIGhlcmUuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2Nvbm5lY3Rpb24g
PSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25J
ZGVudGlmaWVyLCB0aGlzLCBSdW5Mb29wOjptYWluKCkpOwotI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICBtX2Nvbm5lY3Rpb24tPnNldFNob3VsZENsb3NlQ29ubmVjdGlvbk9uTWFjaEV4Y2VwdGlvbnMo
KTsKLSNlbmRpZgotCi0gICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7Ci0KICAgICBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBsYXRmb3JtSW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKHBhcmFtZXRlcnMpOwogCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgbmV0
d29yayBob3N0IHByb2Nlc3MuCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6SW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKHBhcmFtZXRlcnMpLCAwKTsKKyAg
ICBjb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpJbml0aWFsaXpl
TmV0d29ya1Byb2Nlc3MocGFyYW1ldGVycyksIDApOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0czsgKytpKQotICAgICAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDcmVhdGVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcygpLCAwKTsKKyAgICAgICAgY29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoKSwgMCk7CiAgICAgCiAgICAgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzID0gMDsK
IAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoV2ViQ29udGV4dDo6YXBwbGljYXRpb25Jc09j
Y2x1ZGVkKCkpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKSwgMCk7CisgICAgICAgIGNvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEFwcGxpY2F0aW9uSXNP
Y2NsdWRlZCh0cnVlKSwgMCk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNp
b24gMTM2NzM1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQogCisjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzUHJveHkuaCIKICNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0xhdW5jaGVyLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKQEAgLTM4LDE1ICszOSwxMyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzTWFuYWdlcjsKIHN0cnVjdCBOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIAotY2xhc3MgTmV0d29ya1Byb2Nlc3NQcm94
eSA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtQcm9jZXNzUHJveHk+LCBDb3JlSVBDOjpDb25u
ZWN0aW9uOjpDbGllbnQsIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50IHsKK2NsYXNzIE5ldHdvcmtQ
cm9jZXNzUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxOZXR3b3JrUHJvY2Vzc1Byb3h5PiwgcHVi
bGljIENoaWxkUHJvY2Vzc1Byb3h5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxO
ZXR3b3JrUHJvY2Vzc1Byb3h5PiBjcmVhdGUoTmV0d29ya1Byb2Nlc3NNYW5hZ2VyKik7CiAgICAg
fk5ldHdvcmtQcm9jZXNzUHJveHkoKTsKIAogICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKIAotICAgIGJvb2wgaXNWYWxpZCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbjsgfQotCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZv
aWQgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wpOwogI2VuZGlmCkBAIC01NCwxNSArNTMs
MTUgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5KE5ldHdvcmtQ
cm9jZXNzTWFuYWdlciopOwogCisgICAgdmlydHVhbCB2b2lkIGdldExhdW5jaE9wdGlvbnMoUHJv
Y2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJikgT1ZFUlJJREU7CiAgICAgdm9pZCBwbGF0Zm9y
bUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYpOwogCiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCk7
CiAKICAgICAvLyBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJ
RCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiopOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUp
OwotICAgIHZpcnR1YWwgdm9pZCBzeW5jTWVzc2FnZVNlbmRUaW1lZE91dChDb3JlSVBDOjpDb25u
ZWN0aW9uKik7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNv
bm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rpb24q
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENv
cmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2Vp
dmVyTmFtZSwgQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBPVkVSUklERTsK
IAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrUHJv
Y2Vzc1Byb3h5TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlE
LCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwpAQCAtNzEsMTIgKzcwLDYgQEAgcHJpdmF0ZToK
ICAgICAvLyBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
Zmllcik7CiAKLSAgICAvLyBUaGUgY29ubmVjdGlvbiB0byB0aGUgbmV0d29yayBwcm9jZXNzLgot
ICAgIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247Ci0KLSAgICAvLyBU
aGUgcHJvY2VzcyBsYXVuY2hlciBmb3IgdGhlIG5ldHdvcmsgcHJvY2Vzcy4KLSAgICBSZWZQdHI8
UHJvY2Vzc0xhdW5jaGVyPiBtX3Byb2Nlc3NMYXVuY2hlcjsKLQogICAgIE5ldHdvcmtQcm9jZXNz
TWFuYWdlciogbV9uZXR3b3JrUHJvY2Vzc01hbmFnZXI7CiAgICAgCiAgICAgdW5zaWduZWQgbV9u
dW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvbWFjL05ldHdvcmtQcm9jZXNzUHJveHlNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvbWFjL05ldHdvcmtQcm9jZXNzUHJveHlN
YWMubW0JKHJldmlzaW9uIDEzNjczNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3
b3JrL21hYy9OZXR3b3JrUHJvY2Vzc1Byb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3
ICs0NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0QXBwbGljYXRpb24KICAgICBp
ZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChh
cHBsaWNhdGlvbklzT2NjbHVkZWQpLCAwKTsKKyAgICBjb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoYXBwbGljYXRpb25J
c09jY2x1ZGVkKSwgMCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQcm9jZXNzUHJveHlFZmwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Byb3h5RWZsLmNwcAko
cmV2aXNpb24gMTM2NzM1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQcm9j
ZXNzUHJveHlFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6cGxhdGZvcm1Db25uZWN0KFBy
b2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucykKK3ZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpwbGF0Zm9ybUdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVu
Y2hPcHRpb25zJiBsYXVuY2hPcHRpb25zKQogewogI2lmbmRlZiBOREVCVUcKICAgICBjb25zdCBj
aGFyKiB3ZWJQcm9jZXNzQ21kUHJlZml4ID0gZ2V0ZW52KCJXRUJfUFJPQ0VTU19DTURfUFJFRklY
Iik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQcm94eUd0
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcm9j
ZXNzUHJveHlHdGsuY3BwCShyZXZpc2lvbiAxMzY3MzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1dlYlByb2Nlc3NQcm94eUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcg
KzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpw
bGF0Zm9ybUNvbm5lY3QoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJikKK3ZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpM
YXVuY2hPcHRpb25zJikKIHsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9XZWJQcm9jZXNzUHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XZWJQcm9jZXNzUHJveHlNYWMubW0JKHJldmlzaW9uIDEzNjczNSkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1Byb3h5TWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkVXNlWFBDKCkKIH0K
ICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6cGxhdGZvcm1Db25uZWN0KFByb2Nlc3NM
YXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucykKK3ZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpwbGF0Zm9ybUdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRp
b25zJiBsYXVuY2hPcHRpb25zKQogewogICAgIC8vIFdlIHdhbnQgdGhlIHdlYiBwcm9jZXNzIHRv
IG1hdGNoIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIFVJIHByb2Nlc3MuCiAgICAgbGF1bmNoT3B0
aW9ucy5hcmNoaXRlY3R1cmUgPSBQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnM6Ok1hdGNo
Q3VycmVudEFyY2hpdGVjdHVyZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9X
ZWJQcm9jZXNzUHJveHlRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1dlYlByb2Nlc3NQcm94eVF0LmNwcAkocmV2aXNpb24gMTM2NzM1KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlByb2Nlc3NQcm94eVF0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OnBsYXRmb3JtQ29ubmVjdChQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMm
KQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNz
TGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQcm94eVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUHJveHlXaW4uY3BwCShyZXZpc2lvbiAx
MzY3MzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQcm94eVdp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgVmVjdG9yPEhXTkQ+IFdlYlBy
b2Nlc3NQcm94eTo6d2luZG93c1RvUgogICAgIHJldHVybiBWZWN0b3I8SFdORD4oKTsKIH0KIAot
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtQ29ubmVjdChQcm9jZXNzTGF1bmNoZXI6Okxh
dW5jaE9wdGlvbnMmKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNoT3B0
aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmKQogewogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAxMzY3MzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwMTcsNiArMTAxNyw4IEBACiAJCUUxMzRGMDE3
MTJFQTVEMzMwMDRFQzU4RCAvKiBXS1ByaW50aW5nVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEzNEYwMTUxMkVBNUQxMTAwNEVDNThEIC8qIFdL
UHJpbnRpbmdWaWV3LmggKi87IH07CiAJCUUxMzRGMDFBMTJFQTVEOTkwMDRFQzU4RCAvKiBXS1By
aW50aW5nVmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxMzRGMDE5MTJFQTVEOTkwMDRFQzU4RCAvKiBXS1ByaW50aW5nVmlldy5tbSAqLzsgfTsK
IAkJRTEzQThBMzAxNjI4NzlBQzAwMzkyOTI5IC8qIENvY29hLmZyYW1ld29yayBpbiBGcmFtZXdv
cmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxM0E4QTJGMTYyODc5QUMw
MDM5MjkyOSAvKiBDb2NvYS5mcmFtZXdvcmsgKi87IH07CisJCUUxNTEzQzY2MTY2RUFCQjIwMDE0
OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMTUxM0M2NDE2NkVBQkIyMDAxNDlGQ0IgLyogQ2hpbGRQcm9j
ZXNzUHJveHkuY3BwICovOyB9OworCQlFMTUxM0M2NzE2NkVBQkIyMDAxNDlGQ0IgLyogQ2hpbGRQ
cm9jZXNzUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxNTEzQzY1MTY2RUFCQjIwMDE0OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94eS5oICovOyB9
OwogCQlFMTc5RkQ5QzEzNEQzODA2MDAxNUI4ODMgLyogQXJndW1lbnRDb2RlcnNNYWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzlGRDlCMTM0RDM4
MDYwMDE1Qjg4MyAvKiBBcmd1bWVudENvZGVyc01hYy5oICovOyB9OwogCQlFMTc5RkQ5RjEzNEQz
ODI1MDAxNUI4ODMgLyogQXJndW1lbnRDb2RlcnNNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTc5RkQ5RTEzNEQzODI1MDAxNUI4ODMgLyogQXJn
dW1lbnRDb2RlcnNNYWMubW0gKi87IH07CiAJCUUxN0JGOTk2MTREMEE3M0UwMEE1QTA2OSAvKiBO
ZXRzY2FwZVNhbmRib3hGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxN0JGOTk1MTREMEE3M0UwMEE1QTA2OSAvKiBOZXRzY2FwZVNhbmRi
b3hGdW5jdGlvbnMuaCAqLzsgfTsKQEAgLTIzMDgsNiArMjMxMCw4IEBACiAJCUUxM0E4QTRCMTYy
ODdBMUIwMDM5MjkyOSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzLnhjY29uZmlnICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0
aCA9IFNoYXJlZFdvcmtlclByb2Nlc3MueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUxNEU5OUY4MTREODc5QjQwMDFEMjIxRiAvKiBQbHVnaW5Qcm9jZXNzLmVudGl0bGVt
ZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQueG1sOyBwYXRoID0gUGx1Z2luUHJvY2Vzcy5lbnRpdGxlbWVudHM7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUxNEU5OUY5MTREODc5QzkwMDFEMjIxRiAvKiBhZGQtZW50aXRsZW1l
bnRzLnNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5zY3JpcHQuc2g7IHBhdGggPSAiYWRkLWVudGl0bGVtZW50cy5zaCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUxNTEzQzY0MTY2RUFCQjIwMDE0OUZDQiAvKiBDaGlsZFByb2Nl
c3NQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDaGlsZFBy
b2Nlc3NQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxNTEzQzY1MTY2
RUFCQjIwMDE0OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDaGlsZFByb2Nlc3NQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMTc5RkQ5QjEzNEQzODA2MDAxNUI4ODMgLyogQXJndW1lbnRDb2RlcnNNYWMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJndW1lbnRDb2RlcnNNYWMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3OUZEOUUxMzREMzgyNTAwMTVCODgzIC8qIEFy
Z3VtZW50Q29kZXJzTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQXJndW1lbnRDb2RlcnNNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUx
N0JGOTk1MTREMEE3M0UwMEE1QTA2OSAvKiBOZXRzY2FwZVNhbmRib3hGdW5jdGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0c2NhcGVTYW5kYm94RnVuY3Rpb25zLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzU2LDYgKzI3NjAsOCBAQAogCQkJCUJD
MzA2NUY5MTI1OTM0NEUwMEU3MTI3OCAvKiBDYWNoZU1vZGVsLmggKi8sCiAJCQkJMUEyRDk1NkUx
Mjg0ODU2NDAwMUVCOTYyIC8qIENoaWxkUHJvY2Vzcy5jcHAgKi8sCiAJCQkJMUEyRDk1NkQxMjg0
ODU2NDAwMUVCOTYyIC8qIENoaWxkUHJvY2Vzcy5oICovLAorCQkJCUUxNTEzQzY0MTY2RUFCQjIw
MDE0OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94eS5jcHAgKi8sCisJCQkJRTE1MTNDNjUxNjZFQUJC
MjAwMTQ5RkNCIC8qIENoaWxkUHJvY2Vzc1Byb3h5LmggKi8sCiAJCQkJMUE2RjlGOEUxMUUxM0VG
QzAwREIxMzcxIC8qIENvbW1hbmRMaW5lLmggKi8sCiAJCQkJNTEzNjE4M0IxNjMxMjZEQTAwQTk5
RERFIC8qIENvbm5lY3Rpb25TdGFjay5jcHAgKi8sCiAJCQkJNTEzNjE4M0MxNjMxMjZEQTAwQTk5
RERFIC8qIENvbm5lY3Rpb25TdGFjay5oICovLApAQCAtNDk5NSw2ICs1MDAxLDcgQEAKIAkJCQk1
MTc1OTQ0QjE2NTcwODA0MDBERDc3MUQgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDOEFDQTEzMTY2NzBEODkwMDRDMTk0MSAvKiBPYmpDT2Jq
ZWN0R3JhcGguaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOEFDQTE1MTY2NzBEODkwMDRDMTk0MSAv
KiBPYmpDT2JqZWN0R3JhcGhDb2RlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUxNTEzQzY3MTY2
RUFCQjIwMDE0OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC01
OTQ4LDYgKzU5NTUsNyBAQAogCQkJCTUxNzU5NDRBMTY1NzA4MDQwMERENzcxRCAvKiBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4
QUNBMTQxNjY3MEQ4OTAwNEMxOTQxIC8qIE9iakNPYmplY3RHcmFwaC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUJDOEFDQTE2MTY2NzBEODkwMDRDMTk0MSAvKiBPYmpDT2JqZWN0R3JhcGhDb2RlcnMu
bW0gaW4gU291cmNlcyAqLywKKwkJCQlFMTUxM0M2NjE2NkVBQkIyMDAxNDlGQ0IgLyogQ2hpbGRQ
cm9jZXNzUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi93aW4v
V2ViS2l0Mi52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIu
dmNwcm9qCShyZXZpc2lvbiAxMzY3MzUpCisrKyBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52
Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTQyMyw2ICs0MjMsMTQgQEAKIAkJCQk+CiAJCQk8L0Zp
bGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXENoaWxkUHJvY2Vzc1By
b3h5LmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cU2hhcmVkXENoaWxkUHJvY2Vzc1Byb3h5LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxDb21tYW5kTGluZS5oIgogCQkJCT4KIAkJ
CTwvRmlsZT4K
</data>

          </attachment>
      

    </bug>

</bugzilla>