<?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>165795</bug_id>
          
          <creation_ts>2016-12-13 01:45:33 -0800</creation_ts>
          <short_desc>Use JSValue::toWTFString instead of calling toString(exec) and value(exec)</short_desc>
          <delta_ts>2016-12-15 01:15:43 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>165841</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1259358</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-12-13 01:45:33 -0800</bug_when>
    <thetext>Use JSValue::toWTFString instead of calling toString(exec) and value(exec)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259359</commentid>
    <comment_count>1</comment_count>
      <attachid>296996</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-12-13 01:48:03 -0800</bug_when>
    <thetext>Created attachment 296996
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259360</commentid>
    <comment_count>2</comment_count>
      <attachid>296997</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-12-13 01:49:03 -0800</bug_when>
    <thetext>Created attachment 296997
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259363</commentid>
    <comment_count>3</comment_count>
      <attachid>296999</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-12-13 02:00:27 -0800</bug_when>
    <thetext>Created attachment 296999
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259618</commentid>
    <comment_count>4</comment_count>
      <attachid>296999</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-12-13 19:27:47 -0800</bug_when>
    <thetext>Comment on attachment 296999
Patch

Looks like you have some build issues but r=me if it builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259652</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-12-13 23:03:25 -0800</bug_when>
    <thetext>Committed r209792: &lt;http://trac.webkit.org/changeset/209792&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259656</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-13 23:17:59 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 165841</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259664</commentid>
    <comment_count>7</comment_count>
      <attachid>297070</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-12-13 23:52:04 -0800</bug_when>
    <thetext>Created attachment 297070
Patch

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259720</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-12-14 08:05:10 -0800</bug_when>
    <thetext>Committed r209801: &lt;http://trac.webkit.org/changeset/209801&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259748</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-14 09:04:16 -0800</bug_when>
    <thetext>So glad you did this Yusuke! Now I can delete my local git branch named &quot;ToWTFString&quot;, or maybe I will merge it to see if I had any changes there on something you missed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259790</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-12-14 09:47:01 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; So glad you did this Yusuke! Now I can delete my local git branch named
&gt; &quot;ToWTFString&quot;, or maybe I will merge it to see if I had any changes there on
&gt; something you missed?

Nice! Can you check whether I missed something in your branch?
If your branch find a missed one, that&apos;s super awesome!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260082</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-15 00:15:57 -0800</bug_when>
    <thetext>Turns out my patch still has valuable changes, but it&apos;s hard to merge so I am not sure what I am going to do. Maybe just do the work below again.

I found quite a few call sites that were calling JSValue::isString first, then calling JSValue::toString or JSValue::toWTFString. Those could call JSValue::getString instead, which should be a bit more efficient. That has an additional benefit because we know those call sites cannot generate exceptions, so we can remove unneeded RETURN_IF_EXCEPTION or any other branching based on the exception.

In a couple other places, I did something similar except that I changed code to use the asString function rather than JSValue::getString.

At call sites that were calling Identifier::toString on the result, I changed them to call JSString::toIdentifier instead of JSString::value or JSValue::toWTFString, hoping to save on allocating a string that already exists in the atomic string table.

Another thing the patch had was that I had changed toWTFString to return a null string any time there is an exception, so the caller could check the string for null instead of checking the ExecState for an exception. That was possibly a valuable optimization back when I originally wrote this before we started using ThrowScope, but presumably is not needed now.

One other thing the patch had is that I also noticed that WebCore::Dictionary::getWithUndefinedOrNullCheck will return true when it encounters an exception in toWTFString, and I am not sure that is what we want, so I made it return false in that case in the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260096</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-15 01:15:43 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; I found quite a few call sites that were calling JSValue::isString first

Patch in bug 165895 now.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296996</attachid>
            <date>2016-12-13 01:48:03 -0800</date>
            <delta_ts>2016-12-13 01:48:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165795-20161213184712.patch</filename>
            <type>text/plain</type>
            <size>68951</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5NzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NjY5MDAzYmU4MTQyYjZiMWMxMTdiZWU2MGViZGMxZDUwNmNjOWQ1Li5lMjc4YWZiYjViNGMzOTUz
YzNjNGRjOThiZDU2MTBkNzM4ZjNmYzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4OCBAQAorMjAxNi0xMi0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBVc2UgSlNWYWx1ZTo6dG9XVEZTdHJpbmcgaW5zdGVhZCBvZiBjYWxs
aW5nIHRvU3RyaW5nKGV4ZWMpIGFuZCB2YWx1ZShleGVjKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1Nzk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gb2xkIGRheXMsIHdlIGZyZXF1ZW50bHkgdXNl
IHRoZSBpZGlvbSBsaWtlLCBgdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpYCB0bwor
ICAgICAgICBnZXQgV1RGU3RyaW5nIGZyb20gdGhlIGdpdmVuIEpTVmFsdWUuIEJ1dCBub3csIHdl
IGhhdmUgYmV0dGVyIGZ1bmN0aW9uLCBgdG9XVEZTdHJpbmdgLgorICAgICAgICBgdG9XVEZTdHJp
bmdgIGRvZXMgbm90IGNyZWF0ZSBpbnRlcm1lZGlhdGUgSlNTdHJpbmcgb2JqZWN0cywgdGhlbiBy
ZWR1Y2UgdW5uZWNlc3NhcnkKKyAgICAgICAgYWxsb2NhdGlvbnMuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtZWNoYW5pY2FsbHkgcmVwbGFjZXMgYHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKWAgd2l0aCBgdG9XVEZTdHJpbmcoZXhlYylgLgorCisgICAgICAgICogQVBJL0pTVmFsdWVS
ZWYuY3BwOgorICAgICAgICAoSlNWYWx1ZVRvU3RyaW5nQ29weSk6CisgICAgICAgICogYmluZGlu
Z3MvU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWU6OnRv
U3RyaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyOjpyZXBvcnRBUElFeGNlcHRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9KU0lu
amVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbik6CisgICAgICAgICogaW5zcGVjdG9y
L0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSmF2YVNj
cmlwdENhbGxGcmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24pOgorICAgICAgICAqIGlu
c3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6
ZXh0cmFjdFNvdXJjZUluZm9ybWF0aW9uRnJvbUV4Y2VwdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9Db25zb2xlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6dmFsdWVUb1N0cmluZ1dpdGhVbmRl
ZmluZWRPck51bGxDaGVjayk6CisgICAgICAgIChKU0M6OnZhbHVlT3JEZWZhdWx0TGFiZWxTdHJp
bmcpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6ZGF0ZVBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmb3JtYXRMb2NhbGVEYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5z
dGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpzYW5pdGl6ZWRUb1N0cmlu
Zyk6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OmVycm9yUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6aW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0TG9nKToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ1Nsb3dDYXNlKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVu
Y0V2YWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAo
SlNDOjpKU01vZHVsZUxvYWRlcjo6ZmV0Y2gpOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlTG9h
ZGVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyUHJvdG90eXBlUGFy
c2VNb2R1bGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpyZWdFeHBDcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jQ29tcGlsZSk6CisgICAgICAg
IChKU0M6OnJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCk6
CisgICAgICAgIChKU0M6OnJlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaCk6CisgICAgICAgIChKU0M6
OnN0cmluZ1Byb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3Bs
aXRGYXN0KToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3Vic3RyKToKKyAgICAgICAg
KEpTQzo6c3RyaW5nUHJvdG9GdW5jTG9jYWxlQ29tcGFyZSk6CisgICAgICAgIChKU0M6OnN0cmlu
Z1Byb3RvRnVuY0JpZyk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1NtYWxsKToKKyAg
ICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jQmxpbmspOgorICAgICAgICAoSlNDOjpzdHJpbmdQ
cm90b0Z1bmNCb2xkKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jRml4ZWQpOgorICAg
ICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNJdGFsaWNzKToKKyAgICAgICAgKEpTQzo6c3RyaW5n
UHJvdG9GdW5jU3RyaWtlKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3ViKToKKyAg
ICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3VwKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJv
dG9GdW5jRm9udGNvbG9yKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jRm9udHNpemUp
OgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNBbmNob3IpOgorICAgICAgICAoSlNDOjpz
dHJpbmdQcm90b0Z1bmNMaW5rKToKKyAgICAgICAgKEpTQzo6dHJpbVN0cmluZyk6CisgICAgICAg
IChKU0M6OnN0cmluZ1Byb3RvRnVuY1N0YXJ0c1dpdGgpOgorICAgICAgICAoSlNDOjpzdHJpbmdQ
cm90b0Z1bmNFbmRzV2l0aCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0luY2x1ZGVz
KToKKyAgICAgICAgKEpTQzo6YnVpbHRpblN0cmluZ0luY2x1ZGVzSW50ZXJuYWwpOgorICAgICAg
ICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNOb3JtYWxpemUpOgorICAgICAgICAqIHRvb2xzL0pTRG9s
bGFyVk1Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvblByaW50KToKKyAgICAg
ICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaDoKKyAgICAgICAgKEpTQzo6
SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL0pT
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseVJ1
bnRpbWVFcnJvcjo6Y3JlYXRlKToKKwogMjAxNi0xMi0xMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIEJ5dGVjb2RlR2VuZXJhdG9yJ3MgQ29udHJvbEZs
b3dDb250ZXh0IHRvIENvbnRyb2xGbG93U2NvcGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM0ZGM2ZDQzNGI2
MmMxYjVjZTViMTU0MjVmNTVmNTliZWFjNmE4Ni4uMWRiNWY3NTkyY2UxMjYzYmE4OTExYTRlYjVh
MTZjZTUzMTRlYjA2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDE2LTEyLTEzICBZ
dXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFVzZSBKU1Zh
bHVlOjp0b1dURlN0cmluZyBpbnN0ZWFkIG9mIGNhbGxpbmcgdG9TdHJpbmcoZXhlYykgYW5kIHZh
bHVlKGV4ZWMpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjU3OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0lEQkJpbmRp
bmdVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSURCS2V5RnJvbVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OmdldE50aFZhbHVlT25LZXlQYXRoKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmludGVybmFsQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5
UGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjplbnN1cmVOdGhWYWx1ZU9uS2V5UGF0
aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjYW5JbmplY3ROdGhWYWx1ZU9uS2V5UGF0
aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppbmplY3RJREJLZXlJbnRvU2NyaXB0VmFs
dWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bWF5YmVDcmVhdGVJREJLZXlGcm9tU2Ny
aXB0VmFsdWVBbmRLZXlQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNhbkluamVj
dElEQktleUludG9TY3JpcHRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkZXNl
cmlhbGl6ZUlEQlZhbHVlVG9KU1ZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNj
cmlwdFZhbHVlVG9JREJLZXkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aWRiS2V5RGF0
YVRvU2NyaXB0VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlS2V5UGF0
aEFycmF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlSW5kZXhLZXlGb3JW
YWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFjazo6c2V0S2luZCk6CisgICAgICAg
IChXZWJDb3JlOjpKU0F1ZGlvVHJhY2s6OnNldExhbmd1YWdlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5OjpnZXRBbGdvcml0aG1JZGVudGlmaWVyKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0TG9jYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZp
Y2VNb3Rpb25FdmVudDo6aW5pdERldmljZU1vdGlvbkV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojppbml0RGV2aWNlT3JpZW50YXRpb25FdmVudCk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SlNFdmVudExpc3RlbmVyOjp2aXJ0dWFsaXNBdHRyaWJ1dGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmV2ZW50SGFuZGxlckF0dHJpYnV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVFdmVudExpc3RlbmVyRm9yRXZlbnRIYW5kbGVyQXR0cmlidXRlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnNldEV2ZW50SGFuZGxlckF0dHJpYnV0ZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjp3aW5kb3dFdmVudEhhbmRsZXJBdHRyaWJ1dGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6c2V0V2luZG93RXZlbnRIYW5kbGVyQXR0cmlidXRlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50RXZlbnRIYW5kbGVyQXR0cmlidXRlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNldERvY3VtZW50RXZlbnRIYW5kbGVyQXR0cmli
dXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9u
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxIVE1MQWxsQ29sbGVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0hUTUxBbGxDb2xsZWN0aW9uOjpuYW1lZEl0ZW0pOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVt
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25EaXJlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25S
YW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVu
ZEhvc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cG9wdWxhdGVDb250ZXh0TWVudUl0
ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzaG93Q29u
dGV4dE1lbnUpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZUluaXRNZXNzYWdlRXZlbnQpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXh0
VHJhY2s6OnNldExhbmd1YWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNWaWRlb1RyYWNrOjpzZXRLaW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVmlkZW9UcmFjazo6c2V0TGFuZ3VhZ2UpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyeXB0b0tleUZvcm1hdEZyb21KU1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyeXB0
b0tleVVzYWdlc0Zyb21KU1ZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hNTEh0dHBS
ZXF1ZXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnNl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VUZXh0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnJldHJpZXZlUmVz
cG9uc2UpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1hTTFRQcm9jZXNzb3I6OnNldFBhcmFtZXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpKU1hTTFRQcm9jZXNzb3I6OmdldFBhcmFtZXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1hTTFRQcm9jZXNzb3I6OnJlbW92ZVBhcmFtZXRlcik6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlkZ2UvYy9jX3V0aWxpdHku
Y3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y29udmVydFZhbHVlVG9OUFZhcmlhbnQpOgor
ICAgICAgICAqIGJyaWRnZS90ZXN0YmluZGluZ3MuY3BwOgorICAgICAgICAobWFpbik6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIpOgorCiAyMDE2
LTEyLTEyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
YmluZGluZ3MgZ2VuZXJhdGlvbiBzdXBwb3J0IGZvciBsZWdhY3kgV2ViQ29yZTo6RGljdGlvbmFy
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IGQ3NTAwNTQ1YTQ3YjQwNmRhYjUxZjlhMWUyMjkwZGQzNjI5MDYxYmYu
LjNiODFjMzFkMDE2NWZiZTJhNjhkZWQwY2NkZjZiM2E4NDg3MGQ2MTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxNi0xMi0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KKworICAgICAgICBVc2UgSlNWYWx1ZTo6dG9XVEZTdHJpbmcgaW5zdGVhZCBvZiBj
YWxsaW5nIHRvU3RyaW5nKGV4ZWMpIGFuZCB2YWx1ZShleGVjKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1Nzk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBSdW50aW1lT2Jq
ZWN0TWFwOjpjb252ZXJ0SlNWYWx1ZVRvTlBWYXJpYW50KToKKwogMjAxNi0xMi0xMiAgRGVhbiBK
YWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gTWVkaWFEb2N1bWVudCAi
RG9uZSIgYnV0dG9uIHNob3VsZCBuYXZpZ2F0ZSB0aGUgcGFnZSBiYWNrCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAppbmRleCA0Mjg0MzUwZmE3MTVjNjVjMjI3MDcyY2Zi
ZTg2OWMzNzdiM2MzOWFiLi5jMjdiN2MzNWM4OTRiNGE0OTdiMzcxNTk1OTk4ODBlOTY5ZDkyZDI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKQEAgLTQwMSw3ICs0
MDEsNyBAQCBKU1N0cmluZ1JlZiBKU1ZhbHVlVG9TdHJpbmdDb3B5KEpTQ29udGV4dFJlZiBjdHgs
IEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqCiAKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0
b0pTKGV4ZWMsIHZhbHVlKTsKICAgICAKLSAgICBhdXRvIHN0cmluZ1JlZihPcGFxdWVKU1N0cmlu
Zzo6Y3JlYXRlKGpzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgYXV0
byBzdHJpbmdSZWYoT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShqc1ZhbHVlLnRvV1RGU3RyaW5nKGV4
ZWMpKSk7CiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbikg
PT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKICAgICAgICAgc3RyaW5nUmVmID0gbnVsbHB0
cjsKICAgICByZXR1cm4gc3RyaW5nUmVmLmxlYWtSZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCmluZGV4IDlmN2EyMTZjNWVmY2ZlMzI5OGJh
OTE2YmZjMDU5OWUzNmY5MWFlNmUuLjI1NTY4YTNmODE3YzNlMWYxMDdmYThlMWRjZjAwMzlkOTMx
NDlhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRW
YWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVl
LmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIFN0cmluZyBTY3JpcHRWYWx1ZTo6dG9TdHJpbmcoRXhl
Y1N0YXRlKiBzY3JpcHRTdGF0ZSkgY29uc3QKICAgICBWTSYgdm0gPSBzY3JpcHRTdGF0ZS0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKLSAgICBTdHJp
bmcgcmVzdWx0ID0gbV92YWx1ZS5nZXQoKS50b1N0cmluZyhzY3JpcHRTdGF0ZSktPnZhbHVlKHNj
cmlwdFN0YXRlKTsKKyAgICBTdHJpbmcgcmVzdWx0ID0gbV92YWx1ZS5nZXQoKS50b1dURlN0cmlu
ZyhzY3JpcHRTdGF0ZSk7CiAgICAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIGFuIGV4Y2VwdGlv
biBpcyB0aHJvd24gYXMgcGFydCBvZiBpbnZva2luZyB0b1N0cmluZyBvbiB0aGUgb2JqZWN0Lgog
ICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgIHNjb3BlLmNsZWFy
RXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5k
ZXggYjU4Yzg4ODA4M2E0Y2ZhMTA3NTg5MDE1NzBkYTc2MzQxYmQ1ZGRmNi4uNGZiN2Q3OTJiYTli
YWM2ZWJhZjIxNjZkNjFmMWVhOWU5ZmNjNjdjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJ
bnNwZWN0b3JDb250cm9sbGVyOjpyZXBvcnRBUElFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBF
eGNlCiAKICAgICAvLyBGSVhNRTogPGh0dHA6Ly93ZWJraXQub3JnL2IvMTE1MDg3PiBXZWIgSW5z
cGVjdG9yOiBTaG91bGQgbm90IGV2YWx1YXRlIEphdmFTY3JpcHQgaGFuZGxpbmcgZXhjZXB0aW9u
cwogICAgIC8vIElmIHRoaXMgaXMgYSBjdXN0b20gZXhjZXB0aW9uIG9iamVjdCwgY2FsbCB0b1N0
cmluZyBvbiBpdCB0byB0cnkgYW5kIGdldCBhIG5pY2Ugc3RyaW5nIHJlcHJlc2VudGF0aW9uIGZv
ciB0aGUgZXhjZXB0aW9uLgotICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBleGNlcHRpb24tPnZh
bHVlKCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBlcnJvck1lc3Nh
Z2UgPSBleGNlcHRpb24tPnZhbHVlKCkudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgc2NvcGUuY2xl
YXJFeGNlcHRpb24oKTsKIAogICAgIGlmIChKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Omxv
Z1RvU3lzdGVtQ29uc29sZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IDc1ODZkN2ZhNDg2Yjgw
MzZmYjA4OGMyOGY5OTYwZDM3MWMyMzAxMDguLjNmMjZmZTZlZDZmOGE4ZGRiYzYwNGFlYmFlZjdl
MmU5MjE1MmI4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgSlNWYWx1
ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oRXhlY1N0
YXRlKiBleGVjKQogICAgIGlmICghc2NyaXB0VmFsdWUuaXNTdHJpbmcoKSkKICAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkluamVjdGVkU2Ny
aXB0SG9zdC5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiBmaXJzdCBhcmd1bWVudCBtdXN0IGJl
IGEgc3RyaW5nLiIpKTsKIAotICAgIFN0cmluZyBwcm9ncmFtID0gc2NyaXB0VmFsdWUudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBwcm9ncmFtID0gc2NyaXB0VmFsdWUu
dG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1
ZSgpKTsKIAogICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUu
Y3BwCmluZGV4IDM4ZjA3NmY5MzNlNThkYzI3NTRkZTZlODMwNGM5ZTY0YWFkY2UzZmIuLmM2YWE0
YTc3ZWRjMjU0ZTBlYTgxMzIwNDY0NDYzZjliODdkZTZhYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAK
QEAgLTgyLDcgKzgyLDcgQEAgSlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRl
V2l0aFNjb3BlRXh0ZW5zaW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoIXNjcmlwdFZhbHVl
LmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJKU0phdmFTY3JpcHRDYWxsRnJhbWUuZXZhbHVhdGVXaXRoU2NvcGVFeHRl
bnNpb24gZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZy4iKSk7CiAKLSAgICBTdHJpbmcg
c2NyaXB0ID0gc2NyaXB0VmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0
cmluZyBzY3JpcHQgPSBzY3JpcHRWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwogCiAgICAgTmFrZWRQdHI8RXhjZXB0aW9u
PiBleGNlcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAppbmRleCBjNDQ5NmQzZDcyODczYzhiMTEz
MGVmY2MyM2ZkOWJkODBhNmRmZDA3Li5jNDc3NThmYjQ1NTZiZDY5OGYyNDk4NGFkYTI3ZGU3Mjlj
MTBlMDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1Njcmlw
dENhbGxTdGFja0ZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMg
dm9pZCBleHRyYWN0U291cmNlSW5mb3JtYXRpb25Gcm9tRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdAogICAgIEpTVmFsdWUgY29sdW1uVmFsdWUgPSBleGNlcHRpb25PYmpl
Y3QtPmdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJj
b2x1bW4iKSk7CiAgICAgKmNvbHVtbk51bWJlciA9IGNvbHVtblZhbHVlICYmIGNvbHVtblZhbHVl
LmlzTnVtYmVyKCkgPyBpbnQoY29sdW1uVmFsdWUudG9OdW1iZXIoZXhlYykpIDogMDsKICAgICBK
U1ZhbHVlIHNvdXJjZVVSTFZhbHVlID0gZXhjZXB0aW9uT2JqZWN0LT5nZXREaXJlY3QoZXhlYy0+
dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAic291cmNlVVJMIikpOwotICAgICpz
b3VyY2VVUkwgPSBzb3VyY2VVUkxWYWx1ZSAmJiBzb3VyY2VVUkxWYWx1ZS5pc1N0cmluZygpID8g
c291cmNlVVJMVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpIDogQVNDSUlMaXRlcmFs
KCJ1bmRlZmluZWQiKTsKKyAgICAqc291cmNlVVJMID0gc291cmNlVVJMVmFsdWUgJiYgc291cmNl
VVJMVmFsdWUuaXNTdHJpbmcoKSA/IHNvdXJjZVVSTFZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpIDog
QVNDSUlMaXRlcmFsKCJ1bmRlZmluZWQiKTsKICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuY3Bw
CmluZGV4IDMwYTliYmRlOWUwYmIwNDlhZWMxNmI4OTQ1ZjEyMmE4ZWQ2NmFmMjguLjE5YmQ1YmRh
NDcxY2UyMzJkNzk0NDgzNGNiMmYxMjVlNDg0MzJhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgc3Rh
dGljIFN0cmluZyB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWwKIHsKICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwo
KSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiB2YWx1ZS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CisgICAgcmV0dXJuIHZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwog
fQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY29uc29sZUxvZ1dpdGhMZXZlbChFeGVjU3RhdGUq
IGV4ZWMsIE1lc3NhZ2VMZXZlbCBsZXZlbCkKQEAgLTI5MSw3ICsyOTEsNyBAQCBzdGF0aWMgU3Ry
aW5nIHZhbHVlT3JEZWZhdWx0TGFiZWxTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZh
bHVlKQogewogICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJkZWZhdWx0Iik7Ci0gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKKyAgICByZXR1cm4gdmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiB9CiAKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUaW1lKEV4
ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
Q29uc3RydWN0b3IuY3BwCmluZGV4IDBkZmFkYWY4OGE0ZWMxM2QyM2ZmYjRhNTg3ZmQ1YTU5Zjli
MjU3ODEuLmE4MjUwMTdiMDY3YzQyMjYwNjU3YjljOTMxYjhlNDE4YzM4MWVmYmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcApAQCAt
MjA1LDcgKzIwNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBhcnNlKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBTdHJpbmcgZGF0ZVN0ciA9IGV4ZWMt
PmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgZGF0
ZVN0ciA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIocGFyc2VEYXRlKHZtLCBkYXRlU3RyKSkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAppbmRleCA3ODg4NmRi
OTdmMmU0ZDA5MGE2ZWQ4OWI1YmVhY2IwMjA5MGU2ZWU1Li5lMzQ5YTcxMzU0NGViNmM2OTQ3N2Q5
YzkxZWIxN2Q2NTBmMmIyMGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlUHJvdG90eXBlLmNwcApAQCAtMTUxLDEzICsxNTEsMTMgQEAgc3RhdGljIEpTQ2VsbCog
Zm9ybWF0TG9jYWxlRGF0ZShFeGVjU3RhdGUqIGV4ZWMsIERhdGVJbnN0YW5jZSosIGRvdWJsZSB0
aW1lSW5NaWwKICAgICBib29sIHVzZUN1c3RvbUZvcm1hdCA9IGZhbHNlOwogICAgIFN0cmluZyBj
dXN0b21Gb3JtYXRTdHJpbmc7CiAKLSAgICBTdHJpbmcgYXJnMFN0cmluZyA9IGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgYXJnMFN0cmlu
ZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChhcmcwU3Ry
aW5nID09ICJjdXN0b20iICYmICFleGVjLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpKSB7CiAg
ICAgICAgIHVzZUN1c3RvbUZvcm1hdCA9IHRydWU7Ci0gICAgICAgIGN1c3RvbUZvcm1hdFN0cmlu
ZyA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAg
ICAgY3VzdG9tRm9ybWF0U3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMSkudG9XVEZTdHJpbmcoZXhl
Yyk7CiAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT0gTG9jYWxlRGF0ZUFuZFRpbWUgJiYgIWV4ZWMt
PmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgZGF0ZVN0eWxlID0gc3R5bGVG
cm9tQXJnU3RyaW5nKGFyZzBTdHJpbmcsIGRhdGVTdHlsZSk7Ci0gICAgICAgIHRpbWVTdHlsZSA9
IHN0eWxlRnJvbUFyZ1N0cmluZyhleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYyksIHRpbWVTdHlsZSk7CisgICAgICAgIHRpbWVTdHlsZSA9IHN0eWxlRnJvbUFyZ1N0
cmluZyhleGVjLT5hcmd1bWVudCgxKS50b1dURlN0cmluZyhleGVjKSwgdGltZVN0eWxlKTsKICAg
ICB9IGVsc2UgaWYgKGZvcm1hdCAhPSBMb2NhbGVUaW1lICYmICFleGVjLT5hcmd1bWVudCgwKS5p
c1VuZGVmaW5lZCgpKQogICAgICAgICBkYXRlU3R5bGUgPSBzdHlsZUZyb21BcmdTdHJpbmcoYXJn
MFN0cmluZywgZGF0ZVN0eWxlKTsKICAgICBlbHNlIGlmIChmb3JtYXQgIT0gTG9jYWxlRGF0ZSAm
JiAhZXhlYy0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKaW5kZXggNDVjMWMwZTZkNGIxZjA4MGIy
YjRlYjQ3NjcwZTM4NGE1MWRiM2FhZi4uZWQ4ZjJkN2E0NTNlMmZkNWQ0MjEwYWM1N2UwY2Q0NmIx
ODZmNTBmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJ
bnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0
YW5jZS5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCBTdHJpbmcgRXJyb3JJbnN0YW5jZTo6c2FuaXRp
emVkVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICghbmFtZVZhbHVlKQogICAgICAg
ICBuYW1lU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJFcnJvciIpOwogICAgIGVsc2UgewotICAgICAg
ICBuYW1lU3RyaW5nID0gbmFtZVZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAg
ICAgICAgbmFtZVN0cmluZyA9IG5hbWVWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgU3RyaW5nKCkpOwogICAgIH0KIApAQCAtMjA4LDcg
KzIwOCw3IEBAIFN0cmluZyBFcnJvckluc3RhbmNlOjpzYW5pdGl6ZWRUb1N0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgaWYgKCFtZXNzYWdlVmFsdWUpCiAgICAgICAgIG1lc3NhZ2VTdHJpbmcg
PSBTdHJpbmcoKTsKICAgICBlbHNlIHsKLSAgICAgICAgbWVzc2FnZVN0cmluZyA9IG1lc3NhZ2VW
YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgIG1lc3NhZ2VTdHJpbmcg
PSBtZXNzYWdlVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIFN0cmluZygpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAppbmRleCA1MDY4NjQ0ZWZmMWQyMzI2NThl
MTY4ZWFiNWFjNThiMjlmYWFhMmEzLi5iNjZhMTRkNTljNDU3NDY5NzBmMWY4NzcxY2UwOWJkZTcz
YjkzZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90
b3R5cGUuY3BwCkBAIC05Myw3ICs5Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZXJyb3JQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKG5hbWUuaXNV
bmRlZmluZWQoKSkKICAgICAgICAgbmFtZVN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiRXJyb3IiKTsK
ICAgICBlbHNlIHsKLSAgICAgICAgbmFtZVN0cmluZyA9IG5hbWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOworICAgICAgICBuYW1lU3RyaW5nID0gbmFtZS50b1dURlN0cmluZyhleGVjKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgfQogCkBAIC0xMDgsNyArMTA4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBl
cnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAobWVzc2FnZS5p
c1VuZGVmaW5lZCgpKQogICAgICAgICBtZXNzYWdlU3RyaW5nID0gU3RyaW5nKCk7CiAgICAgZWxz
ZSB7Ci0gICAgICAgIG1lc3NhZ2VTdHJpbmcgPSBtZXNzYWdlLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKKyAgICAgICAgbWVzc2FnZVN0cmluZyA9IG1lc3NhZ2UudG9XVEZTdHJpbmcoZXhl
Yyk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAKaW5kZXggZGM3OTdjYThl
NjEzOTg1MzUxYjlkZDY0MjFmNjkzYTBjYWE4MzMzZS4uZjY5ZjgzMWVlYzA2NjE2OTIxMjM3OTlj
MzRjYjA2NTkwZjdjYzM4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwCkBAIC04
Niw3ICs4Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uT2JqZWN0TG9nKEV4ZWNTdGF0ZSogZXhlYykKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Zh
bHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFN0cmluZyB2YWx1ZSA9IHRhcmdl
dC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHZhbHVlID0gdGFyZ2V0
LnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIGRhdGFMb2codmFsdWUsICJcbiIpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IDFmOGM2ZDU5MDYzYzA1MzUxZGJjYzA4Y2E0NDJjMGFi
N2ZkNmNiOGYuLmUzNjlmYWEzZjZkNzA2OTZhYWUwOWI3NmE1NjBhMDFiZTJmNjhjM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC0zOTIsNyAr
MzkyLDcgQEAgU3RyaW5nIEpTVmFsdWU6OnRvV1RGU3RyaW5nU2xvd0Nhc2UoRXhlY1N0YXRlKiBl
eGVjKSBjb25zdAogICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+bnVsbEtleXdvcmQu
c3RyaW5nKCk7CiAgICAgaWYgKGlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiB2bS5wcm9w
ZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLnN0cmluZygpOwotICAgIHJldHVybiB0b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgcmV0dXJuIHRvV1RGU3RyaW5nKGV4ZWMpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAppbmRleCA0MjJkN2VmNDU3ZDU5
M2QxZGMxOTk0ZjEwMDA5OTQ1NWE3Y2E0ZTgwLi5jNjJlNGY3MThhNzhkYmJlMzY1MWRkN2ZjNjli
NjJiNTczOTUxNTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC02NjYsNyArNjY2LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXZhbChFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQog
Ci0gICAgU3RyaW5nIHMgPSB4LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJp
bmcgcyA9IHgudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBpZiAocy5pczhCaXQoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCmluZGV4IGVmODVi
MzdiZWQ0ODgwZGYyNGYwZjRkMTM1NmY1NTY1MDgxNWFiZTcuLmJmZDhmNDk1MWQwMDg2NTRlYjVh
ZTkwMjU1MDlhZWI5YjI3NDg3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU01vZHVsZUxvYWRlci5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCBKU0ludGVybmFsUHJv
bWlzZSogSlNNb2R1bGVMb2FkZXI6OmZldGNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXks
IEpTVmFsdWUgaQogICAgIGlmIChnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
KCktPm1vZHVsZUxvYWRlckZldGNoKQogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9i
YWxPYmplY3RNZXRob2RUYWJsZSgpLT5tb2R1bGVMb2FkZXJGZXRjaChnbG9iYWxPYmplY3QsIGV4
ZWMsIHRoaXMsIGtleSwgaW5pdGlhdG9yKTsKICAgICBKU0ludGVybmFsUHJvbWlzZURlZmVycmVk
KiBkZWZlcnJlZCA9IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9i
YWxPYmplY3QpOwotICAgIFN0cmluZyBtb2R1bGVLZXkgPSBrZXkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOworICAgIFN0cmluZyBtb2R1bGVLZXkgPSBrZXkudG9XVEZTdHJpbmcoZXhlYyk7
CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICBKU1ZhbHVl
IGV4Y2VwdGlvbiA9IHNjb3BlLmV4Y2VwdGlvbigpLT52YWx1ZSgpOwogICAgICAgICBzY29wZS5j
bGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAKaW5kZXggN2RjZDdkNWU2NWZkMzk4OGUwZWE2
NmE4NDFmYWNkODc0ZTRmMTI5Zi4uM2ZjY2RhNzY2YWZiNTZkYmEwNmQ5YTJiMzQ4ZTM3ZTRjNWRj
MDI3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9h
ZGVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1
bGVMb2FkZXJQcm90b3R5cGUuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJQcm90b3R5cGVQYXJzZU1vZHVsZShFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgY29uc3QgSWRlbnRpZmllciBtb2R1bGVLZXkgPSBleGVjLT5hcmd1bWVudCgw
KS50b1Byb3BlcnR5S2V5KGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogCi0gICAgU3RyaW5nIHNvdXJjZSA9IGV4ZWMtPmFyZ3VtZW50KDEp
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgc291cmNlID0gZXhlYy0+
YXJndW1lbnQoMSkudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBTb3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBt
YWtlU291cmNlKHNvdXJjZSwgbW9kdWxlS2V5LmltcGwoKSwgVGV4dFBvc2l0aW9uKCksIFNvdXJj
ZVByb3ZpZGVyU291cmNlVHlwZTo6TW9kdWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAppbmRleCBmYmFkNDliYzA3NDg3Yjli
M2ZkZTc0N2VkYmFmY2U5MTg3N2E5MjY1Li5iODg2Y2ZjYjM5YzQ2MzQ5ZmQyZThhMjc0YTM5YWEx
M2FmOGM0N2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwQ29uc3RydWN0b3IuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgc3RhdGljIEpTT2JqZWN0KiBy
ZWdFeHBDcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1YKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN0cmluZyBwYXR0ZXJuID0gcGF0dGVybkFyZy5pc1Vu
ZGVmaW5lZCgpID8gZW1wdHlTdHJpbmcoKSA6IHBhdHRlcm5BcmcudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOworICAgIFN0cmluZyBwYXR0ZXJuID0gcGF0dGVybkFyZy5pc1VuZGVmaW5lZCgp
ID8gZW1wdHlTdHJpbmcoKSA6IHBhdHRlcm5BcmcudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKICAgICBSZWdFeHBGbGFncyBmbGFn
cyA9IHRvRmxhZ3MoZXhlYywgZmxhZ3NBcmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKaW5kZXggODgyNDA4MmU0ZmMwNzcyNmU1Mzlj
YjkxZThjZDMxNWU3ZjZlYzZhOS4uZjAzYjliNGYzMjE3YzE1M2EyZTA3NzI5YzJhOWFmYzM2NTNl
NjYxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90
b3R5cGUuY3BwCkBAIC0xNjYsMTIgKzE2NiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZ0V4cFByb3RvRnVuY0NvbXBpbGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90
IHN1cHBseSBmbGFncyB3aGVuIGNvbnN0cnVjdGluZyBvbmUgUmVnRXhwIGZyb20gYW5vdGhlci4i
KSk7CiAgICAgICAgIHJlZ0V4cCA9IGFzUmVnRXhwT2JqZWN0KGFyZzApLT5yZWdFeHAoKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBTdHJpbmcgcGF0dGVybiA9IGFyZzAuaXNVbmRlZmluZWQoKSA/
IGVtcHR5U3RyaW5nKCkgOiBhcmcwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAg
ICAgU3RyaW5nIHBhdHRlcm4gPSBhcmcwLmlzVW5kZWZpbmVkKCkgPyBlbXB0eVN0cmluZygpIDog
YXJnMC50b1dURlN0cmluZyhleGVjKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAgICAgUmVnRXhwRmxhZ3MgZmxhZ3MgPSBOb0Zs
YWdzOwogICAgICAgICBpZiAoIWFyZzEuaXNVbmRlZmluZWQoKSkgewotICAgICAgICAgICAgZmxh
Z3MgPSByZWdFeHBGbGFncyhhcmcxLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAg
ICAgICAgICBmbGFncyA9IHJlZ0V4cEZsYWdzKGFyZzEudG9XVEZTdHJpbmcoZXhlYykpOwogICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgICAgICAgICBpZiAoZmxhZ3MgPT0gSW52YWxpZEZsYWdzKQogICAgICAgICAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiSW52YWxpZCBmbGFncyBzdXBwbGllZCB0byBSZWdFeHAgY29uc3RydWN0b3Iu
IikpKTsKQEAgLTI0MywxMiArMjQzLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgSlNWYWx1ZSBz
b3VyY2VWYWx1ZSA9IHRoaXNPYmplY3QtPmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5zb3Vy
Y2UpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIFN0cmluZyBzb3VyY2UgPSBzb3VyY2VWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CisgICAgU3RyaW5nIHNvdXJjZSA9IHNvdXJjZVZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAg
SlNWYWx1ZSBmbGFnc1ZhbHVlID0gdGhpc09iamVjdC0+Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFt
ZXMtPmZsYWdzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICBTdHJpbmcgZmxhZ3MgPSBmbGFnc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKKyAgICBTdHJpbmcgZmxhZ3MgPSBmbGFnc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAg
ICAgc2NvcGUucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggZTE2MGIyM2JlNzgxZmI3ODNiNjZiMTQ4YzkwMmIz
MjM5NWUwZDM0Zi4uYWVlZTRiY2RkOGIzNWUzYzgzYjU3YzFmZDBiOTdmYzllOWNiN2FlMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
CkBAIC01NTQsNyArNTU0LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUg
cmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKAogCiAgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5z
ZXRUaGlzKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgICAgIEpTVmFsdWUganNSZXN1bHQg
PSBjYWNoZWRDYWxsLmNhbGwoKTsKLSAgICAgICAgICAgICAgICByZXBsYWNlbWVudHMuYXBwZW5k
KGpzUmVzdWx0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgICAgICAgICAgICAg
cmVwbGFjZW1lbnRzLmFwcGVuZChqc1Jlc3VsdC50b1dURlN0cmluZyhleGVjKSk7CiAgICAgICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAK
ICAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSByZXN1bHQuZW5kOwpAQCAtNTkzLDcgKzU5Myw3
IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIHJlcGxhY2VVc2luZ1JlZ0V4
cFNlYXJjaCgKIAogICAgICAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0VGhpcyhqc1VuZGVmaW5l
ZCgpKTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGpzUmVzdWx0ID0gY2FjaGVkQ2FsbC5jYWxs
KCk7Ci0gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzLmFwcGVuZChqc1Jlc3VsdC50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50cy5hcHBl
bmQoanNSZXN1bHQudG9XVEZTdHJpbmcoZXhlYykpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgICAgICAgICAgICAg
bGFzdEluZGV4ID0gcmVzdWx0LmVuZDsKQEAgLTYzNSw3ICs2MzUsNyBAQCBzdGF0aWMgQUxXQVlT
X0lOTElORSBFbmNvZGVkSlNWYWx1ZSByZXBsYWNlVXNpbmdSZWdFeHBTZWFyY2goCiAKICAgICAg
ICAgICAgICAgICBKU1ZhbHVlIHJlcGxhY2VtZW50ID0gY2FsbChleGVjLCByZXBsYWNlVmFsdWUs
IGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmluZWQoKSwgYXJncyk7CiAgICAgICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgICAg
ICAgICAgICAgU3RyaW5nIHJlcGxhY2VtZW50U3RyaW5nID0gcmVwbGFjZW1lbnQudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAgICAgICAgICAgIFN0cmluZyByZXBsYWNlbWVudFN0
cmluZyA9IHJlcGxhY2VtZW50LnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgICAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAgICAg
ICAgIHJlcGxhY2VtZW50cy5hcHBlbmQocmVwbGFjZW1lbnRTdHJpbmcpOwogICAgICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtNzE4
LDcgKzcxOCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIHJlcGxhY2VV
c2luZ1JlZ0V4cFNlYXJjaChWTSYgdm0sIEV4ZWNTdGF0ZSoKICAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHJlcGxhY2VWYWx1ZSwgY2Fs
bERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkgewotICAgICAgICBy
ZXBsYWNlbWVudFN0cmluZyA9IHJlcGxhY2VWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CisgICAgICAgIHJlcGxhY2VtZW50U3RyaW5nID0gcmVwbGFjZVZhbHVlLnRvV1RGU3RyaW5n
KGV4ZWMpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICB9CiAKQEAgLTczMiw3ICs3MzIsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBF
bmNvZGVkSlNWYWx1ZSByZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2goVk0mIHZtLCBFeGVjU3RhdGUq
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgY29uc3Qg
U3RyaW5nJiBzdHJpbmcgPSBqc1N0cmluZy0+dmFsdWUoZXhlYyk7Ci0gICAgU3RyaW5nIHNlYXJj
aFN0cmluZyA9IHNlYXJjaFZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBT
dHJpbmcgc2VhcmNoU3RyaW5nID0gc2VhcmNoVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBzaXpl
X3QgbWF0Y2hTdGFydCA9IHN0cmluZy5maW5kKHNlYXJjaFN0cmluZyk7CkBAIC03NTEsNyArNzUx
LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVwbGFjZVVzaW5nU3Ry
aW5nU2VhcmNoKFZNJiB2bSwgRXhlY1N0YXRlKgogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAKLSAgICBTdHJpbmcgcmVwbGFjZVN0
cmluZyA9IHJlcGxhY2VWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3Ry
aW5nIHJlcGxhY2VTdHJpbmcgPSByZXBsYWNlVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBTdHJp
bmdJbXBsKiBzdHJpbmdJbXBsID0gc3RyaW5nLmltcGwoKTsKQEAgLTExMTUsNyArMTExNSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU2xpY2UoRXhlY1N0
YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRv
V1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogCiAgICAgaW50IGxlbiA9IHMubGVuZ3RoKCk7CkBAIC0xMTgzLDcgKzExODMs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFz
dChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAzLiBMZXQgUyBiZSB0aGUgcmVzdWx0IG9mIGNh
bGxpbmcgVG9TdHJpbmcsIGdpdmluZyBpdCB0aGUgdGhpcyB2YWx1ZSBhcyBpdHMgYXJndW1lbnQu
CiAgICAgLy8gNy4gTGV0IHMgYmUgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIFMuCi0gICAg
U3RyaW5nIGlucHV0ID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAg
ICBTdHJpbmcgaW5wdXQgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgQVNTRVJUKCFpbnB1
dC5pc051bGwoKSk7CiAKQEAgLTEyMDUsNyArMTIwNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAv
LyA5LiBJZiBzZXBhcmF0b3IgaXMgYSBSZWdFeHAgb2JqZWN0IChpdHMgW1tDbGFzc11dIGlzICJS
ZWdFeHAiKSwgbGV0IFIgPSBzZXBhcmF0b3I7CiAgICAgLy8gICAgb3RoZXJ3aXNlIGxldCBSID0g
VG9TdHJpbmcoc2VwYXJhdG9yKS4KICAgICBKU1ZhbHVlIHNlcGFyYXRvclZhbHVlID0gZXhlYy0+
dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgU3RyaW5nIHNlcGFyYXRvciA9IHNlcGFyYXRvclZh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgc2VwYXJhdG9yID0g
c2VwYXJhdG9yVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAvLyAxMC4gSWYgbGltID09IDAsIHJl
dHVybiBBLgpAQCAtMTMyNCw3ICsxMzI0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBqc1N0cmlu
ZyA9IGpzQ2FzdDxKU1N0cmluZyo+KHRoaXNWYWx1ZS5hc0NlbGwoKSk7CiAgICAgICAgIGxlbiA9
IGpzU3RyaW5nLT5sZW5ndGgoKTsKICAgICB9IGVsc2UgewotICAgICAgICB1U3RyaW5nID0gdGhp
c1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgdVN0cmluZyA9IHRo
aXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGxlbiA9IHVTdHJpbmcubGVuZ3RoKCk7
CiAgICAgfQpAQCAtMTQ1NSwxMSArMTQ1NSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUoRXhlY1N0YXRlKiBleGVjKQogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVj
dENvZXJjaWJsZSh0aGlzVmFsdWUpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7Ci0gICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAg
SlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFN0cmluZyBzdHIgPSBhMC50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHN0ciA9IGEwLnRvV1RGU3RyaW5n
KGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoQ29sbGF0b3IoKS5jb2xsYXRl
KHMsIHN0cikpKTsKIH0KQEAgLTE1NzQsNyArMTU3NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQmlnKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2Vy
Y2libGUodGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUpOwotICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBzY29wZS5y
ZWxlYXNlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3Ry
aW5nKGV4ZWMsICI8YmlnPiIsIHMsICI8L2JpZz4iKSk7CkBAIC0xNTg4LDcgKzE1ODgsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NtYWxsKEV4ZWNTdGF0
ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAg
IGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1dU
RlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICI8c21hbGw+IiwgcywgIjwvc21hbGw+Iikp
OwpAQCAtMTYwMiw3ICsxNjAyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNCbGluayhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNW
YWx1ZSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKLSAg
ICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAg
U3RyaW5nIHMgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAi
PGJsaW5rPiIsIHMsICI8L2JsaW5rPiIpKTsKQEAgLTE2MTYsNyArMTYxNiw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQm9sZChFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNo
ZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKTsKLSAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmco
ZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtl
Tm9udHJpdmlhbFN0cmluZyhleGVjLCAiPGI+IiwgcywgIjwvYj4iKSk7CkBAIC0xNjMwLDcgKzE2
MzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0ZpeGVk
KEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAgIFN0cmluZyBzID0gdGhp
c1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNW
YWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICI8dHQ+IiwgcywgIjwvdHQ+
IikpOwpAQCAtMTY0NCw3ICsxNjQ0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90b0Z1bmNJdGFsaWNzKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUo
dGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OwotICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
KyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBzY29wZS5yZWxlYXNl
KCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4
ZWMsICI8aT4iLCBzLCAiPC9pPiIpKTsKQEAgLTE2NTgsNyArMTY1OCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3RyaWtlKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hl
Y2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUpOwotICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhl
eGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VO
b250cml2aWFsU3RyaW5nKGV4ZWMsICI8c3RyaWtlPiIsIHMsICI8L3N0cmlrZT4iKSk7CkBAIC0x
NjcyLDcgKzE2NzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3Rv
RnVuY1N1YihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKLSAgICBTdHJpbmcg
cyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMg
PSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiPHN1Yj4iLCBz
LCAiPC9zdWI+IikpOwpAQCAtMTY4Niw3ICsxNjg2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdXAoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJj
aWJsZSh0aGlzVmFsdWUpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSk7Ci0gICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHNjb3BlLnJl
bGVhc2UoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJp
bmcoZXhlYywgIjxzdXA+IiwgcywgIjwvc3VwPiIpKTsKQEAgLTE3MDAsNyArMTcwMCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jRm9udGNvbG9yKEV4ZWNT
dGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAgIFN0cmluZyBzID0gdGhpc1ZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50
b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKQEAgLTE3
MTksNyArMTcxOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jRm9udHNpemUoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgU3Ry
aW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmlu
ZyBzID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFy
Z3VtZW50KDApOwpAQCAtMTc3NCw3ICsxNzc0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzdHJpbmdQcm90b0Z1bmNBbmNob3IoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJj
aWJsZSh0aGlzVmFsdWUpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSk7Ci0gICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1
ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwpAQCAtMTc5Myw3ICsxNzkzLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNMaW5rKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hl
Y2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUpOwotICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhl
eGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKQEAgLTE4NDAsNyArMTg0MCw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSB0cmltU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB0aGlzVmFsdWUsIGludCB0cmltS2luCiAKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNp
YmxlKHRoaXNWYWx1ZSkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSk7Ci0gICAgU3RyaW5nIHN0ciA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CisgICAgU3RyaW5nIHN0ciA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgdW5zaWduZWQgbGVmdCA9IDA7
CkBAIC0xODk4LDcgKzE4OTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY1N0YXJ0c1dpdGgoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICghY2hlY2tPYmpl
Y3RDb2VyY2libGUodGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUpOwogCi0gICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNoSW4gPSB0aGlzVmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzdHJpbmdUb1NlYXJjaElu
ID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3Vt
ZW50KDApOwpAQCAtMTkwNyw3ICsxOTA3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90b0Z1bmNTdGFydHNXaXRoKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoaXNS
ZWd1bGFyRXhwcmVzc2lvbikKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUsICJBcmd1bWVudCB0byBTdHJpbmcucHJvdG90eXBlLnN0YXJ0c1dpdGggY2Fubm90IGJl
IGEgUmVnRXhwIik7CiAKLSAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gYTAudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1dURlN0cmlu
ZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAogICAgIEpTVmFsdWUgcG9zaXRpb25BcmcgPSBleGVjLT5hcmd1bWVudCgxKTsKQEAgLTE5
MzIsNyArMTkzMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jRW5kc1dpdGgoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2li
bGUodGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUpOwogCi0gICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNoSW4gPSB0aGlzVmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzdHJpbmdUb1NlYXJjaEluID0gdGhpc1Zh
bHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwpA
QCAtMTk0MSw3ICsxOTQxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNFbmRzV2l0aChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKGlzUmVndWxhckV4cHJl
c3Npb24pCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXJn
dW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0aCBjYW5ub3QgYmUgYSBSZWdFeHAiKTsK
IAotICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CisgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGEwLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgdW5z
aWduZWQgbGVuZ3RoID0gc3RyaW5nVG9TZWFyY2hJbi5sZW5ndGgoKTsKQEAgLTE5ODIsNyArMTk4
Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5jbHVk
ZXMoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1Zh
bHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCi0g
ICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNoSW4gPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOworICAgIFN0cmluZyBzdHJpbmdUb1NlYXJjaEluID0gdGhpc1ZhbHVlLnRvV1RG
U3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwpAQCAtMTk5MSw3
ICsxOTkxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJ
bmNsdWRlcyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKGlzUmVndWxhckV4cHJlc3Npb24pCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXJndW1lbnQgdG8g
U3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKIAotICAgIFN0
cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAg
U3RyaW5nIHNlYXJjaFN0cmluZyA9IGEwLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBwb3Np
dGlvbkFyZyA9IGV4ZWMtPmFyZ3VtZW50KDEpOwpAQCAtMjAwOCwxMSArMjAwOCwxMSBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJ1aWx0aW5TdHJpbmdJbmNsdWRlc0ludGVybmFsKEV4
ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIEFTU0VSVChjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKTsKIAotICAgIFN0
cmluZyBzdHJpbmdUb1NlYXJjaEluID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKTsKKyAgICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1ZS50b1dURlN0cmlu
ZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBT
dHJpbmcgc2VhcmNoU3RyaW5nID0gYTAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAg
IFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgcG9z
aXRpb25BcmcgPSBleGVjLT5hcmd1bWVudCgxKTsKQEAgLTIwNzcsNyArMjA3Nyw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTm9ybWFsaXplKEV4ZWNTdGF0
ZSogZXhlYykKICAgICBVTm9ybWFsaXphdGlvbk1vZGUgZm9ybSA9IFVOT1JNX05GQzsKICAgICAv
LyBWZXJpZnkgdGhhdCB0aGUgYXJndW1lbnQgaXMgcHJvdmlkZWQgYW5kIGlzIG5vdCB1bmRlZmlu
ZWQuCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAg
IFN0cmluZyBmb3JtU3RyaW5nID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAgICBTdHJpbmcgZm9ybVN0cmluZyA9IGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgICAgICBpZiAoZm9ybVN0
cmluZyA9PSAiTkZDIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9K
U0RvbGxhclZNUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0Rv
bGxhclZNUHJvdG90eXBlLmNwcAppbmRleCAyNWE1YmQwNTFjODZiYjMzOGYzYTg4YjY0NGE5NjM4
MThjNjRiNDM4Li5iODM2NGI4MzhkOWVjYjI1OGEyMTI1MWYyNDA0Y2UxN2E4M2JiYWU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk1Qcm90b3R5cGUu
Y3BwCkBAIC0zMzcsNyArMzM3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25QcmludChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7Ci0gICAgICAgIFN0cmluZyBhcmdTdHIg
PSBleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CisgICAgICAgIFN0cmluZyBhcmdTdHIgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKS50b1dU
RlN0cmluZyhleGVjKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgICAgIGRhdGFMb2coYXJnU3RyKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVy
cm9yLmgKaW5kZXggYzE0YTM3OTA1MjA3ZDkxY2UyYTM3MDYwMzFjMDlhN2U3OTU2MzNlYy4uNmYw
NWYzZWI2MzA3ODM2NDJlZjNjMzk0ZjgxYTc2NzAyYzg5ZTQwMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3Iu
aApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yIDogcHVi
bGljIEVycm9ySW5zdGFuY2UgewogICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9y
KiBjcmVhdGUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7CiAg
ICAgc3RhdGljIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1ZhbHVlIG1lc3NhZ2UsIGJvb2wgdXNlQ3VycmVu
dEZyYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIG1l
c3NhZ2UuaXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDogbWVzc2FnZS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyksIHVzZUN1cnJlbnRGcmFtZSk7CisgICAgICAgIHJldHVybiBjcmVhdGUoZXhl
Yywgc3RydWN0dXJlLCBtZXNzYWdlLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IG1lc3NhZ2Uu
dG9XVEZTdHJpbmcoZXhlYyksIHVzZUN1cnJlbnRGcmFtZSk7CiAgICAgfQogCiAgICAgREVDTEFS
RV9JTkZPOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseVJ1bnRpbWVFcnJvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oCmluZGV4IDkzNTkzMGEyNjZjZWRlMTliZjIxYTQ0MjU3
ZGRmMjcyYzE0M2EwYTUuLjNjNzg3OWU3YTQ1Yjc2ZjE0ZWVlNmQ0OTIzNDExOWJjMGJkNGFkNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFz
c2VtYmx5UnVudGltZUVycm9yLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgSlNXZWJBc3NlbWJs
eVJ1bnRpbWVFcnJvciA6IHB1YmxpYyBFcnJvckluc3RhbmNlIHsKICAgICBzdGF0aWMgSlNXZWJB
c3NlbWJseVJ1bnRpbWVFcnJvciogY3JlYXRlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGNvbnN0
IFN0cmluZyYsIGJvb2wgdXNlQ3VycmVudEZyYW1lID0gdHJ1ZSk7CiAgICAgc3RhdGljIEpTV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU1ZhbHVlIG1lc3NhZ2UsIGJvb2wgdXNlQ3VycmVudEZyYW1lKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIG1lc3NhZ2UuaXNVbmRlZmlu
ZWQoKSA/IFN0cmluZygpIDogbWVzc2FnZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksIHVz
ZUN1cnJlbnRGcmFtZSk7CisgICAgICAgIHJldHVybiBjcmVhdGUoZXhlYywgc3RydWN0dXJlLCBt
ZXNzYWdlLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IG1lc3NhZ2UudG9XVEZTdHJpbmcoZXhl
YyksIHVzZUN1cnJlbnRGcmFtZSk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRl
eCAxMmY1N2JhYjdmNjNkZWMwNGM3MmYxNWJiY2M5ZGU3ZjhlN2Y4N2M0Li45ZDBhMjY3ZGFkYTk3
YzJjMjg5NGI4OWQxMmY1NWEyYjcwNmU0YjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHN0
YXRpYyBSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tVmFsdWUoRXhlY1N0YXRlJiBleGVj
LCBKU1ZhbHVlIHZhbHVlLCBWZWN0CiAgICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZU51bWJl
cih2YWx1ZS50b051bWJlcigmZXhlYykpOwogCiAgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpCi0g
ICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZVN0cmluZyh2YWx1ZS50b1N0cmluZygmZXhlYykt
PnZhbHVlKCZleGVjKSk7CisgICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZVN0cmluZyh2YWx1
ZS50b1dURlN0cmluZygmZXhlYyk7CiAKICAgICBpZiAodmFsdWUuaW5oZXJpdHMoRGF0ZUluc3Rh
bmNlOjppbmZvKCkpICYmICFzdGQ6OmlzbmFuKHZhbHVlVG9EYXRlKCZleGVjLCB2YWx1ZSkpKQog
ICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVEYXRlKHZhbHVlVG9EYXRlKCZleGVjLCB2YWx1
ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNr
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3Rv
bS5jcHAKaW5kZXggYmYwMDRkMDAyYjM5Yjg1MjBiNmFlOTIxNWNkYzcwYTQ2MjIzYzc1OC4uOGJl
N2Q4MGVkNWEzNGVhMWEzMGQ3N2M4YTFiYzg4YmJmNjg3ODEzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwCkBAIC00Niw3ICs0Niw3
IEBAIHZvaWQgSlNBdWRpb1RyYWNrOjpzZXRLaW5kKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUg
dmFsdWUpCiAgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvJiBzdHJpbmcgPSB2YWx1ZS50b1N0cmluZygm
c3RhdGUpLT52YWx1ZSgmc3RhdGUpOworICAgIGF1dG8mIHN0cmluZyA9IHZhbHVlLnRvV1RGU3Ry
aW5nKCZzdGF0ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAg
ICB3cmFwcGVkKCkuc2V0S2luZChzdHJpbmcpOwogI2Vsc2UKQEAgLTYxLDcgKzYxLDcgQEAgdm9p
ZCBKU0F1ZGlvVHJhY2s6OnNldExhbmd1YWdlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFs
dWUpCiAgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvJiBzdHJpbmcgPSB2YWx1ZS50b1N0cmluZygmc3Rh
dGUpLT52YWx1ZSgmc3RhdGUpOworICAgIGF1dG8mIHN0cmluZyA9IHZhbHVlLnRvV1RGU3RyaW5n
KCZzdGF0ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICB3
cmFwcGVkKCkuc2V0TGFuZ3VhZ2Uoc3RyaW5nKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcApp
bmRleCA3ZjZmOTY4YmUyMzk3YjEyZTE1NTc4YzM4Njk4ZjNiNWIyYThmMzQwLi4yMzM4MGI2YjJl
OWY1MGM2YmY3ZDZmYTc0YjVmODk2Nzc1ODE5N2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAKQEAg
LTYyLDcgKzYyLDcgQEAgYm9vbCBKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnk6OmdldEFsZ29y
aXRobUlkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHUKICAgICBTdHJpbmcgYWxnb3Jp
dGhtTmFtZTsKIAogICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKQotICAgICAgICBhbGdvcml0aG1O
YW1lID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAgICBhbGdvcml0
aG1OYW1lID0gdmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgZWxzZSBpZiAodmFsdWUuaXNP
YmplY3QoKSkgewogICAgICAgICBpZiAodmFsdWUuZ2V0T2JqZWN0KCktPmluaGVyaXRzKFN0cmlu
Z09iamVjdDo6aW5mbygpKSkKICAgICAgICAgICAgIGFsZ29yaXRobU5hbWUgPSBhc1N0cmluZyhh
c1N0cmluZ09iamVjdCh2YWx1ZSktPmludGVybmFsVmFsdWUoKSktPnZhbHVlKGV4ZWMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2
ZXIuY3BwCmluZGV4IDgwMzg5Nzc5ODkwZDMwNWMwZjY0ZGNhYTUxYjE5MDAxNzU2OTkyNTYuLmM2
Y2YwMzFjZDViMTA4MDc0ZmJhMDQ5OWM0ODZhODkzNjM5MTQzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKQEAg
LTEwMCw3ICsxMDAsNyBAQCBTdHJpbmcgSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5h
bWVzcGFjZVVSSShjb25zdCBTdHJpbmcmIHByZWZpeCkKICAgICAgICAgcmVwb3J0RXhjZXB0aW9u
KGV4ZWMsIGV4Y2VwdGlvbik7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmICghcmV0dmFsLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgICAgICByZXN1bHQgPSByZXR2YWwudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOworICAgICAgICAgICAgcmVzdWx0ID0gcmV0dmFsLnRvV1RGU3RyaW5n
KGV4ZWMpOwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggNmM2ZjNiNzEyNWEzZGI4
NmEwNTY4MTJhNTE0MmZiNjBhNDgzOGY1OC4uOGE2YWFiZGQxYTQzODY3MDZhYTllZGM2N2ViMWZi
ZGE1YmY2OGNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcApAQCAtMzg4LDcgKzM4OCw3IEBAIHZvaWQgSlNET01XaW5kb3c6OnNldExv
Y2F0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgfQogI2VuZGlmCiAK
LSAgICBTdHJpbmcgbG9jYXRpb25TdHJpbmcgPSB2YWx1ZS50b1N0cmluZygmc3RhdGUpLT52YWx1
ZSgmc3RhdGUpOworICAgIFN0cmluZyBsb2NhdGlvblN0cmluZyA9IHZhbHVlLnRvV1RGU3RyaW5n
KCZzdGF0ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAogICAg
IGlmIChMb2NhdGlvbiogbG9jYXRpb24gPSB3cmFwcGVkKCkubG9jYXRpb24oKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3Rv
bS5jcHAKaW5kZXggOGVlYTk1ZGRkNzFiOGZmMDdkNDk5NTg0ZDNmZGUzOTMxMTJmNWE1OS4uYmE4
ZmFmMzBlNDNhMzE3OTVlNDEyNDIwZDJjOTliODc1ODc1MDNhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAK
QEAgLTE3MCw3ICsxNzAsNyBAQCBKU1ZhbHVlIEpTRGV2aWNlTW90aW9uRXZlbnQ6OmluaXREZXZp
Y2VNb3Rpb25FdmVudChFeGVjU3RhdGUmIHN0YXRlKQogICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgY29uc3Qg
U3RyaW5nIHR5cGUgPSBzdGF0ZS5hcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgm
c3RhdGUpOworICAgIGNvbnN0IFN0cmluZyB0eXBlID0gc3RhdGUuYXJndW1lbnQoMCkudG9XVEZT
dHJpbmcoJnN0YXRlKTsKICAgICBib29sIGJ1YmJsZXMgPSBzdGF0ZS5hcmd1bWVudCgxKS50b0Jv
b2xlYW4oJnN0YXRlKTsKICAgICBib29sIGNhbmNlbGFibGUgPSBzdGF0ZS5hcmd1bWVudCgyKS50
b0Jvb2xlYW4oJnN0YXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAKaW5kZXggOWQ5NTRm
NTIwYTllY2I3YjY4OWI5NDI0NzBkYjNhMTUyZGFjZmZlOC4uNzdlMzQxNTM3OGRiMTZiMGQ3OTlj
NzBkM2FiM2I1ZWM5NzIwOTMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwCkBAIC05Myw3
ICs5Myw3IEBAIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjphYnNvbHV0ZShFeGVj
U3RhdGUmKSBjb25zdAogCiBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6aW5pdERl
dmljZU9yaWVudGF0aW9uRXZlbnQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBjb25zdCBTdHJp
bmcgdHlwZSA9IHN0YXRlLmFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0
ZSk7CisgICAgY29uc3QgU3RyaW5nIHR5cGUgPSBzdGF0ZS5hcmd1bWVudCgwKS50b1dURlN0cmlu
Zygmc3RhdGUpOwogICAgIGJvb2wgYnViYmxlcyA9IHN0YXRlLmFyZ3VtZW50KDEpLnRvQm9vbGVh
bigmc3RhdGUpOwogICAgIGJvb2wgY2FuY2VsYWJsZSA9IHN0YXRlLmFyZ3VtZW50KDIpLnRvQm9v
bGVhbigmc3RhdGUpOwogICAgIC8vIElmIGFscGhhLCBiZXRhIG9yIGdhbW1hIGFyZSBudWxsIG9y
IHVuZGVmaW5lZCwgbWFyayB0aGVtIGFzIG5vdCBwcm92aWRlZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDZhMTQ5MTQ4Y2YyY2RkZTU1
MmI3YjBkNGQ4OTgzZTE2YzQ1NDVlZTYuLjVjOGM0M2IzMzJmYjhkYjNhNjkzYjJhN2UyOGVhNDYx
NDA4ZTU5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRM
aXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3Rl
bmVyLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgSlNFdmVudExpc3RlbmVyOjpoYW5kbGVF
dmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAg
ICAgICAgICByZXBvcnRFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIGlmICghcmV0dmFsLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgaXM8QmVm
b3JlVW5sb2FkRXZlbnQ+KCpldmVudCkpCi0gICAgICAgICAgICAgICAgZG93bmNhc3Q8QmVmb3Jl
VW5sb2FkRXZlbnQ+KCpldmVudCkuc2V0UmV0dXJuVmFsdWUocmV0dmFsLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSk7CisgICAgICAgICAgICAgICAgZG93bmNhc3Q8QmVmb3JlVW5sb2FkRXZl
bnQ+KCpldmVudCkuc2V0UmV0dXJuVmFsdWUocmV0dmFsLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAg
ICAgICAgICAgaWYgKG1faXNBdHRyaWJ1dGUpIHsKICAgICAgICAgICAgICAgICBpZiAocmV0dmFs
LmlzRmFsc2UoKSkKICAgICAgICAgICAgICAgICAgICAgZXZlbnQtPnByZXZlbnREZWZhdWx0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0
aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxl
Y3Rpb25DdXN0b20uY3BwCmluZGV4IGUzOTMyYzkxZDdjZjE2NTFiYjUyZTU5ZGJjMmJkZTI4ZWM0
MGFhZDguLjExOTgyYWNjMWNmNWE1NzE3NzFhZTZiYTZmNWJmZTRiYzAyZWYxNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25D
dXN0b20uY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxIVE1MQWxsQ29sbGVjdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpID09IDEpIHsKICAgICAgICAgLy8gU3VwcG9ydCBmb3IgZG9j
dW1lbnQuYWxsKDxpbmRleD4pIGV0Yy4KLSAgICAgICAgU3RyaW5nIHN0cmluZyA9IGV4ZWMtPmFy
Z3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgU3RyaW5nIHN0
cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgaWYgKHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleCgqc3RyaW5nLmltcGwoKSkp
CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywganNDb2xsZWN0
aW9uLT5nbG9iYWxPYmplY3QoKSwgY29sbGVjdGlvbi5pdGVtKGluZGV4LnZhbHVlKCkpKSk7CkBA
IC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxI
VE1MQWxsQ29sbGVjdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgfQogCiAgICAgLy8gVGhlIHNl
Y29uZCBhcmcsIGlmIHNldCwgaXMgdGhlIGluZGV4IG9mIHRoZSBpdGVtIHdlIHdhbnQKLSAgICBT
dHJpbmcgc3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOworICAgIFN0cmluZyBzdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhl
eGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KCpleGVj
LT5hcmd1bWVudCgxKS50b1dURlN0cmluZyhleGVjKS5pbXBsKCkpKSB7CiAgICAgICAgIGlmIChh
dXRvKiBpdGVtID0gY29sbGVjdGlvbi5uYW1lZEl0ZW1XaXRoSW5kZXgoc3RyaW5nLCBpbmRleC52
YWx1ZSgpKSkKQEAgLTExOSw3ICsxMTksNyBAQCBKU1ZhbHVlIEpTSFRNTEFsbENvbGxlY3Rpb246
Oml0ZW0oRXhlY1N0YXRlJiBzdGF0ZSkKIAogSlNWYWx1ZSBKU0hUTUxBbGxDb2xsZWN0aW9uOjpu
YW1lZEl0ZW0oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gbmFtZWRJ
dGVtcyhzdGF0ZSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsIHN0YXRlLmFy
Z3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSkpKTsKKyAgICBKU1ZhbHVl
IHZhbHVlID0gbmFtZWRJdGVtcyhzdGF0ZSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
c3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgcmV0dXJu
IHZhbHVlLmlzVW5kZWZpbmVkKCkgPyBqc051bGwoKSA6IHZhbHVlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDk0MWM2OTI3MzlhZDY1MjMyNDYzNzhlYjA5ZThh
Yjg4OGY5MmM1OTAuLmU5Mzc4YjU5YWVmNjM3MWU4MWQ1YWNmZTlhMGYzZWNiNjMxMjA1MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC02Miw3ICs2Miw3IEBAIEpTVmFs
dWUgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKEV4ZWNTdGF0ZSYgc3Rh
dGUpCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAg
ICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKLSAgICBKU1ZhbHVlIHZhbHVlID0gbmFtZWRJdGVtcyhz
dGF0ZSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsIHN0YXRlLnVuY2hlY2tl
ZEFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSkpKTsKKyAgICBKU1Zh
bHVlIHZhbHVlID0gbmFtZWRJdGVtcyhzdGF0ZSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKCZzdGF0ZSk7
CiAgICAgcmV0dXJuIHZhbHVlLmlzVW5kZWZpbmVkKCkgPyBqc051bGwoKSA6IHZhbHVlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1l
bnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVt
ZW50Q3VzdG9tLmNwcAppbmRleCBlZTkwMzBmYTA0ODhiZTliZjQyN2MyOWE4NGViM2YzOWJmZDVk
YmExLi44MGMzOGNmNjFlY2NkZTM4ZDc2OTkwNGZmZTA5MzYwYTMzM2NjYzE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3Rv
bS5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIEpTSFRNTElucHV0RWxlbWVudDo6c2V0U2Vs
ZWN0aW9uRGlyZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpbnB1dC5zZXRTZWxlY3Rpb25EaXJlY3Rpb24odmFsdWUu
dG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKSk7CisgICAgaW5wdXQuc2V0U2VsZWN0aW9u
RGlyZWN0aW9uKHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiB9CiAKIEpTVmFsdWUgSlNIVE1M
SW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZShFeGVjU3RhdGUmIHN0YXRlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVu
ZEhvc3RDdXN0b20uY3BwCmluZGV4IGY0MDY0ZTY0NzU1OGVmZWRjYjYzZDljMTBjMTk4MTQxMWRh
ZjZmNGQuLjFiMWExZmNlMzczMmNiMzUzYzg2ZWY2YmYwZWJlMzg2ODZlYWUwZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250
ZW5kSG9zdEN1c3RvbS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIHZvaWQgcG9wdWxhdGVD
b250ZXh0TWVudUl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNBcnJheSogYXJyYXksIENvbnRleHRN
ZW4KICAgICAgICAgaWYgKCF0eXBlLmlzU3RyaW5nKCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBTdHJpbmcgdHlwZVN0cmluZyA9IHR5cGUudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOworICAgICAgICBTdHJpbmcgdHlwZVN0cmluZyA9IHR5cGUudG9XVEZTdHJpbmcoZXhl
Yyk7CiAgICAgICAgIGlmICh0eXBlU3RyaW5nID09ICJzZXBhcmF0b3IiKSB7CiAgICAgICAgICAg
ICBDb250ZXh0TWVudUl0ZW0gaXRlbShTZXBhcmF0b3JUeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdO
b0FjdGlvbiwgU3RyaW5nKCkpOwogICAgICAgICAgICAgbWVudS5hcHBlbmRJdGVtKGl0ZW0pOwpA
QCAtNzAsMTEgKzcwLDExIEBAIHN0YXRpYyB2b2lkIHBvcHVsYXRlQ29udGV4dE1lbnVJdGVtcyhF
eGVjU3RhdGUqIGV4ZWMsIEpTQXJyYXkqIGFycmF5LCBDb250ZXh0TWVuCiAgICAgICAgICAgICBD
b250ZXh0TWVudSBzdWJNZW51OwogICAgICAgICAgICAgSlNBcnJheSogc3ViSXRlbXNBcnJheSA9
IGFzQXJyYXkoc3ViSXRlbXMpOwogICAgICAgICAgICAgcG9wdWxhdGVDb250ZXh0TWVudUl0ZW1z
KGV4ZWMsIHN1Ykl0ZW1zQXJyYXksIHN1Yk1lbnUpOwotICAgICAgICAgICAgQ29udGV4dE1lbnVJ
dGVtIGl0ZW0oU3VibWVudVR5cGUsIENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uLCBsYWJlbC50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICZzdWJNZW51KTsKKyAgICAgICAgICAgIENvbnRl
eHRNZW51SXRlbSBpdGVtKFN1Ym1lbnVUeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbiwg
bGFiZWwudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgICAgICAgICBtZW51LmFwcGVuZEl0ZW0oaXRl
bSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBDb250ZXh0TWVudUFjdGlvbiB0eXBl
ZElkID0gc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVBY3Rpb24+KENvbnRleHRNZW51SXRlbUJhc2VD
dXN0b21UYWcgKyBpZC50b0ludDMyKGV4ZWMpKTsKLSAgICAgICAgICAgIENvbnRleHRNZW51SXRl
bSBtZW51SXRlbSgodHlwZVN0cmluZyA9PSAiY2hlY2tib3giID8gQ2hlY2thYmxlQWN0aW9uVHlw
ZSA6IEFjdGlvblR5cGUpLCB0eXBlZElkLCBsYWJlbC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YykpOworICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIG1lbnVJdGVtKCh0eXBlU3RyaW5nID09
ICJjaGVja2JveCIgPyBDaGVja2FibGVBY3Rpb25UeXBlIDogQWN0aW9uVHlwZSksIHR5cGVkSWQs
IGxhYmVsLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgICAgICAgICAgaWYgKCFlbmFibGVkLmlzVW5k
ZWZpbmVkKCkpCiAgICAgICAgICAgICAgICAgbWVudUl0ZW0uc2V0RW5hYmxlZChlbmFibGVkLnRv
Qm9vbGVhbihleGVjKSk7CiAgICAgICAgICAgICBpZiAoIWNoZWNrZWQuaXNVbmRlZmluZWQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9t
LmNwcAppbmRleCAyNzE0Mjk3M2YzNjViOWM4NWY2NDdhZjBmODg4YTcyOGFhODk2ZjA5Li5mOGI3
ZTAxNTMxZjYzZWU1YTA5MjdkNjBlNDk5ODc4MmY3YTdlYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCkBAIC0xMDgsNyAr
MTA4LDcgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBoYW5kbGVJbml0TWVzc2FnZUV2ZW50KEpTTWVz
c2FnZUV2ZW50KiBqc0V2ZW50LCBKU0M6OkV4ZWNTdGEKICAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGNvbnN0
IFN0cmluZyYgdHlwZUFyZyA9IHN0YXRlLmFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZh
bHVlKCZzdGF0ZSk7CisgICAgY29uc3QgU3RyaW5nJiB0eXBlQXJnID0gc3RhdGUuYXJndW1lbnQo
MCkudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBK
U1ZhbHVlKCkpOwogCiAgICAgYm9vbCBjYW5CdWJibGVBcmcgPSBzdGF0ZS5hcmd1bWVudCgxKS50
b0Jvb2xlYW4oJnN0YXRlKTsKQEAgLTEyMiw3ICsxMjIsNyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVl
IGhhbmRsZUluaXRNZXNzYWdlRXZlbnQoSlNNZXNzYWdlRXZlbnQqIGpzRXZlbnQsIEpTQzo6RXhl
Y1N0YQogICAgIGNvbnN0IFN0cmluZyBvcmlnaW5BcmcgPSBjb252ZXJ0PElETFVTVlN0cmluZz4o
c3RhdGUsIHN0YXRlLmFyZ3VtZW50KDQpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBKU1ZhbHVlKCkpOwogCi0gICAgY29uc3QgU3RyaW5nIGxhc3RFdmVudElkQXJnID0gc3RhdGUu
YXJndW1lbnQoNSkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKKyAgICBjb25zdCBT
dHJpbmcgbGFzdEV2ZW50SWRBcmcgPSBzdGF0ZS5hcmd1bWVudCg1KS50b1dURlN0cmluZygmc3Rh
dGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CiAKICAgICBh
dXRvIHNvdXJjZUFyZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMVW5pb248SURMSW50ZXJmYWNl
PERPTVdpbmRvdz4sIElETEludGVyZmFjZTxNZXNzYWdlUG9ydD4+Pj4oc3RhdGUsIHN0YXRlLmFy
Z3VtZW50KDYpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FM
VHJhbnNhY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxU
cmFuc2FjdGlvbkN1c3RvbS5jcHAKaW5kZXggOTE3ZDYzNzM4NzA2YzBiMjQyZjRkODFjYjcyY2Nj
MWY3ZjA3MTI5MS4uZDg5ZTVlN2U0YzFkZmVlNTQyZWZkNTU5M2VjODNlNGZhNGRjOTE0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1
c3RvbS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgSlNWYWx1ZSBKU1NRTFRyYW5zYWN0aW9uOjpleGVj
dXRlU3FsKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
ICAgIH0KIAotICAgIFN0cmluZyBzcWxTdGF0ZW1lbnQgPSBzdGF0ZS5hcmd1bWVudCgwKS50b1N0
cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOworICAgIFN0cmluZyBzcWxTdGF0ZW1lbnQgPSBz
dGF0ZS5hcmd1bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CiAKICAgICAvLyBOb3cgYXNzZW1ibGUgdGhlIGxpc3Qg
b2YgU1FMIGFyZ3VtZW50cwpAQCAtNzksNyArNzksNyBAQCBKU1ZhbHVlIEpTU1FMVHJhbnNhY3Rp
b246OmV4ZWN1dGVTcWwoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgICAgICBzcWxWYWx1
ZXMuYXBwZW5kKHZhbHVlLmFzTnVtYmVyKCkpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAgICAgLy8gQ29udmVydCB0aGUgYXJndW1lbnQgdG8gYSBzdHJpbmcgYW5kIGFwcGVuZCBp
dAotICAgICAgICAgICAgICAgIHNxbFZhbHVlcy5hcHBlbmQodmFsdWUudG9TdHJpbmcoJnN0YXRl
KS0+dmFsdWUoJnN0YXRlKSk7CisgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZCh2YWx1
ZS50b1dURlN0cmluZygmc3RhdGUpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIEpTVmFsdWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNwcAppbmRleCA4MTU5
NGIyMzk2ODBlNTFlNzg4MGVlMjNhNGU4MmFlY2U4NTQxMWVhLi44MjgzN2NkMTcyY2RlNTExMGRj
OGI3OTNlMGMyZWNjZDkzOTEzZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNUZXh0VHJhY2tDdXN0b20uY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgSlNUZXh0VHJh
Y2s6OnNldExhbmd1YWdlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgVk0m
IHZtID0gc3RhdGUudm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBhdXRvJiBzdHJpbmcgPSB2YWx1ZS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgm
c3RhdGUpOworICAgIGF1dG8mIHN0cmluZyA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICB3cmFwcGVkKCkuc2V0
TGFuZ3VhZ2Uoc3RyaW5nKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcAppbmRleCA3ZWQyYWI3OWNjNWQwZWUzMGJlYjk1Yjlh
Y2VmYjk3ZDYxY2E3NmZjLi5kODJlYzUwYTZlZTM4M2Y0NWMzNzBlNWQ0ZWUzYTIwZWRkZmZiMzkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3Rv
bS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBKU1ZpZGVvVHJhY2s6OnNldEtpbmQoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8mIHN0cmlu
ZyA9IHZhbHVlLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CisgICAgYXV0byYgc3Ry
aW5nID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOwogICAgIHdyYXBwZWQoKS5zZXRLaW5kKHN0cmluZyk7CiAjZWxzZQpA
QCAtNjEsNyArNjEsNyBAQCB2b2lkIEpTVmlkZW9UcmFjazo6c2V0TGFuZ3VhZ2UoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8mIHN0cmluZyA9
IHZhbHVlLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CisgICAgYXV0byYgc3RyaW5n
ID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOwogICAgIHdyYXBwZWQoKS5zZXRMYW5ndWFnZShzdHJpbmcpOwogI2Vsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5
cHRvQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxl
Q3J5cHRvQ3VzdG9tLmNwcAppbmRleCA1NDRhOTgyMjU4NTEyYmNkZjNhNmMyNzc2ZTk2NDZjYWFh
MGI3MDU3Li4wNzQyYzM4YmMzY2E2ZTA4NTJmOWQ4M2VhMzdhYzIxMjU3YmQyYjY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdFN1YnRsZUNyeXB0b0N1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlw
dG9DdXN0b20uY3BwCkBAIC04NCw3ICs4NCw3IEBAIHN0YXRpYyBib29sIGNyeXB0b0tleUZvcm1h
dEZyb21KU1ZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUsIENyeXB0b0tlCiAg
ICAgVk0mIHZtID0gc3RhdGUudm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBTdHJpbmcga2V5Rm9ybWF0U3RyaW5nID0gdmFsdWUudG9TdHJpbmco
JnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKKyAgICBTdHJpbmcga2V5Rm9ybWF0U3RyaW5nID0gdmFs
dWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBm
YWxzZSk7CiAgICAgaWYgKGtleUZvcm1hdFN0cmluZyA9PSAicmF3IikKICAgICAgICAgcmVzdWx0
ID0gQ3J5cHRvS2V5Rm9ybWF0OjpSYXc7CkBAIC0xMTYsNyArMTE2LDcgQEAgc3RhdGljIGJvb2wg
Y3J5cHRvS2V5VXNhZ2VzRnJvbUpTVmFsdWUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1
ZSwgQ3J5cHRvS2UKICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodmFsdWUpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXktPmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgSlNW
YWx1ZSBlbGVtZW50ID0gYXJyYXktPmdldEluZGV4KCZzdGF0ZSwgaSk7Ci0gICAgICAgIFN0cmlu
ZyB1c2FnZVN0cmluZyA9IGVsZW1lbnQudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsK
KyAgICAgICAgU3RyaW5nIHVzYWdlU3RyaW5nID0gZWxlbWVudC50b1dURlN0cmluZygmc3RhdGUp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIGlm
ICh1c2FnZVN0cmluZyA9PSAiZW5jcnlwdCIpCiAgICAgICAgICAgICByZXN1bHQgfD0gQ3J5cHRv
S2V5VXNhZ2VFbmNyeXB0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAppbmRleCAzMzYyZjQ0OGJjZmI4ZTdhMjYyNGJmYTU3
MDk5ZDQwODBkZGVkZTZiLi4yNWRlZjRlYjgyOTMzZjAxZmZjOTg1OTM3ZjQ1NDAyMTA1YzhmMDAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1
ZXN0Q3VzdG9tLmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVz
dDo6c2VuZChFeGVjU3RhdGUmIHN0YXRlKQogICAgIGVsc2UgewogICAgICAgICAvLyBGSVhNRTog
SWYgdG9TdHJpbmcgcmFpc2VzIGFuIGV4Y2VwdGlvbiwgc2hvdWxkIHdlIGV4aXQgYmVmb3JlIGNh
bGxpbmcgd2lsbFNlbmRYTUxIdHRwUmVxdWVzdD8KICAgICAgICAgLy8gRklYTUU6IElmIHRvU3Ry
aW5nIHJhaXNlcyBhbiBleGNlcHRpb24sIHNob3VsZCB3ZSBleGl0IGJlZm9yZSBjYWxsaW5nIHNl
bmQ/Ci0gICAgICAgIHJlc3VsdCA9IHdyYXBwZWQoKS5zZW5kKHZhbHVlLnRvU3RyaW5nKCZzdGF0
ZSktPnZhbHVlKCZzdGF0ZSkpOworICAgICAgICByZXN1bHQgPSB3cmFwcGVkKCkuc2VuZCh2YWx1
ZS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBwcm9iYWJseSB1c2UgU2hhZG93Q2hpY2tlbiBzbyB0aGF0IHdlIGdldCB0aGUgcmlnaHQgZnJh
bWUgZXZlbiB3aGVuIGl0IGRpZCBhIHRhaWwgY2FsbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwCmluZGV4IDE1MmI4NzM3MDBi
OWEwZGM0NjhjYzAzZmIwOWUxYTQzMjRkYzc2ODEuLjJhOGE5ZGY3YjBjNjBkM2RhZmI4OTUzZDkw
NzY1MGYyNzhjYTRmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
WFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcApAQCAtNTAsOSArNTAsOSBAQCBKU1ZhbHVlIEpTWFNM
VFByb2Nlc3Nvcjo6c2V0UGFyYW1ldGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgaWYgKHN0
YXRlLmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgc3RhdGUuYXJndW1lbnQoMiku
aXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7IC8vIFRo
cm93IGV4Y2VwdGlvbj8KLSAgICBTdHJpbmcgbmFtZXNwYWNlVVJJID0gc3RhdGUudW5jaGVja2Vk
QXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKLSAgICBTdHJpbmcg
bG9jYWxOYW1lID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkudG9TdHJpbmcoJnN0YXRlKS0+
dmFsdWUoJnN0YXRlKTsKLSAgICBTdHJpbmcgdmFsdWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVu
dCgyKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOworICAgIFN0cmluZyBuYW1lc3Bh
Y2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpOwor
ICAgIFN0cmluZyBsb2NhbE5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b1dURlN0
cmluZygmc3RhdGUpOworICAgIFN0cmluZyB2YWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50
KDIpLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgd3JhcHBlZCgpLnNldFBhcmFtZXRlcihuYW1l
c3BhY2VVUkksIGxvY2FsTmFtZSwgdmFsdWUpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
fQpAQCAtNjEsOCArNjEsOCBAQCBKU1ZhbHVlIEpTWFNMVFByb2Nlc3Nvcjo6Z2V0UGFyYW1ldGVy
KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50KDEpLmlzVW5kZWZp
bmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIFN0cmluZyBu
YW1lc3BhY2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUp
LT52YWx1ZSgmc3RhdGUpOwotICAgIFN0cmluZyBsb2NhbE5hbWUgPSBzdGF0ZS51bmNoZWNrZWRB
cmd1bWVudCgxKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOworICAgIFN0cmluZyBu
YW1lc3BhY2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZygmc3Rh
dGUpOworICAgIFN0cmluZyBsb2NhbE5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50
b1dURlN0cmluZygmc3RhdGUpOwogICAgIFN0cmluZyB2YWx1ZSA9IHdyYXBwZWQoKS5nZXRQYXJh
bWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwogICAgIHJldHVybiBqc1N0cmluZ09yVW5k
ZWZpbmVkKCZzdGF0ZSwgdmFsdWUpOwogfQpAQCAtNzEsOCArNzEsOCBAQCBKU1ZhbHVlIEpTWFNM
VFByb2Nlc3Nvcjo6cmVtb3ZlUGFyYW1ldGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgaWYg
KHN0YXRlLmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwotICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRB
cmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwotICAgIFN0cmluZyBs
b2NhbE5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b1N0cmluZygmc3RhdGUpLT52
YWx1ZSgmc3RhdGUpOworICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRB
cmd1bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpOworICAgIFN0cmluZyBsb2NhbE5hbWUgPSBz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIHdyYXBw
ZWQoKS5yZW1vdmVQYXJhbWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwogICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NoZWR1bGVkQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVk
dWxlZEFjdGlvbi5jcHAKaW5kZXggMGQzNjQwM2UxMmFhYWM0MmNiZWIzZWNiYTlmNDdmOTgyM2Y0
ZGQ1NC4uOTA4ZjRkYzg4Yzc5NzZlZTIwYjg3OTI2ODk5YTIwOTY3MzcyMmE2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCkBAIC01NSw3ICs1
NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IFNjaGVkdWxlZEFjdGlvbjo6
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgRE9NV3JhCiAgICAgaWYgKGdldENhbGxEYXRhKHYsIGNh
bGxEYXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkgewogICAgICAgICBpZiAocG9saWN5ICYmICFwb2xp
Y3ktPmFsbG93RXZhbChleGVjKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAg
ICBTdHJpbmcgc3RyaW5nID0gdi50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAg
IFN0cmluZyBzdHJpbmcgPSB2LnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxTY2hlZHVsZWRBY3Rpb24+KG5ldyBTY2hlZHVsZWRBY3Rpb24oc3RyaW5nLCBpc29sYXRlZFdv
cmxkKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGls
aXR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAKaW5kZXggZTRl
YzNjNjdjNTBjOGIwOTIzZjkxNWRiNDJkNzRkMjUwYTZlYzUxNy4uN2JkYTAyNmFlYjc1ODZkODA0
NWVmNTdhYjNiODkyNjZiZGE3MjFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L2MvY191dGlsaXR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHku
Y3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgY29udmVydFZhbHVlVG9OUFZhcmlhbnQoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBOUFZhcmlhbnQqIHJlc3VsdCkKICAgICBWT0lEX1RP
X05QVkFSSUFOVCgqcmVzdWx0KTsKIAogICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7Ci0gICAg
ICAgIFN0cmluZyB1c3RyaW5nID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwor
ICAgICAgICBTdHJpbmcgdXN0cmluZyA9IHZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgICAg
ICBDU3RyaW5nIGNzdHJpbmcgPSB1c3RyaW5nLnV0ZjgoKTsKICAgICAgICAgTlBTdHJpbmcgc3Ry
aW5nID0geyAoY29uc3QgTlBVVEY4Kiljc3RyaW5nLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGNzdHJpbmcubGVuZ3RoKCkpIH07CiAgICAgICAgIE5QTl9Jbml0aWFsaXplVmFyaWFudFdp
dGhTdHJpbmdDb3B5KHJlc3VsdCwgJnN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvdGVzdGJpbmRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0Ymlu
ZGluZ3MuY3BwCmluZGV4IGJhZjI0N2QyZGI2Y2U3ZTdlZTExM2EyMTBiODdjYzMzYTcyNmEwNDAu
LmQ3ZTgwMzIyNDBkNDkyNjU5MjZmMTFiZDMwYjAzZTJhNjcxMjcxOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS90ZXN0YmluZGluZ3MuY3BwCkBAIC0zOTEsNyArMzkxLDcgQEAgaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlm
IChjb21wLmNvbXBsVHlwZSgpID09IFRocm93KSB7CiAgICAgICAgICAgICAgICAgICAgIFZhbHVl
IGV4VmFsID0gY29tcC52YWx1ZSgpOwotICAgICAgICAgICAgICAgICAgICBjaGFyKiBtc2cgPSBl
eFZhbC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykuYXNjaWkoKTsKKyAgICAgICAgICAgICAg
ICAgICAgY2hhciogbXNnID0gZXhWYWwudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgICAgICAgICAg
ICAgICAgIGludCBsaW5lbm8gPSAtMTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGV4VmFsLnR5
cGUoKSA9PSBPYmplY3RUeXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSBsaW5l
VmFsID0gT2JqZWN0OjpkeW5hbWljQ2FzdChleFZhbCkuZ2V0KGV4ZWMsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoZXhlYywgImxpbmUiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmNwcAppbmRleCAzODYwZWYzN2IxMmM2OGFkOGU3NDQ4YzQ1ZWE4YTE5
OTY3ZDg1MmE3Li4xNWI2NTc4YjY3YWVlZDhjN2RiYTg5YTIwYzlhNTlhZWFkZDQ4MDczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTE1
MTMsNyArMTUxMyw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVu
ZXI+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2CiAgICAgICAgIHN0YXRlID0g
ZXhlY1N0YXRlRnJvbU5vZGUoc2NyaXB0TGlzdGVuZXItPmlzb2xhdGVkV29ybGQoKSwgJm5vZGUt
PmRvY3VtZW50KCkpOwogICAgICAgICBoYW5kbGVyID0gc2NyaXB0TGlzdGVuZXItPmpzRnVuY3Rp
b24oJm5vZGUtPmRvY3VtZW50KCkpOwogICAgICAgICBpZiAoaGFuZGxlciAmJiBzdGF0ZSkgewot
ICAgICAgICAgICAgYm9keSA9IGhhbmRsZXItPnRvU3RyaW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUp
OworICAgICAgICAgICAgYm9keSA9IGhhbmRsZXItPnRvV1RGU3RyaW5nKHN0YXRlKTsKICAgICAg
ICAgICAgIGlmIChhdXRvIGZ1bmN0aW9uID0ganNEeW5hbWljRG93bmNhc3Q8SlNDOjpKU0Z1bmN0
aW9uKj4oaGFuZGxlcikpIHsKICAgICAgICAgICAgICAgICBpZiAoIWZ1bmN0aW9uLT5pc0hvc3RP
ckJ1aWx0aW5GdW5jdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvIGV4ZWN1
dGFibGUgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9i
amVjdE1hcC5jcHAKaW5kZXggNDk5MjBmMmNhYTg0Zjc2OWI2MmQyNDYyYTljOTgwN2Y1MjBjZjNl
ZC4uMjU5MzI4OWM0NTUyMmJiOWUzODdmNDZhZDQyOTc2NzBiNDllOTA0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVj
dE1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05QUnVudGltZU9iamVjdE1hcC5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIE5QUnVudGlt
ZU9iamVjdE1hcDo6Y29udmVydEpTVmFsdWVUb05QVmFyaWFudChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdQogICAgIH0KIAogICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAg
IE5QU3RyaW5nIG5wU3RyaW5nID0gY3JlYXRlTlBTdHJpbmcodmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpLnV0ZjgoKSk7CisgICAgICAgIE5QU3RyaW5nIG5wU3RyaW5nID0gY3JlYXRl
TlBTdHJpbmcodmFsdWUudG9XVEZTdHJpbmcoZXhlYykudXRmOCgpKTsKICAgICAgICAgU1RSSU5H
Tl9UT19OUFZBUklBTlQobnBTdHJpbmcuVVRGOENoYXJhY3RlcnMsIG5wU3RyaW5nLlVURjhMZW5n
dGgsIHZhcmlhbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296997</attachid>
            <date>2016-12-13 01:49:03 -0800</date>
            <delta_ts>2016-12-13 02:00:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165795-20161213184812.patch</filename>
            <type>text/plain</type>
            <size>68918</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5NzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NjY5MDAzYmU4MTQyYjZiMWMxMTdiZWU2MGViZGMxZDUwNmNjOWQ1Li5lMjc4YWZiYjViNGMzOTUz
YzNjNGRjOThiZDU2MTBkNzM4ZjNmYzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4OCBAQAorMjAxNi0xMi0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBVc2UgSlNWYWx1ZTo6dG9XVEZTdHJpbmcgaW5zdGVhZCBvZiBjYWxs
aW5nIHRvU3RyaW5nKGV4ZWMpIGFuZCB2YWx1ZShleGVjKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1Nzk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gb2xkIGRheXMsIHdlIGZyZXF1ZW50bHkgdXNl
IHRoZSBpZGlvbSBsaWtlLCBgdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpYCB0bwor
ICAgICAgICBnZXQgV1RGU3RyaW5nIGZyb20gdGhlIGdpdmVuIEpTVmFsdWUuIEJ1dCBub3csIHdl
IGhhdmUgYmV0dGVyIGZ1bmN0aW9uLCBgdG9XVEZTdHJpbmdgLgorICAgICAgICBgdG9XVEZTdHJp
bmdgIGRvZXMgbm90IGNyZWF0ZSBpbnRlcm1lZGlhdGUgSlNTdHJpbmcgb2JqZWN0cywgdGhlbiBy
ZWR1Y2UgdW5uZWNlc3NhcnkKKyAgICAgICAgYWxsb2NhdGlvbnMuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtZWNoYW5pY2FsbHkgcmVwbGFjZXMgYHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKWAgd2l0aCBgdG9XVEZTdHJpbmcoZXhlYylgLgorCisgICAgICAgICogQVBJL0pTVmFsdWVS
ZWYuY3BwOgorICAgICAgICAoSlNWYWx1ZVRvU3RyaW5nQ29weSk6CisgICAgICAgICogYmluZGlu
Z3MvU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWU6OnRv
U3RyaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyOjpyZXBvcnRBUElFeGNlcHRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9KU0lu
amVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbik6CisgICAgICAgICogaW5zcGVjdG9y
L0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSmF2YVNj
cmlwdENhbGxGcmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24pOgorICAgICAgICAqIGlu
c3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6
ZXh0cmFjdFNvdXJjZUluZm9ybWF0aW9uRnJvbUV4Y2VwdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9Db25zb2xlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6dmFsdWVUb1N0cmluZ1dpdGhVbmRl
ZmluZWRPck51bGxDaGVjayk6CisgICAgICAgIChKU0M6OnZhbHVlT3JEZWZhdWx0TGFiZWxTdHJp
bmcpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6ZGF0ZVBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmb3JtYXRMb2NhbGVEYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5z
dGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpzYW5pdGl6ZWRUb1N0cmlu
Zyk6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OmVycm9yUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6aW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0TG9nKToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ1Nsb3dDYXNlKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVu
Y0V2YWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAo
SlNDOjpKU01vZHVsZUxvYWRlcjo6ZmV0Y2gpOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlTG9h
ZGVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyUHJvdG90eXBlUGFy
c2VNb2R1bGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpyZWdFeHBDcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jQ29tcGlsZSk6CisgICAgICAg
IChKU0M6OnJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCk6
CisgICAgICAgIChKU0M6OnJlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaCk6CisgICAgICAgIChKU0M6
OnN0cmluZ1Byb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3Bs
aXRGYXN0KToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3Vic3RyKToKKyAgICAgICAg
KEpTQzo6c3RyaW5nUHJvdG9GdW5jTG9jYWxlQ29tcGFyZSk6CisgICAgICAgIChKU0M6OnN0cmlu
Z1Byb3RvRnVuY0JpZyk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1NtYWxsKToKKyAg
ICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jQmxpbmspOgorICAgICAgICAoSlNDOjpzdHJpbmdQ
cm90b0Z1bmNCb2xkKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jRml4ZWQpOgorICAg
ICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNJdGFsaWNzKToKKyAgICAgICAgKEpTQzo6c3RyaW5n
UHJvdG9GdW5jU3RyaWtlKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3ViKToKKyAg
ICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3VwKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJv
dG9GdW5jRm9udGNvbG9yKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jRm9udHNpemUp
OgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNBbmNob3IpOgorICAgICAgICAoSlNDOjpz
dHJpbmdQcm90b0Z1bmNMaW5rKToKKyAgICAgICAgKEpTQzo6dHJpbVN0cmluZyk6CisgICAgICAg
IChKU0M6OnN0cmluZ1Byb3RvRnVuY1N0YXJ0c1dpdGgpOgorICAgICAgICAoSlNDOjpzdHJpbmdQ
cm90b0Z1bmNFbmRzV2l0aCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0luY2x1ZGVz
KToKKyAgICAgICAgKEpTQzo6YnVpbHRpblN0cmluZ0luY2x1ZGVzSW50ZXJuYWwpOgorICAgICAg
ICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNOb3JtYWxpemUpOgorICAgICAgICAqIHRvb2xzL0pTRG9s
bGFyVk1Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvblByaW50KToKKyAgICAg
ICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaDoKKyAgICAgICAgKEpTQzo6
SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL0pT
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseVJ1
bnRpbWVFcnJvcjo6Y3JlYXRlKToKKwogMjAxNi0xMi0xMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIEJ5dGVjb2RlR2VuZXJhdG9yJ3MgQ29udHJvbEZs
b3dDb250ZXh0IHRvIENvbnRyb2xGbG93U2NvcGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM0ZGM2ZDQzNGI2
MmMxYjVjZTViMTU0MjVmNTVmNTliZWFjNmE4Ni4uYzMzYzMwZjFmMjA0NGE4NjU1NzNkMzMxNzk2
OTYzODg4ZGVmNjNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDE2LTEyLTEzICBZ
dXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFVzZSBKU1Zh
bHVlOjp0b1dURlN0cmluZyBpbnN0ZWFkIG9mIGNhbGxpbmcgdG9TdHJpbmcoZXhlYykgYW5kIHZh
bHVlKGV4ZWMpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjU3OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlSURCS2V5RnJvbVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldE50aFZhbHVl
T25LZXlQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmludGVybmFsQ3JlYXRlSURC
S2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjplbnN1cmVOdGhWYWx1ZU9uS2V5UGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpj
YW5JbmplY3ROdGhWYWx1ZU9uS2V5UGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpp
bmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
bWF5YmVDcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpkZXNlcmlhbGl6ZUlEQlZhbHVlVG9KU1ZhbHVlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnNjcmlwdFZhbHVlVG9JREJLZXkpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6aWRiS2V5RGF0YVRvU2NyaXB0VmFsdWUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlS2V5UGF0aEFycmF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9U
cmFjazo6c2V0S2luZCk6CisgICAgICAgIChXZWJDb3JlOjpKU0F1ZGlvVHJhY2s6OnNldExhbmd1
YWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5OjpnZXRB
bGdvcml0aG1JZGVudGlmaWVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRo
TlNSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVhQYXRoTlNSZXNvbHZl
cjo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0TG9jYXRpb24p
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VNb3Rpb25FdmVudDo6aW5pdERldmljZU1vdGlvbkV2
ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojppbml0
RGV2aWNlT3JpZW50YXRpb25FdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExp
c3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjp2aXJ0dWFsaXNBdHRyaWJ1
dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpvcGVyYXRv
cj09KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmV2ZW50SGFuZGxlckF0dHJpYnV0ZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVFdmVudExpc3RlbmVyRm9yRXZlbnRI
YW5kbGVyQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNldEV2ZW50SGFu
ZGxlckF0dHJpYnV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp3aW5kb3dFdmVudEhh
bmRsZXJBdHRyaWJ1dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6c2V0V2luZG93RXZl
bnRIYW5kbGVyQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50
RXZlbnRIYW5kbGVyQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNldERv
Y3VtZW50RXZlbnRIYW5kbGVyQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNh
bGxIVE1MQWxsQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxBbGxDb2xsZWN0
aW9uOjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxJ
bnB1dEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5wdXRFbGVt
ZW50OjpzZXRTZWxlY3Rpb25EaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5w
dXRFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cG9wdWxhdGVDb250ZXh0TWVudUl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSW5zcGVj
dG9yRnJvbnRlbmRIb3N0OjpzaG93Q29udGV4dE1lbnUpOiBEZWxldGVkLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhh
bmRsZUluaXRNZXNzYWdlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1FMVHJhbnNh
Y3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTUUxUcmFuc2FjdGlvbjo6ZXhl
Y3V0ZVNxbCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXh0VHJhY2s6OnNldExhbmd1YWdlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNW
aWRlb1RyYWNrOjpzZXRLaW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVmlkZW9UcmFjazo6c2V0
TGFuZ3VhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyeXB0b0tleUZvcm1hdEZyb21KU1ZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyeXB0b0tleVVzYWdlc0Zyb21KU1ZhbHVlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRw
UmVxdWVzdDo6cmVzcG9uc2VUZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTWE1M
SHR0cFJlcXVlc3Q6OnJldHJpZXZlUmVzcG9uc2UpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1hT
TFRQcm9jZXNzb3I6OnNldFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1hTTFRQcm9j
ZXNzb3I6OmdldFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1hTTFRQcm9jZXNzb3I6
OnJlbW92ZVBhcmFtZXRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBicmlkZ2UvYy9jX3V0aWxpdHkuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y29u
dmVydFZhbHVlVG9OUFZhcmlhbnQpOgorICAgICAgICAqIGJyaWRnZS90ZXN0YmluZGluZ3MuY3Bw
OgorICAgICAgICAobWFpbik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZv
ckV2ZW50TGlzdGVuZXIpOgorCiAyMDE2LTEyLTEyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgYmluZGluZ3MgZ2VuZXJhdGlvbiBzdXBwb3J0IGZvciBs
ZWdhY3kgV2ViQ29yZTo6RGljdGlvbmFyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGQ3NTAwNTQ1YTQ3YjQwNmRh
YjUxZjlhMWUyMjkwZGQzNjI5MDYxYmYuLjNiODFjMzFkMDE2NWZiZTJhNjhkZWQwY2NkZjZiM2E4
NDg3MGQ2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0xMi0xMyAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBVc2UgSlNWYWx1ZTo6
dG9XVEZTdHJpbmcgaW5zdGVhZCBvZiBjYWxsaW5nIHRvU3RyaW5nKGV4ZWMpIGFuZCB2YWx1ZShl
eGVjKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1
Nzk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TlBSdW50aW1lT2JqZWN0TWFwOjpjb252ZXJ0SlNWYWx1ZVRvTlBWYXJpYW50
KToKKwogMjAxNi0xMi0xMiAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAg
ICAgW2lPU10gTWVkaWFEb2N1bWVudCAiRG9uZSIgYnV0dG9uIHNob3VsZCBuYXZpZ2F0ZSB0aGUg
cGFnZSBiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVS
ZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAppbmRleCA0
Mjg0MzUwZmE3MTVjNjVjMjI3MDcyY2ZiZTg2OWMzNzdiM2MzOWFiLi5jMjdiN2MzNWM4OTRiNGE0
OTdiMzcxNTk1OTk4ODBlOTY5ZDkyZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWVSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNW
YWx1ZVJlZi5jcHAKQEAgLTQwMSw3ICs0MDEsNyBAQCBKU1N0cmluZ1JlZiBKU1ZhbHVlVG9TdHJp
bmdDb3B5KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqCiAK
ICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsKICAgICAKLSAgICBhdXRv
IHN0cmluZ1JlZihPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGpzVmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKSk7CisgICAgYXV0byBzdHJpbmdSZWYoT3BhcXVlSlNTdHJpbmc6OmNyZWF0
ZShqc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpKSk7CiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklm
TmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKICAg
ICAgICAgc3RyaW5nUmVmID0gbnVsbHB0cjsKICAgICByZXR1cm4gc3RyaW5nUmVmLmxlYWtSZWYo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCmlu
ZGV4IDlmN2EyMTZjNWVmY2ZlMzI5OGJhOTE2YmZjMDU5OWUzNmY5MWFlNmUuLjI1NTY4YTNmODE3
YzNlMWYxMDdmYThlMWRjZjAwMzlkOTMxNDlhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIFN0cmluZyBT
Y3JpcHRWYWx1ZTo6dG9TdHJpbmcoRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkgY29uc3QKICAgICBW
TSYgdm0gPSBzY3JpcHRTdGF0ZS0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRD
SF9TQ09QRSh2bSk7CiAKLSAgICBTdHJpbmcgcmVzdWx0ID0gbV92YWx1ZS5nZXQoKS50b1N0cmlu
ZyhzY3JpcHRTdGF0ZSktPnZhbHVlKHNjcmlwdFN0YXRlKTsKKyAgICBTdHJpbmcgcmVzdWx0ID0g
bV92YWx1ZS5nZXQoKS50b1dURlN0cmluZyhzY3JpcHRTdGF0ZSk7CiAgICAgLy8gSGFuZGxlIHRo
ZSBjYXNlIHdoZXJlIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gYXMgcGFydCBvZiBpbnZva2luZyB0
b1N0cmluZyBvbiB0aGUgb2JqZWN0LgogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24o
KSkpCiAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggYjU4Yzg4ODA4M2E0Y2ZhMTA3NTg5MDE1NzBkYTc2
MzQxYmQ1ZGRmNi4uNGZiN2Q3OTJiYTliYWM2ZWJhZjIxNjZkNjFmMWVhOWU5ZmNjNjdjZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdElu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpyZXBvcnRBUElFeGNl
cHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNlCiAKICAgICAvLyBGSVhNRTogPGh0dHA6Ly93ZWJr
aXQub3JnL2IvMTE1MDg3PiBXZWIgSW5zcGVjdG9yOiBTaG91bGQgbm90IGV2YWx1YXRlIEphdmFT
Y3JpcHQgaGFuZGxpbmcgZXhjZXB0aW9ucwogICAgIC8vIElmIHRoaXMgaXMgYSBjdXN0b20gZXhj
ZXB0aW9uIG9iamVjdCwgY2FsbCB0b1N0cmluZyBvbiBpdCB0byB0cnkgYW5kIGdldCBhIG5pY2Ug
c3RyaW5nIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgZXhjZXB0aW9uLgotICAgIFN0cmluZyBlcnJv
ck1lc3NhZ2UgPSBleGNlcHRpb24tPnZhbHVlKCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
OworICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBleGNlcHRpb24tPnZhbHVlKCkudG9XVEZTdHJp
bmcoZXhlYyk7CiAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKIAogICAgIGlmIChKU0dsb2Jh
bE9iamVjdENvbnNvbGVDbGllbnQ6OmxvZ1RvU3lzdGVtQ29uc29sZSgpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3Qu
Y3BwCmluZGV4IDc1ODZkN2ZhNDg2YjgwMzZmYjA4OGMyOGY5OTYwZDM3MWMyMzAxMDguLjNmMjZm
ZTZlZDZmOGE4ZGRiYzYwNGFlYmFlZjdlMmU5MjE1MmI4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCkBA
IC0xMDIsNyArMTAyLDcgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVX
aXRoU2NvcGVFeHRlbnNpb24oRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICghc2NyaXB0VmFsdWUu
aXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoIkluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lv
biBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLiIpKTsKIAotICAgIFN0cmluZyBwcm9n
cmFtID0gc2NyaXB0VmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmlu
ZyBwcm9ncmFtID0gc2NyaXB0VmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKIAogICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4g
ZXhjZXB0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCmluZGV4IDM4ZjA3NmY5MzNlNThkYzI3NTRkZTZl
ODMwNGM5ZTY0YWFkY2UzZmIuLmM2YWE0YTc3ZWRjMjU0ZTBlYTgxMzIwNDY0NDYzZjliODdkZTZh
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
SmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgSlNWYWx1ZSBKU0phdmFT
Y3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEV4ZWNTdGF0ZSogZXhl
YykKICAgICBpZiAoIXNjcmlwdFZhbHVlLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJKU0phdmFTY3JpcHRDYWxsRnJh
bWUuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24gZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0
cmluZy4iKSk7CiAKLSAgICBTdHJpbmcgc2NyaXB0ID0gc2NyaXB0VmFsdWUudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzY3JpcHQgPSBzY3JpcHRWYWx1ZS50b1dURlN0
cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwog
CiAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcApp
bmRleCBjNDQ5NmQzZDcyODczYzhiMTEzMGVmY2MyM2ZkOWJkODBhNmRmZDA3Li5jNDc3NThmYjQ1
NTZiZDY5OGYyNDk4NGFkYTI3ZGU3MjljMTBlMDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKQEAg
LTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgdm9pZCBleHRyYWN0U291cmNlSW5mb3JtYXRpb25Gcm9t
RXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdAogICAgIEpTVmFsdWUgY29s
dW1uVmFsdWUgPSBleGNlcHRpb25PYmplY3QtPmdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjb2x1bW4iKSk7CiAgICAgKmNvbHVtbk51bWJlciA9IGNv
bHVtblZhbHVlICYmIGNvbHVtblZhbHVlLmlzTnVtYmVyKCkgPyBpbnQoY29sdW1uVmFsdWUudG9O
dW1iZXIoZXhlYykpIDogMDsKICAgICBKU1ZhbHVlIHNvdXJjZVVSTFZhbHVlID0gZXhjZXB0aW9u
T2JqZWN0LT5nZXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCAic291cmNlVVJMIikpOwotICAgICpzb3VyY2VVUkwgPSBzb3VyY2VVUkxWYWx1ZSAmJiBzb3Vy
Y2VVUkxWYWx1ZS5pc1N0cmluZygpID8gc291cmNlVVJMVmFsdWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpIDogQVNDSUlMaXRlcmFsKCJ1bmRlZmluZWQiKTsKKyAgICAqc291cmNlVVJMID0g
c291cmNlVVJMVmFsdWUgJiYgc291cmNlVVJMVmFsdWUuaXNTdHJpbmcoKSA/IHNvdXJjZVVSTFZh
bHVlLnRvV1RGU3RyaW5nKGV4ZWMpIDogQVNDSUlMaXRlcmFsKCJ1bmRlZmluZWQiKTsKICAgICBz
Y29wZS5jbGVhckV4Y2VwdGlvbigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db25zb2xlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbnNvbGVPYmplY3QuY3BwCmluZGV4IDMwYTliYmRlOWUwYmIwNDlhZWMxNmI4OTQ1
ZjEyMmE4ZWQ2NmFmMjguLjE5YmQ1YmRhNDcxY2UyMzJkNzk0NDgzNGNiMmYxMjVlNDg0MzJhMTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuY3Bw
CkBAIC0xMDEsNyArMTAxLDcgQEAgc3RhdGljIFN0cmluZyB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVm
aW5lZE9yTnVsbENoZWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWwKIHsKICAgICBpZiAo
dmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAg
IHJldHVybiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgcmV0dXJuIHZh
bHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY29uc29s
ZUxvZ1dpdGhMZXZlbChFeGVjU3RhdGUqIGV4ZWMsIE1lc3NhZ2VMZXZlbCBsZXZlbCkKQEAgLTI5
MSw3ICsyOTEsNyBAQCBzdGF0aWMgU3RyaW5nIHZhbHVlT3JEZWZhdWx0TGFiZWxTdHJpbmcoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5l
ZCgpKQogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJkZWZhdWx0Iik7Ci0gICAgcmV0dXJu
IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICByZXR1cm4gdmFsdWUudG9X
VEZTdHJpbmcoZXhlYyk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnNvbGVQcm90b0Z1bmNUaW1lKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCmluZGV4IDBkZmFkYWY4OGE0
ZWMxM2QyM2ZmYjRhNTg3ZmQ1YTU5ZjliMjU3ODEuLmE4MjUwMTdiMDY3YzQyMjYwNjU3YjljOTMx
YjhlNDE4YzM4MWVmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUNvbnN0cnVjdG9yLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVBhcnNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBTdHJpbmcgZGF0ZVN0ciA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKKyAgICBTdHJpbmcgZGF0ZVN0ciA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3Ry
aW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGFyc2VEYXRlKHZtLCBk
YXRlU3RyKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJv
dG90eXBlLmNwcAppbmRleCA3ODg4NmRiOTdmMmU0ZDA5MGE2ZWQ4OWI1YmVhY2IwMjA5MGU2ZWU1
Li5lMzQ5YTcxMzU0NGViNmM2OTQ3N2Q5YzkxZWIxN2Q2NTBmMmIyMGE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcApAQCAtMTUxLDEzICsx
NTEsMTMgQEAgc3RhdGljIEpTQ2VsbCogZm9ybWF0TG9jYWxlRGF0ZShFeGVjU3RhdGUqIGV4ZWMs
IERhdGVJbnN0YW5jZSosIGRvdWJsZSB0aW1lSW5NaWwKICAgICBib29sIHVzZUN1c3RvbUZvcm1h
dCA9IGZhbHNlOwogICAgIFN0cmluZyBjdXN0b21Gb3JtYXRTdHJpbmc7CiAKLSAgICBTdHJpbmcg
YXJnMFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KTsKKyAgICBTdHJpbmcgYXJnMFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5n
KGV4ZWMpOwogICAgIGlmIChhcmcwU3RyaW5nID09ICJjdXN0b20iICYmICFleGVjLT5hcmd1bWVu
dCgxKS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIHVzZUN1c3RvbUZvcm1hdCA9IHRydWU7Ci0g
ICAgICAgIGN1c3RvbUZvcm1hdFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgY3VzdG9tRm9ybWF0U3RyaW5nID0gZXhlYy0+YXJn
dW1lbnQoMSkudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT0gTG9j
YWxlRGF0ZUFuZFRpbWUgJiYgIWV4ZWMtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkpIHsKICAg
ICAgICAgZGF0ZVN0eWxlID0gc3R5bGVGcm9tQXJnU3RyaW5nKGFyZzBTdHJpbmcsIGRhdGVTdHls
ZSk7Ci0gICAgICAgIHRpbWVTdHlsZSA9IHN0eWxlRnJvbUFyZ1N0cmluZyhleGVjLT5hcmd1bWVu
dCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksIHRpbWVTdHlsZSk7CisgICAgICAgIHRp
bWVTdHlsZSA9IHN0eWxlRnJvbUFyZ1N0cmluZyhleGVjLT5hcmd1bWVudCgxKS50b1dURlN0cmlu
ZyhleGVjKSwgdGltZVN0eWxlKTsKICAgICB9IGVsc2UgaWYgKGZvcm1hdCAhPSBMb2NhbGVUaW1l
ICYmICFleGVjLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpKQogICAgICAgICBkYXRlU3R5bGUg
PSBzdHlsZUZyb21BcmdTdHJpbmcoYXJnMFN0cmluZywgZGF0ZVN0eWxlKTsKICAgICBlbHNlIGlm
IChmb3JtYXQgIT0gTG9jYWxlRGF0ZSAmJiAhZXhlYy0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFu
Y2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAK
aW5kZXggNDVjMWMwZTZkNGIxZjA4MGIyYjRlYjQ3NjcwZTM4NGE1MWRiM2FhZi4uZWQ4ZjJkN2E0
NTNlMmZkNWQ0MjEwYWM1N2UwY2Q0NmIxODZmNTBmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCBTdHJp
bmcgRXJyb3JJbnN0YW5jZTo6c2FuaXRpemVkVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAg
IGlmICghbmFtZVZhbHVlKQogICAgICAgICBuYW1lU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJFcnJv
ciIpOwogICAgIGVsc2UgewotICAgICAgICBuYW1lU3RyaW5nID0gbmFtZVZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgbmFtZVN0cmluZyA9IG5hbWVWYWx1ZS50b1dU
RlN0cmluZyhleGVjKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgU3RyaW5n
KCkpOwogICAgIH0KIApAQCAtMjA4LDcgKzIwOCw3IEBAIFN0cmluZyBFcnJvckluc3RhbmNlOjpz
YW5pdGl6ZWRUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKCFtZXNzYWdlVmFsdWUp
CiAgICAgICAgIG1lc3NhZ2VTdHJpbmcgPSBTdHJpbmcoKTsKICAgICBlbHNlIHsKLSAgICAgICAg
bWVzc2FnZVN0cmluZyA9IG1lc3NhZ2VWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CisgICAgICAgIG1lc3NhZ2VTdHJpbmcgPSBtZXNzYWdlVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIFN0cmluZygpKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcApp
bmRleCA1MDY4NjQ0ZWZmMWQyMzI2NThlMTY4ZWFiNWFjNThiMjlmYWFhMmEzLi5iNjZhMTRkNTlj
NDU3NDY5NzBmMWY4NzcxY2UwOWJkZTczYjkzZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCkBAIC05Myw3ICs5Myw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgaWYgKG5hbWUuaXNVbmRlZmluZWQoKSkKICAgICAgICAgbmFtZVN0cmluZyA9
IEFTQ0lJTGl0ZXJhbCgiRXJyb3IiKTsKICAgICBlbHNlIHsKLSAgICAgICAgbmFtZVN0cmluZyA9
IG5hbWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAgICBuYW1lU3RyaW5nID0g
bmFtZS50b1dURlN0cmluZyhleGVjKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogCkBAIC0xMDgsNyArMTA4LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlcnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICBpZiAobWVzc2FnZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICBtZXNzYWdlU3Ry
aW5nID0gU3RyaW5nKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIG1lc3NhZ2VTdHJpbmcgPSBtZXNz
YWdlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgbWVzc2FnZVN0cmluZyA9
IG1lc3NhZ2UudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9i
amVjdC5jcHAKaW5kZXggZGM3OTdjYThlNjEzOTg1MzUxYjlkZDY0MjFmNjkzYTBjYWE4MzMzZS4u
ZjY5ZjgzMWVlYzA2NjE2OTIxMjM3OTljMzRjYjA2NTkwZjdjYzM4NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QuY3BwCkBAIC04Niw3ICs4Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgaW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0TG9nKEV4ZWNTdGF0ZSogZXhl
YykKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwot
ICAgIFN0cmluZyB2YWx1ZSA9IHRhcmdldC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Cisg
ICAgU3RyaW5nIHZhbHVlID0gdGFyZ2V0LnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGRhdGFMb2codmFsdWUs
ICJcbiIpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IDFmOGM2ZDU5
MDYzYzA1MzUxZGJjYzA4Y2E0NDJjMGFiN2ZkNmNiOGYuLmUzNjlmYWEzZjZkNzA2OTZhYWUwOWI3
NmE1NjBhMDFiZTJmNjhjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuY3BwCkBAIC0zOTIsNyArMzkyLDcgQEAgU3RyaW5nIEpTVmFsdWU6OnRvV1RGU3Ry
aW5nU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgICAgICByZXR1cm4gdm0ucHJv
cGVydHlOYW1lcy0+bnVsbEtleXdvcmQuc3RyaW5nKCk7CiAgICAgaWYgKGlzVW5kZWZpbmVkKCkp
CiAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLnN0cmlu
ZygpOwotICAgIHJldHVybiB0b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgcmV0dXJu
IHRvV1RGU3RyaW5nKGV4ZWMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmNwcAppbmRleCA0MjJkN2VmNDU3ZDU5M2QxZGMxOTk0ZjEwMDA5OTQ1NWE3Y2E0ZTgwLi5jNjJl
NGY3MThhNzhkYmJlMzY1MWRkN2ZjNjliNjJiNTczOTUxNTBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3Bw
CkBAIC02NjYsNyArNjY2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxG
dW5jRXZhbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAgU3RyaW5nIHMgPSB4LnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHgudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBpZiAo
cy5pczhCaXQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVMb2FkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVMb2FkZXIuY3BwCmluZGV4IGVmODViMzdiZWQ0ODgwZGYyNGYwZjRkMTM1NmY1NTY1MDgxNWFi
ZTcuLmJmZDhmNDk1MWQwMDg2NTRlYjVhZTkwMjU1MDlhZWI5YjI3NDg3ZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKQEAgLTE1OCw3
ICsxNTgsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OmZldGNoKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIEpTVmFsdWUgaQogICAgIGlmIChnbG9iYWxPYmplY3Qt
Pmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPm1vZHVsZUxvYWRlckZldGNoKQogICAgICAgICBy
ZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5tb2R1bGVMb2Fk
ZXJGZXRjaChnbG9iYWxPYmplY3QsIGV4ZWMsIHRoaXMsIGtleSwgaW5pdGlhdG9yKTsKICAgICBK
U0ludGVybmFsUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTSW50ZXJuYWxQcm9taXNlRGVm
ZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOwotICAgIFN0cmluZyBtb2R1bGVLZXkg
PSBrZXkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBtb2R1bGVLZXkg
PSBrZXkudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlv
bigpKSkgewogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbiA9IHNjb3BlLmV4Y2VwdGlvbigpLT52
YWx1ZSgpOwogICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAKaW5k
ZXggN2RjZDdkNWU2NWZkMzk4OGUwZWE2NmE4NDFmYWNkODc0ZTRmMTI5Zi4uM2ZjY2RhNzY2YWZi
NTZkYmEwNmQ5YTJiMzQ4ZTM3ZTRjNWRjMDI3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwCkBAIC0xMTAsNyAr
MTEwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJQcm90b3R5
cGVQYXJzZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgY29uc3QgSWRlbnRpZmllciBtb2R1
bGVLZXkgPSBleGVjLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGV4ZWMpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgU3RyaW5nIHNv
dXJjZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAg
ICBTdHJpbmcgc291cmNlID0gZXhlYy0+YXJndW1lbnQoMSkudG9XVEZTdHJpbmcoZXhlYyk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBT
b3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBtYWtlU291cmNlKHNvdXJjZSwgbW9kdWxlS2V5LmltcGwo
KSwgVGV4dFBvc2l0aW9uKCksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6TW9kdWxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNw
cAppbmRleCBmYmFkNDliYzA3NDg3YjliM2ZkZTc0N2VkYmFmY2U5MTg3N2E5MjY1Li5iODg2Y2Zj
YjM5YzQ2MzQ5ZmQyZThhMjc0YTM5YWExM2FmOGM0N2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCkBAIC0yMzEsNyArMjMx
LDcgQEAgc3RhdGljIEpTT2JqZWN0KiByZWdFeHBDcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1YKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN0cmluZyBw
YXR0ZXJuID0gcGF0dGVybkFyZy5pc1VuZGVmaW5lZCgpID8gZW1wdHlTdHJpbmcoKSA6IHBhdHRl
cm5BcmcudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBwYXR0ZXJuID0g
cGF0dGVybkFyZy5pc1VuZGVmaW5lZCgpID8gZW1wdHlTdHJpbmcoKSA6IHBhdHRlcm5BcmcudG9X
VEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
CiAKICAgICBSZWdFeHBGbGFncyBmbGFncyA9IHRvRmxhZ3MoZXhlYywgZmxhZ3NBcmcpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKaW5k
ZXggODgyNDA4MmU0ZmMwNzcyNmU1MzljYjkxZThjZDMxNWU3ZjZlYzZhOS4uZjAzYjliNGYzMjE3
YzE1M2EyZTA3NzI5YzJhOWFmYzM2NTNlNjYxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCkBAIC0xNjYsMTIgKzE2NiwxMiBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0NvbXBpbGUoRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IHN1cHBseSBmbGFncyB3aGVuIGNvbnN0cnVjdGluZyBv
bmUgUmVnRXhwIGZyb20gYW5vdGhlci4iKSk7CiAgICAgICAgIHJlZ0V4cCA9IGFzUmVnRXhwT2Jq
ZWN0KGFyZzApLT5yZWdFeHAoKTsKICAgICB9IGVsc2UgewotICAgICAgICBTdHJpbmcgcGF0dGVy
biA9IGFyZzAuaXNVbmRlZmluZWQoKSA/IGVtcHR5U3RyaW5nKCkgOiBhcmcwLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSBhcmcwLmlzVW5kZWZp
bmVkKCkgPyBlbXB0eVN0cmluZygpIDogYXJnMC50b1dURlN0cmluZyhleGVjKTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAgICAg
UmVnRXhwRmxhZ3MgZmxhZ3MgPSBOb0ZsYWdzOwogICAgICAgICBpZiAoIWFyZzEuaXNVbmRlZmlu
ZWQoKSkgewotICAgICAgICAgICAgZmxhZ3MgPSByZWdFeHBGbGFncyhhcmcxLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKSk7CisgICAgICAgICAgICBmbGFncyA9IHJlZ0V4cEZsYWdzKGFyZzEu
dG9XVEZTdHJpbmcoZXhlYykpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICBpZiAoZmxhZ3MgPT0gSW52YWxpZEZs
YWdzKQogICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNy
ZWF0ZVN5bnRheEVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBmbGFncyBzdXBwbGll
ZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIikpKTsKQEAgLTI0MywxMiArMjQzLDEyIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRl
KiBleGVjKQogCiAgICAgSlNWYWx1ZSBzb3VyY2VWYWx1ZSA9IHRoaXNPYmplY3QtPmdldChleGVj
LCB2bS5wcm9wZXJ0eU5hbWVzLT5zb3VyY2UpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFN0cmluZyBzb3VyY2UgPSBzb3VyY2VWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHNvdXJjZSA9IHNvdXJjZVZh
bHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBmbGFnc1ZhbHVlID0gdGhpc09iamVjdC0+
Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmZsYWdzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBTdHJpbmcgZmxhZ3MgPSBmbGFnc1Zh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgZmxhZ3MgPSBmbGFn
c1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggZTE2MGIy
M2JlNzgxZmI3ODNiNjZiMTQ4YzkwMmIzMjM5NWUwZDM0Zi4uYWVlZTRiY2RkOGIzNWUzYzgzYjU3
YzFmZDBiOTdmYzllOWNiN2FlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC01NTQsNyArNTU0LDcgQEAgc3RhdGljIEFMV0FZ
U19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKAogCiAgICAg
ICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRUaGlzKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAg
ICAgICAgIEpTVmFsdWUganNSZXN1bHQgPSBjYWNoZWRDYWxsLmNhbGwoKTsKLSAgICAgICAgICAg
ICAgICByZXBsYWNlbWVudHMuYXBwZW5kKGpzUmVzdWx0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSk7CisgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzLmFwcGVuZChqc1Jlc3VsdC50b1dU
RlN0cmluZyhleGVjKSk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSByZXN1
bHQuZW5kOwpAQCAtNTkzLDcgKzU5Myw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRK
U1ZhbHVlIHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCgKIAogICAgICAgICAgICAgICAgIGNhY2hl
ZENhbGwuc2V0VGhpcyhqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGpz
UmVzdWx0ID0gY2FjaGVkQ2FsbC5jYWxsKCk7Ci0gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRz
LmFwcGVuZChqc1Jlc3VsdC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgICAgICAg
ICAgICAgIHJlcGxhY2VtZW50cy5hcHBlbmQoanNSZXN1bHQudG9XVEZTdHJpbmcoZXhlYykpOwog
ICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogCiAgICAgICAgICAgICAgICAgbGFzdEluZGV4ID0gcmVzdWx0LmVuZDsKQEAgLTYzNSw3
ICs2MzUsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSByZXBsYWNlVXNp
bmdSZWdFeHBTZWFyY2goCiAKICAgICAgICAgICAgICAgICBKU1ZhbHVlIHJlcGxhY2VtZW50ID0g
Y2FsbChleGVjLCByZXBsYWNlVmFsdWUsIGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmluZWQo
KSwgYXJncyk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHJlcGxhY2VtZW50U3RyaW5n
ID0gcmVwbGFjZW1lbnQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAgICAgICAg
ICAgIFN0cmluZyByZXBsYWNlbWVudFN0cmluZyA9IHJlcGxhY2VtZW50LnRvV1RGU3RyaW5nKGV4
ZWMpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50cy5hcHBlbmQocmVwbGFjZW1l
bnRTdHJpbmcpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwpAQCAtNzE4LDcgKzcxOCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IEVuY29kZWRKU1ZhbHVlIHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaChWTSYgdm0sIEV4ZWNTdGF0
ZSoKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENh
bGxEYXRhKHJlcGxhY2VWYWx1ZSwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxs
VHlwZTo6Tm9uZSkgewotICAgICAgICByZXBsYWNlbWVudFN0cmluZyA9IHJlcGxhY2VWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgIHJlcGxhY2VtZW50U3RyaW5nID0g
cmVwbGFjZVZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAKQEAgLTczMiw3ICs3MzIsNyBA
QCBzdGF0aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSByZXBsYWNlVXNpbmdTdHJpbmdT
ZWFyY2goVk0mIHZtLCBFeGVjU3RhdGUqCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcgPSBqc1N0cmluZy0+dmFsdWUo
ZXhlYyk7Ci0gICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IHNlYXJjaFZhbHVlLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gc2VhcmNoVmFsdWUu
dG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICBzaXplX3QgbWF0Y2hTdGFydCA9IHN0cmluZy5maW5kKHNlYXJj
aFN0cmluZyk7CkBAIC03NTEsNyArNzUxLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2Rl
ZEpTVmFsdWUgcmVwbGFjZVVzaW5nU3RyaW5nU2VhcmNoKFZNJiB2bSwgRXhlY1N0YXRlKgogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9
CiAKLSAgICBTdHJpbmcgcmVwbGFjZVN0cmluZyA9IHJlcGxhY2VWYWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHJlcGxhY2VTdHJpbmcgPSByZXBsYWNlVmFsdWUu
dG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICBTdHJpbmdJbXBsKiBzdHJpbmdJbXBsID0gc3RyaW5nLmltcGwo
KTsKQEAgLTExMTUsNyArMTExNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlz
VmFsdWUpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Ci0g
ICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAg
IFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgaW50IGxlbiA9IHMubGVu
Z3RoKCk7CkBAIC0xMTgzLDcgKzExODMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAzLiBM
ZXQgUyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgVG9TdHJpbmcsIGdpdmluZyBpdCB0aGUgdGhp
cyB2YWx1ZSBhcyBpdHMgYXJndW1lbnQuCiAgICAgLy8gNy4gTGV0IHMgYmUgdGhlIG51bWJlciBv
ZiBjaGFyYWN0ZXJzIGluIFMuCi0gICAgU3RyaW5nIGlucHV0ID0gdGhpc1ZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgaW5wdXQgPSB0aGlzVmFsdWUudG9XVEZT
dHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgQVNTRVJUKCFpbnB1dC5pc051bGwoKSk7CiAKQEAgLTEyMDUsNyArMTIwNSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAvLyA5LiBJZiBzZXBhcmF0b3IgaXMgYSBSZWdFeHAgb2Jq
ZWN0IChpdHMgW1tDbGFzc11dIGlzICJSZWdFeHAiKSwgbGV0IFIgPSBzZXBhcmF0b3I7CiAgICAg
Ly8gICAgb3RoZXJ3aXNlIGxldCBSID0gVG9TdHJpbmcoc2VwYXJhdG9yKS4KICAgICBKU1ZhbHVl
IHNlcGFyYXRvclZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgU3RyaW5n
IHNlcGFyYXRvciA9IHNlcGFyYXRvclZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
KyAgICBTdHJpbmcgc2VwYXJhdG9yID0gc2VwYXJhdG9yVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAg
ICAvLyAxMC4gSWYgbGltID09IDAsIHJldHVybiBBLgpAQCAtMTMyNCw3ICsxMzI0LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIoRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICBqc1N0cmluZyA9IGpzQ2FzdDxKU1N0cmluZyo+KHRoaXNWYWx1ZS5h
c0NlbGwoKSk7CiAgICAgICAgIGxlbiA9IGpzU3RyaW5nLT5sZW5ndGgoKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICB1U3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KTsKKyAgICAgICAgdVN0cmluZyA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAg
IGxlbiA9IHVTdHJpbmcubGVuZ3RoKCk7CiAgICAgfQpAQCAtMTQ1NSwxMSArMTQ1NSwxMSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUo
RXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgU3RyaW5nIHMgPSB0aGlz
VmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1Zh
bHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwot
ICAgIFN0cmluZyBzdHIgPSBhMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3Ry
aW5nIHN0ciA9IGEwLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dW1iZXIoQ29sbGF0b3IoKS5jb2xsYXRlKHMsIHN0cikpKTsKIH0KQEAgLTE1NzQsNyArMTU3NCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQmlnKEV4ZWNT
dGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAgIFN0cmluZyBzID0gdGhpc1ZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50
b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICI8YmlnPiIsIHMsICI8L2JpZz4iKSk7
CkBAIC0xNTg4LDcgKzE1ODgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY1NtYWxsKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1Zh
bHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAg
IFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBT
dHJpbmcgcyA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICI8
c21hbGw+IiwgcywgIjwvc21hbGw+IikpOwpAQCAtMTYwMiw3ICsxNjAyLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNCbGluayhFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNo
ZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKTsKLSAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmco
ZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtl
Tm9udHJpdmlhbFN0cmluZyhleGVjLCAiPGJsaW5rPiIsIHMsICI8L2JsaW5rPiIpKTsKQEAgLTE2
MTYsNyArMTYxNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jQm9sZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKLSAgICBTdHJpbmcg
cyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMg
PSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiPGI+Iiwgcywg
IjwvYj4iKSk7CkBAIC0xNjMwLDcgKzE2MzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY0ZpeGVkKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2li
bGUodGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUpOwotICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBzY29wZS5yZWxl
YXNlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5n
KGV4ZWMsICI8dHQ+IiwgcywgIjwvdHQ+IikpOwpAQCAtMTY0NCw3ICsxNjQ0LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJdGFsaWNzKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1dURlN0
cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICI8aT4iLCBzLCAiPC9pPiIpKTsKQEAgLTE2NTgs
NyArMTY1OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
U3RyaWtlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAgIFN0cmluZyBz
ID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9
IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICI8c3RyaWtlPiIs
IHMsICI8L3N0cmlrZT4iKSk7CkBAIC0xNjcyLDcgKzE2NzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1YihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0
Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlKTsKLSAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgc2Nv
cGUucmVsZWFzZSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlh
bFN0cmluZyhleGVjLCAiPHN1Yj4iLCBzLCAiPC9zdWI+IikpOwpAQCAtMTY4Niw3ICsxNjg2LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdXAoRXhlY1N0
YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRv
V1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIjxzdXA+IiwgcywgIjwvc3VwPiIpKTsK
QEAgLTE3MDAsNyArMTcwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jRm9udGNvbG9yKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhp
c1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwot
ICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAg
ICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgYTAgPSBl
eGVjLT5hcmd1bWVudCgwKTsKQEAgLTE3MTksNyArMTcxOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jRm9udHNpemUoRXhlY1N0YXRlKiBleGVjKQogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09i
amVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7Ci0gICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAg
ICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwpAQCAtMTc3NCw3ICsxNzc0LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNBbmNob3IoRXhlY1N0
YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRv
V1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwpAQCAtMTc5
Myw3ICsxNzkzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNMaW5rKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAgIFN0cmluZyBz
ID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9
IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVu
dCgwKTsKQEAgLTE4NDAsNyArMTg0MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSB0cmltU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aGlzVmFsdWUsIGludCB0cmltS2luCiAKICAg
ICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCiAgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgU3RyaW5nIHN0ciA9IHRoaXNWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHN0ciA9IHRoaXNWYWx1ZS50
b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwog
CiAgICAgdW5zaWduZWQgbGVmdCA9IDA7CkBAIC0xODk4LDcgKzE4OTgsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N0YXJ0c1dpdGgoRXhlY1N0YXRlKiBl
eGVjKQogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCi0gICAgU3RyaW5nIHN0cmlu
Z1RvU2VhcmNoSW4gPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAg
IFN0cmluZyBzdHJpbmdUb1NlYXJjaEluID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAg
SlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwpAQCAtMTkwNyw3ICsxOTA3LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdGFydHNXaXRoKEV4ZWNT
dGF0ZSogZXhlYykKICAgICBpZiAoaXNSZWd1bGFyRXhwcmVzc2lvbikKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJBcmd1bWVudCB0byBTdHJpbmcucHJvdG90
eXBlLnN0YXJ0c1dpdGggY2Fubm90IGJlIGEgUmVnRXhwIik7CiAKLSAgICBTdHJpbmcgc2VhcmNo
U3RyaW5nID0gYTAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzZWFy
Y2hTdHJpbmcgPSBhMC50b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgcG9zaXRpb25BcmcgPSBl
eGVjLT5hcmd1bWVudCgxKTsKQEAgLTE5MzIsNyArMTkzMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgoRXhlY1N0YXRlKiBleGVjKQogICAg
IGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCi0gICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNo
SW4gPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBz
dHJpbmdUb1NlYXJjaEluID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBh
MCA9IGV4ZWMtPmFyZ3VtZW50KDApOwpAQCAtMTk0MSw3ICsxOTQxLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNFbmRzV2l0aChFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgaWYgKGlzUmVndWxhckV4cHJlc3Npb24pCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0
aCBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKIAotICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGEw
LnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nVG9TZWFyY2hJbi5s
ZW5ndGgoKTsKQEAgLTE5ODIsNyArMTk4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jSW5jbHVkZXMoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICghY2hl
Y2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUpOwogCi0gICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNoSW4gPSB0aGlz
VmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzdHJpbmdUb1Nl
YXJjaEluID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMt
PmFyZ3VtZW50KDApOwpAQCAtMTk5MSw3ICsxOTkxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJbmNsdWRlcyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYg
KGlzUmVndWxhckV4cHJlc3Npb24pCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyBjYW5ub3Qg
YmUgYSBSZWdFeHAiKTsKIAotICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGEwLnRvV1RGU3Ry
aW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogCiAgICAgSlNWYWx1ZSBwb3NpdGlvbkFyZyA9IGV4ZWMtPmFyZ3VtZW50KDEpOwpAQCAt
MjAwOCwxMSArMjAwOCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJ1aWx0aW5T
dHJpbmdJbmNsdWRlc0ludGVybmFsKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEFTU0VSVChjaGVja09iamVjdENvZXJjaWJs
ZSh0aGlzVmFsdWUpKTsKIAotICAgIFN0cmluZyBzdHJpbmdUb1NlYXJjaEluID0gdGhpc1ZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJ
biA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT51bmNo
ZWNrZWRBcmd1bWVudCgwKTsKLSAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gYTAudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1dURlN0
cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKIAogICAgIEpTVmFsdWUgcG9zaXRpb25BcmcgPSBleGVjLT5hcmd1bWVudCgxKTsKQEAg
LTIwNzcsNyArMjA3Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jTm9ybWFsaXplKEV4ZWNTdGF0ZSogZXhlYykKICAgICBVTm9ybWFsaXphdGlvbk1vZGUg
Zm9ybSA9IFVOT1JNX05GQzsKICAgICAvLyBWZXJpZnkgdGhhdCB0aGUgYXJndW1lbnQgaXMgcHJv
dmlkZWQgYW5kIGlzIG5vdCB1bmRlZmluZWQuCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5p
c1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIFN0cmluZyBmb3JtU3RyaW5nID0gZXhlYy0+dW5jaGVj
a2VkQXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAgICBTdHJp
bmcgZm9ybVN0cmluZyA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4
ZWMpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAogICAgICAgICBpZiAoZm9ybVN0cmluZyA9PSAiTkZDIikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAppbmRleCAyNWE1YmQw
NTFjODZiYjMzOGYzYTg4YjY0NGE5NjM4MThjNjRiNDM4Li5iODM2NGI4MzhkOWVjYjI1OGEyMTI1
MWYyNDA0Y2UxN2E4M2JiYWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0pTRG9sbGFyVk1Qcm90b3R5cGUuY3BwCkBAIC0zMzcsNyArMzM3LDcgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmludChFeGVjU3RhdGUqIGV4ZWMp
CiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7
Ci0gICAgICAgIFN0cmluZyBhcmdTdHIgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgIFN0cmluZyBhcmdTdHIgPSBleGVjLT51
bmNoZWNrZWRBcmd1bWVudChpKS50b1dURlN0cmluZyhleGVjKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGRhdGFMb2coYXJn
U3RyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmgKaW5kZXggYzE0YTM3OTA1MjA3ZDkxY2UyYTM3
MDYwMzFjMDlhN2U3OTU2MzNlYy4uNmYwNWYzZWI2MzA3ODM2NDJlZjNjMzk0ZjgxYTc2NzAyYzg5
ZTQwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseUNvbXBpbGVFcnJvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBKU1dlYkFz
c2VtYmx5Q29tcGlsZUVycm9yIDogcHVibGljIEVycm9ySW5zdGFuY2UgewogICAgIHN0YXRpYyBK
U1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKiBjcmVhdGUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwg
Y29uc3QgU3RyaW5nJiwgYm9vbCk7CiAgICAgc3RhdGljIEpTV2ViQXNzZW1ibHlDb21waWxlRXJy
b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1ZhbHVl
IG1lc3NhZ2UsIGJvb2wgdXNlQ3VycmVudEZyYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIG1lc3NhZ2UuaXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDog
bWVzc2FnZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksIHVzZUN1cnJlbnRGcmFtZSk7Cisg
ICAgICAgIHJldHVybiBjcmVhdGUoZXhlYywgc3RydWN0dXJlLCBtZXNzYWdlLmlzVW5kZWZpbmVk
KCkgPyBTdHJpbmcoKSA6IG1lc3NhZ2UudG9XVEZTdHJpbmcoZXhlYyksIHVzZUN1cnJlbnRGcmFt
ZSk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oCmluZGV4IDkz
NTkzMGEyNjZjZWRlMTliZjIxYTQ0MjU3ZGRmMjcyYzE0M2EwYTUuLjNjNzg3OWU3YTQ1Yjc2ZjE0
ZWVlNmQ0OTIzNDExOWJjMGJkNGFkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgKQEAgLTM4LDcgKzM4
LDcgQEAgY2xhc3MgSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvciA6IHB1YmxpYyBFcnJvckluc3Rh
bmNlIHsKICAgICBzdGF0aWMgSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvciogY3JlYXRlKEV4ZWNT
dGF0ZSosIFN0cnVjdHVyZSosIGNvbnN0IFN0cmluZyYsIGJvb2wgdXNlQ3VycmVudEZyYW1lID0g
dHJ1ZSk7CiAgICAgc3RhdGljIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IqIGNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1ZhbHVlIG1lc3NhZ2UsIGJvb2wg
dXNlQ3VycmVudEZyYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZShleGVjLCBzdHJ1
Y3R1cmUsIG1lc3NhZ2UuaXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDogbWVzc2FnZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyksIHVzZUN1cnJlbnRGcmFtZSk7CisgICAgICAgIHJldHVybiBj
cmVhdGUoZXhlYywgc3RydWN0dXJlLCBtZXNzYWdlLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6
IG1lc3NhZ2UudG9XVEZTdHJpbmcoZXhlYyksIHVzZUN1cnJlbnRGcmFtZSk7CiAgICAgfQogCiAg
ICAgREVDTEFSRV9JTkZPOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SURCQmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJC
aW5kaW5nVXRpbGl0aWVzLmNwcAppbmRleCAxMmY1N2JhYjdmNjNkZWMwNGM3MmYxNWJiY2M5ZGU3
ZjhlN2Y4N2M0Li45ZDBhMjY3ZGFkYTk3YzJjMjg5NGI4OWQxMmY1NWEyYjcwNmU0YjBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNw
cApAQCAtMTQ4LDcgKzE0OCw3IEBAIHN0YXRpYyBSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlG
cm9tVmFsdWUoRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBWZWN0CiAgICAgICAgIHJl
dHVybiBJREJLZXk6OmNyZWF0ZU51bWJlcih2YWx1ZS50b051bWJlcigmZXhlYykpOwogCiAgICAg
aWYgKHZhbHVlLmlzU3RyaW5nKCkpCi0gICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZVN0cmlu
Zyh2YWx1ZS50b1N0cmluZygmZXhlYyktPnZhbHVlKCZleGVjKSk7CisgICAgICAgIHJldHVybiBJ
REJLZXk6OmNyZWF0ZVN0cmluZyh2YWx1ZS50b1dURlN0cmluZygmZXhlYyk7CiAKICAgICBpZiAo
dmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpICYmICFzdGQ6OmlzbmFuKHZhbHVl
VG9EYXRlKCZleGVjLCB2YWx1ZSkpKQogICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVEYXRl
KHZhbHVlVG9EYXRlKCZleGVjLCB2YWx1ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAKaW5kZXggYmYwMDRkMDAyYjM5Yjg1MjBiNmFl
OTIxNWNkYzcwYTQ2MjIzYzc1OC4uOGJlN2Q4MGVkNWEzNGVhMWEzMGQ3N2M4YTFiYzg4YmJmNjg3
ODEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNr
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tD
dXN0b20uY3BwCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgSlNBdWRpb1RyYWNrOjpzZXRLaW5kKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgVk0mIHZtID0gc3RhdGUudm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvJiBz
dHJpbmcgPSB2YWx1ZS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOworICAgIGF1dG8m
IHN0cmluZyA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKICAgICB3cmFwcGVkKCkuc2V0S2luZChzdHJpbmcpOwogI2Vs
c2UKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBKU0F1ZGlvVHJhY2s6OnNldExhbmd1YWdlKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvJiBzdHJp
bmcgPSB2YWx1ZS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOworICAgIGF1dG8mIHN0
cmluZyA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKICAgICB3cmFwcGVkKCkuc2V0TGFuZ3VhZ2Uoc3RyaW5nKTsKICNl
bHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29y
aXRobURpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9B
bGdvcml0aG1EaWN0aW9uYXJ5LmNwcAppbmRleCA3ZjZmOTY4YmUyMzk3YjEyZTE1NTc4YzM4Njk4
ZjNiNWIyYThmMzQwLi4yMzM4MGI2YjJlOWY1MGM2YmY3ZDZmYTc0YjVmODk2Nzc1ODE5N2RkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURp
Y3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxn
b3JpdGhtRGljdGlvbmFyeS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgYm9vbCBKU0NyeXB0b0FsZ29y
aXRobURpY3Rpb25hcnk6OmdldEFsZ29yaXRobUlkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHUKICAgICBTdHJpbmcgYWxnb3JpdGhtTmFtZTsKIAogICAgIGlmICh2YWx1ZS5pc1N0cmlu
ZygpKQotICAgICAgICBhbGdvcml0aG1OYW1lID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOworICAgICAgICBhbGdvcml0aG1OYW1lID0gdmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7
CiAgICAgZWxzZSBpZiAodmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBpZiAodmFsdWUuZ2V0
T2JqZWN0KCktPmluaGVyaXRzKFN0cmluZ09iamVjdDo6aW5mbygpKSkKICAgICAgICAgICAgIGFs
Z29yaXRobU5hbWUgPSBhc1N0cmluZyhhc1N0cmluZ09iamVjdCh2YWx1ZSktPmludGVybmFsVmFs
dWUoKSktPnZhbHVlKGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCmluZGV4IDgwMzg5Nzc5ODkwZDMwNWMwZjY0
ZGNhYTUxYjE5MDAxNzU2OTkyNTYuLmM2Y2YwMzFjZDViMTA4MDc0ZmJhMDQ5OWM0ODZhODkzNjM5
MTQzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBh
dGhOU1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3Rv
bVhQYXRoTlNSZXNvbHZlci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBTdHJpbmcgSlNDdXN0b21Y
UGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hbWVzcGFjZVVSSShjb25zdCBTdHJpbmcmIHByZWZpeCkK
ICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CiAgICAgZWxzZSB7CiAg
ICAgICAgIGlmICghcmV0dmFsLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgICAgICByZXN1
bHQgPSByZXR2YWwudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAgICAgICAgcmVz
dWx0ID0gcmV0dmFsLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIH0KIAogICAgIHJldHVybiByZXN1
bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5j
cHAKaW5kZXggNmM2ZjNiNzEyNWEzZGI4NmEwNTY4MTJhNTE0MmZiNjBhNDgzOGY1OC4uOGE2YWFi
ZGQxYTQzODY3MDZhYTllZGM2N2ViMWZiZGE1YmY2OGNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtMzg4LDcgKzM4OCw3IEBA
IHZvaWQgSlNET01XaW5kb3c6OnNldExvY2F0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUg
dmFsdWUpCiAgICAgfQogI2VuZGlmCiAKLSAgICBTdHJpbmcgbG9jYXRpb25TdHJpbmcgPSB2YWx1
ZS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOworICAgIFN0cmluZyBsb2NhdGlvblN0
cmluZyA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKIAogICAgIGlmIChMb2NhdGlvbiogbG9jYXRpb24gPSB3cmFwcGVk
KCkubG9jYXRpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKaW5kZXggOGVlYTk1ZGRkNzFiOGZmMDdkNDk5
NTg0ZDNmZGUzOTMxMTJmNWE1OS4uYmE4ZmFmMzBlNDNhMzE3OTVlNDEyNDIwZDJjOTliODc1ODc1
MDNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rp
b25FdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZp
Y2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCBKU1ZhbHVlIEpTRGV2
aWNlTW90aW9uRXZlbnQ6OmluaXREZXZpY2VNb3Rpb25FdmVudChFeGVjU3RhdGUmIHN0YXRlKQog
ICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgY29uc3QgU3RyaW5nIHR5cGUgPSBzdGF0ZS5hcmd1bWVudCgwKS50
b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOworICAgIGNvbnN0IFN0cmluZyB0eXBlID0g
c3RhdGUuYXJndW1lbnQoMCkudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBib29sIGJ1YmJsZXMg
PSBzdGF0ZS5hcmd1bWVudCgxKS50b0Jvb2xlYW4oJnN0YXRlKTsKICAgICBib29sIGNhbmNlbGFi
bGUgPSBzdGF0ZS5hcmd1bWVudCgyKS50b0Jvb2xlYW4oJnN0YXRlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRpb25FdmVu
dEN1c3RvbS5jcHAKaW5kZXggOWQ5NTRmNTIwYTllY2I3YjY4OWI5NDI0NzBkYjNhMTUyZGFjZmZl
OC4uNzdlMzQxNTM3OGRiMTZiMGQ3OTljNzBkM2FiM2I1ZWM5NzIwOTMzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9u
RXZlbnRDdXN0b20uY3BwCkBAIC05Myw3ICs5Myw3IEBAIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRh
dGlvbkV2ZW50OjphYnNvbHV0ZShFeGVjU3RhdGUmKSBjb25zdAogCiBKU1ZhbHVlIEpTRGV2aWNl
T3JpZW50YXRpb25FdmVudDo6aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQoRXhlY1N0YXRlJiBz
dGF0ZSkKIHsKLSAgICBjb25zdCBTdHJpbmcgdHlwZSA9IHN0YXRlLmFyZ3VtZW50KDApLnRvU3Ry
aW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CisgICAgY29uc3QgU3RyaW5nIHR5cGUgPSBzdGF0
ZS5hcmd1bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIGJvb2wgYnViYmxlcyA9IHN0
YXRlLmFyZ3VtZW50KDEpLnRvQm9vbGVhbigmc3RhdGUpOwogICAgIGJvb2wgY2FuY2VsYWJsZSA9
IHN0YXRlLmFyZ3VtZW50KDIpLnRvQm9vbGVhbigmc3RhdGUpOwogICAgIC8vIElmIGFscGhhLCBi
ZXRhIG9yIGdhbW1hIGFyZSBudWxsIG9yIHVuZGVmaW5lZCwgbWFyayB0aGVtIGFzIG5vdCBwcm92
aWRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3Bw
CmluZGV4IDZhMTQ5MTQ4Y2YyY2RkZTU1MmI3YjBkNGQ4OTgzZTE2YzQ1NDVlZTYuLjVjOGM0M2Iz
MzJmYjhkYjNhNjkzYjJhN2UyOGVhNDYxNDA4ZTU5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQg
SlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0CiAgICAgICAgICAgICByZXBvcnRFeGNlcHRpb24oZXhlYywgZXhj
ZXB0aW9uKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICghcmV0dmFsLmlzVW5k
ZWZpbmVkT3JOdWxsKCkgJiYgaXM8QmVmb3JlVW5sb2FkRXZlbnQ+KCpldmVudCkpCi0gICAgICAg
ICAgICAgICAgZG93bmNhc3Q8QmVmb3JlVW5sb2FkRXZlbnQ+KCpldmVudCkuc2V0UmV0dXJuVmFs
dWUocmV0dmFsLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgICAgICAgICAgICAg
ZG93bmNhc3Q8QmVmb3JlVW5sb2FkRXZlbnQ+KCpldmVudCkuc2V0UmV0dXJuVmFsdWUocmV0dmFs
LnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgICAgICAgICAgaWYgKG1faXNBdHRyaWJ1dGUpIHsKICAg
ICAgICAgICAgICAgICBpZiAocmV0dmFsLmlzRmFsc2UoKSkKICAgICAgICAgICAgICAgICAgICAg
ZXZlbnQtPnByZXZlbnREZWZhdWx0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IGUzOTMyYzkxZDdj
ZjE2NTFiYjUyZTU5ZGJjMmJkZTI4ZWM0MGFhZDguLjExOTgyYWNjMWNmNWE1NzE3NzFhZTZiYTZm
NWJmZTRiYzAyZWYxNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIVE1MQWxsQ29sbGVjdGlvbihFeGVj
U3RhdGUqIGV4ZWMpCiAKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID09IDEpIHsKICAg
ICAgICAgLy8gU3VwcG9ydCBmb3IgZG9jdW1lbnQuYWxsKDxpbmRleD4pIGV0Yy4KLSAgICAgICAg
U3RyaW5nIHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKTsKKyAgICAgICAgU3RyaW5nIHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3Ry
aW5nKGV4ZWMpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFy
c2VJbmRleCgqc3RyaW5nLmltcGwoKSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRvSlMoZXhlYywganNDb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgY29sbGVjdGlvbi5p
dGVtKGluZGV4LnZhbHVlKCkpKSk7CkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIVE1MQWxsQ29sbGVjdGlvbihFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgfQogCiAgICAgLy8gVGhlIHNlY29uZCBhcmcsIGlmIHNldCwgaXMgdGhlIGluZGV4IG9m
IHRoZSBpdGVtIHdlIHdhbnQKLSAgICBTdHJpbmcgc3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzdHJpbmcgPSBleGVjLT5h
cmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
aW5kZXggPSBwYXJzZUluZGV4KCpleGVjLT5hcmd1bWVudCgxKS50b1dURlN0cmluZyhleGVjKS5p
bXBsKCkpKSB7CiAgICAgICAgIGlmIChhdXRvKiBpdGVtID0gY29sbGVjdGlvbi5uYW1lZEl0ZW1X
aXRoSW5kZXgoc3RyaW5nLCBpbmRleC52YWx1ZSgpKSkKQEAgLTExOSw3ICsxMTksNyBAQCBKU1Zh
bHVlIEpTSFRNTEFsbENvbGxlY3Rpb246Oml0ZW0oRXhlY1N0YXRlJiBzdGF0ZSkKIAogSlNWYWx1
ZSBKU0hUTUxBbGxDb2xsZWN0aW9uOjpuYW1lZEl0ZW0oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAg
ICBKU1ZhbHVlIHZhbHVlID0gbmFtZWRJdGVtcyhzdGF0ZSwgdGhpcywgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVl
KCZzdGF0ZSkpKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gbmFtZWRJdGVtcyhzdGF0ZSwgdGhpcywg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApLnRvV1RGU3Ry
aW5nKCZzdGF0ZSk7CiAgICAgcmV0dXJuIHZhbHVlLmlzVW5kZWZpbmVkKCkgPyBqc051bGwoKSA6
IHZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDk0MWM2
OTI3MzlhZDY1MjMyNDYzNzhlYjA5ZThhYjg4OGY5MmM1OTAuLmU5Mzc4YjU5YWVmNjM3MWU4MWQ1
YWNmZTlhMGYzZWNiNjMxMjA1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3Bw
CkBAIC02Miw3ICs2Miw3IEBAIEpTVmFsdWUgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6
bmFtZWRJdGVtKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3Vt
ZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBz
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKLSAgICBKU1Zh
bHVlIHZhbHVlID0gbmFtZWRJdGVtcyhzdGF0ZSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZh
bHVlKCZzdGF0ZSkpKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gbmFtZWRJdGVtcyhzdGF0ZSwgdGhp
cywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50
KDApLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgcmV0dXJuIHZhbHVlLmlzVW5kZWZpbmVkKCkg
PyBqc051bGwoKSA6IHZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcAppbmRleCBlZTkwMzBmYTA0ODhi
ZTliZjQyN2MyOWE4NGViM2YzOWJmZDVkYmExLi44MGMzOGNmNjFlY2NkZTM4ZDc2OTkwNGZmZTA5
MzYwYTMzM2NjYzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIEpT
SFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRGlyZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpbnB1dC5zZXRT
ZWxlY3Rpb25EaXJlY3Rpb24odmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKSk7
CisgICAgaW5wdXQuc2V0U2VsZWN0aW9uRGlyZWN0aW9uKHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0
ZSk7CiB9CiAKIEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZShF
eGVjU3RhdGUmIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCmluZGV4IGY0MDY0ZTY0NzU1
OGVmZWRjYjYzZDljMTBjMTk4MTQxMWRhZjZmNGQuLjFiMWExZmNlMzczMmNiMzUzYzg2ZWY2YmYw
ZWJlMzg2ODZlYWUwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKQEAgLTYyLDcgKzYyLDcg
QEAgc3RhdGljIHZvaWQgcG9wdWxhdGVDb250ZXh0TWVudUl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywg
SlNBcnJheSogYXJyYXksIENvbnRleHRNZW4KICAgICAgICAgaWYgKCF0eXBlLmlzU3RyaW5nKCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBTdHJpbmcgdHlwZVN0cmluZyA9IHR5
cGUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAgICBTdHJpbmcgdHlwZVN0cmlu
ZyA9IHR5cGUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgICAgIGlmICh0eXBlU3RyaW5nID09ICJz
ZXBhcmF0b3IiKSB7CiAgICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gaXRlbShTZXBhcmF0b3JU
eXBlLCBDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbiwgU3RyaW5nKCkpOwogICAgICAgICAgICAg
bWVudS5hcHBlbmRJdGVtKGl0ZW0pOwpAQCAtNzAsMTEgKzcwLDExIEBAIHN0YXRpYyB2b2lkIHBv
cHVsYXRlQ29udGV4dE1lbnVJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTQXJyYXkqIGFycmF5LCBD
b250ZXh0TWVuCiAgICAgICAgICAgICBDb250ZXh0TWVudSBzdWJNZW51OwogICAgICAgICAgICAg
SlNBcnJheSogc3ViSXRlbXNBcnJheSA9IGFzQXJyYXkoc3ViSXRlbXMpOwogICAgICAgICAgICAg
cG9wdWxhdGVDb250ZXh0TWVudUl0ZW1zKGV4ZWMsIHN1Ykl0ZW1zQXJyYXksIHN1Yk1lbnUpOwot
ICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIGl0ZW0oU3VibWVudVR5cGUsIENvbnRleHRNZW51
SXRlbVRhZ05vQWN0aW9uLCBsYWJlbC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICZzdWJN
ZW51KTsKKyAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBpdGVtKFN1Ym1lbnVUeXBlLCBDb250
ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbiwgbGFiZWwudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgICAg
ICAgICBtZW51LmFwcGVuZEl0ZW0oaXRlbSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBDb250ZXh0TWVudUFjdGlvbiB0eXBlZElkID0gc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVBY3Rp
b24+KENvbnRleHRNZW51SXRlbUJhc2VDdXN0b21UYWcgKyBpZC50b0ludDMyKGV4ZWMpKTsKLSAg
ICAgICAgICAgIENvbnRleHRNZW51SXRlbSBtZW51SXRlbSgodHlwZVN0cmluZyA9PSAiY2hlY2ti
b3giID8gQ2hlY2thYmxlQWN0aW9uVHlwZSA6IEFjdGlvblR5cGUpLCB0eXBlZElkLCBsYWJlbC50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVt
IG1lbnVJdGVtKCh0eXBlU3RyaW5nID09ICJjaGVja2JveCIgPyBDaGVja2FibGVBY3Rpb25UeXBl
IDogQWN0aW9uVHlwZSksIHR5cGVkSWQsIGxhYmVsLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgICAg
ICAgICAgaWYgKCFlbmFibGVkLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgICAgICAgICAgbWVudUl0
ZW0uc2V0RW5hYmxlZChlbmFibGVkLnRvQm9vbGVhbihleGVjKSk7CiAgICAgICAgICAgICBpZiAo
IWNoZWNrZWQuaXNVbmRlZmluZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAppbmRleCAyNzE0Mjk3M2YzNjViOWM4NWY2NDdh
ZjBmODg4YTcyOGFhODk2ZjA5Li5mOGI3ZTAxNTMxZjYzZWU1YTA5MjdkNjBlNDk5ODc4MmY3YTdl
YTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVu
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZl
bnRDdXN0b20uY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBoYW5k
bGVJbml0TWVzc2FnZUV2ZW50KEpTTWVzc2FnZUV2ZW50KiBqc0V2ZW50LCBKU0M6OkV4ZWNTdGEK
ICAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIGNvbnN0IFN0cmluZyYgdHlwZUFyZyA9IHN0YXRlLmFyZ3VtZW50
KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CisgICAgY29uc3QgU3RyaW5nJiB0
eXBlQXJnID0gc3RhdGUuYXJndW1lbnQoMCkudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwogCiAgICAgYm9vbCBjYW5CdWJibGVB
cmcgPSBzdGF0ZS5hcmd1bWVudCgxKS50b0Jvb2xlYW4oJnN0YXRlKTsKQEAgLTEyMiw3ICsxMjIs
NyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGhhbmRsZUluaXRNZXNzYWdlRXZlbnQoSlNNZXNzYWdl
RXZlbnQqIGpzRXZlbnQsIEpTQzo6RXhlY1N0YQogICAgIGNvbnN0IFN0cmluZyBvcmlnaW5Bcmcg
PSBjb252ZXJ0PElETFVTVlN0cmluZz4oc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDQpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwogCi0gICAgY29uc3QgU3RyaW5n
IGxhc3RFdmVudElkQXJnID0gc3RhdGUuYXJndW1lbnQoNSkudG9TdHJpbmcoJnN0YXRlKS0+dmFs
dWUoJnN0YXRlKTsKKyAgICBjb25zdCBTdHJpbmcgbGFzdEV2ZW50SWRBcmcgPSBzdGF0ZS5hcmd1
bWVudCg1KS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIEpTVmFsdWUoKSk7CiAKICAgICBhdXRvIHNvdXJjZUFyZyA9IGNvbnZlcnQ8SURMTnVsbGFi
bGU8SURMVW5pb248SURMSW50ZXJmYWNlPERPTVdpbmRvdz4sIElETEludGVyZmFjZTxNZXNzYWdl
UG9ydD4+Pj4oc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDYpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKaW5kZXggOTE3ZDYz
NzM4NzA2YzBiMjQyZjRkODFjYjcyY2NjMWY3ZjA3MTI5MS4uZDg5ZTVlN2U0YzFkZmVlNTQyZWZk
NTU5M2VjODNlNGZhNGRjOTE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgSlNWYWx1
ZSBKU1NRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KIAotICAgIFN0cmluZyBzcWxTdGF0ZW1lbnQg
PSBzdGF0ZS5hcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOworICAg
IFN0cmluZyBzcWxTdGF0ZW1lbnQgPSBzdGF0ZS5hcmd1bWVudCgwKS50b1dURlN0cmluZygmc3Rh
dGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CiAKICAgICAv
LyBOb3cgYXNzZW1ibGUgdGhlIGxpc3Qgb2YgU1FMIGFyZ3VtZW50cwpAQCAtNzksNyArNzksNyBA
QCBKU1ZhbHVlIEpTU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwoRXhlY1N0YXRlJiBzdGF0ZSkK
ICAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5kKHZhbHVlLmFzTnVtYmVyKCkpOwogICAg
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gQ29udmVydCB0aGUgYXJndW1lbnQg
dG8gYSBzdHJpbmcgYW5kIGFwcGVuZCBpdAotICAgICAgICAgICAgICAgIHNxbFZhbHVlcy5hcHBl
bmQodmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKSk7CisgICAgICAgICAgICAg
ICAgc3FsVmFsdWVzLmFwcGVuZCh2YWx1ZS50b1dURlN0cmluZygmc3RhdGUpOwogICAgICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VGV4dFRyYWNrQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRy
YWNrQ3VzdG9tLmNwcAppbmRleCA4MTU5NGIyMzk2ODBlNTFlNzg4MGVlMjNhNGU4MmFlY2U4NTQx
MWVhLi44MjgzN2NkMTcyY2RlNTExMGRjOGI3OTNlMGMyZWNjZDkzOTEzZTlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uY3BwCkBAIC00Nyw3
ICs0Nyw3IEBAIHZvaWQgSlNUZXh0VHJhY2s6OnNldExhbmd1YWdlKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgdmFsdWUpCiAgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvJiBzdHJpbmcgPSB2YWx1ZS50
b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOworICAgIGF1dG8mIHN0cmluZyA9IHZhbHVl
LnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9p
ZCgpKTsKICAgICB3cmFwcGVkKCkuc2V0TGFuZ3VhZ2Uoc3RyaW5nKTsKICNlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcAppbmRleCA3
ZWQyYWI3OWNjNWQwZWUzMGJlYjk1YjlhY2VmYjk3ZDYxY2E3NmZjLi5kODJlYzUwYTZlZTM4M2Y0
NWMzNzBlNWQ0ZWUzYTIwZWRkZmZiMzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBKU1Zp
ZGVvVHJhY2s6OnNldEtpbmQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIGF1dG8mIHN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVl
KCZzdGF0ZSk7CisgICAgYXV0byYgc3RyaW5nID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIHdyYXBwZWQoKS5z
ZXRLaW5kKHN0cmluZyk7CiAjZWxzZQpAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEpTVmlkZW9UcmFj
azo6c2V0TGFuZ3VhZ2UoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBWTSYg
dm0gPSBzdGF0ZS52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIGF1dG8mIHN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZz
dGF0ZSk7CisgICAgYXV0byYgc3RyaW5nID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIHdyYXBwZWQoKS5zZXRM
YW5ndWFnZShzdHJpbmcpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAppbmRleCA1NDRhOTgyMjU4
NTEyYmNkZjNhNmMyNzc2ZTk2NDZjYWFhMGI3MDU3Li4wNzQyYzM4YmMzY2E2ZTA4NTJmOWQ4M2Vh
MzdhYzIxMjU3YmQyYjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCkBAIC04NCw3ICs4NCw3IEBAIHN0
YXRpYyBib29sIGNyeXB0b0tleUZvcm1hdEZyb21KU1ZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VmFsdWUgdmFsdWUsIENyeXB0b0tlCiAgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBTdHJpbmcga2V5Rm9ybWF0
U3RyaW5nID0gdmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKKyAgICBTdHJp
bmcga2V5Rm9ybWF0U3RyaW5nID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgaWYgKGtleUZvcm1hdFN0cmluZyA9
PSAicmF3IikKICAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5Rm9ybWF0OjpSYXc7CkBAIC0xMTYs
NyArMTE2LDcgQEAgc3RhdGljIGJvb2wgY3J5cHRvS2V5VXNhZ2VzRnJvbUpTVmFsdWUoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgQ3J5cHRvS2UKICAgICBKU0FycmF5KiBhcnJheSA9
IGFzQXJyYXkodmFsdWUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXktPmxlbmd0
aCgpOyArK2kpIHsKICAgICAgICAgSlNWYWx1ZSBlbGVtZW50ID0gYXJyYXktPmdldEluZGV4KCZz
dGF0ZSwgaSk7Ci0gICAgICAgIFN0cmluZyB1c2FnZVN0cmluZyA9IGVsZW1lbnQudG9TdHJpbmco
JnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKKyAgICAgICAgU3RyaW5nIHVzYWdlU3RyaW5nID0gZWxl
bWVudC50b1dURlN0cmluZygmc3RhdGUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBmYWxzZSk7CiAgICAgICAgIGlmICh1c2FnZVN0cmluZyA9PSAiZW5jcnlwdCIpCiAgICAg
ICAgICAgICByZXN1bHQgfD0gQ3J5cHRvS2V5VXNhZ2VFbmNyeXB0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAppbmRleCAz
MzYyZjQ0OGJjZmI4ZTdhMjYyNGJmYTU3MDk5ZDQwODBkZGVkZTZiLi4yNWRlZjRlYjgyOTMzZjAx
ZmZjOTg1OTM3ZjQ1NDAyMTA1YzhmMDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcApAQCAtMTIyLDcgKzEyMiw3IEBA
IEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6c2VuZChFeGVjU3RhdGUmIHN0YXRlKQogICAgIGVs
c2UgewogICAgICAgICAvLyBGSVhNRTogSWYgdG9TdHJpbmcgcmFpc2VzIGFuIGV4Y2VwdGlvbiwg
c2hvdWxkIHdlIGV4aXQgYmVmb3JlIGNhbGxpbmcgd2lsbFNlbmRYTUxIdHRwUmVxdWVzdD8KICAg
ICAgICAgLy8gRklYTUU6IElmIHRvU3RyaW5nIHJhaXNlcyBhbiBleGNlcHRpb24sIHNob3VsZCB3
ZSBleGl0IGJlZm9yZSBjYWxsaW5nIHNlbmQ/Ci0gICAgICAgIHJlc3VsdCA9IHdyYXBwZWQoKS5z
ZW5kKHZhbHVlLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSkpOworICAgICAgICByZXN1
bHQgPSB3cmFwcGVkKCkuc2VuZCh2YWx1ZS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIH0KIAog
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSB1c2UgU2hhZG93Q2hpY2tlbiBzbyB0
aGF0IHdlIGdldCB0aGUgcmlnaHQgZnJhbWUgZXZlbiB3aGVuIGl0IGRpZCBhIHRhaWwgY2FsbC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0
b20uY3BwCmluZGV4IDE1MmI4NzM3MDBiOWEwZGM0NjhjYzAzZmIwOWUxYTQzMjRkYzc2ODEuLjJh
OGE5ZGY3YjBjNjBkM2RhZmI4OTUzZDkwNzY1MGYyNzhjYTRmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcApAQCAtNTAs
OSArNTAsOSBAQCBKU1ZhbHVlIEpTWFNMVFByb2Nlc3Nvcjo6c2V0UGFyYW1ldGVyKEV4ZWNTdGF0
ZSYgc3RhdGUpCiB7CiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkT3JOdWxs
KCkgfHwgc3RhdGUuYXJndW1lbnQoMikuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7IC8vIFRocm93IGV4Y2VwdGlvbj8KLSAgICBTdHJpbmcgbmFtZXNw
YWNlVVJJID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dmFs
dWUoJnN0YXRlKTsKLSAgICBTdHJpbmcgbG9jYWxOYW1lID0gc3RhdGUudW5jaGVja2VkQXJndW1l
bnQoMSkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKLSAgICBTdHJpbmcgdmFsdWUg
PSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgyKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3Rh
dGUpOworICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgw
KS50b1dURlN0cmluZygmc3RhdGUpOworICAgIFN0cmluZyBsb2NhbE5hbWUgPSBzdGF0ZS51bmNo
ZWNrZWRBcmd1bWVudCgxKS50b1dURlN0cmluZygmc3RhdGUpOworICAgIFN0cmluZyB2YWx1ZSA9
IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDIpLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgd3Jh
cHBlZCgpLnNldFBhcmFtZXRlcihuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSwgdmFsdWUpOwogICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpAQCAtNjEsOCArNjEsOCBAQCBKU1ZhbHVlIEpTWFNM
VFByb2Nlc3Nvcjo6Z2V0UGFyYW1ldGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgaWYgKHN0
YXRlLmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwotICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwotICAgIFN0cmluZyBsb2Nh
bE5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b1N0cmluZygmc3RhdGUpLT52YWx1
ZSgmc3RhdGUpOworICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpOworICAgIFN0cmluZyBsb2NhbE5hbWUgPSBzdGF0
ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIFN0cmluZyB2
YWx1ZSA9IHdyYXBwZWQoKS5nZXRQYXJhbWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwog
ICAgIHJldHVybiBqc1N0cmluZ09yVW5kZWZpbmVkKCZzdGF0ZSwgdmFsdWUpOwogfQpAQCAtNzEs
OCArNzEsOCBAQCBKU1ZhbHVlIEpTWFNMVFByb2Nlc3Nvcjo6cmVtb3ZlUGFyYW1ldGVyKEV4ZWNT
dGF0ZSYgc3RhdGUpCiB7CiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkT3JO
dWxsKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIFN0cmluZyBuYW1lc3Bh
Y2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1
ZSgmc3RhdGUpOwotICAgIFN0cmluZyBsb2NhbE5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVu
dCgxKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOworICAgIFN0cmluZyBuYW1lc3Bh
Y2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpOwor
ICAgIFN0cmluZyBsb2NhbE5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b1dURlN0
cmluZygmc3RhdGUpOwogICAgIHdyYXBwZWQoKS5yZW1vdmVQYXJhbWV0ZXIobmFtZXNwYWNlVVJJ
LCBsb2NhbE5hbWUpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKaW5kZXggMGQzNjQwM2UxMmFh
YWM0MmNiZWIzZWNiYTlmNDdmOTgyM2Y0ZGQ1NC4uOTA4ZjRkYzg4Yzc5NzZlZTIwYjg3OTI2ODk5
YTIwOTY3MzcyMmE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2No
ZWR1bGVkQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVs
ZWRBY3Rpb24uY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRB
Y3Rpb24+IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgRE9NV3JhCiAg
ICAgaWYgKGdldENhbGxEYXRhKHYsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkgewogICAg
ICAgICBpZiAocG9saWN5ICYmICFwb2xpY3ktPmFsbG93RXZhbChleGVjKSkKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgICAgICBTdHJpbmcgc3RyaW5nID0gdi50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CisgICAgICAgIFN0cmluZyBzdHJpbmcgPSB2LnRvV1RGU3RyaW5nKGV4
ZWMpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICAg
ICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+KG5ldyBTY2hlZHVsZWRB
Y3Rpb24oc3RyaW5nLCBpc29sYXRlZFdvcmxkKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9j
L2NfdXRpbGl0eS5jcHAKaW5kZXggZTRlYzNjNjdjNTBjOGIwOTIzZjkxNWRiNDJkNzRkMjUwYTZl
YzUxNy4uN2JkYTAyNmFlYjc1ODZkODA0NWVmNTdhYjNiODkyNjZiZGE3MjFiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgY29udmVy
dFZhbHVlVG9OUFZhcmlhbnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBOUFZhcmlh
bnQqIHJlc3VsdCkKICAgICBWT0lEX1RPX05QVkFSSUFOVCgqcmVzdWx0KTsKIAogICAgIGlmICh2
YWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgIFN0cmluZyB1c3RyaW5nID0gdmFsdWUudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAgICBTdHJpbmcgdXN0cmluZyA9IHZhbHVlLnRv
V1RGU3RyaW5nKGV4ZWMpOwogICAgICAgICBDU3RyaW5nIGNzdHJpbmcgPSB1c3RyaW5nLnV0Zjgo
KTsKICAgICAgICAgTlBTdHJpbmcgc3RyaW5nID0geyAoY29uc3QgTlBVVEY4Kiljc3RyaW5nLmRh
dGEoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNzdHJpbmcubGVuZ3RoKCkpIH07CiAgICAgICAg
IE5QTl9Jbml0aWFsaXplVmFyaWFudFdpdGhTdHJpbmdDb3B5KHJlc3VsdCwgJnN0cmluZyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MuY3BwCmluZGV4IGJhZjI0N2QyZGI2Y2U3ZTdl
ZTExM2EyMTBiODdjYzMzYTcyNmEwNDAuLmQ3ZTgwMzIyNDBkNDkyNjU5MjZmMTFiZDMwYjAzZTJh
NjcxMjcxOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MuY3BwCkBAIC0zOTEs
NyArMzkxLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIGlmIChjb21wLmNvbXBsVHlwZSgpID09IFRocm93KSB7CiAg
ICAgICAgICAgICAgICAgICAgIFZhbHVlIGV4VmFsID0gY29tcC52YWx1ZSgpOwotICAgICAgICAg
ICAgICAgICAgICBjaGFyKiBtc2cgPSBleFZhbC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyku
YXNjaWkoKTsKKyAgICAgICAgICAgICAgICAgICAgY2hhciogbXNnID0gZXhWYWwudG9XVEZTdHJp
bmcoZXhlYyk7CiAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lbm8gPSAtMTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGV4VmFsLnR5cGUoKSA9PSBPYmplY3RUeXBlKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWx1ZSBsaW5lVmFsID0gT2JqZWN0OjpkeW5hbWljQ2FzdChleFZhbCku
Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImxpbmUiKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCAzODYwZWYz
N2IxMmM2OGFkOGU3NDQ4YzQ1ZWE4YTE5OTY3ZDg1MmE3Li4xNWI2NTc4YjY3YWVlZDhjN2RiYTg5
YTIwYzlhNTlhZWFkZDQ4MDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKQEAgLTE1MTMsNyArMTUxMyw3IEBAIFJlZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVj
dEZvckV2CiAgICAgICAgIHN0YXRlID0gZXhlY1N0YXRlRnJvbU5vZGUoc2NyaXB0TGlzdGVuZXIt
Pmlzb2xhdGVkV29ybGQoKSwgJm5vZGUtPmRvY3VtZW50KCkpOwogICAgICAgICBoYW5kbGVyID0g
c2NyaXB0TGlzdGVuZXItPmpzRnVuY3Rpb24oJm5vZGUtPmRvY3VtZW50KCkpOwogICAgICAgICBp
ZiAoaGFuZGxlciAmJiBzdGF0ZSkgewotICAgICAgICAgICAgYm9keSA9IGhhbmRsZXItPnRvU3Ry
aW5nKHN0YXRlKS0+dmFsdWUoc3RhdGUpOworICAgICAgICAgICAgYm9keSA9IGhhbmRsZXItPnRv
V1RGU3RyaW5nKHN0YXRlKTsKICAgICAgICAgICAgIGlmIChhdXRvIGZ1bmN0aW9uID0ganNEeW5h
bWljRG93bmNhc3Q8SlNDOjpKU0Z1bmN0aW9uKj4oaGFuZGxlcikpIHsKICAgICAgICAgICAgICAg
ICBpZiAoIWZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChhdXRvIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAKaW5kZXggNDk5MjBmMmNhYTg0Zjc2
OWI2MmQyNDYyYTljOTgwN2Y1MjBjZjNlZC4uMjU5MzI4OWM0NTUyMmJiOWUzODdmNDZhZDQyOTc2
NzBiNDllOTA0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAKQEAgLTE2OCw3
ICsxNjgsNyBAQCB2b2lkIE5QUnVudGltZU9iamVjdE1hcDo6Y29udmVydEpTVmFsdWVUb05QVmFy
aWFudChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdQogICAgIH0KIAogICAgIGlmICh2YWx1
ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgIE5QU3RyaW5nIG5wU3RyaW5nID0gY3JlYXRlTlBTdHJp
bmcodmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLnV0ZjgoKSk7CisgICAgICAgIE5Q
U3RyaW5nIG5wU3RyaW5nID0gY3JlYXRlTlBTdHJpbmcodmFsdWUudG9XVEZTdHJpbmcoZXhlYyku
dXRmOCgpKTsKICAgICAgICAgU1RSSU5HTl9UT19OUFZBUklBTlQobnBTdHJpbmcuVVRGOENoYXJh
Y3RlcnMsIG5wU3RyaW5nLlVURjhMZW5ndGgsIHZhcmlhbnQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296999</attachid>
            <date>2016-12-13 02:00:27 -0800</date>
            <delta_ts>2016-12-13 19:27:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165795-20161213185936.patch</filename>
            <type>text/plain</type>
            <size>69027</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5NzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NjY5MDAzYmU4MTQyYjZiMWMxMTdiZWU2MGViZGMxZDUwNmNjOWQ1Li5lMjc4YWZiYjViNGMzOTUz
YzNjNGRjOThiZDU2MTBkNzM4ZjNmYzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4OCBAQAorMjAxNi0xMi0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBVc2UgSlNWYWx1ZTo6dG9XVEZTdHJpbmcgaW5zdGVhZCBvZiBjYWxs
aW5nIHRvU3RyaW5nKGV4ZWMpIGFuZCB2YWx1ZShleGVjKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1Nzk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gb2xkIGRheXMsIHdlIGZyZXF1ZW50bHkgdXNl
IHRoZSBpZGlvbSBsaWtlLCBgdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpYCB0bwor
ICAgICAgICBnZXQgV1RGU3RyaW5nIGZyb20gdGhlIGdpdmVuIEpTVmFsdWUuIEJ1dCBub3csIHdl
IGhhdmUgYmV0dGVyIGZ1bmN0aW9uLCBgdG9XVEZTdHJpbmdgLgorICAgICAgICBgdG9XVEZTdHJp
bmdgIGRvZXMgbm90IGNyZWF0ZSBpbnRlcm1lZGlhdGUgSlNTdHJpbmcgb2JqZWN0cywgdGhlbiBy
ZWR1Y2UgdW5uZWNlc3NhcnkKKyAgICAgICAgYWxsb2NhdGlvbnMuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtZWNoYW5pY2FsbHkgcmVwbGFjZXMgYHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKWAgd2l0aCBgdG9XVEZTdHJpbmcoZXhlYylgLgorCisgICAgICAgICogQVBJL0pTVmFsdWVS
ZWYuY3BwOgorICAgICAgICAoSlNWYWx1ZVRvU3RyaW5nQ29weSk6CisgICAgICAgICogYmluZGlu
Z3MvU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWU6OnRv
U3RyaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyOjpyZXBvcnRBUElFeGNlcHRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9KU0lu
amVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbik6CisgICAgICAgICogaW5zcGVjdG9y
L0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSmF2YVNj
cmlwdENhbGxGcmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24pOgorICAgICAgICAqIGlu
c3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6
ZXh0cmFjdFNvdXJjZUluZm9ybWF0aW9uRnJvbUV4Y2VwdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9Db25zb2xlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6dmFsdWVUb1N0cmluZ1dpdGhVbmRl
ZmluZWRPck51bGxDaGVjayk6CisgICAgICAgIChKU0M6OnZhbHVlT3JEZWZhdWx0TGFiZWxTdHJp
bmcpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6ZGF0ZVBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmb3JtYXRMb2NhbGVEYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5z
dGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpzYW5pdGl6ZWRUb1N0cmlu
Zyk6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OmVycm9yUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6aW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0TG9nKToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ1Nsb3dDYXNlKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVu
Y0V2YWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAo
SlNDOjpKU01vZHVsZUxvYWRlcjo6ZmV0Y2gpOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlTG9h
ZGVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyUHJvdG90eXBlUGFy
c2VNb2R1bGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpyZWdFeHBDcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jQ29tcGlsZSk6CisgICAgICAg
IChKU0M6OnJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCk6
CisgICAgICAgIChKU0M6OnJlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaCk6CisgICAgICAgIChKU0M6
OnN0cmluZ1Byb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3Bs
aXRGYXN0KToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3Vic3RyKToKKyAgICAgICAg
KEpTQzo6c3RyaW5nUHJvdG9GdW5jTG9jYWxlQ29tcGFyZSk6CisgICAgICAgIChKU0M6OnN0cmlu
Z1Byb3RvRnVuY0JpZyk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1NtYWxsKToKKyAg
ICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jQmxpbmspOgorICAgICAgICAoSlNDOjpzdHJpbmdQ
cm90b0Z1bmNCb2xkKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jRml4ZWQpOgorICAg
ICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNJdGFsaWNzKToKKyAgICAgICAgKEpTQzo6c3RyaW5n
UHJvdG9GdW5jU3RyaWtlKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3ViKToKKyAg
ICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3VwKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJv
dG9GdW5jRm9udGNvbG9yKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jRm9udHNpemUp
OgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNBbmNob3IpOgorICAgICAgICAoSlNDOjpz
dHJpbmdQcm90b0Z1bmNMaW5rKToKKyAgICAgICAgKEpTQzo6dHJpbVN0cmluZyk6CisgICAgICAg
IChKU0M6OnN0cmluZ1Byb3RvRnVuY1N0YXJ0c1dpdGgpOgorICAgICAgICAoSlNDOjpzdHJpbmdQ
cm90b0Z1bmNFbmRzV2l0aCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0luY2x1ZGVz
KToKKyAgICAgICAgKEpTQzo6YnVpbHRpblN0cmluZ0luY2x1ZGVzSW50ZXJuYWwpOgorICAgICAg
ICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNOb3JtYWxpemUpOgorICAgICAgICAqIHRvb2xzL0pTRG9s
bGFyVk1Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvblByaW50KToKKyAgICAg
ICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaDoKKyAgICAgICAgKEpTQzo6
SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL0pT
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseVJ1
bnRpbWVFcnJvcjo6Y3JlYXRlKToKKwogMjAxNi0xMi0xMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIEJ5dGVjb2RlR2VuZXJhdG9yJ3MgQ29udHJvbEZs
b3dDb250ZXh0IHRvIENvbnRyb2xGbG93U2NvcGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM0ZGM2ZDQzNGI2
MmMxYjVjZTViMTU0MjVmNTVmNTliZWFjNmE4Ni4uYzMzYzMwZjFmMjA0NGE4NjU1NzNkMzMxNzk2
OTYzODg4ZGVmNjNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDE2LTEyLTEzICBZ
dXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFVzZSBKU1Zh
bHVlOjp0b1dURlN0cmluZyBpbnN0ZWFkIG9mIGNhbGxpbmcgdG9TdHJpbmcoZXhlYykgYW5kIHZh
bHVlKGV4ZWMpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjU3OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlSURCS2V5RnJvbVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldE50aFZhbHVl
T25LZXlQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmludGVybmFsQ3JlYXRlSURC
S2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjplbnN1cmVOdGhWYWx1ZU9uS2V5UGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpj
YW5JbmplY3ROdGhWYWx1ZU9uS2V5UGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpp
bmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
bWF5YmVDcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpkZXNlcmlhbGl6ZUlEQlZhbHVlVG9KU1ZhbHVlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnNjcmlwdFZhbHVlVG9JREJLZXkpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6aWRiS2V5RGF0YVRvU2NyaXB0VmFsdWUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlS2V5UGF0aEFycmF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9U
cmFjazo6c2V0S2luZCk6CisgICAgICAgIChXZWJDb3JlOjpKU0F1ZGlvVHJhY2s6OnNldExhbmd1
YWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5OjpnZXRB
bGdvcml0aG1JZGVudGlmaWVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRo
TlNSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVhQYXRoTlNSZXNvbHZl
cjo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0TG9jYXRpb24p
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VNb3Rpb25FdmVudDo6aW5pdERldmljZU1vdGlvbkV2
ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojppbml0
RGV2aWNlT3JpZW50YXRpb25FdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExp
c3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjp2aXJ0dWFsaXNBdHRyaWJ1
dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpvcGVyYXRv
cj09KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmV2ZW50SGFuZGxlckF0dHJpYnV0ZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVFdmVudExpc3RlbmVyRm9yRXZlbnRI
YW5kbGVyQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNldEV2ZW50SGFu
ZGxlckF0dHJpYnV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp3aW5kb3dFdmVudEhh
bmRsZXJBdHRyaWJ1dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6c2V0V2luZG93RXZl
bnRIYW5kbGVyQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50
RXZlbnRIYW5kbGVyQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNldERv
Y3VtZW50RXZlbnRIYW5kbGVyQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNh
bGxIVE1MQWxsQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxBbGxDb2xsZWN0
aW9uOjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxJ
bnB1dEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5wdXRFbGVt
ZW50OjpzZXRTZWxlY3Rpb25EaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5w
dXRFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cG9wdWxhdGVDb250ZXh0TWVudUl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSW5zcGVj
dG9yRnJvbnRlbmRIb3N0OjpzaG93Q29udGV4dE1lbnUpOiBEZWxldGVkLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhh
bmRsZUluaXRNZXNzYWdlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1FMVHJhbnNh
Y3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTUUxUcmFuc2FjdGlvbjo6ZXhl
Y3V0ZVNxbCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXh0VHJhY2s6OnNldExhbmd1YWdlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNW
aWRlb1RyYWNrOjpzZXRLaW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVmlkZW9UcmFjazo6c2V0
TGFuZ3VhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyeXB0b0tleUZvcm1hdEZyb21KU1ZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyeXB0b0tleVVzYWdlc0Zyb21KU1ZhbHVlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRw
UmVxdWVzdDo6cmVzcG9uc2VUZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTWE1M
SHR0cFJlcXVlc3Q6OnJldHJpZXZlUmVzcG9uc2UpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1hT
TFRQcm9jZXNzb3I6OnNldFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1hTTFRQcm9j
ZXNzb3I6OmdldFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1hTTFRQcm9jZXNzb3I6
OnJlbW92ZVBhcmFtZXRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBicmlkZ2UvYy9jX3V0aWxpdHkuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y29u
dmVydFZhbHVlVG9OUFZhcmlhbnQpOgorICAgICAgICAqIGJyaWRnZS90ZXN0YmluZGluZ3MuY3Bw
OgorICAgICAgICAobWFpbik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZv
ckV2ZW50TGlzdGVuZXIpOgorCiAyMDE2LTEyLTEyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgYmluZGluZ3MgZ2VuZXJhdGlvbiBzdXBwb3J0IGZvciBs
ZWdhY3kgV2ViQ29yZTo6RGljdGlvbmFyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGQ3NTAwNTQ1YTQ3YjQwNmRh
YjUxZjlhMWUyMjkwZGQzNjI5MDYxYmYuLjNiODFjMzFkMDE2NWZiZTJhNjhkZWQwY2NkZjZiM2E4
NDg3MGQ2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0xMi0xMyAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBVc2UgSlNWYWx1ZTo6
dG9XVEZTdHJpbmcgaW5zdGVhZCBvZiBjYWxsaW5nIHRvU3RyaW5nKGV4ZWMpIGFuZCB2YWx1ZShl
eGVjKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1
Nzk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TlBSdW50aW1lT2JqZWN0TWFwOjpjb252ZXJ0SlNWYWx1ZVRvTlBWYXJpYW50
KToKKwogMjAxNi0xMi0xMiAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAg
ICAgW2lPU10gTWVkaWFEb2N1bWVudCAiRG9uZSIgYnV0dG9uIHNob3VsZCBuYXZpZ2F0ZSB0aGUg
cGFnZSBiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVS
ZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAppbmRleCA0
Mjg0MzUwZmE3MTVjNjVjMjI3MDcyY2ZiZTg2OWMzNzdiM2MzOWFiLi5jMjdiN2MzNWM4OTRiNGE0
OTdiMzcxNTk1OTk4ODBlOTY5ZDkyZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWVSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNW
YWx1ZVJlZi5jcHAKQEAgLTQwMSw3ICs0MDEsNyBAQCBKU1N0cmluZ1JlZiBKU1ZhbHVlVG9TdHJp
bmdDb3B5KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqCiAK
ICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsKICAgICAKLSAgICBhdXRv
IHN0cmluZ1JlZihPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGpzVmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKSk7CisgICAgYXV0byBzdHJpbmdSZWYoT3BhcXVlSlNTdHJpbmc6OmNyZWF0
ZShqc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpKSk7CiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklm
TmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKICAg
ICAgICAgc3RyaW5nUmVmID0gbnVsbHB0cjsKICAgICByZXR1cm4gc3RyaW5nUmVmLmxlYWtSZWYo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCmlu
ZGV4IDlmN2EyMTZjNWVmY2ZlMzI5OGJhOTE2YmZjMDU5OWUzNmY5MWFlNmUuLjI1NTY4YTNmODE3
YzNlMWYxMDdmYThlMWRjZjAwMzlkOTMxNDlhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIFN0cmluZyBT
Y3JpcHRWYWx1ZTo6dG9TdHJpbmcoRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkgY29uc3QKICAgICBW
TSYgdm0gPSBzY3JpcHRTdGF0ZS0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRD
SF9TQ09QRSh2bSk7CiAKLSAgICBTdHJpbmcgcmVzdWx0ID0gbV92YWx1ZS5nZXQoKS50b1N0cmlu
ZyhzY3JpcHRTdGF0ZSktPnZhbHVlKHNjcmlwdFN0YXRlKTsKKyAgICBTdHJpbmcgcmVzdWx0ID0g
bV92YWx1ZS5nZXQoKS50b1dURlN0cmluZyhzY3JpcHRTdGF0ZSk7CiAgICAgLy8gSGFuZGxlIHRo
ZSBjYXNlIHdoZXJlIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gYXMgcGFydCBvZiBpbnZva2luZyB0
b1N0cmluZyBvbiB0aGUgb2JqZWN0LgogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24o
KSkpCiAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggYjU4Yzg4ODA4M2E0Y2ZhMTA3NTg5MDE1NzBkYTc2
MzQxYmQ1ZGRmNi4uNGZiN2Q3OTJiYTliYWM2ZWJhZjIxNjZkNjFmMWVhOWU5ZmNjNjdjZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdElu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpyZXBvcnRBUElFeGNl
cHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNlCiAKICAgICAvLyBGSVhNRTogPGh0dHA6Ly93ZWJr
aXQub3JnL2IvMTE1MDg3PiBXZWIgSW5zcGVjdG9yOiBTaG91bGQgbm90IGV2YWx1YXRlIEphdmFT
Y3JpcHQgaGFuZGxpbmcgZXhjZXB0aW9ucwogICAgIC8vIElmIHRoaXMgaXMgYSBjdXN0b20gZXhj
ZXB0aW9uIG9iamVjdCwgY2FsbCB0b1N0cmluZyBvbiBpdCB0byB0cnkgYW5kIGdldCBhIG5pY2Ug
c3RyaW5nIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgZXhjZXB0aW9uLgotICAgIFN0cmluZyBlcnJv
ck1lc3NhZ2UgPSBleGNlcHRpb24tPnZhbHVlKCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
OworICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBleGNlcHRpb24tPnZhbHVlKCkudG9XVEZTdHJp
bmcoZXhlYyk7CiAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKIAogICAgIGlmIChKU0dsb2Jh
bE9iamVjdENvbnNvbGVDbGllbnQ6OmxvZ1RvU3lzdGVtQ29uc29sZSgpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3Qu
Y3BwCmluZGV4IDc1ODZkN2ZhNDg2YjgwMzZmYjA4OGMyOGY5OTYwZDM3MWMyMzAxMDguLjNmMjZm
ZTZlZDZmOGE4ZGRiYzYwNGFlYmFlZjdlMmU5MjE1MmI4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCkBA
IC0xMDIsNyArMTAyLDcgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVX
aXRoU2NvcGVFeHRlbnNpb24oRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICghc2NyaXB0VmFsdWUu
aXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoIkluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lv
biBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLiIpKTsKIAotICAgIFN0cmluZyBwcm9n
cmFtID0gc2NyaXB0VmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmlu
ZyBwcm9ncmFtID0gc2NyaXB0VmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKIAogICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4g
ZXhjZXB0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCmluZGV4IDM4ZjA3NmY5MzNlNThkYzI3NTRkZTZl
ODMwNGM5ZTY0YWFkY2UzZmIuLmM2YWE0YTc3ZWRjMjU0ZTBlYTgxMzIwNDY0NDYzZjliODdkZTZh
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
SmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgSlNWYWx1ZSBKU0phdmFT
Y3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEV4ZWNTdGF0ZSogZXhl
YykKICAgICBpZiAoIXNjcmlwdFZhbHVlLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJKU0phdmFTY3JpcHRDYWxsRnJh
bWUuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24gZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0
cmluZy4iKSk7CiAKLSAgICBTdHJpbmcgc2NyaXB0ID0gc2NyaXB0VmFsdWUudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzY3JpcHQgPSBzY3JpcHRWYWx1ZS50b1dURlN0
cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwog
CiAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcApp
bmRleCBjNDQ5NmQzZDcyODczYzhiMTEzMGVmY2MyM2ZkOWJkODBhNmRmZDA3Li5jNDc3NThmYjQ1
NTZiZDY5OGYyNDk4NGFkYTI3ZGU3MjljMTBlMDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKQEAg
LTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgdm9pZCBleHRyYWN0U291cmNlSW5mb3JtYXRpb25Gcm9t
RXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdAogICAgIEpTVmFsdWUgY29s
dW1uVmFsdWUgPSBleGNlcHRpb25PYmplY3QtPmdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjb2x1bW4iKSk7CiAgICAgKmNvbHVtbk51bWJlciA9IGNv
bHVtblZhbHVlICYmIGNvbHVtblZhbHVlLmlzTnVtYmVyKCkgPyBpbnQoY29sdW1uVmFsdWUudG9O
dW1iZXIoZXhlYykpIDogMDsKICAgICBKU1ZhbHVlIHNvdXJjZVVSTFZhbHVlID0gZXhjZXB0aW9u
T2JqZWN0LT5nZXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCAic291cmNlVVJMIikpOwotICAgICpzb3VyY2VVUkwgPSBzb3VyY2VVUkxWYWx1ZSAmJiBzb3Vy
Y2VVUkxWYWx1ZS5pc1N0cmluZygpID8gc291cmNlVVJMVmFsdWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpIDogQVNDSUlMaXRlcmFsKCJ1bmRlZmluZWQiKTsKKyAgICAqc291cmNlVVJMID0g
c291cmNlVVJMVmFsdWUgJiYgc291cmNlVVJMVmFsdWUuaXNTdHJpbmcoKSA/IHNvdXJjZVVSTFZh
bHVlLnRvV1RGU3RyaW5nKGV4ZWMpIDogQVNDSUlMaXRlcmFsKCJ1bmRlZmluZWQiKTsKICAgICBz
Y29wZS5jbGVhckV4Y2VwdGlvbigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db25zb2xlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbnNvbGVPYmplY3QuY3BwCmluZGV4IDMwYTliYmRlOWUwYmIwNDlhZWMxNmI4OTQ1
ZjEyMmE4ZWQ2NmFmMjguLjE5YmQ1YmRhNDcxY2UyMzJkNzk0NDgzNGNiMmYxMjVlNDg0MzJhMTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuY3Bw
CkBAIC0xMDEsNyArMTAxLDcgQEAgc3RhdGljIFN0cmluZyB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVm
aW5lZE9yTnVsbENoZWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWwKIHsKICAgICBpZiAo
dmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAg
IHJldHVybiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgcmV0dXJuIHZh
bHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY29uc29s
ZUxvZ1dpdGhMZXZlbChFeGVjU3RhdGUqIGV4ZWMsIE1lc3NhZ2VMZXZlbCBsZXZlbCkKQEAgLTI5
MSw3ICsyOTEsNyBAQCBzdGF0aWMgU3RyaW5nIHZhbHVlT3JEZWZhdWx0TGFiZWxTdHJpbmcoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5l
ZCgpKQogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJkZWZhdWx0Iik7Ci0gICAgcmV0dXJu
IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICByZXR1cm4gdmFsdWUudG9X
VEZTdHJpbmcoZXhlYyk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnNvbGVQcm90b0Z1bmNUaW1lKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCmluZGV4IDBkZmFkYWY4OGE0
ZWMxM2QyM2ZmYjRhNTg3ZmQ1YTU5ZjliMjU3ODEuLmE4MjUwMTdiMDY3YzQyMjYwNjU3YjljOTMx
YjhlNDE4YzM4MWVmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUNvbnN0cnVjdG9yLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVBhcnNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBTdHJpbmcgZGF0ZVN0ciA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKKyAgICBTdHJpbmcgZGF0ZVN0ciA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3Ry
aW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGFyc2VEYXRlKHZtLCBk
YXRlU3RyKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJv
dG90eXBlLmNwcAppbmRleCA3ODg4NmRiOTdmMmU0ZDA5MGE2ZWQ4OWI1YmVhY2IwMjA5MGU2ZWU1
Li5lMzQ5YTcxMzU0NGViNmM2OTQ3N2Q5YzkxZWIxN2Q2NTBmMmIyMGE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcApAQCAtMTUxLDEzICsx
NTEsMTMgQEAgc3RhdGljIEpTQ2VsbCogZm9ybWF0TG9jYWxlRGF0ZShFeGVjU3RhdGUqIGV4ZWMs
IERhdGVJbnN0YW5jZSosIGRvdWJsZSB0aW1lSW5NaWwKICAgICBib29sIHVzZUN1c3RvbUZvcm1h
dCA9IGZhbHNlOwogICAgIFN0cmluZyBjdXN0b21Gb3JtYXRTdHJpbmc7CiAKLSAgICBTdHJpbmcg
YXJnMFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KTsKKyAgICBTdHJpbmcgYXJnMFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5n
KGV4ZWMpOwogICAgIGlmIChhcmcwU3RyaW5nID09ICJjdXN0b20iICYmICFleGVjLT5hcmd1bWVu
dCgxKS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIHVzZUN1c3RvbUZvcm1hdCA9IHRydWU7Ci0g
ICAgICAgIGN1c3RvbUZvcm1hdFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgY3VzdG9tRm9ybWF0U3RyaW5nID0gZXhlYy0+YXJn
dW1lbnQoMSkudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT0gTG9j
YWxlRGF0ZUFuZFRpbWUgJiYgIWV4ZWMtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkpIHsKICAg
ICAgICAgZGF0ZVN0eWxlID0gc3R5bGVGcm9tQXJnU3RyaW5nKGFyZzBTdHJpbmcsIGRhdGVTdHls
ZSk7Ci0gICAgICAgIHRpbWVTdHlsZSA9IHN0eWxlRnJvbUFyZ1N0cmluZyhleGVjLT5hcmd1bWVu
dCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksIHRpbWVTdHlsZSk7CisgICAgICAgIHRp
bWVTdHlsZSA9IHN0eWxlRnJvbUFyZ1N0cmluZyhleGVjLT5hcmd1bWVudCgxKS50b1dURlN0cmlu
ZyhleGVjKSwgdGltZVN0eWxlKTsKICAgICB9IGVsc2UgaWYgKGZvcm1hdCAhPSBMb2NhbGVUaW1l
ICYmICFleGVjLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpKQogICAgICAgICBkYXRlU3R5bGUg
PSBzdHlsZUZyb21BcmdTdHJpbmcoYXJnMFN0cmluZywgZGF0ZVN0eWxlKTsKICAgICBlbHNlIGlm
IChmb3JtYXQgIT0gTG9jYWxlRGF0ZSAmJiAhZXhlYy0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFu
Y2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAK
aW5kZXggNDVjMWMwZTZkNGIxZjA4MGIyYjRlYjQ3NjcwZTM4NGE1MWRiM2FhZi4uZWQ4ZjJkN2E0
NTNlMmZkNWQ0MjEwYWM1N2UwY2Q0NmIxODZmNTBmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCBTdHJp
bmcgRXJyb3JJbnN0YW5jZTo6c2FuaXRpemVkVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAg
IGlmICghbmFtZVZhbHVlKQogICAgICAgICBuYW1lU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJFcnJv
ciIpOwogICAgIGVsc2UgewotICAgICAgICBuYW1lU3RyaW5nID0gbmFtZVZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgbmFtZVN0cmluZyA9IG5hbWVWYWx1ZS50b1dU
RlN0cmluZyhleGVjKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgU3RyaW5n
KCkpOwogICAgIH0KIApAQCAtMjA4LDcgKzIwOCw3IEBAIFN0cmluZyBFcnJvckluc3RhbmNlOjpz
YW5pdGl6ZWRUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKCFtZXNzYWdlVmFsdWUp
CiAgICAgICAgIG1lc3NhZ2VTdHJpbmcgPSBTdHJpbmcoKTsKICAgICBlbHNlIHsKLSAgICAgICAg
bWVzc2FnZVN0cmluZyA9IG1lc3NhZ2VWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CisgICAgICAgIG1lc3NhZ2VTdHJpbmcgPSBtZXNzYWdlVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIFN0cmluZygpKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcApp
bmRleCA1MDY4NjQ0ZWZmMWQyMzI2NThlMTY4ZWFiNWFjNThiMjlmYWFhMmEzLi5iNjZhMTRkNTlj
NDU3NDY5NzBmMWY4NzcxY2UwOWJkZTczYjkzZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCkBAIC05Myw3ICs5Myw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgaWYgKG5hbWUuaXNVbmRlZmluZWQoKSkKICAgICAgICAgbmFtZVN0cmluZyA9
IEFTQ0lJTGl0ZXJhbCgiRXJyb3IiKTsKICAgICBlbHNlIHsKLSAgICAgICAgbmFtZVN0cmluZyA9
IG5hbWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAgICBuYW1lU3RyaW5nID0g
bmFtZS50b1dURlN0cmluZyhleGVjKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogCkBAIC0xMDgsNyArMTA4LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlcnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICBpZiAobWVzc2FnZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICBtZXNzYWdlU3Ry
aW5nID0gU3RyaW5nKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIG1lc3NhZ2VTdHJpbmcgPSBtZXNz
YWdlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgbWVzc2FnZVN0cmluZyA9
IG1lc3NhZ2UudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9i
amVjdC5jcHAKaW5kZXggZGM3OTdjYThlNjEzOTg1MzUxYjlkZDY0MjFmNjkzYTBjYWE4MzMzZS4u
ZjY5ZjgzMWVlYzA2NjE2OTIxMjM3OTljMzRjYjA2NTkwZjdjYzM4NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QuY3BwCkBAIC04Niw3ICs4Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgaW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0TG9nKEV4ZWNTdGF0ZSogZXhl
YykKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwot
ICAgIFN0cmluZyB2YWx1ZSA9IHRhcmdldC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Cisg
ICAgU3RyaW5nIHZhbHVlID0gdGFyZ2V0LnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGRhdGFMb2codmFsdWUs
ICJcbiIpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IDFmOGM2ZDU5
MDYzYzA1MzUxZGJjYzA4Y2E0NDJjMGFiN2ZkNmNiOGYuLmUzNjlmYWEzZjZkNzA2OTZhYWUwOWI3
NmE1NjBhMDFiZTJmNjhjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuY3BwCkBAIC0zOTIsNyArMzkyLDcgQEAgU3RyaW5nIEpTVmFsdWU6OnRvV1RGU3Ry
aW5nU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgICAgICByZXR1cm4gdm0ucHJv
cGVydHlOYW1lcy0+bnVsbEtleXdvcmQuc3RyaW5nKCk7CiAgICAgaWYgKGlzVW5kZWZpbmVkKCkp
CiAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLnN0cmlu
ZygpOwotICAgIHJldHVybiB0b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgcmV0dXJu
IHRvV1RGU3RyaW5nKGV4ZWMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmNwcAppbmRleCA0MjJkN2VmNDU3ZDU5M2QxZGMxOTk0ZjEwMDA5OTQ1NWE3Y2E0ZTgwLi5jNjJl
NGY3MThhNzhkYmJlMzY1MWRkN2ZjNjliNjJiNTczOTUxNTBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3Bw
CkBAIC02NjYsNyArNjY2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxG
dW5jRXZhbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAgU3RyaW5nIHMgPSB4LnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHgudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBpZiAo
cy5pczhCaXQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVMb2FkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVMb2FkZXIuY3BwCmluZGV4IGVmODViMzdiZWQ0ODgwZGYyNGYwZjRkMTM1NmY1NTY1MDgxNWFi
ZTcuLmJmZDhmNDk1MWQwMDg2NTRlYjVhZTkwMjU1MDlhZWI5YjI3NDg3ZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKQEAgLTE1OCw3
ICsxNTgsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OmZldGNoKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIEpTVmFsdWUgaQogICAgIGlmIChnbG9iYWxPYmplY3Qt
Pmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPm1vZHVsZUxvYWRlckZldGNoKQogICAgICAgICBy
ZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5tb2R1bGVMb2Fk
ZXJGZXRjaChnbG9iYWxPYmplY3QsIGV4ZWMsIHRoaXMsIGtleSwgaW5pdGlhdG9yKTsKICAgICBK
U0ludGVybmFsUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTSW50ZXJuYWxQcm9taXNlRGVm
ZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOwotICAgIFN0cmluZyBtb2R1bGVLZXkg
PSBrZXkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBtb2R1bGVLZXkg
PSBrZXkudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlv
bigpKSkgewogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbiA9IHNjb3BlLmV4Y2VwdGlvbigpLT52
YWx1ZSgpOwogICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAKaW5k
ZXggN2RjZDdkNWU2NWZkMzk4OGUwZWE2NmE4NDFmYWNkODc0ZTRmMTI5Zi4uM2ZjY2RhNzY2YWZi
NTZkYmEwNmQ5YTJiMzQ4ZTM3ZTRjNWRjMDI3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwCkBAIC0xMTAsNyAr
MTEwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJQcm90b3R5
cGVQYXJzZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgY29uc3QgSWRlbnRpZmllciBtb2R1
bGVLZXkgPSBleGVjLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGV4ZWMpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgU3RyaW5nIHNv
dXJjZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAg
ICBTdHJpbmcgc291cmNlID0gZXhlYy0+YXJndW1lbnQoMSkudG9XVEZTdHJpbmcoZXhlYyk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBT
b3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBtYWtlU291cmNlKHNvdXJjZSwgbW9kdWxlS2V5LmltcGwo
KSwgVGV4dFBvc2l0aW9uKCksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6TW9kdWxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNw
cAppbmRleCBmYmFkNDliYzA3NDg3YjliM2ZkZTc0N2VkYmFmY2U5MTg3N2E5MjY1Li5iODg2Y2Zj
YjM5YzQ2MzQ5ZmQyZThhMjc0YTM5YWExM2FmOGM0N2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCkBAIC0yMzEsNyArMjMx
LDcgQEAgc3RhdGljIEpTT2JqZWN0KiByZWdFeHBDcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1YKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFN0cmluZyBw
YXR0ZXJuID0gcGF0dGVybkFyZy5pc1VuZGVmaW5lZCgpID8gZW1wdHlTdHJpbmcoKSA6IHBhdHRl
cm5BcmcudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBwYXR0ZXJuID0g
cGF0dGVybkFyZy5pc1VuZGVmaW5lZCgpID8gZW1wdHlTdHJpbmcoKSA6IHBhdHRlcm5BcmcudG9X
VEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
CiAKICAgICBSZWdFeHBGbGFncyBmbGFncyA9IHRvRmxhZ3MoZXhlYywgZmxhZ3NBcmcpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKaW5k
ZXggODgyNDA4MmU0ZmMwNzcyNmU1MzljYjkxZThjZDMxNWU3ZjZlYzZhOS4uZjAzYjliNGYzMjE3
YzE1M2EyZTA3NzI5YzJhOWFmYzM2NTNlNjYxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCkBAIC0xNjYsMTIgKzE2NiwxMiBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0NvbXBpbGUoRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IHN1cHBseSBmbGFncyB3aGVuIGNvbnN0cnVjdGluZyBv
bmUgUmVnRXhwIGZyb20gYW5vdGhlci4iKSk7CiAgICAgICAgIHJlZ0V4cCA9IGFzUmVnRXhwT2Jq
ZWN0KGFyZzApLT5yZWdFeHAoKTsKICAgICB9IGVsc2UgewotICAgICAgICBTdHJpbmcgcGF0dGVy
biA9IGFyZzAuaXNVbmRlZmluZWQoKSA/IGVtcHR5U3RyaW5nKCkgOiBhcmcwLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSBhcmcwLmlzVW5kZWZp
bmVkKCkgPyBlbXB0eVN0cmluZygpIDogYXJnMC50b1dURlN0cmluZyhleGVjKTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAgICAg
UmVnRXhwRmxhZ3MgZmxhZ3MgPSBOb0ZsYWdzOwogICAgICAgICBpZiAoIWFyZzEuaXNVbmRlZmlu
ZWQoKSkgewotICAgICAgICAgICAgZmxhZ3MgPSByZWdFeHBGbGFncyhhcmcxLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKSk7CisgICAgICAgICAgICBmbGFncyA9IHJlZ0V4cEZsYWdzKGFyZzEu
dG9XVEZTdHJpbmcoZXhlYykpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICBpZiAoZmxhZ3MgPT0gSW52YWxpZEZs
YWdzKQogICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNy
ZWF0ZVN5bnRheEVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBmbGFncyBzdXBwbGll
ZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIikpKTsKQEAgLTI0MywxMiArMjQzLDEyIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRl
KiBleGVjKQogCiAgICAgSlNWYWx1ZSBzb3VyY2VWYWx1ZSA9IHRoaXNPYmplY3QtPmdldChleGVj
LCB2bS5wcm9wZXJ0eU5hbWVzLT5zb3VyY2UpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFN0cmluZyBzb3VyY2UgPSBzb3VyY2VWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHNvdXJjZSA9IHNvdXJjZVZh
bHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBmbGFnc1ZhbHVlID0gdGhpc09iamVjdC0+
Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmZsYWdzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBTdHJpbmcgZmxhZ3MgPSBmbGFnc1Zh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgZmxhZ3MgPSBmbGFn
c1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggZTE2MGIy
M2JlNzgxZmI3ODNiNjZiMTQ4YzkwMmIzMjM5NWUwZDM0Zi4uYWVlZTRiY2RkOGIzNWUzYzgzYjU3
YzFmZDBiOTdmYzllOWNiN2FlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC01NTQsNyArNTU0LDcgQEAgc3RhdGljIEFMV0FZ
U19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKAogCiAgICAg
ICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRUaGlzKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAg
ICAgICAgIEpTVmFsdWUganNSZXN1bHQgPSBjYWNoZWRDYWxsLmNhbGwoKTsKLSAgICAgICAgICAg
ICAgICByZXBsYWNlbWVudHMuYXBwZW5kKGpzUmVzdWx0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSk7CisgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzLmFwcGVuZChqc1Jlc3VsdC50b1dU
RlN0cmluZyhleGVjKSk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSByZXN1
bHQuZW5kOwpAQCAtNTkzLDcgKzU5Myw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRK
U1ZhbHVlIHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCgKIAogICAgICAgICAgICAgICAgIGNhY2hl
ZENhbGwuc2V0VGhpcyhqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGpz
UmVzdWx0ID0gY2FjaGVkQ2FsbC5jYWxsKCk7Ci0gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRz
LmFwcGVuZChqc1Jlc3VsdC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgICAgICAg
ICAgICAgIHJlcGxhY2VtZW50cy5hcHBlbmQoanNSZXN1bHQudG9XVEZTdHJpbmcoZXhlYykpOwog
ICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogCiAgICAgICAgICAgICAgICAgbGFzdEluZGV4ID0gcmVzdWx0LmVuZDsKQEAgLTYzNSw3
ICs2MzUsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSByZXBsYWNlVXNp
bmdSZWdFeHBTZWFyY2goCiAKICAgICAgICAgICAgICAgICBKU1ZhbHVlIHJlcGxhY2VtZW50ID0g
Y2FsbChleGVjLCByZXBsYWNlVmFsdWUsIGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmluZWQo
KSwgYXJncyk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHJlcGxhY2VtZW50U3RyaW5n
ID0gcmVwbGFjZW1lbnQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAgICAgICAg
ICAgIFN0cmluZyByZXBsYWNlbWVudFN0cmluZyA9IHJlcGxhY2VtZW50LnRvV1RGU3RyaW5nKGV4
ZWMpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50cy5hcHBlbmQocmVwbGFjZW1l
bnRTdHJpbmcpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwpAQCAtNzE4LDcgKzcxOCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IEVuY29kZWRKU1ZhbHVlIHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaChWTSYgdm0sIEV4ZWNTdGF0
ZSoKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENh
bGxEYXRhKHJlcGxhY2VWYWx1ZSwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxs
VHlwZTo6Tm9uZSkgewotICAgICAgICByZXBsYWNlbWVudFN0cmluZyA9IHJlcGxhY2VWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgIHJlcGxhY2VtZW50U3RyaW5nID0g
cmVwbGFjZVZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAKQEAgLTczMiw3ICs3MzIsNyBA
QCBzdGF0aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSByZXBsYWNlVXNpbmdTdHJpbmdT
ZWFyY2goVk0mIHZtLCBFeGVjU3RhdGUqCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcgPSBqc1N0cmluZy0+dmFsdWUo
ZXhlYyk7Ci0gICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IHNlYXJjaFZhbHVlLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gc2VhcmNoVmFsdWUu
dG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICBzaXplX3QgbWF0Y2hTdGFydCA9IHN0cmluZy5maW5kKHNlYXJj
aFN0cmluZyk7CkBAIC03NTEsNyArNzUxLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2Rl
ZEpTVmFsdWUgcmVwbGFjZVVzaW5nU3RyaW5nU2VhcmNoKFZNJiB2bSwgRXhlY1N0YXRlKgogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9
CiAKLSAgICBTdHJpbmcgcmVwbGFjZVN0cmluZyA9IHJlcGxhY2VWYWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHJlcGxhY2VTdHJpbmcgPSByZXBsYWNlVmFsdWUu
dG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICBTdHJpbmdJbXBsKiBzdHJpbmdJbXBsID0gc3RyaW5nLmltcGwo
KTsKQEAgLTExMTUsNyArMTExNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlz
VmFsdWUpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Ci0g
ICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAg
IFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgaW50IGxlbiA9IHMubGVu
Z3RoKCk7CkBAIC0xMTgzLDcgKzExODMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyAzLiBM
ZXQgUyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgVG9TdHJpbmcsIGdpdmluZyBpdCB0aGUgdGhp
cyB2YWx1ZSBhcyBpdHMgYXJndW1lbnQuCiAgICAgLy8gNy4gTGV0IHMgYmUgdGhlIG51bWJlciBv
ZiBjaGFyYWN0ZXJzIGluIFMuCi0gICAgU3RyaW5nIGlucHV0ID0gdGhpc1ZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgaW5wdXQgPSB0aGlzVmFsdWUudG9XVEZT
dHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgQVNTRVJUKCFpbnB1dC5pc051bGwoKSk7CiAKQEAgLTEyMDUsNyArMTIwNSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAvLyA5LiBJZiBzZXBhcmF0b3IgaXMgYSBSZWdFeHAgb2Jq
ZWN0IChpdHMgW1tDbGFzc11dIGlzICJSZWdFeHAiKSwgbGV0IFIgPSBzZXBhcmF0b3I7CiAgICAg
Ly8gICAgb3RoZXJ3aXNlIGxldCBSID0gVG9TdHJpbmcoc2VwYXJhdG9yKS4KICAgICBKU1ZhbHVl
IHNlcGFyYXRvclZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgU3RyaW5n
IHNlcGFyYXRvciA9IHNlcGFyYXRvclZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
KyAgICBTdHJpbmcgc2VwYXJhdG9yID0gc2VwYXJhdG9yVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAg
ICAvLyAxMC4gSWYgbGltID09IDAsIHJldHVybiBBLgpAQCAtMTMyNCw3ICsxMzI0LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIoRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICBqc1N0cmluZyA9IGpzQ2FzdDxKU1N0cmluZyo+KHRoaXNWYWx1ZS5h
c0NlbGwoKSk7CiAgICAgICAgIGxlbiA9IGpzU3RyaW5nLT5sZW5ndGgoKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICB1U3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KTsKKyAgICAgICAgdVN0cmluZyA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAg
IGxlbiA9IHVTdHJpbmcubGVuZ3RoKCk7CiAgICAgfQpAQCAtMTQ1NSwxMSArMTQ1NSwxMSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUo
RXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgU3RyaW5nIHMgPSB0aGlz
VmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1Zh
bHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwot
ICAgIFN0cmluZyBzdHIgPSBhMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3Ry
aW5nIHN0ciA9IGEwLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dW1iZXIoQ29sbGF0b3IoKS5jb2xsYXRlKHMsIHN0cikpKTsKIH0KQEAgLTE1NzQsNyArMTU3NCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQmlnKEV4ZWNT
dGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAgIFN0cmluZyBzID0gdGhpc1ZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50
b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICI8YmlnPiIsIHMsICI8L2JpZz4iKSk7
CkBAIC0xNTg4LDcgKzE1ODgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY1NtYWxsKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1Zh
bHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAg
IFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBT
dHJpbmcgcyA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICI8
c21hbGw+IiwgcywgIjwvc21hbGw+IikpOwpAQCAtMTYwMiw3ICsxNjAyLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNCbGluayhFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNo
ZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKTsKLSAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmco
ZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtl
Tm9udHJpdmlhbFN0cmluZyhleGVjLCAiPGJsaW5rPiIsIHMsICI8L2JsaW5rPiIpKTsKQEAgLTE2
MTYsNyArMTYxNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jQm9sZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKLSAgICBTdHJpbmcg
cyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMg
PSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiPGI+Iiwgcywg
IjwvYj4iKSk7CkBAIC0xNjMwLDcgKzE2MzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY0ZpeGVkKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2li
bGUodGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUpOwotICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBzY29wZS5yZWxl
YXNlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5n
KGV4ZWMsICI8dHQ+IiwgcywgIjwvdHQ+IikpOwpAQCAtMTY0NCw3ICsxNjQ0LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJdGFsaWNzKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1dURlN0
cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICI8aT4iLCBzLCAiPC9pPiIpKTsKQEAgLTE2NTgs
NyArMTY1OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
U3RyaWtlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAgIFN0cmluZyBz
ID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9
IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICI8c3RyaWtlPiIs
IHMsICI8L3N0cmlrZT4iKSk7CkBAIC0xNjcyLDcgKzE2NzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1YihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0
Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlKTsKLSAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgc2Nv
cGUucmVsZWFzZSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlh
bFN0cmluZyhleGVjLCAiPHN1Yj4iLCBzLCAiPC9zdWI+IikpOwpAQCAtMTY4Niw3ICsxNjg2LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdXAoRXhlY1N0
YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRv
V1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIjxzdXA+IiwgcywgIjwvc3VwPiIpKTsK
QEAgLTE3MDAsNyArMTcwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jRm9udGNvbG9yKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhp
c1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwot
ICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAg
ICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgYTAgPSBl
eGVjLT5hcmd1bWVudCgwKTsKQEAgLTE3MTksNyArMTcxOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jRm9udHNpemUoRXhlY1N0YXRlKiBleGVjKQogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09i
amVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7Ci0gICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAg
ICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwpAQCAtMTc3NCw3ICsxNzc0LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNBbmNob3IoRXhlY1N0
YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRv
V1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwpAQCAtMTc5
Myw3ICsxNzkzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNMaW5rKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAgIFN0cmluZyBz
ID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9
IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVu
dCgwKTsKQEAgLTE4NDAsNyArMTg0MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSB0cmltU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aGlzVmFsdWUsIGludCB0cmltS2luCiAKICAg
ICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCiAgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgU3RyaW5nIHN0ciA9IHRoaXNWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHN0ciA9IHRoaXNWYWx1ZS50
b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwog
CiAgICAgdW5zaWduZWQgbGVmdCA9IDA7CkBAIC0xODk4LDcgKzE4OTgsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N0YXJ0c1dpdGgoRXhlY1N0YXRlKiBl
eGVjKQogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCi0gICAgU3RyaW5nIHN0cmlu
Z1RvU2VhcmNoSW4gPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAg
IFN0cmluZyBzdHJpbmdUb1NlYXJjaEluID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAg
SlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwpAQCAtMTkwNyw3ICsxOTA3LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdGFydHNXaXRoKEV4ZWNT
dGF0ZSogZXhlYykKICAgICBpZiAoaXNSZWd1bGFyRXhwcmVzc2lvbikKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJBcmd1bWVudCB0byBTdHJpbmcucHJvdG90
eXBlLnN0YXJ0c1dpdGggY2Fubm90IGJlIGEgUmVnRXhwIik7CiAKLSAgICBTdHJpbmcgc2VhcmNo
U3RyaW5nID0gYTAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzZWFy
Y2hTdHJpbmcgPSBhMC50b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgcG9zaXRpb25BcmcgPSBl
eGVjLT5hcmd1bWVudCgxKTsKQEAgLTE5MzIsNyArMTkzMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgoRXhlY1N0YXRlKiBleGVjKQogICAg
IGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCi0gICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNo
SW4gPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBz
dHJpbmdUb1NlYXJjaEluID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBh
MCA9IGV4ZWMtPmFyZ3VtZW50KDApOwpAQCAtMTk0MSw3ICsxOTQxLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNFbmRzV2l0aChFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgaWYgKGlzUmVndWxhckV4cHJlc3Npb24pCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0
aCBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKIAotICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGEw
LnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nVG9TZWFyY2hJbi5s
ZW5ndGgoKTsKQEAgLTE5ODIsNyArMTk4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jSW5jbHVkZXMoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICghY2hl
Y2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUpOwogCi0gICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNoSW4gPSB0aGlz
VmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzdHJpbmdUb1Nl
YXJjaEluID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMt
PmFyZ3VtZW50KDApOwpAQCAtMTk5MSw3ICsxOTkxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJbmNsdWRlcyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYg
KGlzUmVndWxhckV4cHJlc3Npb24pCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyBjYW5ub3Qg
YmUgYSBSZWdFeHAiKTsKIAotICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGEwLnRvV1RGU3Ry
aW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogCiAgICAgSlNWYWx1ZSBwb3NpdGlvbkFyZyA9IGV4ZWMtPmFyZ3VtZW50KDEpOwpAQCAt
MjAwOCwxMSArMjAwOCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJ1aWx0aW5T
dHJpbmdJbmNsdWRlc0ludGVybmFsKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEFTU0VSVChjaGVja09iamVjdENvZXJjaWJs
ZSh0aGlzVmFsdWUpKTsKIAotICAgIFN0cmluZyBzdHJpbmdUb1NlYXJjaEluID0gdGhpc1ZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJ
biA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT51bmNo
ZWNrZWRBcmd1bWVudCgwKTsKLSAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gYTAudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1dURlN0
cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKIAogICAgIEpTVmFsdWUgcG9zaXRpb25BcmcgPSBleGVjLT5hcmd1bWVudCgxKTsKQEAg
LTIwNzcsNyArMjA3Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jTm9ybWFsaXplKEV4ZWNTdGF0ZSogZXhlYykKICAgICBVTm9ybWFsaXphdGlvbk1vZGUg
Zm9ybSA9IFVOT1JNX05GQzsKICAgICAvLyBWZXJpZnkgdGhhdCB0aGUgYXJndW1lbnQgaXMgcHJv
dmlkZWQgYW5kIGlzIG5vdCB1bmRlZmluZWQuCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5p
c1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIFN0cmluZyBmb3JtU3RyaW5nID0gZXhlYy0+dW5jaGVj
a2VkQXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAgICBTdHJp
bmcgZm9ybVN0cmluZyA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4
ZWMpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAogICAgICAgICBpZiAoZm9ybVN0cmluZyA9PSAiTkZDIikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAppbmRleCAyNWE1YmQw
NTFjODZiYjMzOGYzYTg4YjY0NGE5NjM4MThjNjRiNDM4Li5iODM2NGI4MzhkOWVjYjI1OGEyMTI1
MWYyNDA0Y2UxN2E4M2JiYWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0pTRG9sbGFyVk1Qcm90b3R5cGUuY3BwCkBAIC0zMzcsNyArMzM3LDcgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmludChFeGVjU3RhdGUqIGV4ZWMp
CiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7
Ci0gICAgICAgIFN0cmluZyBhcmdTdHIgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgIFN0cmluZyBhcmdTdHIgPSBleGVjLT51
bmNoZWNrZWRBcmd1bWVudChpKS50b1dURlN0cmluZyhleGVjKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGRhdGFMb2coYXJn
U3RyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmgKaW5kZXggYzE0YTM3OTA1MjA3ZDkxY2UyYTM3
MDYwMzFjMDlhN2U3OTU2MzNlYy4uNmYwNWYzZWI2MzA3ODM2NDJlZjNjMzk0ZjgxYTc2NzAyYzg5
ZTQwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseUNvbXBpbGVFcnJvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBKU1dlYkFz
c2VtYmx5Q29tcGlsZUVycm9yIDogcHVibGljIEVycm9ySW5zdGFuY2UgewogICAgIHN0YXRpYyBK
U1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKiBjcmVhdGUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwg
Y29uc3QgU3RyaW5nJiwgYm9vbCk7CiAgICAgc3RhdGljIEpTV2ViQXNzZW1ibHlDb21waWxlRXJy
b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1ZhbHVl
IG1lc3NhZ2UsIGJvb2wgdXNlQ3VycmVudEZyYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIG1lc3NhZ2UuaXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDog
bWVzc2FnZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksIHVzZUN1cnJlbnRGcmFtZSk7Cisg
ICAgICAgIHJldHVybiBjcmVhdGUoZXhlYywgc3RydWN0dXJlLCBtZXNzYWdlLmlzVW5kZWZpbmVk
KCkgPyBTdHJpbmcoKSA6IG1lc3NhZ2UudG9XVEZTdHJpbmcoZXhlYyksIHVzZUN1cnJlbnRGcmFt
ZSk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oCmluZGV4IDkz
NTkzMGEyNjZjZWRlMTliZjIxYTQ0MjU3ZGRmMjcyYzE0M2EwYTUuLjNjNzg3OWU3YTQ1Yjc2ZjE0
ZWVlNmQ0OTIzNDExOWJjMGJkNGFkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgKQEAgLTM4LDcgKzM4
LDcgQEAgY2xhc3MgSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvciA6IHB1YmxpYyBFcnJvckluc3Rh
bmNlIHsKICAgICBzdGF0aWMgSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvciogY3JlYXRlKEV4ZWNT
dGF0ZSosIFN0cnVjdHVyZSosIGNvbnN0IFN0cmluZyYsIGJvb2wgdXNlQ3VycmVudEZyYW1lID0g
dHJ1ZSk7CiAgICAgc3RhdGljIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IqIGNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1ZhbHVlIG1lc3NhZ2UsIGJvb2wg
dXNlQ3VycmVudEZyYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZShleGVjLCBzdHJ1
Y3R1cmUsIG1lc3NhZ2UuaXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDogbWVzc2FnZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyksIHVzZUN1cnJlbnRGcmFtZSk7CisgICAgICAgIHJldHVybiBj
cmVhdGUoZXhlYywgc3RydWN0dXJlLCBtZXNzYWdlLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6
IG1lc3NhZ2UudG9XVEZTdHJpbmcoZXhlYyksIHVzZUN1cnJlbnRGcmFtZSk7CiAgICAgfQogCiAg
ICAgREVDTEFSRV9JTkZPOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SURCQmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJC
aW5kaW5nVXRpbGl0aWVzLmNwcAppbmRleCAxMmY1N2JhYjdmNjNkZWMwNGM3MmYxNWJiY2M5ZGU3
ZjhlN2Y4N2M0Li45ZDBhMjY3ZGFkYTk3YzJjMjg5NGI4OWQxMmY1NWEyYjcwNmU0YjBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNw
cApAQCAtMTQ4LDcgKzE0OCw3IEBAIHN0YXRpYyBSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlG
cm9tVmFsdWUoRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBWZWN0CiAgICAgICAgIHJl
dHVybiBJREJLZXk6OmNyZWF0ZU51bWJlcih2YWx1ZS50b051bWJlcigmZXhlYykpOwogCiAgICAg
aWYgKHZhbHVlLmlzU3RyaW5nKCkpCi0gICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZVN0cmlu
Zyh2YWx1ZS50b1N0cmluZygmZXhlYyktPnZhbHVlKCZleGVjKSk7CisgICAgICAgIHJldHVybiBJ
REJLZXk6OmNyZWF0ZVN0cmluZyh2YWx1ZS50b1dURlN0cmluZygmZXhlYyk7CiAKICAgICBpZiAo
dmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpICYmICFzdGQ6OmlzbmFuKHZhbHVl
VG9EYXRlKCZleGVjLCB2YWx1ZSkpKQogICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVEYXRl
KHZhbHVlVG9EYXRlKCZleGVjLCB2YWx1ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAKaW5kZXggYmYwMDRkMDAyYjM5Yjg1MjBiNmFl
OTIxNWNkYzcwYTQ2MjIzYzc1OC4uOGJlN2Q4MGVkNWEzNGVhMWEzMGQ3N2M4YTFiYzg4YmJmNjg3
ODEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNr
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tD
dXN0b20uY3BwCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgSlNBdWRpb1RyYWNrOjpzZXRLaW5kKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgVk0mIHZtID0gc3RhdGUudm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvJiBz
dHJpbmcgPSB2YWx1ZS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOworICAgIGF1dG8m
IHN0cmluZyA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKICAgICB3cmFwcGVkKCkuc2V0S2luZChzdHJpbmcpOwogI2Vs
c2UKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBKU0F1ZGlvVHJhY2s6OnNldExhbmd1YWdlKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvJiBzdHJp
bmcgPSB2YWx1ZS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOworICAgIGF1dG8mIHN0
cmluZyA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKICAgICB3cmFwcGVkKCkuc2V0TGFuZ3VhZ2Uoc3RyaW5nKTsKICNl
bHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29y
aXRobURpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9B
bGdvcml0aG1EaWN0aW9uYXJ5LmNwcAppbmRleCA3ZjZmOTY4YmUyMzk3YjEyZTE1NTc4YzM4Njk4
ZjNiNWIyYThmMzQwLi4yMzM4MGI2YjJlOWY1MGM2YmY3ZDZmYTc0YjVmODk2Nzc1ODE5N2RkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURp
Y3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxn
b3JpdGhtRGljdGlvbmFyeS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgYm9vbCBKU0NyeXB0b0FsZ29y
aXRobURpY3Rpb25hcnk6OmdldEFsZ29yaXRobUlkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHUKICAgICBTdHJpbmcgYWxnb3JpdGhtTmFtZTsKIAogICAgIGlmICh2YWx1ZS5pc1N0cmlu
ZygpKQotICAgICAgICBhbGdvcml0aG1OYW1lID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOworICAgICAgICBhbGdvcml0aG1OYW1lID0gdmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7
CiAgICAgZWxzZSBpZiAodmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBpZiAodmFsdWUuZ2V0
T2JqZWN0KCktPmluaGVyaXRzKFN0cmluZ09iamVjdDo6aW5mbygpKSkKICAgICAgICAgICAgIGFs
Z29yaXRobU5hbWUgPSBhc1N0cmluZyhhc1N0cmluZ09iamVjdCh2YWx1ZSktPmludGVybmFsVmFs
dWUoKSktPnZhbHVlKGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCmluZGV4IDgwMzg5Nzc5ODkwZDMwNWMwZjY0
ZGNhYTUxYjE5MDAxNzU2OTkyNTYuLmM2Y2YwMzFjZDViMTA4MDc0ZmJhMDQ5OWM0ODZhODkzNjM5
MTQzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBh
dGhOU1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3Rv
bVhQYXRoTlNSZXNvbHZlci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBTdHJpbmcgSlNDdXN0b21Y
UGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hbWVzcGFjZVVSSShjb25zdCBTdHJpbmcmIHByZWZpeCkK
ICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CiAgICAgZWxzZSB7CiAg
ICAgICAgIGlmICghcmV0dmFsLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgICAgICByZXN1
bHQgPSByZXR2YWwudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAgICAgICAgcmVz
dWx0ID0gcmV0dmFsLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIH0KIAogICAgIHJldHVybiByZXN1
bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5j
cHAKaW5kZXggNmM2ZjNiNzEyNWEzZGI4NmEwNTY4MTJhNTE0MmZiNjBhNDgzOGY1OC4uOGE2YWFi
ZGQxYTQzODY3MDZhYTllZGM2N2ViMWZiZGE1YmY2OGNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtMzg4LDcgKzM4OCw3IEBA
IHZvaWQgSlNET01XaW5kb3c6OnNldExvY2F0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUg
dmFsdWUpCiAgICAgfQogI2VuZGlmCiAKLSAgICBTdHJpbmcgbG9jYXRpb25TdHJpbmcgPSB2YWx1
ZS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOworICAgIFN0cmluZyBsb2NhdGlvblN0
cmluZyA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKIAogICAgIGlmIChMb2NhdGlvbiogbG9jYXRpb24gPSB3cmFwcGVk
KCkubG9jYXRpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKaW5kZXggOGVlYTk1ZGRkNzFiOGZmMDdkNDk5
NTg0ZDNmZGUzOTMxMTJmNWE1OS4uYmE4ZmFmMzBlNDNhMzE3OTVlNDEyNDIwZDJjOTliODc1ODc1
MDNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rp
b25FdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZp
Y2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCBKU1ZhbHVlIEpTRGV2
aWNlTW90aW9uRXZlbnQ6OmluaXREZXZpY2VNb3Rpb25FdmVudChFeGVjU3RhdGUmIHN0YXRlKQog
ICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgY29uc3QgU3RyaW5nIHR5cGUgPSBzdGF0ZS5hcmd1bWVudCgwKS50
b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOworICAgIGNvbnN0IFN0cmluZyB0eXBlID0g
c3RhdGUuYXJndW1lbnQoMCkudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBib29sIGJ1YmJsZXMg
PSBzdGF0ZS5hcmd1bWVudCgxKS50b0Jvb2xlYW4oJnN0YXRlKTsKICAgICBib29sIGNhbmNlbGFi
bGUgPSBzdGF0ZS5hcmd1bWVudCgyKS50b0Jvb2xlYW4oJnN0YXRlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRpb25FdmVu
dEN1c3RvbS5jcHAKaW5kZXggOWQ5NTRmNTIwYTllY2I3YjY4OWI5NDI0NzBkYjNhMTUyZGFjZmZl
OC4uNzdlMzQxNTM3OGRiMTZiMGQ3OTljNzBkM2FiM2I1ZWM5NzIwOTMzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9u
RXZlbnRDdXN0b20uY3BwCkBAIC05Myw3ICs5Myw3IEBAIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRh
dGlvbkV2ZW50OjphYnNvbHV0ZShFeGVjU3RhdGUmKSBjb25zdAogCiBKU1ZhbHVlIEpTRGV2aWNl
T3JpZW50YXRpb25FdmVudDo6aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQoRXhlY1N0YXRlJiBz
dGF0ZSkKIHsKLSAgICBjb25zdCBTdHJpbmcgdHlwZSA9IHN0YXRlLmFyZ3VtZW50KDApLnRvU3Ry
aW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CisgICAgY29uc3QgU3RyaW5nIHR5cGUgPSBzdGF0
ZS5hcmd1bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIGJvb2wgYnViYmxlcyA9IHN0
YXRlLmFyZ3VtZW50KDEpLnRvQm9vbGVhbigmc3RhdGUpOwogICAgIGJvb2wgY2FuY2VsYWJsZSA9
IHN0YXRlLmFyZ3VtZW50KDIpLnRvQm9vbGVhbigmc3RhdGUpOwogICAgIC8vIElmIGFscGhhLCBi
ZXRhIG9yIGdhbW1hIGFyZSBudWxsIG9yIHVuZGVmaW5lZCwgbWFyayB0aGVtIGFzIG5vdCBwcm92
aWRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3Bw
CmluZGV4IDZhMTQ5MTQ4Y2YyY2RkZTU1MmI3YjBkNGQ4OTgzZTE2YzQ1NDVlZTYuLjVjOGM0M2Iz
MzJmYjhkYjNhNjkzYjJhN2UyOGVhNDYxNDA4ZTU5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQg
SlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0CiAgICAgICAgICAgICByZXBvcnRFeGNlcHRpb24oZXhlYywgZXhj
ZXB0aW9uKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICghcmV0dmFsLmlzVW5k
ZWZpbmVkT3JOdWxsKCkgJiYgaXM8QmVmb3JlVW5sb2FkRXZlbnQ+KCpldmVudCkpCi0gICAgICAg
ICAgICAgICAgZG93bmNhc3Q8QmVmb3JlVW5sb2FkRXZlbnQ+KCpldmVudCkuc2V0UmV0dXJuVmFs
dWUocmV0dmFsLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgICAgICAgICAgICAg
ZG93bmNhc3Q8QmVmb3JlVW5sb2FkRXZlbnQ+KCpldmVudCkuc2V0UmV0dXJuVmFsdWUocmV0dmFs
LnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgICAgICAgICAgaWYgKG1faXNBdHRyaWJ1dGUpIHsKICAg
ICAgICAgICAgICAgICBpZiAocmV0dmFsLmlzRmFsc2UoKSkKICAgICAgICAgICAgICAgICAgICAg
ZXZlbnQtPnByZXZlbnREZWZhdWx0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IGUzOTMyYzkxZDdj
ZjE2NTFiYjUyZTU5ZGJjMmJkZTI4ZWM0MGFhZDguLjExOTgyYWNjMWNmNWE1NzE3NzFhZTZiYTZm
NWJmZTRiYzAyZWYxNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIVE1MQWxsQ29sbGVjdGlvbihFeGVj
U3RhdGUqIGV4ZWMpCiAKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID09IDEpIHsKICAg
ICAgICAgLy8gU3VwcG9ydCBmb3IgZG9jdW1lbnQuYWxsKDxpbmRleD4pIGV0Yy4KLSAgICAgICAg
U3RyaW5nIHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKTsKKyAgICAgICAgU3RyaW5nIHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3Ry
aW5nKGV4ZWMpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFy
c2VJbmRleCgqc3RyaW5nLmltcGwoKSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRvSlMoZXhlYywganNDb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgY29sbGVjdGlvbi5p
dGVtKGluZGV4LnZhbHVlKCkpKSk7CkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIVE1MQWxsQ29sbGVjdGlvbihFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgfQogCiAgICAgLy8gVGhlIHNlY29uZCBhcmcsIGlmIHNldCwgaXMgdGhlIGluZGV4IG9m
IHRoZSBpdGVtIHdlIHdhbnQKLSAgICBTdHJpbmcgc3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzdHJpbmcgPSBleGVjLT5h
cmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
aW5kZXggPSBwYXJzZUluZGV4KCpleGVjLT5hcmd1bWVudCgxKS50b1dURlN0cmluZyhleGVjKS5p
bXBsKCkpKSB7CiAgICAgICAgIGlmIChhdXRvKiBpdGVtID0gY29sbGVjdGlvbi5uYW1lZEl0ZW1X
aXRoSW5kZXgoc3RyaW5nLCBpbmRleC52YWx1ZSgpKSkKQEAgLTExOSw3ICsxMTksNyBAQCBKU1Zh
bHVlIEpTSFRNTEFsbENvbGxlY3Rpb246Oml0ZW0oRXhlY1N0YXRlJiBzdGF0ZSkKIAogSlNWYWx1
ZSBKU0hUTUxBbGxDb2xsZWN0aW9uOjpuYW1lZEl0ZW0oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAg
ICBKU1ZhbHVlIHZhbHVlID0gbmFtZWRJdGVtcyhzdGF0ZSwgdGhpcywgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVl
KCZzdGF0ZSkpKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gbmFtZWRJdGVtcyhzdGF0ZSwgdGhpcywg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApLnRvV1RGU3Ry
aW5nKCZzdGF0ZSk7CiAgICAgcmV0dXJuIHZhbHVlLmlzVW5kZWZpbmVkKCkgPyBqc051bGwoKSA6
IHZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDk0MWM2
OTI3MzlhZDY1MjMyNDYzNzhlYjA5ZThhYjg4OGY5MmM1OTAuLmU5Mzc4YjU5YWVmNjM3MWU4MWQ1
YWNmZTlhMGYzZWNiNjMxMjA1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3Bw
CkBAIC02Miw3ICs2Miw3IEBAIEpTVmFsdWUgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6
bmFtZWRJdGVtKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3Vt
ZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBz
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKLSAgICBKU1Zh
bHVlIHZhbHVlID0gbmFtZWRJdGVtcyhzdGF0ZSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZh
bHVlKCZzdGF0ZSkpKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gbmFtZWRJdGVtcyhzdGF0ZSwgdGhp
cywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50
KDApLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgcmV0dXJuIHZhbHVlLmlzVW5kZWZpbmVkKCkg
PyBqc051bGwoKSA6IHZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcAppbmRleCBlZTkwMzBmYTA0ODhi
ZTliZjQyN2MyOWE4NGViM2YzOWJmZDVkYmExLi44MGMzOGNmNjFlY2NkZTM4ZDc2OTkwNGZmZTA5
MzYwYTMzM2NjYzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIEpT
SFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRGlyZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpbnB1dC5zZXRT
ZWxlY3Rpb25EaXJlY3Rpb24odmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKSk7
CisgICAgaW5wdXQuc2V0U2VsZWN0aW9uRGlyZWN0aW9uKHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0
ZSk7CiB9CiAKIEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZShF
eGVjU3RhdGUmIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCmluZGV4IGY0MDY0ZTY0NzU1
OGVmZWRjYjYzZDljMTBjMTk4MTQxMWRhZjZmNGQuLjFiMWExZmNlMzczMmNiMzUzYzg2ZWY2YmYw
ZWJlMzg2ODZlYWUwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKQEAgLTYyLDcgKzYyLDcg
QEAgc3RhdGljIHZvaWQgcG9wdWxhdGVDb250ZXh0TWVudUl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywg
SlNBcnJheSogYXJyYXksIENvbnRleHRNZW4KICAgICAgICAgaWYgKCF0eXBlLmlzU3RyaW5nKCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBTdHJpbmcgdHlwZVN0cmluZyA9IHR5
cGUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAgICBTdHJpbmcgdHlwZVN0cmlu
ZyA9IHR5cGUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgICAgIGlmICh0eXBlU3RyaW5nID09ICJz
ZXBhcmF0b3IiKSB7CiAgICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gaXRlbShTZXBhcmF0b3JU
eXBlLCBDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbiwgU3RyaW5nKCkpOwogICAgICAgICAgICAg
bWVudS5hcHBlbmRJdGVtKGl0ZW0pOwpAQCAtNzAsMTEgKzcwLDExIEBAIHN0YXRpYyB2b2lkIHBv
cHVsYXRlQ29udGV4dE1lbnVJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTQXJyYXkqIGFycmF5LCBD
b250ZXh0TWVuCiAgICAgICAgICAgICBDb250ZXh0TWVudSBzdWJNZW51OwogICAgICAgICAgICAg
SlNBcnJheSogc3ViSXRlbXNBcnJheSA9IGFzQXJyYXkoc3ViSXRlbXMpOwogICAgICAgICAgICAg
cG9wdWxhdGVDb250ZXh0TWVudUl0ZW1zKGV4ZWMsIHN1Ykl0ZW1zQXJyYXksIHN1Yk1lbnUpOwot
ICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIGl0ZW0oU3VibWVudVR5cGUsIENvbnRleHRNZW51
SXRlbVRhZ05vQWN0aW9uLCBsYWJlbC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICZzdWJN
ZW51KTsKKyAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBpdGVtKFN1Ym1lbnVUeXBlLCBDb250
ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbiwgbGFiZWwudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgICAg
ICAgICBtZW51LmFwcGVuZEl0ZW0oaXRlbSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBDb250ZXh0TWVudUFjdGlvbiB0eXBlZElkID0gc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVBY3Rp
b24+KENvbnRleHRNZW51SXRlbUJhc2VDdXN0b21UYWcgKyBpZC50b0ludDMyKGV4ZWMpKTsKLSAg
ICAgICAgICAgIENvbnRleHRNZW51SXRlbSBtZW51SXRlbSgodHlwZVN0cmluZyA9PSAiY2hlY2ti
b3giID8gQ2hlY2thYmxlQWN0aW9uVHlwZSA6IEFjdGlvblR5cGUpLCB0eXBlZElkLCBsYWJlbC50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVt
IG1lbnVJdGVtKCh0eXBlU3RyaW5nID09ICJjaGVja2JveCIgPyBDaGVja2FibGVBY3Rpb25UeXBl
IDogQWN0aW9uVHlwZSksIHR5cGVkSWQsIGxhYmVsLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgICAg
ICAgICAgaWYgKCFlbmFibGVkLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgICAgICAgICAgbWVudUl0
ZW0uc2V0RW5hYmxlZChlbmFibGVkLnRvQm9vbGVhbihleGVjKSk7CiAgICAgICAgICAgICBpZiAo
IWNoZWNrZWQuaXNVbmRlZmluZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAppbmRleCAyNzE0Mjk3M2YzNjViOWM4NWY2NDdh
ZjBmODg4YTcyOGFhODk2ZjA5Li5mOGI3ZTAxNTMxZjYzZWU1YTA5MjdkNjBlNDk5ODc4MmY3YTdl
YTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVu
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZl
bnRDdXN0b20uY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBoYW5k
bGVJbml0TWVzc2FnZUV2ZW50KEpTTWVzc2FnZUV2ZW50KiBqc0V2ZW50LCBKU0M6OkV4ZWNTdGEK
ICAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIGNvbnN0IFN0cmluZyYgdHlwZUFyZyA9IHN0YXRlLmFyZ3VtZW50
KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CisgICAgY29uc3QgU3RyaW5nJiB0
eXBlQXJnID0gc3RhdGUuYXJndW1lbnQoMCkudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwogCiAgICAgYm9vbCBjYW5CdWJibGVB
cmcgPSBzdGF0ZS5hcmd1bWVudCgxKS50b0Jvb2xlYW4oJnN0YXRlKTsKQEAgLTEyMiw3ICsxMjIs
NyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGhhbmRsZUluaXRNZXNzYWdlRXZlbnQoSlNNZXNzYWdl
RXZlbnQqIGpzRXZlbnQsIEpTQzo6RXhlY1N0YQogICAgIGNvbnN0IFN0cmluZyBvcmlnaW5Bcmcg
PSBjb252ZXJ0PElETFVTVlN0cmluZz4oc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDQpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwogCi0gICAgY29uc3QgU3RyaW5n
IGxhc3RFdmVudElkQXJnID0gc3RhdGUuYXJndW1lbnQoNSkudG9TdHJpbmcoJnN0YXRlKS0+dmFs
dWUoJnN0YXRlKTsKKyAgICBjb25zdCBTdHJpbmcgbGFzdEV2ZW50SWRBcmcgPSBzdGF0ZS5hcmd1
bWVudCg1KS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIEpTVmFsdWUoKSk7CiAKICAgICBhdXRvIHNvdXJjZUFyZyA9IGNvbnZlcnQ8SURMTnVsbGFi
bGU8SURMVW5pb248SURMSW50ZXJmYWNlPERPTVdpbmRvdz4sIElETEludGVyZmFjZTxNZXNzYWdl
UG9ydD4+Pj4oc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDYpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKaW5kZXggOTE3ZDYz
NzM4NzA2YzBiMjQyZjRkODFjYjcyY2NjMWY3ZjA3MTI5MS4uZDg5ZTVlN2U0YzFkZmVlNTQyZWZk
NTU5M2VjODNlNGZhNGRjOTE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgSlNWYWx1
ZSBKU1NRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KIAotICAgIFN0cmluZyBzcWxTdGF0ZW1lbnQg
PSBzdGF0ZS5hcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOworICAg
IFN0cmluZyBzcWxTdGF0ZW1lbnQgPSBzdGF0ZS5hcmd1bWVudCgwKS50b1dURlN0cmluZygmc3Rh
dGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CiAKICAgICAv
LyBOb3cgYXNzZW1ibGUgdGhlIGxpc3Qgb2YgU1FMIGFyZ3VtZW50cwpAQCAtNzksNyArNzksNyBA
QCBKU1ZhbHVlIEpTU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwoRXhlY1N0YXRlJiBzdGF0ZSkK
ICAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5kKHZhbHVlLmFzTnVtYmVyKCkpOwogICAg
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gQ29udmVydCB0aGUgYXJndW1lbnQg
dG8gYSBzdHJpbmcgYW5kIGFwcGVuZCBpdAotICAgICAgICAgICAgICAgIHNxbFZhbHVlcy5hcHBl
bmQodmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKSk7CisgICAgICAgICAgICAg
ICAgc3FsVmFsdWVzLmFwcGVuZCh2YWx1ZS50b1dURlN0cmluZygmc3RhdGUpOwogICAgICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VGV4dFRyYWNrQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRy
YWNrQ3VzdG9tLmNwcAppbmRleCA4MTU5NGIyMzk2ODBlNTFlNzg4MGVlMjNhNGU4MmFlY2U4NTQx
MWVhLi44MjgzN2NkMTcyY2RlNTExMGRjOGI3OTNlMGMyZWNjZDkzOTEzZTlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uY3BwCkBAIC00Nyw3
ICs0Nyw3IEBAIHZvaWQgSlNUZXh0VHJhY2s6OnNldExhbmd1YWdlKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgdmFsdWUpCiAgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvJiBzdHJpbmcgPSB2YWx1ZS50
b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOworICAgIGF1dG8mIHN0cmluZyA9IHZhbHVl
LnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9p
ZCgpKTsKICAgICB3cmFwcGVkKCkuc2V0TGFuZ3VhZ2Uoc3RyaW5nKTsKICNlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcAppbmRleCA3
ZWQyYWI3OWNjNWQwZWUzMGJlYjk1YjlhY2VmYjk3ZDYxY2E3NmZjLi5kODJlYzUwYTZlZTM4M2Y0
NWMzNzBlNWQ0ZWUzYTIwZWRkZmZiMzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBKU1Zp
ZGVvVHJhY2s6OnNldEtpbmQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIGF1dG8mIHN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVl
KCZzdGF0ZSk7CisgICAgYXV0byYgc3RyaW5nID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIHdyYXBwZWQoKS5z
ZXRLaW5kKHN0cmluZyk7CiAjZWxzZQpAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEpTVmlkZW9UcmFj
azo6c2V0TGFuZ3VhZ2UoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBWTSYg
dm0gPSBzdGF0ZS52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIGF1dG8mIHN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZz
dGF0ZSk7CisgICAgYXV0byYgc3RyaW5nID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIHdyYXBwZWQoKS5zZXRM
YW5ndWFnZShzdHJpbmcpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAppbmRleCA1NDRhOTgyMjU4
NTEyYmNkZjNhNmMyNzc2ZTk2NDZjYWFhMGI3MDU3Li4wNzQyYzM4YmMzY2E2ZTA4NTJmOWQ4M2Vh
MzdhYzIxMjU3YmQyYjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCkBAIC04NCw3ICs4NCw3IEBAIHN0
YXRpYyBib29sIGNyeXB0b0tleUZvcm1hdEZyb21KU1ZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VmFsdWUgdmFsdWUsIENyeXB0b0tlCiAgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBTdHJpbmcga2V5Rm9ybWF0
U3RyaW5nID0gdmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKKyAgICBTdHJp
bmcga2V5Rm9ybWF0U3RyaW5nID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgaWYgKGtleUZvcm1hdFN0cmluZyA9
PSAicmF3IikKICAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5Rm9ybWF0OjpSYXc7CkBAIC0xMTYs
NyArMTE2LDcgQEAgc3RhdGljIGJvb2wgY3J5cHRvS2V5VXNhZ2VzRnJvbUpTVmFsdWUoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgQ3J5cHRvS2UKICAgICBKU0FycmF5KiBhcnJheSA9
IGFzQXJyYXkodmFsdWUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXktPmxlbmd0
aCgpOyArK2kpIHsKICAgICAgICAgSlNWYWx1ZSBlbGVtZW50ID0gYXJyYXktPmdldEluZGV4KCZz
dGF0ZSwgaSk7Ci0gICAgICAgIFN0cmluZyB1c2FnZVN0cmluZyA9IGVsZW1lbnQudG9TdHJpbmco
JnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKKyAgICAgICAgU3RyaW5nIHVzYWdlU3RyaW5nID0gZWxl
bWVudC50b1dURlN0cmluZygmc3RhdGUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBmYWxzZSk7CiAgICAgICAgIGlmICh1c2FnZVN0cmluZyA9PSAiZW5jcnlwdCIpCiAgICAg
ICAgICAgICByZXN1bHQgfD0gQ3J5cHRvS2V5VXNhZ2VFbmNyeXB0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAppbmRleCAz
MzYyZjQ0OGJjZmI4ZTdhMjYyNGJmYTU3MDk5ZDQwODBkZGVkZTZiLi4yNWRlZjRlYjgyOTMzZjAx
ZmZjOTg1OTM3ZjQ1NDAyMTA1YzhmMDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcApAQCAtMTIyLDcgKzEyMiw3IEBA
IEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6c2VuZChFeGVjU3RhdGUmIHN0YXRlKQogICAgIGVs
c2UgewogICAgICAgICAvLyBGSVhNRTogSWYgdG9TdHJpbmcgcmFpc2VzIGFuIGV4Y2VwdGlvbiwg
c2hvdWxkIHdlIGV4aXQgYmVmb3JlIGNhbGxpbmcgd2lsbFNlbmRYTUxIdHRwUmVxdWVzdD8KICAg
ICAgICAgLy8gRklYTUU6IElmIHRvU3RyaW5nIHJhaXNlcyBhbiBleGNlcHRpb24sIHNob3VsZCB3
ZSBleGl0IGJlZm9yZSBjYWxsaW5nIHNlbmQ/Ci0gICAgICAgIHJlc3VsdCA9IHdyYXBwZWQoKS5z
ZW5kKHZhbHVlLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSkpOworICAgICAgICByZXN1
bHQgPSB3cmFwcGVkKCkuc2VuZCh2YWx1ZS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIH0KIAog
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSB1c2UgU2hhZG93Q2hpY2tlbiBzbyB0
aGF0IHdlIGdldCB0aGUgcmlnaHQgZnJhbWUgZXZlbiB3aGVuIGl0IGRpZCBhIHRhaWwgY2FsbC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0
b20uY3BwCmluZGV4IDE1MmI4NzM3MDBiOWEwZGM0NjhjYzAzZmIwOWUxYTQzMjRkYzc2ODEuLjJh
OGE5ZGY3YjBjNjBkM2RhZmI4OTUzZDkwNzY1MGYyNzhjYTRmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcApAQCAtNTAs
OSArNTAsOSBAQCBKU1ZhbHVlIEpTWFNMVFByb2Nlc3Nvcjo6c2V0UGFyYW1ldGVyKEV4ZWNTdGF0
ZSYgc3RhdGUpCiB7CiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkT3JOdWxs
KCkgfHwgc3RhdGUuYXJndW1lbnQoMikuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7IC8vIFRocm93IGV4Y2VwdGlvbj8KLSAgICBTdHJpbmcgbmFtZXNw
YWNlVVJJID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dmFs
dWUoJnN0YXRlKTsKLSAgICBTdHJpbmcgbG9jYWxOYW1lID0gc3RhdGUudW5jaGVja2VkQXJndW1l
bnQoMSkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKLSAgICBTdHJpbmcgdmFsdWUg
PSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgyKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3Rh
dGUpOworICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgw
KS50b1dURlN0cmluZygmc3RhdGUpOworICAgIFN0cmluZyBsb2NhbE5hbWUgPSBzdGF0ZS51bmNo
ZWNrZWRBcmd1bWVudCgxKS50b1dURlN0cmluZygmc3RhdGUpOworICAgIFN0cmluZyB2YWx1ZSA9
IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDIpLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgd3Jh
cHBlZCgpLnNldFBhcmFtZXRlcihuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSwgdmFsdWUpOwogICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpAQCAtNjEsOCArNjEsOCBAQCBKU1ZhbHVlIEpTWFNM
VFByb2Nlc3Nvcjo6Z2V0UGFyYW1ldGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgaWYgKHN0
YXRlLmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwotICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwotICAgIFN0cmluZyBsb2Nh
bE5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b1N0cmluZygmc3RhdGUpLT52YWx1
ZSgmc3RhdGUpOworICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpOworICAgIFN0cmluZyBsb2NhbE5hbWUgPSBzdGF0
ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIFN0cmluZyB2
YWx1ZSA9IHdyYXBwZWQoKS5nZXRQYXJhbWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwog
ICAgIHJldHVybiBqc1N0cmluZ09yVW5kZWZpbmVkKCZzdGF0ZSwgdmFsdWUpOwogfQpAQCAtNzEs
OCArNzEsOCBAQCBKU1ZhbHVlIEpTWFNMVFByb2Nlc3Nvcjo6cmVtb3ZlUGFyYW1ldGVyKEV4ZWNT
dGF0ZSYgc3RhdGUpCiB7CiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkT3JO
dWxsKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIFN0cmluZyBuYW1lc3Bh
Y2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1
ZSgmc3RhdGUpOwotICAgIFN0cmluZyBsb2NhbE5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVu
dCgxKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOworICAgIFN0cmluZyBuYW1lc3Bh
Y2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpOwor
ICAgIFN0cmluZyBsb2NhbE5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b1dURlN0
cmluZygmc3RhdGUpOwogICAgIHdyYXBwZWQoKS5yZW1vdmVQYXJhbWV0ZXIobmFtZXNwYWNlVVJJ
LCBsb2NhbE5hbWUpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKaW5kZXggMGQzNjQwM2UxMmFh
YWM0MmNiZWIzZWNiYTlmNDdmOTgyM2Y0ZGQ1NC4uOTA4ZjRkYzg4Yzc5NzZlZTIwYjg3OTI2ODk5
YTIwOTY3MzcyMmE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2No
ZWR1bGVkQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVs
ZWRBY3Rpb24uY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRB
Y3Rpb24+IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgRE9NV3JhCiAg
ICAgaWYgKGdldENhbGxEYXRhKHYsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkgewogICAg
ICAgICBpZiAocG9saWN5ICYmICFwb2xpY3ktPmFsbG93RXZhbChleGVjKSkKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgICAgICBTdHJpbmcgc3RyaW5nID0gdi50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CisgICAgICAgIFN0cmluZyBzdHJpbmcgPSB2LnRvV1RGU3RyaW5nKGV4
ZWMpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICAg
ICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+KG5ldyBTY2hlZHVsZWRB
Y3Rpb24oc3RyaW5nLCBpc29sYXRlZFdvcmxkKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9j
L2NfdXRpbGl0eS5jcHAKaW5kZXggZTRlYzNjNjdjNTBjOGIwOTIzZjkxNWRiNDJkNzRkMjUwYTZl
YzUxNy4uN2JkYTAyNmFlYjc1ODZkODA0NWVmNTdhYjNiODkyNjZiZGE3MjFiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgY29udmVy
dFZhbHVlVG9OUFZhcmlhbnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBOUFZhcmlh
bnQqIHJlc3VsdCkKICAgICBWT0lEX1RPX05QVkFSSUFOVCgqcmVzdWx0KTsKIAogICAgIGlmICh2
YWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgIFN0cmluZyB1c3RyaW5nID0gdmFsdWUudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAgICBTdHJpbmcgdXN0cmluZyA9IHZhbHVlLnRv
V1RGU3RyaW5nKGV4ZWMpOwogICAgICAgICBDU3RyaW5nIGNzdHJpbmcgPSB1c3RyaW5nLnV0Zjgo
KTsKICAgICAgICAgTlBTdHJpbmcgc3RyaW5nID0geyAoY29uc3QgTlBVVEY4Kiljc3RyaW5nLmRh
dGEoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNzdHJpbmcubGVuZ3RoKCkpIH07CiAgICAgICAg
IE5QTl9Jbml0aWFsaXplVmFyaWFudFdpdGhTdHJpbmdDb3B5KHJlc3VsdCwgJnN0cmluZyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MuY3BwCmluZGV4IGJhZjI0N2QyZGI2Y2U3ZTdl
ZTExM2EyMTBiODdjYzMzYTcyNmEwNDAuLjE1YmY0OGNhNmFiZGVjYTBiNDE3MmViMGRmODAwMjhl
ODczYmFlMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MuY3BwCkBAIC0zOTEs
NyArMzkxLDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIGlmIChjb21wLmNvbXBsVHlwZSgpID09IFRocm93KSB7CiAg
ICAgICAgICAgICAgICAgICAgIFZhbHVlIGV4VmFsID0gY29tcC52YWx1ZSgpOwotICAgICAgICAg
ICAgICAgICAgICBjaGFyKiBtc2cgPSBleFZhbC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyku
YXNjaWkoKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBleFZhbC50b1dU
RlN0cmluZyhleGVjKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBjc3RyaW5nID0gbXNnLmFz
Y2lpKCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG1zZyA9IGNzdHJpbmcuZGF0
YSgpOwogICAgICAgICAgICAgICAgICAgICBpbnQgbGluZW5vID0gLTE7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChleFZhbC50eXBlKCkgPT0gT2JqZWN0VHlwZSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsdWUgbGluZVZhbCA9IE9iamVjdDo6ZHluYW1pY0Nhc3QoZXhWYWwpLmdldChl
eGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJsaW5lIikpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMzg2MGVmMzdiMTJj
NjhhZDhlNzQ0OGM0NWVhOGExOTk2N2Q4NTJhNy4uMTViNjU3OGI2N2FlZWQ4YzdkYmE4OWEyMGM5
YTU5YWVhZGQ0ODA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCkBAIC0xNTEzLDcgKzE1MTMsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JF
dgogICAgICAgICBzdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Ob2RlKHNjcmlwdExpc3RlbmVyLT5pc29s
YXRlZFdvcmxkKCksICZub2RlLT5kb2N1bWVudCgpKTsKICAgICAgICAgaGFuZGxlciA9IHNjcmlw
dExpc3RlbmVyLT5qc0Z1bmN0aW9uKCZub2RlLT5kb2N1bWVudCgpKTsKICAgICAgICAgaWYgKGhh
bmRsZXIgJiYgc3RhdGUpIHsKLSAgICAgICAgICAgIGJvZHkgPSBoYW5kbGVyLT50b1N0cmluZyhz
dGF0ZSktPnZhbHVlKHN0YXRlKTsKKyAgICAgICAgICAgIGJvZHkgPSBoYW5kbGVyLT50b1dURlN0
cmluZyhzdGF0ZSk7CiAgICAgICAgICAgICBpZiAoYXV0byBmdW5jdGlvbiA9IGpzRHluYW1pY0Rv
d25jYXN0PEpTQzo6SlNGdW5jdGlvbio+KGhhbmRsZXIpKSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFmdW5jdGlvbi0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewogICAgICAgICAgICAgICAg
ICAgICBpZiAoYXV0byBleGVjdXRhYmxlID0gZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBS
dW50aW1lT2JqZWN0TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCmluZGV4IDQ5OTIwZjJjYWE4NGY3NjliNjJk
MjQ2MmE5Yzk4MDdmNTIwY2YzZWQuLjI1OTMyODljNDU1MjJiYjllMzg3ZjQ2YWQ0Mjk3NjcwYjQ5
ZTkwNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCkBAIC0xNjgsNyArMTY4
LDcgQEAgdm9pZCBOUFJ1bnRpbWVPYmplY3RNYXA6OmNvbnZlcnRKU1ZhbHVlVG9OUFZhcmlhbnQo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHUKICAgICB9CiAKICAgICBpZiAodmFsdWUuaXNT
dHJpbmcoKSkgewotICAgICAgICBOUFN0cmluZyBucFN0cmluZyA9IGNyZWF0ZU5QU3RyaW5nKHZh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKS51dGY4KCkpOworICAgICAgICBOUFN0cmlu
ZyBucFN0cmluZyA9IGNyZWF0ZU5QU3RyaW5nKHZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpLnV0Zjgo
KSk7CiAgICAgICAgIFNUUklOR05fVE9fTlBWQVJJQU5UKG5wU3RyaW5nLlVURjhDaGFyYWN0ZXJz
LCBucFN0cmluZy5VVEY4TGVuZ3RoLCB2YXJpYW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
</data>
<flag name="review"
          id="319352"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297070</attachid>
            <date>2016-12-13 23:52:04 -0800</date>
            <delta_ts>2016-12-13 23:52:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165795-20161214165113.patch</filename>
            <type>text/plain</type>
            <size>65718</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5NzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NmRkNmYwMWU5ZTM5MjZiN2RmMjU1NjA4MmJmNTAzNDc3NDIwYTc4Li5lMjJhMWVlNzg1YWIyMjdj
NWIxM2U1YmJlZjlkZTFiZDAzNmMyMDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NiBAQAorMjAxNi0xMi0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBVc2UgSlNWYWx1ZTo6dG9XVEZTdHJpbmcgaW5zdGVhZCBvZiBjYWxs
aW5nIHRvU3RyaW5nKGV4ZWMpIGFuZCB2YWx1ZShleGVjKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1Nzk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2FhbSBCYXJhdGkuCisKKyAgICAgICAgSW4gb2xkIGRheXMsIHdlIGZyZXF1ZW50bHkgdXNlIHRo
ZSBpZGlvbSBsaWtlLCBgdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpYCB0bworICAg
ICAgICBnZXQgV1RGU3RyaW5nIGZyb20gdGhlIGdpdmVuIEpTVmFsdWUuIEJ1dCBub3csIHdlIGhh
dmUgYmV0dGVyIGZ1bmN0aW9uLCBgdG9XVEZTdHJpbmdgLgorICAgICAgICBgdG9XVEZTdHJpbmdg
IGRvZXMgbm90IGNyZWF0ZSBpbnRlcm1lZGlhdGUgSlNTdHJpbmcgb2JqZWN0cywgdGhlbiByZWR1
Y2UgdW5uZWNlc3NhcnkKKyAgICAgICAgYWxsb2NhdGlvbnMuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBtZWNoYW5pY2FsbHkgcmVwbGFjZXMgYHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KWAgd2l0aCBgdG9XVEZTdHJpbmcoZXhlYylgLgorCisgICAgICAgICogQVBJL0pTVmFsdWVSZWYu
Y3BwOgorICAgICAgICAoSlNWYWx1ZVRvU3RyaW5nQ29weSk6CisgICAgICAgICogYmluZGluZ3Mv
U2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWU6OnRvU3Ry
aW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyOjpyZXBvcnRBUElFeGNlcHRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9KU0luamVj
dGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRI
b3N0OjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbik6CisgICAgICAgICogaW5zcGVjdG9yL0pT
SmF2YVNjcmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSmF2YVNjcmlw
dENhbGxGcmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24pOgorICAgICAgICAqIGluc3Bl
Y3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6ZXh0
cmFjdFNvdXJjZUluZm9ybWF0aW9uRnJvbUV4Y2VwdGlvbik6CisgICAgICAgICogcnVudGltZS9D
b25zb2xlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6dmFsdWVUb1N0cmluZ1dpdGhVbmRlZmlu
ZWRPck51bGxDaGVjayk6CisgICAgICAgIChKU0M6OnZhbHVlT3JEZWZhdWx0TGFiZWxTdHJpbmcp
OgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
ZGF0ZVBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpmb3JtYXRMb2NhbGVEYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFu
Y2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpzYW5pdGl6ZWRUb1N0cmluZyk6
CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmVy
cm9yUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6aW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uT2JqZWN0TG9nKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY0V2YWwpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZUxvYWRlcjo6ZmV0Y2gp
OgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6bW9kdWxlTG9hZGVyUHJvdG90eXBlUGFyc2VNb2R1bGUpOgorICAgICAgICAqIHJ1bnRp
bWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpyZWdFeHBDcmVhdGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6cmVn
RXhwUHJvdG9GdW5jQ29tcGlsZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY1RvU3Ry
aW5nKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OnJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCk6CisgICAgICAgIChKU0M6OnJlcGxhY2VVc2lu
Z1N0cmluZ1NlYXJjaCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1NsaWNlKToKKyAg
ICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KToKKyAgICAgICAgKEpTQzo6c3Ry
aW5nUHJvdG9GdW5jU3Vic3RyKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jTG9jYWxl
Q29tcGFyZSk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0JpZyk6CisgICAgICAgIChK
U0M6OnN0cmluZ1Byb3RvRnVuY1NtYWxsKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5j
QmxpbmspOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNCb2xkKToKKyAgICAgICAgKEpT
Qzo6c3RyaW5nUHJvdG9GdW5jRml4ZWQpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNJ
dGFsaWNzKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3RyaWtlKToKKyAgICAgICAg
KEpTQzo6c3RyaW5nUHJvdG9GdW5jU3ViKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5j
U3VwKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jRm9udGNvbG9yKToKKyAgICAgICAg
KEpTQzo6c3RyaW5nUHJvdG9GdW5jRm9udHNpemUpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90
b0Z1bmNBbmNob3IpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNMaW5rKToKKyAgICAg
ICAgKEpTQzo6dHJpbVN0cmluZyk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N0YXJ0
c1dpdGgpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNFbmRzV2l0aCk6CisgICAgICAg
IChKU0M6OnN0cmluZ1Byb3RvRnVuY0luY2x1ZGVzKToKKyAgICAgICAgKEpTQzo6YnVpbHRpblN0
cmluZ0luY2x1ZGVzSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNOb3Jt
YWxpemUpOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk1Qcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpmdW5jdGlvblByaW50KToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlD
b21waWxlRXJyb3IuaDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6
Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaDoK
KyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3JlYXRlKToKKwogMjAx
Ni0xMi0xMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwOTc5Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyZGMyYmM4
YjRlNjhlZjdmZjY2ZTBmOGY5ZmVkMjEyZGNmZjdhZmQwLi4wNmEzYzYwZmIxYmI4M2JiMDViZTY3
YTM0OGU2OTkyM2M5ZDI1NWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIwMTYtMTIt
MTMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgVXNl
IEpTVmFsdWU6OnRvV1RGU3RyaW5nIGluc3RlYWQgb2YgY2FsbGluZyB0b1N0cmluZyhleGVjKSBh
bmQgdmFsdWUoZXhlYykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2NTc5NQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAg
ICAgICogYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVJREJLZXlGcm9tVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVk
aW9UcmFja0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0F1ZGlvVHJhY2s6OnNldEtp
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb1RyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6Z2V0QWxnb3JpdGhtSWRl
bnRpZmllcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5h
bWVzcGFjZVVSSSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnNldExvY2F0aW9uKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTRGV2aWNlTW90aW9uRXZlbnQ6OmluaXREZXZpY2VNb3Rpb25FdmVudCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6aW5pdERldmljZU9yaWVu
dGF0aW9uRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNhbGxIVE1MQWxsQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0hU
TUxBbGxDb2xsZWN0aW9uOjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNI
VE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25EaXJlY3Rpb24pOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnBvcHVsYXRlQ29udGV4dE1lbnVJdGVtcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNN
ZXNzYWdlRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlSW5pdE1lc3Nh
Z2VFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1NRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1RleHRUcmFjazo6c2V0TGFuZ3VhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
VmlkZW9UcmFja0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1ZpZGVvVHJhY2s6OnNl
dEtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNWaWRlb1RyYWNrOjpzZXRMYW5ndWFnZSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3J5cHRvS2V5Rm9ybWF0RnJvbUpTVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3J5cHRvS2V5VXNhZ2VzRnJvbUpTVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRw
UmVxdWVzdDo6c2VuZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTWFNMVFByb2Nlc3Nvcjo6c2V0UGFyYW1ldGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTWFNMVFByb2Nlc3Nvcjo6Z2V0UGFyYW1ldGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTWFNMVFByb2Nlc3Nvcjo6cmVtb3ZlUGFyYW1ldGVyKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NoZWR1bGVkQWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIGJyaWRnZS9jL2NfdXRpbGl0eS5j
cHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpjb252ZXJ0VmFsdWVUb05QVmFyaWFudCk6Cisg
ICAgICAgICogYnJpZGdlL3Rlc3RiaW5kaW5ncy5jcHA6CisgICAgICAgIChtYWluKToKKwogMjAx
Ni0xMi0xMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwOTc5Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0MmQzZTVh
Y2I1OWJlODFkOGNmZGEyNGYwNDg4NjkwNjI3YTYyZjRjLi5iMzhkNzcxNGQzYzZkZGZhZTcwNDZi
YTk0ZmQwN2MyM2EyZDNlM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMTIt
MTMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgVXNl
IEpTVmFsdWU6OnRvV1RGU3RyaW5nIGluc3RlYWQgb2YgY2FsbGluZyB0b1N0cmluZyhleGVjKSBh
bmQgdmFsdWUoZXhlYykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2NTc5NQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5QUnVudGltZU9iamVjdE1hcDo6Y29udmVydEpTVmFsdWVUb05Q
VmFyaWFudCk6CisKIDIwMTYtMTItMTMgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDk3OTIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAppbmRleCA0Mjg0MzUwZmE3MTVjNjVj
MjI3MDcyY2ZiZTg2OWMzNzdiM2MzOWFiLi5jMjdiN2MzNWM4OTRiNGE0OTdiMzcxNTk1OTk4ODBl
OTY5ZDkyZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVS
ZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKQEAg
LTQwMSw3ICs0MDEsNyBAQCBKU1N0cmluZ1JlZiBKU1ZhbHVlVG9TdHJpbmdDb3B5KEpTQ29udGV4
dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqCiAKICAgICBKU1ZhbHVlIGpz
VmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsKICAgICAKLSAgICBhdXRvIHN0cmluZ1JlZihPcGFx
dWVKU1N0cmluZzo6Y3JlYXRlKGpzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7
CisgICAgYXV0byBzdHJpbmdSZWYoT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShqc1ZhbHVlLnRvV1RG
U3RyaW5nKGV4ZWMpKSk7CiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4
Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKICAgICAgICAgc3RyaW5nUmVm
ID0gbnVsbHB0cjsKICAgICByZXR1cm4gc3RyaW5nUmVmLmxlYWtSZWYoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCmluZGV4IDlmN2EyMTZjNWVm
Y2ZlMzI5OGJhOTE2YmZjMDU5OWUzNmY5MWFlNmUuLjI1NTY4YTNmODE3YzNlMWYxMDdmYThlMWRj
ZjAwMzlkOTMxNDlhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5n
cy9TY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Nj
cmlwdFZhbHVlLmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIFN0cmluZyBTY3JpcHRWYWx1ZTo6dG9T
dHJpbmcoRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkgY29uc3QKICAgICBWTSYgdm0gPSBzY3JpcHRT
dGF0ZS0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAK
LSAgICBTdHJpbmcgcmVzdWx0ID0gbV92YWx1ZS5nZXQoKS50b1N0cmluZyhzY3JpcHRTdGF0ZSkt
PnZhbHVlKHNjcmlwdFN0YXRlKTsKKyAgICBTdHJpbmcgcmVzdWx0ID0gbV92YWx1ZS5nZXQoKS50
b1dURlN0cmluZyhzY3JpcHRTdGF0ZSk7CiAgICAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIGFu
IGV4Y2VwdGlvbiBpcyB0aHJvd24gYXMgcGFydCBvZiBpbnZva2luZyB0b1N0cmluZyBvbiB0aGUg
b2JqZWN0LgogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgIHNj
b3BlLmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKaW5kZXggYjU4Yzg4ODA4M2E0Y2ZhMTA3NTg5MDE1NzBkYTc2MzQxYmQ1ZGRmNi4uNGZi
N2Q3OTJiYTliYWM2ZWJhZjIxNjZkNjFmMWVhOWU5ZmNjNjdjZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpyZXBvcnRBUElFeGNlcHRpb24oRXhlY1N0YXRl
KiBleGVjLCBFeGNlCiAKICAgICAvLyBGSVhNRTogPGh0dHA6Ly93ZWJraXQub3JnL2IvMTE1MDg3
PiBXZWIgSW5zcGVjdG9yOiBTaG91bGQgbm90IGV2YWx1YXRlIEphdmFTY3JpcHQgaGFuZGxpbmcg
ZXhjZXB0aW9ucwogICAgIC8vIElmIHRoaXMgaXMgYSBjdXN0b20gZXhjZXB0aW9uIG9iamVjdCwg
Y2FsbCB0b1N0cmluZyBvbiBpdCB0byB0cnkgYW5kIGdldCBhIG5pY2Ugc3RyaW5nIHJlcHJlc2Vu
dGF0aW9uIGZvciB0aGUgZXhjZXB0aW9uLgotICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBleGNl
cHRpb24tPnZhbHVlKCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBl
cnJvck1lc3NhZ2UgPSBleGNlcHRpb24tPnZhbHVlKCkudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAg
c2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKIAogICAgIGlmIChKU0dsb2JhbE9iamVjdENvbnNvbGVD
bGllbnQ6OmxvZ1RvU3lzdGVtQ29uc29sZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IDc1ODZk
N2ZhNDg2YjgwMzZmYjA4OGMyOGY5OTYwZDM3MWMyMzAxMDguLjNmMjZmZTZlZDZmOGE4ZGRiYzYw
NGFlYmFlZjdlMmU5MjE1MmI4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCkBAIC0xMDIsNyArMTAyLDcg
QEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNp
b24oRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICghc2NyaXB0VmFsdWUuaXNTdHJpbmcoKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIklu
amVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiBmaXJzdCBhcmd1bWVu
dCBtdXN0IGJlIGEgc3RyaW5nLiIpKTsKIAotICAgIFN0cmluZyBwcm9ncmFtID0gc2NyaXB0VmFs
dWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBwcm9ncmFtID0gc2Ny
aXB0VmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgSlNWYWx1ZSgpKTsKIAogICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxs
RnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRD
YWxsRnJhbWUuY3BwCmluZGV4IDM4ZjA3NmY5MzNlNThkYzI3NTRkZTZlODMwNGM5ZTY0YWFkY2Uz
ZmIuLmM2YWE0YTc3ZWRjMjU0ZTBlYTgxMzIwNDY0NDYzZjliODdkZTZhYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxG
cmFtZS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgSlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6
OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoIXNj
cmlwdFZhbHVlLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJKU0phdmFTY3JpcHRDYWxsRnJhbWUuZXZhbHVhdGVXaXRo
U2NvcGVFeHRlbnNpb24gZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZy4iKSk7CiAKLSAg
ICBTdHJpbmcgc2NyaXB0ID0gc2NyaXB0VmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
OworICAgIFN0cmluZyBzY3JpcHQgPSBzY3JpcHRWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwogCiAgICAgTmFrZWRQdHI8
RXhjZXB0aW9uPiBleGNlcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAppbmRleCBjNDQ5NmQzZDcy
ODczYzhiMTEzMGVmY2MyM2ZkOWJkODBhNmRmZDA3Li5jNDc3NThmYjQ1NTZiZDY5OGYyNDk4NGFk
YTI3ZGU3MjljMTBlMDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKQEAgLTEyOCw3ICsxMjgsNyBA
QCBzdGF0aWMgdm9pZCBleHRyYWN0U291cmNlSW5mb3JtYXRpb25Gcm9tRXhjZXB0aW9uKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdAogICAgIEpTVmFsdWUgY29sdW1uVmFsdWUgPSBleGNl
cHRpb25PYmplY3QtPmdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJjb2x1bW4iKSk7CiAgICAgKmNvbHVtbk51bWJlciA9IGNvbHVtblZhbHVlICYmIGNv
bHVtblZhbHVlLmlzTnVtYmVyKCkgPyBpbnQoY29sdW1uVmFsdWUudG9OdW1iZXIoZXhlYykpIDog
MDsKICAgICBKU1ZhbHVlIHNvdXJjZVVSTFZhbHVlID0gZXhjZXB0aW9uT2JqZWN0LT5nZXREaXJl
Y3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAic291cmNlVVJMIikp
OwotICAgICpzb3VyY2VVUkwgPSBzb3VyY2VVUkxWYWx1ZSAmJiBzb3VyY2VVUkxWYWx1ZS5pc1N0
cmluZygpID8gc291cmNlVVJMVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpIDogQVND
SUlMaXRlcmFsKCJ1bmRlZmluZWQiKTsKKyAgICAqc291cmNlVVJMID0gc291cmNlVVJMVmFsdWUg
JiYgc291cmNlVVJMVmFsdWUuaXNTdHJpbmcoKSA/IHNvdXJjZVVSTFZhbHVlLnRvV1RGU3RyaW5n
KGV4ZWMpIDogQVNDSUlMaXRlcmFsKCJ1bmRlZmluZWQiKTsKICAgICBzY29wZS5jbGVhckV4Y2Vw
dGlvbigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b25zb2xlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVP
YmplY3QuY3BwCmluZGV4IDMwYTliYmRlOWUwYmIwNDlhZWMxNmI4OTQ1ZjEyMmE4ZWQ2NmFmMjgu
LjE5YmQ1YmRhNDcxY2UyMzJkNzk0NDgzNGNiMmYxMjVlNDg0MzJhMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuY3BwCkBAIC0xMDEsNyArMTAx
LDcgQEAgc3RhdGljIFN0cmluZyB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNr
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWwKIHsKICAgICBpZiAodmFsdWUuaXNVbmRlZmlu
ZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiB2YWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgcmV0dXJuIHZhbHVlLnRvV1RGU3RyaW5n
KGV4ZWMpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY29uc29sZUxvZ1dpdGhMZXZlbChF
eGVjU3RhdGUqIGV4ZWMsIE1lc3NhZ2VMZXZlbCBsZXZlbCkKQEAgLTI5MSw3ICsyOTEsNyBAQCBz
dGF0aWMgU3RyaW5nIHZhbHVlT3JEZWZhdWx0TGFiZWxTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCJkZWZhdWx0Iik7Ci0gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICByZXR1cm4gdmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7
CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1
bmNUaW1lKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCmluZGV4IDBkZmFkYWY4OGE0ZWMxM2QyM2ZmYjRhNTg3
ZmQ1YTU5ZjliMjU3ODEuLmE4MjUwMTdiMDY3YzQyMjYwNjU3YjljOTMxYjhlNDE4YzM4MWVmYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9y
LmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVBhcnNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBTdHJpbmcgZGF0ZVN0
ciA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBT
dHJpbmcgZGF0ZVN0ciA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGFyc2VEYXRlKHZtLCBkYXRlU3RyKSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAppbmRl
eCA3ODg4NmRiOTdmMmU0ZDA5MGE2ZWQ4OWI1YmVhY2IwMjA5MGU2ZWU1Li5lMzQ5YTcxMzU0NGVi
NmM2OTQ3N2Q5YzkxZWIxN2Q2NTBmMmIyMGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcApAQCAtMTUxLDEzICsxNTEsMTMgQEAgc3RhdGlj
IEpTQ2VsbCogZm9ybWF0TG9jYWxlRGF0ZShFeGVjU3RhdGUqIGV4ZWMsIERhdGVJbnN0YW5jZSos
IGRvdWJsZSB0aW1lSW5NaWwKICAgICBib29sIHVzZUN1c3RvbUZvcm1hdCA9IGZhbHNlOwogICAg
IFN0cmluZyBjdXN0b21Gb3JtYXRTdHJpbmc7CiAKLSAgICBTdHJpbmcgYXJnMFN0cmluZyA9IGV4
ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcg
YXJnMFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlm
IChhcmcwU3RyaW5nID09ICJjdXN0b20iICYmICFleGVjLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5l
ZCgpKSB7CiAgICAgICAgIHVzZUN1c3RvbUZvcm1hdCA9IHRydWU7Ci0gICAgICAgIGN1c3RvbUZv
cm1hdFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KTsKKyAgICAgICAgY3VzdG9tRm9ybWF0U3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMSkudG9XVEZT
dHJpbmcoZXhlYyk7CiAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT0gTG9jYWxlRGF0ZUFuZFRpbWUg
JiYgIWV4ZWMtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgZGF0ZVN0eWxl
ID0gc3R5bGVGcm9tQXJnU3RyaW5nKGFyZzBTdHJpbmcsIGRhdGVTdHlsZSk7Ci0gICAgICAgIHRp
bWVTdHlsZSA9IHN0eWxlRnJvbUFyZ1N0cmluZyhleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyksIHRpbWVTdHlsZSk7CisgICAgICAgIHRpbWVTdHlsZSA9IHN0eWxl
RnJvbUFyZ1N0cmluZyhleGVjLT5hcmd1bWVudCgxKS50b1dURlN0cmluZyhleGVjKSwgdGltZVN0
eWxlKTsKICAgICB9IGVsc2UgaWYgKGZvcm1hdCAhPSBMb2NhbGVUaW1lICYmICFleGVjLT5hcmd1
bWVudCgwKS5pc1VuZGVmaW5lZCgpKQogICAgICAgICBkYXRlU3R5bGUgPSBzdHlsZUZyb21BcmdT
dHJpbmcoYXJnMFN0cmluZywgZGF0ZVN0eWxlKTsKICAgICBlbHNlIGlmIChmb3JtYXQgIT0gTG9j
YWxlRGF0ZSAmJiAhZXhlYy0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKaW5kZXggNDVjMWMwZTZk
NGIxZjA4MGIyYjRlYjQ3NjcwZTM4NGE1MWRiM2FhZi4uZWQ4ZjJkN2E0NTNlMmZkNWQ0MjEwYWM1
N2UwY2Q0NmIxODZmNTBmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JJbnN0YW5jZS5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCBTdHJpbmcgRXJyb3JJbnN0YW5j
ZTo6c2FuaXRpemVkVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICghbmFtZVZhbHVl
KQogICAgICAgICBuYW1lU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJFcnJvciIpOwogICAgIGVsc2Ug
ewotICAgICAgICBuYW1lU3RyaW5nID0gbmFtZVZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKTsKKyAgICAgICAgbmFtZVN0cmluZyA9IG5hbWVWYWx1ZS50b1dURlN0cmluZyhleGVjKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgU3RyaW5nKCkpOwogICAgIH0KIApA
QCAtMjA4LDcgKzIwOCw3IEBAIFN0cmluZyBFcnJvckluc3RhbmNlOjpzYW5pdGl6ZWRUb1N0cmlu
ZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKCFtZXNzYWdlVmFsdWUpCiAgICAgICAgIG1lc3Nh
Z2VTdHJpbmcgPSBTdHJpbmcoKTsKICAgICBlbHNlIHsKLSAgICAgICAgbWVzc2FnZVN0cmluZyA9
IG1lc3NhZ2VWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgIG1lc3Nh
Z2VTdHJpbmcgPSBtZXNzYWdlVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIFN0cmluZygpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAppbmRleCA1MDY4NjQ0ZWZm
MWQyMzI2NThlMTY4ZWFiNWFjNThiMjlmYWFhMmEzLi5iNjZhMTRkNTljNDU3NDY5NzBmMWY4Nzcx
Y2UwOWJkZTczYjkzZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JQcm90b3R5cGUuY3BwCkBAIC05Myw3ICs5Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZXJyb3JQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYg
KG5hbWUuaXNVbmRlZmluZWQoKSkKICAgICAgICAgbmFtZVN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgi
RXJyb3IiKTsKICAgICBlbHNlIHsKLSAgICAgICAgbmFtZVN0cmluZyA9IG5hbWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAgICBuYW1lU3RyaW5nID0gbmFtZS50b1dURlN0cmlu
ZyhleGVjKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgfQogCkBAIC0xMDgsNyArMTA4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBlcnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAo
bWVzc2FnZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICBtZXNzYWdlU3RyaW5nID0gU3RyaW5nKCk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIG1lc3NhZ2VTdHJpbmcgPSBtZXNzYWdlLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgbWVzc2FnZVN0cmluZyA9IG1lc3NhZ2UudG9XVEZT
dHJpbmcoZXhlYyk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAKaW5kZXgg
ZGM3OTdjYThlNjEzOTg1MzUxYjlkZDY0MjFmNjkzYTBjYWE4MzMzZS4uZjY5ZjgzMWVlYzA2NjE2
OTIxMjM3OTljMzRjYjA2NTkwZjdjYzM4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Qu
Y3BwCkBAIC04Niw3ICs4Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0TG9nKEV4ZWNTdGF0ZSogZXhlYykKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFN0cmluZyB2YWx1
ZSA9IHRhcmdldC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHZhbHVl
ID0gdGFyZ2V0LnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGRhdGFMb2codmFsdWUsICJcbiIpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5k
ZXggNDIyZDdlZjQ1N2Q1OTNkMWRjMTk5NGYxMDAwOTk0NTVhN2NhNGU4MC4uYzYyZTRmNzE4YTc4
ZGJiZTM2NTFkZDdmYzY5YjYyYjU3Mzk1MTUwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtNjY2
LDcgKzY2Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0V2YWwo
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogICAgIH0KIAotICAgIFN0cmluZyBzID0geC50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyk7CisgICAgU3RyaW5nIHMgPSB4LnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgaWYgKHMuaXM4Qml0
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
TG9hZGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVy
LmNwcAppbmRleCBlZjg1YjM3YmVkNDg4MGRmMjRmMGY0ZDEzNTZmNTU2NTA4MTVhYmU3Li5iZmQ4
ZjQ5NTFkMDA4NjU0ZWI1YWU5MDI1NTA5YWViOWIyNzQ4N2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCkBAIC0xNTgsNyArMTU4LDcg
QEAgSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpmZXRjaChFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIGkKICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxP
YmplY3RNZXRob2RUYWJsZSgpLT5tb2R1bGVMb2FkZXJGZXRjaCkKICAgICAgICAgcmV0dXJuIGds
b2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bW9kdWxlTG9hZGVyRmV0Y2go
Z2xvYmFsT2JqZWN0LCBleGVjLCB0aGlzLCBrZXksIGluaXRpYXRvcik7CiAgICAgSlNJbnRlcm5h
bFByb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpj
cmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKLSAgICBTdHJpbmcgbW9kdWxlS2V5ID0ga2V5LnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgbW9kdWxlS2V5ID0ga2V5LnRv
V1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsK
ICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBzY29wZS5leGNlcHRpb24oKS0+dmFsdWUoKTsK
ICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwCmluZGV4IDdkY2Q3
ZDVlNjVmZDM5ODhlMGVhNjZhODQxZmFjZDg3NGU0ZjEyOWYuLjNmY2NkYTc2NmFmYjU2ZGJhMDZk
OWEyYjM0OGUzN2U0YzVkYzAyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcApAQCAtMTEwLDcgKzExMCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUHJvdG90eXBlUGFyc2VN
b2R1bGUoRXhlY1N0YXRlKiBleGVjKQogICAgIGNvbnN0IElkZW50aWZpZXIgbW9kdWxlS2V5ID0g
ZXhlYy0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShleGVjKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIFN0cmluZyBzb3VyY2UgPSBl
eGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5n
IHNvdXJjZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgU291cmNlQ29k
ZSBzb3VyY2VDb2RlID0gbWFrZVNvdXJjZShzb3VyY2UsIG1vZHVsZUtleS5pbXBsKCksIFRleHRQ
b3NpdGlvbigpLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
ZmJhZDQ5YmMwNzQ4N2I5YjNmZGU3NDdlZGJhZmNlOTE4NzdhOTI2NS4uYjg4NmNmY2IzOWM0NjM0
OWZkMmU4YTI3NGEzOWFhMTNhZjhjNDdjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0
YXRpYyBKU09iamVjdCogcmVnRXhwQ3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBTdHJpbmcgcGF0dGVybiA9
IHBhdHRlcm5BcmcuaXNVbmRlZmluZWQoKSA/IGVtcHR5U3RyaW5nKCkgOiBwYXR0ZXJuQXJnLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcGF0dGVybiA9IHBhdHRlcm5B
cmcuaXNVbmRlZmluZWQoKSA/IGVtcHR5U3RyaW5nKCkgOiBwYXR0ZXJuQXJnLnRvV1RGU3RyaW5n
KGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogCiAgICAg
UmVnRXhwRmxhZ3MgZmxhZ3MgPSB0b0ZsYWdzKGV4ZWMsIGZsYWdzQXJnKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCmluZGV4IDg4MjQw
ODJlNGZjMDc3MjZlNTM5Y2I5MWU4Y2QzMTVlN2Y2ZWM2YTkuLmYwM2I5YjRmMzIxN2MxNTNhMmUw
NzcyOWMyYTlhZmMzNjUzZTY2MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcApAQCAtMTY2LDEyICsxNjYsMTIgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNDb21waWxlKEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIkNhbm5vdCBzdXBwbHkgZmxhZ3Mgd2hlbiBjb25zdHJ1Y3Rpbmcgb25lIFJlZ0V4
cCBmcm9tIGFub3RoZXIuIikpOwogICAgICAgICByZWdFeHAgPSBhc1JlZ0V4cE9iamVjdChhcmcw
KS0+cmVnRXhwKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSBhcmcw
LmlzVW5kZWZpbmVkKCkgPyBlbXB0eVN0cmluZygpIDogYXJnMC50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYyk7CisgICAgICAgIFN0cmluZyBwYXR0ZXJuID0gYXJnMC5pc1VuZGVmaW5lZCgpID8g
ZW1wdHlTdHJpbmcoKSA6IGFyZzAudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgICAgIFJlZ0V4cEZs
YWdzIGZsYWdzID0gTm9GbGFnczsKICAgICAgICAgaWYgKCFhcmcxLmlzVW5kZWZpbmVkKCkpIHsK
LSAgICAgICAgICAgIGZsYWdzID0gcmVnRXhwRmxhZ3MoYXJnMS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYykpOworICAgICAgICAgICAgZmxhZ3MgPSByZWdFeHBGbGFncyhhcmcxLnRvV1RGU3Ry
aW5nKGV4ZWMpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgICAgICAgICAgaWYgKGZsYWdzID09IEludmFsaWRGbGFncykKICAg
ICAgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVTeW50
YXhFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVn
RXhwIGNvbnN0cnVjdG9yLiIpKSk7CkBAIC0yNDMsMTIgKzI0MywxMiBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykK
IAogICAgIEpTVmFsdWUgc291cmNlVmFsdWUgPSB0aGlzT2JqZWN0LT5nZXQoZXhlYywgdm0ucHJv
cGVydHlOYW1lcy0+c291cmNlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICBTdHJpbmcgc291cmNlID0gc291cmNlVmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzb3VyY2UgPSBzb3VyY2VWYWx1ZS50b1dU
RlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgZmxhZ3NWYWx1ZSA9IHRoaXNPYmplY3QtPmdldChleGVj
LCB2bS5wcm9wZXJ0eU5hbWVzLT5mbGFncyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgU3RyaW5nIGZsYWdzID0gZmxhZ3NWYWx1ZS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIGZsYWdzID0gZmxhZ3NWYWx1ZS50
b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IGUxNjBiMjNiZTc4MWZi
NzgzYjY2YjE0OGM5MDJiMzIzOTVlMGQzNGYuLmFlZWU0YmNkZDhiMzVlM2M4M2I1N2MxZmQwYjk3
ZmM5ZTljYjdhZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcApAQCAtNTU0LDcgKzU1NCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IEVuY29kZWRKU1ZhbHVlIHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCgKIAogICAgICAgICAgICAg
ICAgIGNhY2hlZENhbGwuc2V0VGhpcyhqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgICAgICBK
U1ZhbHVlIGpzUmVzdWx0ID0gY2FjaGVkQ2FsbC5jYWxsKCk7Ci0gICAgICAgICAgICAgICAgcmVw
bGFjZW1lbnRzLmFwcGVuZChqc1Jlc3VsdC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwor
ICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50cy5hcHBlbmQoanNSZXN1bHQudG9XVEZTdHJpbmco
ZXhlYykpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCiAgICAgICAgICAgICAgICAgbGFzdEluZGV4ID0gcmVzdWx0LmVuZDsK
QEAgLTU5Myw3ICs1OTMsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBy
ZXBsYWNlVXNpbmdSZWdFeHBTZWFyY2goCiAKICAgICAgICAgICAgICAgICBjYWNoZWRDYWxsLnNl
dFRoaXMoanNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSBqc1Jlc3VsdCA9
IGNhY2hlZENhbGwuY2FsbCgpOwotICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50cy5hcHBlbmQo
anNSZXN1bHQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICBy
ZXBsYWNlbWVudHMuYXBwZW5kKGpzUmVzdWx0LnRvV1RGU3RyaW5nKGV4ZWMpKTsKICAgICAgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAog
ICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9IHJlc3VsdC5lbmQ7CkBAIC02MzUsNyArNjM1LDcg
QEAgc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVwbGFjZVVzaW5nUmVnRXhw
U2VhcmNoKAogCiAgICAgICAgICAgICAgICAgSlNWYWx1ZSByZXBsYWNlbWVudCA9IGNhbGwoZXhl
YywgcmVwbGFjZVZhbHVlLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzVW5kZWZpbmVkKCksIGFyZ3Mp
OwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgICAgICAgICAgICAgIFN0cmluZyByZXBsYWNlbWVudFN0cmluZyA9IHJlcGxh
Y2VtZW50LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgICAgICAgICBTdHJp
bmcgcmVwbGFjZW1lbnRTdHJpbmcgPSByZXBsYWNlbWVudC50b1dURlN0cmluZyhleGVjKTsKICAg
ICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICAgICAgICAgICAgICByZXBsYWNlbWVudHMuYXBwZW5kKHJlcGxhY2VtZW50U3RyaW5n
KTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKQEAgLTcxOCw3ICs3MTgsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBFbmNvZGVk
SlNWYWx1ZSByZXBsYWNlVXNpbmdSZWdFeHBTZWFyY2goVk0mIHZtLCBFeGVjU3RhdGUqCiAgICAg
Q2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShy
ZXBsYWNlVmFsdWUsIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5v
bmUpIHsKLSAgICAgICAgcmVwbGFjZW1lbnRTdHJpbmcgPSByZXBsYWNlVmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAgICByZXBsYWNlbWVudFN0cmluZyA9IHJlcGxhY2VW
YWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogCkBAIC03MzIsNyArNzMyLDcgQEAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVwbGFjZVVzaW5nU3RyaW5nU2VhcmNoKFZN
JiB2bSwgRXhlY1N0YXRlKgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nID0ganNTdHJpbmctPnZhbHVlKGV4ZWMpOwot
ICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBzZWFyY2hWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYyk7CisgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IHNlYXJjaFZhbHVlLnRvV1RGU3Ry
aW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogCiAgICAgc2l6ZV90IG1hdGNoU3RhcnQgPSBzdHJpbmcuZmluZChzZWFyY2hTdHJpbmcp
OwpAQCAtNzUxLDcgKzc1MSw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVl
IHJlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaChWTSYgdm0sIEV4ZWNTdGF0ZSoKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogCi0gICAg
U3RyaW5nIHJlcGxhY2VTdHJpbmcgPSByZXBsYWNlVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOworICAgIFN0cmluZyByZXBsYWNlU3RyaW5nID0gcmVwbGFjZVZhbHVlLnRvV1RGU3Ry
aW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogCiAgICAgU3RyaW5nSW1wbCogc3RyaW5nSW1wbCA9IHN0cmluZy5pbXBsKCk7CkBAIC0x
MTE1LDcgKzExMTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3Rv
RnVuY1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAgIFN0cmlu
ZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcg
cyA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGludCBsZW4gPSBzLmxlbmd0aCgpOwpA
QCAtMTE4Myw3ICsxMTgzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgLy8gMy4gTGV0IFMgYmUg
dGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvU3RyaW5nLCBnaXZpbmcgaXQgdGhlIHRoaXMgdmFsdWUg
YXMgaXRzIGFyZ3VtZW50LgogICAgIC8vIDcuIExldCBzIGJlIHRoZSBudW1iZXIgb2YgY2hhcmFj
dGVycyBpbiBTLgotICAgIFN0cmluZyBpbnB1dCA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIGlucHV0ID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4
ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIEFTU0VSVCghaW5wdXQuaXNOdWxsKCkpOwogCkBAIC0xMjA1LDcgKzEyMDUsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdChFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgLy8gOS4gSWYgc2VwYXJhdG9yIGlzIGEgUmVnRXhwIG9iamVjdCAoaXRz
IFtbQ2xhc3NdXSBpcyAiUmVnRXhwIiksIGxldCBSID0gc2VwYXJhdG9yOwogICAgIC8vICAgIG90
aGVyd2lzZSBsZXQgUiA9IFRvU3RyaW5nKHNlcGFyYXRvcikuCiAgICAgSlNWYWx1ZSBzZXBhcmF0
b3JWYWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIFN0cmluZyBzZXBhcmF0
b3IgPSBzZXBhcmF0b3JWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3Ry
aW5nIHNlcGFyYXRvciA9IHNlcGFyYXRvclZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gMTAu
IElmIGxpbSA9PSAwLCByZXR1cm4gQS4KQEAgLTEzMjQsNyArMTMyNCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAgICAganNTdHJpbmcgPSBqc0Nhc3Q8SlNTdHJpbmcqPih0aGlzVmFsdWUuYXNDZWxsKCkp
OwogICAgICAgICBsZW4gPSBqc1N0cmluZy0+bGVuZ3RoKCk7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgdVN0cmluZyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAg
ICAgIHVTdHJpbmcgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBsZW4gPSB1
U3RyaW5nLmxlbmd0aCgpOwogICAgIH0KQEAgLTE0NTUsMTEgKzE0NTUsMTEgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNMb2NhbGVDb21wYXJlKEV4ZWNTdGF0
ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAg
IGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1dU
RlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBTdHJp
bmcgc3RyID0gYTAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzdHIg
PSBhMC50b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKENv
bGxhdG9yKCkuY29sbGF0ZShzLCBzdHIpKSk7CiB9CkBAIC0xNTc0LDcgKzE1NzQsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0JpZyhFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAo
IWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKLSAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9XVEZTdHJp
bmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNN
YWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiPGJpZz4iLCBzLCAiPC9iaWc+IikpOwpAQCAtMTU4
OCw3ICsxNTg4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNTbWFsbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKLSAgICBTdHJpbmcg
cyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMg
PSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiPHNtYWxsPiIs
IHMsICI8L3NtYWxsPiIpKTsKQEAgLTE2MDIsNyArMTYwMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQmxpbmsoRXhlY1N0YXRlKiBleGVjKQogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVj
dENvZXJjaWJsZSh0aGlzVmFsdWUpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7Ci0gICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHNj
b3BlLnJlbGVhc2UoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZp
YWxTdHJpbmcoZXhlYywgIjxibGluaz4iLCBzLCAiPC9ibGluaz4iKSk7CkBAIC0xNjE2LDcgKzE2
MTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0JvbGQo
RXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgU3RyaW5nIHMgPSB0aGlz
VmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1Zh
bHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIjxiPiIsIHMsICI8L2I+Iikp
OwpAQCAtMTYzMCw3ICsxNjMwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNGaXhlZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNW
YWx1ZSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKLSAg
ICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAg
U3RyaW5nIHMgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAi
PHR0PiIsIHMsICI8L3R0PiIpKTsKQEAgLTE2NDQsNyArMTY0NCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSXRhbGljcyhFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNr
T2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKLSAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoZXhl
Yyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgc2NvcGUucmVsZWFzZSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9u
dHJpdmlhbFN0cmluZyhleGVjLCAiPGk+IiwgcywgIjwvaT4iKSk7CkBAIC0xNjU4LDcgKzE2NTgs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N0cmlrZShF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKLSAgICBTdHJpbmcgcyA9IHRoaXNW
YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0aGlzVmFs
dWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiPHN0cmlrZT4iLCBzLCAiPC9z
dHJpa2U+IikpOwpAQCAtMTY3Miw3ICsxNjcyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzdHJpbmdQcm90b0Z1bmNTdWIoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJs
ZSh0aGlzVmFsdWUpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSk7Ci0gICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
OworICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHNjb3BlLnJlbGVh
c2UoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmco
ZXhlYywgIjxzdWI+IiwgcywgIjwvc3ViPiIpKTsKQEAgLTE2ODYsNyArMTY4Niw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3VwKEV4ZWNTdGF0ZSogZXhl
YykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICgh
Y2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1dURlN0cmlu
ZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01h
a2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICI8c3VwPiIsIHMsICI8L3N1cD4iKSk7CkBAIC0xNzAw
LDcgKzE3MDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y0ZvbnRjb2xvcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKLSAgICBTdHJp
bmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5n
IHMgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJn
dW1lbnQoMCk7CkBAIC0xNzE5LDcgKzE3MTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY0ZvbnRzaXplKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2Vy
Y2libGUodGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUpOwotICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFs
dWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKQEAgLTE3NzQsNyArMTc3NCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQW5jaG9yKEV4ZWNTdGF0ZSogZXhl
YykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICgh
Y2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUpOwotICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1dURlN0cmlu
ZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKQEAgLTE3OTMsNyArMTc5
Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTGluayhF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKLSAgICBTdHJpbmcgcyA9IHRoaXNW
YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0aGlzVmFs
dWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7CkBA
IC0xODQwLDcgKzE4NDAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUgdHJpbVN0cmluZyhFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlLCBpbnQgdHJpbUtpbgogCiAgICAgaWYgKCFj
aGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUpOwotICAgIFN0cmluZyBzdHIgPSB0aGlzVmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzdHIgPSB0aGlzVmFsdWUudG9XVEZTdHJp
bmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIHVu
c2lnbmVkIGxlZnQgPSAwOwpAQCAtMTg5OCw3ICsxODk4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdGFydHNXaXRoKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAotICAgIFN0cmluZyBzdHJpbmdUb1NlYXJj
aEluID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcg
c3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUg
YTAgPSBleGVjLT5hcmd1bWVudCgwKTsKQEAgLTE5MDcsNyArMTkwNyw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3RhcnRzV2l0aChFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgaWYgKGlzUmVndWxhckV4cHJlc3Npb24pCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5zdGFy
dHNXaXRoIGNhbm5vdCBiZSBhIFJlZ0V4cCIpOwogCi0gICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9
IGEwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgc2VhcmNoU3RyaW5n
ID0gYTAudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIHBvc2l0aW9uQXJnID0gZXhlYy0+YXJn
dW1lbnQoMSk7CkBAIC0xOTMyLDcgKzE5MzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY0VuZHNXaXRoKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoIWNo
ZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAotICAgIFN0cmluZyBzdHJpbmdUb1NlYXJjaEluID0gdGhp
c1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgc3RyaW5nVG9T
ZWFyY2hJbiA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgYTAgPSBleGVj
LT5hcmd1bWVudCgwKTsKQEAgLTE5NDEsNyArMTk0MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgoRXhlY1N0YXRlKiBleGVjKQogICAgIGlm
IChpc1JlZ3VsYXJFeHByZXNzaW9uKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSwgIkFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGggY2Fubm90
IGJlIGEgUmVnRXhwIik7CiAKLSAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gYTAudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1dURlN0
cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZ1RvU2VhcmNoSW4ubGVuZ3RoKCk7
CkBAIC0xOTgyLDcgKzE5ODIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY0luY2x1ZGVzKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoIWNoZWNrT2JqZWN0
Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlKTsKIAotICAgIFN0cmluZyBzdHJpbmdUb1NlYXJjaEluID0gdGhpc1ZhbHVlLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiA9
IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVu
dCgwKTsKQEAgLTE5OTEsNyArMTk5MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG9GdW5jSW5jbHVkZXMoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChpc1JlZ3Vs
YXJFeHByZXNzaW9uKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSwgIkFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXMgY2Fubm90IGJlIGEgUmVn
RXhwIik7CiAKLSAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gYTAudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOworICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1dURlN0cmluZyhleGVj
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAog
ICAgIEpTVmFsdWUgcG9zaXRpb25BcmcgPSBleGVjLT5hcmd1bWVudCgxKTsKQEAgLTIwMDgsMTEg
KzIwMDgsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBidWlsdGluU3RyaW5nSW5j
bHVkZXNJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBBU1NFUlQoY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1Zh
bHVlKSk7CiAKLSAgICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNoSW4gPSB0aGlz
VmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+dW5jaGVja2VkQXJn
dW1lbnQoMCk7Ci0gICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGEwLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gYTAudG9XVEZTdHJpbmcoZXhl
Yyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAK
ICAgICBKU1ZhbHVlIHBvc2l0aW9uQXJnID0gZXhlYy0+YXJndW1lbnQoMSk7CkBAIC0yMDc3LDcg
KzIwNzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY05v
cm1hbGl6ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgVU5vcm1hbGl6YXRpb25Nb2RlIGZvcm0gPSBV
Tk9STV9ORkM7CiAgICAgLy8gVmVyaWZ5IHRoYXQgdGhlIGFyZ3VtZW50IGlzIHByb3ZpZGVkIGFu
ZCBpcyBub3QgdW5kZWZpbmVkLgogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNVbmRlZmlu
ZWQoKSkgewotICAgICAgICBTdHJpbmcgZm9ybVN0cmluZyA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgU3RyaW5nIGZvcm1T
dHJpbmcgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAg
ICAgICAgaWYgKGZvcm1TdHJpbmcgPT0gIk5GQyIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAKaW5kZXggMjVhNWJkMDUxYzg2YmIz
MzhmM2E4OGI2NDRhOTYzODE4YzY0YjQzOC4uYjgzNjRiODM4ZDllY2IyNThhMjEyNTFmMjQwNGNl
MTdhODNiYmFlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9s
bGFyVk1Qcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0Rv
bGxhclZNUHJvdG90eXBlLmNwcApAQCAtMzM3LDcgKzMzNyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnQoRXhlY1N0YXRlKiBleGVjKQogewogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkgewotICAgICAg
ICBTdHJpbmcgYXJnU3RyID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOworICAgICAgICBTdHJpbmcgYXJnU3RyID0gZXhlYy0+dW5jaGVja2Vk
QXJndW1lbnQoaSkudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBkYXRhTG9nKGFyZ1N0cik7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseUNvbXBpbGVFcnJvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUNvbXBpbGVFcnJvci5oCmluZGV4IGMxNGEzNzkwNTIwN2Q5MWNlMmEzNzA2MDMxYzA5
YTdlNzk1NjMzZWMuLjZmMDVmM2ViNjMwNzgzNjQyZWYzYzM5NGY4MWE3NjcwMmM4OWU0MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5Q29tcGlsZUVycm9yLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgSlNXZWJBc3NlbWJseUNv
bXBpbGVFcnJvciA6IHB1YmxpYyBFcnJvckluc3RhbmNlIHsKICAgICBzdGF0aWMgSlNXZWJBc3Nl
bWJseUNvbXBpbGVFcnJvciogY3JlYXRlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGNvbnN0IFN0
cmluZyYsIGJvb2wpOwogICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKiBjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBtZXNzYWdl
LCBib29sIHVzZUN1cnJlbnRGcmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGUoZXhl
Yywgc3RydWN0dXJlLCBtZXNzYWdlLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IG1lc3NhZ2Uu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCB1c2VDdXJyZW50RnJhbWUpOworICAgICAgICBy
ZXR1cm4gY3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwgbWVzc2FnZS5pc1VuZGVmaW5lZCgpID8gU3Ry
aW5nKCkgOiBtZXNzYWdlLnRvV1RGU3RyaW5nKGV4ZWMpLCB1c2VDdXJyZW50RnJhbWUpOwogICAg
IH0KIAogICAgIERFQ0xBUkVfSU5GTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaAppbmRleCA5MzU5MzBhMjY2
Y2VkZTE5YmYyMWE0NDI1N2RkZjI3MmMxNDNhMGE1Li4zYzc4NzllN2E0NWI3NmYxNGVlZTZkNDky
MzQxMTliYzBiZDRhZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oCkBAIC0zOCw3ICszOCw3IEBAIGNs
YXNzIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IgOiBwdWJsaWMgRXJyb3JJbnN0YW5jZSB7CiAg
ICAgc3RhdGljIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IqIGNyZWF0ZShFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmUqLCBjb25zdCBTdHJpbmcmLCBib29sIHVzZUN1cnJlbnRGcmFtZSA9IHRydWUpOwog
ICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKiBjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBtZXNzYWdlLCBib29sIHVzZUN1cnJl
bnRGcmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGUoZXhlYywgc3RydWN0dXJlLCBt
ZXNzYWdlLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IG1lc3NhZ2UudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpLCB1c2VDdXJyZW50RnJhbWUpOworICAgICAgICByZXR1cm4gY3JlYXRlKGV4
ZWMsIHN0cnVjdHVyZSwgbWVzc2FnZS5pc1VuZGVmaW5lZCgpID8gU3RyaW5nKCkgOiBtZXNzYWdl
LnRvV1RGU3RyaW5nKGV4ZWMpLCB1c2VDdXJyZW50RnJhbWUpOwogICAgIH0KIAogICAgIERFQ0xB
UkVfSU5GTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRp
bmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0
aWxpdGllcy5jcHAKaW5kZXggMTJmNTdiYWI3ZjYzZGVjMDRjNzJmMTViYmNjOWRlN2Y4ZTdmODdj
NC4uMGEwNjFhMjdlYWVmMjM3N2JmOTI5MGIyYzUwZmU2OTM3ZjczOGE2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTE0
OCw3ICsxNDgsNyBAQCBzdGF0aWMgUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVZhbHVl
KEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSB2YWx1ZSwgVmVjdAogICAgICAgICByZXR1cm4gSURC
S2V5OjpjcmVhdGVOdW1iZXIodmFsdWUudG9OdW1iZXIoJmV4ZWMpKTsKIAogICAgIGlmICh2YWx1
ZS5pc1N0cmluZygpKQotICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVTdHJpbmcodmFsdWUu
dG9TdHJpbmcoJmV4ZWMpLT52YWx1ZSgmZXhlYykpOworICAgICAgICByZXR1cm4gSURCS2V5Ojpj
cmVhdGVTdHJpbmcodmFsdWUudG9XVEZTdHJpbmcoJmV4ZWMpKTsKIAogICAgIGlmICh2YWx1ZS5p
bmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkgJiYgIXN0ZDo6aXNuYW4odmFsdWVUb0RhdGUo
JmV4ZWMsIHZhbHVlKSkpCiAgICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZURhdGUodmFsdWVU
b0RhdGUoJmV4ZWMsIHZhbHVlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNBdWRpb1RyYWNrQ3VzdG9tLmNwcAppbmRleCBiZjAwNGQwMDJiMzliODUyMGI2YWU5MjE1Y2Rj
NzBhNDYyMjNjNzU4Li43MzIzNDFlNTBjZWI3MmMxMDMyNzk0M2QyMjBmYjljMjU1ZDk5MGJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5j
cHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBKU0F1ZGlvVHJhY2s6OnNldEtpbmQoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8mIHN0cmluZyA9
IHZhbHVlLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CisgICAgYXV0byBzdHJpbmcg
PSB2YWx1ZS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7CiAgICAgd3JhcHBlZCgpLnNldEtpbmQoc3RyaW5nKTsKICNlbHNlCkBAIC02
MSw3ICs2MSw3IEBAIHZvaWQgSlNBdWRpb1RyYWNrOjpzZXRMYW5ndWFnZShFeGVjU3RhdGUmIHN0
YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byYgc3RyaW5nID0gdmFs
dWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKKyAgICBhdXRvIHN0cmluZyA9IHZh
bHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKICAgICB3cmFwcGVkKCkuc2V0TGFuZ3VhZ2Uoc3RyaW5nKTsKICNlbHNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rp
b25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1E
aWN0aW9uYXJ5LmNwcAppbmRleCA3ZjZmOTY4YmUyMzk3YjEyZTE1NTc4YzM4Njk4ZjNiNWIyYThm
MzQwLi4yMzM4MGI2YjJlOWY1MGM2YmY3ZDZmYTc0YjVmODk2Nzc1ODE5N2RkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGlj
dGlvbmFyeS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgYm9vbCBKU0NyeXB0b0FsZ29yaXRobURpY3Rp
b25hcnk6OmdldEFsZ29yaXRobUlkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHUKICAg
ICBTdHJpbmcgYWxnb3JpdGhtTmFtZTsKIAogICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKQotICAg
ICAgICBhbGdvcml0aG1OYW1lID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwor
ICAgICAgICBhbGdvcml0aG1OYW1lID0gdmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgZWxz
ZSBpZiAodmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBpZiAodmFsdWUuZ2V0T2JqZWN0KCkt
PmluaGVyaXRzKFN0cmluZ09iamVjdDo6aW5mbygpKSkKICAgICAgICAgICAgIGFsZ29yaXRobU5h
bWUgPSBhc1N0cmluZyhhc1N0cmluZ09iamVjdCh2YWx1ZSktPmludGVybmFsVmFsdWUoKSktPnZh
bHVlKGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0
b21YUGF0aE5TUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0
b21YUGF0aE5TUmVzb2x2ZXIuY3BwCmluZGV4IDgwMzg5Nzc5ODkwZDMwNWMwZjY0ZGNhYTUxYjE5
MDAxNzU2OTkyNTYuLmM2Y2YwMzFjZDViMTA4MDc0ZmJhMDQ5OWM0ODZhODkzNjM5MTQzMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29s
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNS
ZXNvbHZlci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBTdHJpbmcgSlNDdXN0b21YUGF0aE5TUmVz
b2x2ZXI6Omxvb2t1cE5hbWVzcGFjZVVSSShjb25zdCBTdHJpbmcmIHByZWZpeCkKICAgICAgICAg
cmVwb3J0RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CiAgICAgZWxzZSB7CiAgICAgICAgIGlm
ICghcmV0dmFsLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgICAgICByZXN1bHQgPSByZXR2
YWwudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAgICAgICAgcmVzdWx0ID0gcmV0
dmFsLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXgg
OTVmYWI1YTZmMzNjNTBhNzQ4NjY2N2RmYWZiZjExOTcyMjZkN2VjMy4uNTA4YjIzZWU1N2U4MzU4
NjdhNGFlNTg4OWU4MWNiZjUyZTgyNWRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtMzg5LDcgKzM4OSw3IEBAIHZvaWQgSlNE
T01XaW5kb3c6OnNldExvY2F0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAg
ICAgfQogI2VuZGlmCiAKLSAgICBTdHJpbmcgbG9jYXRpb25TdHJpbmcgPSB2YWx1ZS50b1N0cmlu
Zygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOworICAgIFN0cmluZyBsb2NhdGlvblN0cmluZyA9IHZh
bHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKIAogICAgIGlmIChMb2NhdGlvbiogbG9jYXRpb24gPSB3cmFwcGVkKCkubG9jYXRp
b24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90
aW9uRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VN
b3Rpb25FdmVudEN1c3RvbS5jcHAKaW5kZXggOGVlYTk1ZGRkNzFiOGZmMDdkNDk5NTg0ZDNmZGUz
OTMxMTJmNWE1OS4uYmE4ZmFmMzBlNDNhMzE3OTVlNDEyNDIwZDJjOTliODc1ODc1MDNhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25F
dmVudEN1c3RvbS5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCBKU1ZhbHVlIEpTRGV2aWNlTW90aW9u
RXZlbnQ6OmluaXREZXZpY2VNb3Rpb25FdmVudChFeGVjU3RhdGUmIHN0YXRlKQogICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgY29uc3QgU3RyaW5nIHR5cGUgPSBzdGF0ZS5hcmd1bWVudCgwKS50b1N0cmluZygm
c3RhdGUpLT52YWx1ZSgmc3RhdGUpOworICAgIGNvbnN0IFN0cmluZyB0eXBlID0gc3RhdGUuYXJn
dW1lbnQoMCkudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBib29sIGJ1YmJsZXMgPSBzdGF0ZS5h
cmd1bWVudCgxKS50b0Jvb2xlYW4oJnN0YXRlKTsKICAgICBib29sIGNhbmNlbGFibGUgPSBzdGF0
ZS5hcmd1bWVudCgyKS50b0Jvb2xlYW4oJnN0YXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5j
cHAKaW5kZXggOWQ5NTRmNTIwYTllY2I3YjY4OWI5NDI0NzBkYjNhMTUyZGFjZmZlOC4uNzdlMzQx
NTM3OGRiMTZiMGQ3OTljNzBkM2FiM2I1ZWM5NzIwOTMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0
b20uY3BwCkBAIC05Myw3ICs5Myw3IEBAIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50
OjphYnNvbHV0ZShFeGVjU3RhdGUmKSBjb25zdAogCiBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRp
b25FdmVudDo6aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsK
LSAgICBjb25zdCBTdHJpbmcgdHlwZSA9IHN0YXRlLmFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0
ZSktPnZhbHVlKCZzdGF0ZSk7CisgICAgY29uc3QgU3RyaW5nIHR5cGUgPSBzdGF0ZS5hcmd1bWVu
dCgwKS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIGJvb2wgYnViYmxlcyA9IHN0YXRlLmFyZ3Vt
ZW50KDEpLnRvQm9vbGVhbigmc3RhdGUpOwogICAgIGJvb2wgY2FuY2VsYWJsZSA9IHN0YXRlLmFy
Z3VtZW50KDIpLnRvQm9vbGVhbigmc3RhdGUpOwogICAgIC8vIElmIGFscGhhLCBiZXRhIG9yIGdh
bW1hIGFyZSBudWxsIG9yIHVuZGVmaW5lZCwgbWFyayB0aGVtIGFzIG5vdCBwcm92aWRlZC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDZh
MTQ5MTQ4Y2YyY2RkZTU1MmI3YjBkNGQ4OTgzZTE2YzQ1NDVlZTYuLjc5MTU2OTI3YWUzMTM1NDc4
MDhjMmY5YTVmZTQ3NzAzM2ViYzQ1YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudExpc3RlbmVyLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgSlNFdmVudExp
c3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0CiAgICAgICAgICAgICByZXBvcnRFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICghcmV0dmFsLmlzVW5kZWZpbmVkT3JO
dWxsKCkgJiYgaXM8QmVmb3JlVW5sb2FkRXZlbnQ+KCpldmVudCkpCi0gICAgICAgICAgICAgICAg
ZG93bmNhc3Q8QmVmb3JlVW5sb2FkRXZlbnQ+KCpldmVudCkuc2V0UmV0dXJuVmFsdWUocmV0dmFs
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgICAgICAgICAgICAgZG93bmNhc3Q8
QmVmb3JlVW5sb2FkRXZlbnQ+KCpldmVudCkuc2V0UmV0dXJuVmFsdWUocmV0dmFsLnRvV1RGU3Ry
aW5nKGV4ZWMpKTsKICAgICAgICAgICAgIGlmIChtX2lzQXR0cmlidXRlKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKHJldHZhbC5pc0ZhbHNlKCkpCiAgICAgICAgICAgICAgICAgICAgIGV2ZW50LT5w
cmV2ZW50RGVmYXVsdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRleCBlMzkzMmM5MWQ3Y2YxNjUxYmI1
MmU1OWRiYzJiZGUyOGVjNDBhYWQ4Li5kODI4NmE1MmFkMTkxYmM2ZjFmMmZlMjUwNTc3YTEwYmNi
NGI3Yjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxD
b2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSFRNTEFsbENvbGxlY3Rpb24oRXhlY1N0YXRlKiBl
eGVjKQogCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAxKSB7CiAgICAgICAgIC8v
IFN1cHBvcnQgZm9yIGRvY3VtZW50LmFsbCg8aW5kZXg+KSBldGMuCi0gICAgICAgIFN0cmluZyBz
dHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Cisg
ICAgICAgIFN0cmluZyBzdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVj
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgo
KnN0cmluZy5pbXBsKCkpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pT
KGV4ZWMsIGpzQ29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIGNvbGxlY3Rpb24uaXRlbShpbmRl
eC52YWx1ZSgpKSkpOwpAQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsSFRNTEFsbENvbGxlY3Rpb24oRXhlY1N0YXRlKiBleGVjKQogICAgIH0K
IAogICAgIC8vIFRoZSBzZWNvbmQgYXJnLCBpZiBzZXQsIGlzIHRoZSBpbmRleCBvZiB0aGUgaXRl
bSB3ZSB3YW50Ci0gICAgU3RyaW5nIHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgc3RyaW5nID0gZXhlYy0+YXJndW1lbnQo
MCkudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0g
cGFyc2VJbmRleCgqZXhlYy0+YXJndW1lbnQoMSkudG9XVEZTdHJpbmcoZXhlYykuaW1wbCgpKSkg
ewogICAgICAgICBpZiAoYXV0byogaXRlbSA9IGNvbGxlY3Rpb24ubmFtZWRJdGVtV2l0aEluZGV4
KHN0cmluZywgaW5kZXgudmFsdWUoKSkpCkBAIC0xMTksNyArMTE5LDcgQEAgSlNWYWx1ZSBKU0hU
TUxBbGxDb2xsZWN0aW9uOjppdGVtKEV4ZWNTdGF0ZSYgc3RhdGUpCiAKIEpTVmFsdWUgSlNIVE1M
QWxsQ29sbGVjdGlvbjo6bmFtZWRJdGVtKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgSlNWYWx1
ZSB2YWx1ZSA9IG5hbWVkSXRlbXMoc3RhdGUsIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUp
KSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IG5hbWVkSXRlbXMoc3RhdGUsIHRoaXMsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKS50b1dURlN0cmluZygmc3Rh
dGUpKSk7CiAgICAgcmV0dXJuIHZhbHVlLmlzVW5kZWZpbmVkKCkgPyBqc051bGwoKSA6IHZhbHVl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDk0MWM2OTI3Mzlh
ZDY1MjMyNDYzNzhlYjA5ZThhYjg4OGY5MmM1OTAuLjU4ZDliNjc2YjJjMWQ3NTYyMzdiZWU0ZjBm
ZGRkOWM3NzkxMmEzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC02
Miw3ICs2Miw3IEBAIEpTVmFsdWUgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJ
dGVtKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291
bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKLSAgICBKU1ZhbHVlIHZh
bHVlID0gbmFtZWRJdGVtcyhzdGF0ZSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3Rh
dGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZz
dGF0ZSkpKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gbmFtZWRJdGVtcyhzdGF0ZSwgdGhpcywgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRv
V1RGU3RyaW5nKCZzdGF0ZSkpKTsKICAgICByZXR1cm4gdmFsdWUuaXNVbmRlZmluZWQoKSA/IGpz
TnVsbCgpIDogdmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IGVlOTAzMGZhMDQ4OGJlOWJm
NDI3YzI5YTg0ZWIzZjM5YmZkNWRiYTEuLjFlMmYzM2ZmM2NmYjY1YzgzZjQ5MWMyNTVmMDlmNjEz
OGI5ZTI0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElu
cHV0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgSlNIVE1M
SW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25EaXJlY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNW
YWx1ZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlucHV0LnNldFNlbGVj
dGlvbkRpcmVjdGlvbih2YWx1ZS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpKTsKKyAg
ICBpbnB1dC5zZXRTZWxlY3Rpb25EaXJlY3Rpb24odmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKSk7
CiB9CiAKIEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZShFeGVj
U3RhdGUmIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
bnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCmluZGV4IGY0MDY0ZTY0NzU1OGVm
ZWRjYjYzZDljMTBjMTk4MTQxMWRhZjZmNGQuLjQyYjQzMmZkNjM2NDRmMDRmZjYwMGYyZTJkNTRi
YTE1ZjdmYmM4MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5z
cGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAg
c3RhdGljIHZvaWQgcG9wdWxhdGVDb250ZXh0TWVudUl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNB
cnJheSogYXJyYXksIENvbnRleHRNZW4KICAgICAgICAgaWYgKCF0eXBlLmlzU3RyaW5nKCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBTdHJpbmcgdHlwZVN0cmluZyA9IHR5cGUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAgICBTdHJpbmcgdHlwZVN0cmluZyA9
IHR5cGUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgICAgIGlmICh0eXBlU3RyaW5nID09ICJzZXBh
cmF0b3IiKSB7CiAgICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gaXRlbShTZXBhcmF0b3JUeXBl
LCBDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbiwgU3RyaW5nKCkpOwogICAgICAgICAgICAgbWVu
dS5hcHBlbmRJdGVtKGl0ZW0pOwpAQCAtNzAsMTEgKzcwLDExIEBAIHN0YXRpYyB2b2lkIHBvcHVs
YXRlQ29udGV4dE1lbnVJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTQXJyYXkqIGFycmF5LCBDb250
ZXh0TWVuCiAgICAgICAgICAgICBDb250ZXh0TWVudSBzdWJNZW51OwogICAgICAgICAgICAgSlNB
cnJheSogc3ViSXRlbXNBcnJheSA9IGFzQXJyYXkoc3ViSXRlbXMpOwogICAgICAgICAgICAgcG9w
dWxhdGVDb250ZXh0TWVudUl0ZW1zKGV4ZWMsIHN1Ykl0ZW1zQXJyYXksIHN1Yk1lbnUpOwotICAg
ICAgICAgICAgQ29udGV4dE1lbnVJdGVtIGl0ZW0oU3VibWVudVR5cGUsIENvbnRleHRNZW51SXRl
bVRhZ05vQWN0aW9uLCBsYWJlbC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICZzdWJNZW51
KTsKKyAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBpdGVtKFN1Ym1lbnVUeXBlLCBDb250ZXh0
TWVudUl0ZW1UYWdOb0FjdGlvbiwgbGFiZWwudG9XVEZTdHJpbmcoZXhlYyksICZzdWJNZW51KTsK
ICAgICAgICAgICAgIG1lbnUuYXBwZW5kSXRlbShpdGVtKTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIENvbnRleHRNZW51QWN0aW9uIHR5cGVkSWQgPSBzdGF0aWNfY2FzdDxDb250ZXh0
TWVudUFjdGlvbj4oQ29udGV4dE1lbnVJdGVtQmFzZUN1c3RvbVRhZyArIGlkLnRvSW50MzIoZXhl
YykpOwotICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIG1lbnVJdGVtKCh0eXBlU3RyaW5nID09
ICJjaGVja2JveCIgPyBDaGVja2FibGVBY3Rpb25UeXBlIDogQWN0aW9uVHlwZSksIHR5cGVkSWQs
IGxhYmVsLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgICAgICAgICBDb250ZXh0
TWVudUl0ZW0gbWVudUl0ZW0oKHR5cGVTdHJpbmcgPT0gImNoZWNrYm94IiA/IENoZWNrYWJsZUFj
dGlvblR5cGUgOiBBY3Rpb25UeXBlKSwgdHlwZWRJZCwgbGFiZWwudG9XVEZTdHJpbmcoZXhlYykp
OwogICAgICAgICAgICAgaWYgKCFlbmFibGVkLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgICAgICAg
ICAgbWVudUl0ZW0uc2V0RW5hYmxlZChlbmFibGVkLnRvQm9vbGVhbihleGVjKSk7CiAgICAgICAg
ICAgICBpZiAoIWNoZWNrZWQuaXNVbmRlZmluZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAppbmRleCAyNzE0Mjk3M2YzNjVi
OWM4NWY2NDdhZjBmODg4YTcyOGFhODk2ZjA5Li5mOGI3ZTAxNTMxZjYzZWU1YTA5MjdkNjBlNDk5
ODc4MmY3YTdlYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01l
c3NhZ2VFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
ZXNzYWdlRXZlbnRDdXN0b20uY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgc3RhdGljIEpTQzo6SlNW
YWx1ZSBoYW5kbGVJbml0TWVzc2FnZUV2ZW50KEpTTWVzc2FnZUV2ZW50KiBqc0V2ZW50LCBKU0M6
OkV4ZWNTdGEKICAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGNvbnN0IFN0cmluZyYgdHlwZUFyZyA9IHN0YXRl
LmFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CisgICAgY29uc3Qg
U3RyaW5nJiB0eXBlQXJnID0gc3RhdGUuYXJndW1lbnQoMCkudG9XVEZTdHJpbmcoJnN0YXRlKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwogCiAgICAgYm9vbCBj
YW5CdWJibGVBcmcgPSBzdGF0ZS5hcmd1bWVudCgxKS50b0Jvb2xlYW4oJnN0YXRlKTsKQEAgLTEy
Miw3ICsxMjIsNyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGhhbmRsZUluaXRNZXNzYWdlRXZlbnQo
SlNNZXNzYWdlRXZlbnQqIGpzRXZlbnQsIEpTQzo6RXhlY1N0YQogICAgIGNvbnN0IFN0cmluZyBv
cmlnaW5BcmcgPSBjb252ZXJ0PElETFVTVlN0cmluZz4oc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDQp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwogCi0gICAgY29u
c3QgU3RyaW5nIGxhc3RFdmVudElkQXJnID0gc3RhdGUuYXJndW1lbnQoNSkudG9TdHJpbmcoJnN0
YXRlKS0+dmFsdWUoJnN0YXRlKTsKKyAgICBjb25zdCBTdHJpbmcgbGFzdEV2ZW50SWRBcmcgPSBz
dGF0ZS5hcmd1bWVudCg1KS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CiAKICAgICBhdXRvIHNvdXJjZUFyZyA9IGNvbnZlcnQ8
SURMTnVsbGFibGU8SURMVW5pb248SURMSW50ZXJmYWNlPERPTVdpbmRvdz4sIElETEludGVyZmFj
ZTxNZXNzYWdlUG9ydD4+Pj4oc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDYpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKaW5k
ZXggOTE3ZDYzNzM4NzA2YzBiMjQyZjRkODFjYjcyY2NjMWY3ZjA3MTI5MS4uNWI3MTNhOTBjZjBk
ODYzYThhNTA2YmQyOTQ3YzZmNzc3ZTA1NzcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKQEAgLTUyLDcgKzUyLDcg
QEAgSlNWYWx1ZSBKU1NRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKEV4ZWNTdGF0ZSYgc3RhdGUp
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KIAotICAgIFN0cmluZyBzcWxT
dGF0ZW1lbnQgPSBzdGF0ZS5hcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3Rh
dGUpOworICAgIFN0cmluZyBzcWxTdGF0ZW1lbnQgPSBzdGF0ZS5hcmd1bWVudCgwKS50b1dURlN0
cmluZygmc3RhdGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7
CiAKICAgICAvLyBOb3cgYXNzZW1ibGUgdGhlIGxpc3Qgb2YgU1FMIGFyZ3VtZW50cwpAQCAtNzks
NyArNzksNyBAQCBKU1ZhbHVlIEpTU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwoRXhlY1N0YXRl
JiBzdGF0ZSkKICAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5kKHZhbHVlLmFzTnVtYmVy
KCkpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gQ29udmVydCB0aGUg
YXJndW1lbnQgdG8gYSBzdHJpbmcgYW5kIGFwcGVuZCBpdAotICAgICAgICAgICAgICAgIHNxbFZh
bHVlcy5hcHBlbmQodmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKSk7CisgICAg
ICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZCh2YWx1ZS50b1dURlN0cmluZygmc3RhdGUpKTsK
ICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1RleHRUcmFja0N1c3RvbS5jcHAKaW5kZXggODE1OTRiMjM5NjgwZTUxZTc4ODBlZTIzYTRl
ODJhZWNlODU0MTFlYS4uNzkzYjZlYWRmZjYxYTU0MTViN2ExZjI1YmU5OGQyNGZkZmY0ZGNiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNw
cApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIEpTVGV4dFRyYWNrOjpzZXRMYW5ndWFnZShFeGVjU3Rh
dGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byYgc3RyaW5n
ID0gdmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKKyAgICBhdXRvIHN0cmlu
ZyA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKICAgICB3cmFwcGVkKCkuc2V0TGFuZ3VhZ2Uoc3RyaW5nKTsKICNlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNw
cAppbmRleCA3ZWQyYWI3OWNjNWQwZWUzMGJlYjk1YjlhY2VmYjk3ZDYxY2E3NmZjLi5mNzlhMzM0
MWZjZmNkM2VhOWZkZThlMGVlNjM5NmNmMzJkNDA3Yzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAg
dm9pZCBKU1ZpZGVvVHJhY2s6OnNldEtpbmQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1
ZSkKICAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8mIHN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKCZzdGF0
ZSktPnZhbHVlKCZzdGF0ZSk7CisgICAgYXV0byBzdHJpbmcgPSB2YWx1ZS50b1dURlN0cmluZygm
c3RhdGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgd3Jh
cHBlZCgpLnNldEtpbmQoc3RyaW5nKTsKICNlbHNlCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgSlNW
aWRlb1RyYWNrOjpzZXRMYW5ndWFnZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQog
ICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgYXV0byYgc3RyaW5nID0gdmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+
dmFsdWUoJnN0YXRlKTsKKyAgICBhdXRvIHN0cmluZyA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0
ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICB3cmFwcGVk
KCkuc2V0TGFuZ3VhZ2Uoc3RyaW5nKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHAKaW5kZXggNTQ0
YTk4MjI1ODUxMmJjZGYzYTZjMjc3NmU5NjQ2Y2FhYTBiNzA1Ny4uMDc0MmMzOGJjM2NhNmUwODUy
ZjlkODNlYTM3YWMyMTI1N2JkMmI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcApAQCAtODQsNyArODQs
NyBAQCBzdGF0aWMgYm9vbCBjcnlwdG9LZXlGb3JtYXRGcm9tSlNWYWx1ZShFeGVjU3RhdGUmIHN0
YXRlLCBKU1ZhbHVlIHZhbHVlLCBDcnlwdG9LZQogICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgU3RyaW5nIGtl
eUZvcm1hdFN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7Cisg
ICAgU3RyaW5nIGtleUZvcm1hdFN0cmluZyA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIGlmIChrZXlGb3JtYXRT
dHJpbmcgPT0gInJhdyIpCiAgICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUZvcm1hdDo6UmF3OwpA
QCAtMTE2LDcgKzExNiw3IEBAIHN0YXRpYyBib29sIGNyeXB0b0tleVVzYWdlc0Zyb21KU1ZhbHVl
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUsIENyeXB0b0tlCiAgICAgSlNBcnJheSog
YXJyYXkgPSBhc0FycmF5KHZhbHVlKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5
LT5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIEpTVmFsdWUgZWxlbWVudCA9IGFycmF5LT5nZXRJ
bmRleCgmc3RhdGUsIGkpOwotICAgICAgICBTdHJpbmcgdXNhZ2VTdHJpbmcgPSBlbGVtZW50LnRv
U3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CisgICAgICAgIFN0cmluZyB1c2FnZVN0cmlu
ZyA9IGVsZW1lbnQudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICBpZiAodXNhZ2VTdHJpbmcgPT0gImVuY3J5cHQi
KQogICAgICAgICAgICAgcmVzdWx0IHw9IENyeXB0b0tleVVzYWdlRW5jcnlwdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAK
aW5kZXggMmJkMTE1M2M1NWVhYTI5MzI2YjVhZDU1YjY5MWM4MjdjYzQ1N2Q4NC4uMmZkNzJhZjA0
ZTU2Y2QyZGUxZjgxYzFkNGI1NGRjN2Q1ZWFkYTQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTEyNCw3ICsx
MjQsNyBAQCBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnNlbmQoRXhlY1N0YXRlJiBzdGF0ZSkK
ICAgICBlbHNlIHsKICAgICAgICAgLy8gRklYTUU6IElmIHRvU3RyaW5nIHJhaXNlcyBhbiBleGNl
cHRpb24sIHNob3VsZCB3ZSBleGl0IGJlZm9yZSBjYWxsaW5nIHdpbGxTZW5kWE1MSHR0cFJlcXVl
c3Q/CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0b1N0cmluZyByYWlzZXMgYW4gZXhjZXB0aW9uLCBz
aG91bGQgd2UgZXhpdCBiZWZvcmUgY2FsbGluZyBzZW5kPwotICAgICAgICByZXN1bHQgPSB3cmFw
cGVkKCkuc2VuZCh2YWx1ZS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpKTsKKyAgICAg
ICAgcmVzdWx0ID0gd3JhcHBlZCgpLnNlbmQodmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKSk7CiAg
ICAgfQogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHVzZSBTaGFkb3dDaGlj
a2VuIHNvIHRoYXQgd2UgZ2V0IHRoZSByaWdodCBmcmFtZSBldmVuIHdoZW4gaXQgZGlkIGEgdGFp
bCBjYWxsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJv
Y2Vzc29yQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nl
c3NvckN1c3RvbS5jcHAKaW5kZXggMTUyYjg3MzcwMGI5YTBkYzQ2OGNjMDNmYjA5ZTFhNDMyNGRj
NzY4MS4uMmE4YTlkZjdiMGM2MGQzZGFmYjg5NTNkOTA3NjUwZjI3OGNhNGZhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20uY3Bw
CkBAIC01MCw5ICs1MCw5IEBAIEpTVmFsdWUgSlNYU0xUUHJvY2Vzc29yOjpzZXRQYXJhbWV0ZXIo
RXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBpZiAoc3RhdGUuYXJndW1lbnQoMSkuaXNVbmRlZmlu
ZWRPck51bGwoKSB8fCBzdGF0ZS5hcmd1bWVudCgyKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsgLy8gVGhyb3cgZXhjZXB0aW9uPwotICAgIFN0cmlu
ZyBuYW1lc3BhY2VVUkkgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3Rh
dGUpLT52YWx1ZSgmc3RhdGUpOwotICAgIFN0cmluZyBsb2NhbE5hbWUgPSBzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgxKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwotICAgIFN0cmlu
ZyB2YWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDIpLnRvU3RyaW5nKCZzdGF0ZSktPnZh
bHVlKCZzdGF0ZSk7CisgICAgU3RyaW5nIG5hbWVzcGFjZVVSSSA9IHN0YXRlLnVuY2hlY2tlZEFy
Z3VtZW50KDApLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CisgICAgU3RyaW5nIGxvY2FsTmFtZSA9IHN0
YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CisgICAgU3RyaW5n
IHZhbHVlID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMikudG9XVEZTdHJpbmcoJnN0YXRlKTsK
ICAgICB3cmFwcGVkKCkuc2V0UGFyYW1ldGVyKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCB2YWx1
ZSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CkBAIC02MSw4ICs2MSw4IEBAIEpTVmFs
dWUgSlNYU0xUUHJvY2Vzc29yOjpnZXRQYXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAg
ICBpZiAoc3RhdGUuYXJndW1lbnQoMSkuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgU3RyaW5nIG5hbWVzcGFjZVVSSSA9IHN0YXRlLnVuY2hl
Y2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7Ci0gICAgU3Ry
aW5nIGxvY2FsTmFtZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvU3RyaW5nKCZzdGF0
ZSktPnZhbHVlKCZzdGF0ZSk7CisgICAgU3RyaW5nIG5hbWVzcGFjZVVSSSA9IHN0YXRlLnVuY2hl
Y2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CisgICAgU3RyaW5nIGxvY2FsTmFt
ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAg
U3RyaW5nIHZhbHVlID0gd3JhcHBlZCgpLmdldFBhcmFtZXRlcihuYW1lc3BhY2VVUkksIGxvY2Fs
TmFtZSk7CiAgICAgcmV0dXJuIGpzU3RyaW5nT3JVbmRlZmluZWQoJnN0YXRlLCB2YWx1ZSk7CiB9
CkBAIC03MSw4ICs3MSw4IEBAIEpTVmFsdWUgSlNYU0xUUHJvY2Vzc29yOjpyZW1vdmVQYXJhbWV0
ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBpZiAoc3RhdGUuYXJndW1lbnQoMSkuaXNVbmRl
ZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgU3RyaW5n
IG5hbWVzcGFjZVVSSSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0
ZSktPnZhbHVlKCZzdGF0ZSk7Ci0gICAgU3RyaW5nIGxvY2FsTmFtZSA9IHN0YXRlLnVuY2hlY2tl
ZEFyZ3VtZW50KDEpLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CisgICAgU3RyaW5n
IG5hbWVzcGFjZVVSSSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKCZz
dGF0ZSk7CisgICAgU3RyaW5nIGxvY2FsTmFtZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEp
LnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgd3JhcHBlZCgpLnJlbW92ZVBhcmFtZXRlcihuYW1l
c3BhY2VVUkksIGxvY2FsTmFtZSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAppbmRleCAwZDM2
NDAzZTEyYWFhYzQyY2JlYjNlY2JhOWY0N2Y5ODIzZjRkZDU0Li45MDhmNGRjODhjNzk3NmVlMjBi
ODc5MjY4OTlhMjA5NjczNzIyYTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNj
aGVkdWxlZEFjdGlvbj4gU2NoZWR1bGVkQWN0aW9uOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBE
T01XcmEKICAgICBpZiAoZ2V0Q2FsbERhdGEodiwgY2FsbERhdGEpID09IENhbGxUeXBlOjpOb25l
KSB7CiAgICAgICAgIGlmIChwb2xpY3kgJiYgIXBvbGljeS0+YWxsb3dFdmFsKGV4ZWMpKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIFN0cmluZyBzdHJpbmcgPSB2LnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgU3RyaW5nIHN0cmluZyA9IHYudG9XVEZT
dHJpbmcoZXhlYyk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIp
OwogICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4obmV3IFNj
aGVkdWxlZEFjdGlvbihzdHJpbmcsIGlzb2xhdGVkV29ybGQpKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3BwIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL2MvY191dGlsaXR5LmNwcAppbmRleCBlNGVjM2M2N2M1MGM4YjA5MjNmOTE1ZGI0MmQ3
NGQyNTBhNmVjNTE3Li43YmRhMDI2YWViNzU4NmQ4MDQ1ZWY1N2FiM2I4OTI2NmJkYTcyMWIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9p
ZCBjb252ZXJ0VmFsdWVUb05QVmFyaWFudChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUs
IE5QVmFyaWFudCogcmVzdWx0KQogICAgIFZPSURfVE9fTlBWQVJJQU5UKCpyZXN1bHQpOwogCiAg
ICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgU3RyaW5nIHVzdHJpbmcgPSB2YWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgIFN0cmluZyB1c3RyaW5nID0g
dmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgICAgIENTdHJpbmcgY3N0cmluZyA9IHVzdHJp
bmcudXRmOCgpOwogICAgICAgICBOUFN0cmluZyBzdHJpbmcgPSB7IChjb25zdCBOUFVURjgqKWNz
dHJpbmcuZGF0YSgpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oY3N0cmluZy5sZW5ndGgoKSkgfTsK
ICAgICAgICAgTlBOX0luaXRpYWxpemVWYXJpYW50V2l0aFN0cmluZ0NvcHkocmVzdWx0LCAmc3Ry
aW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5jcHAKaW5kZXggYmFmMjQ3ZDJk
YjZjZTdlN2VlMTEzYTIxMGI4N2NjMzNhNzI2YTA0MC4uMTViZjQ4Y2E2YWJkZWNhMGI0MTcyZWIw
ZGY4MDAyOGU4NzNiYWUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3Ri
aW5kaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5jcHAK
QEAgLTM5MSw3ICszOTEsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKGNvbXAuY29tcGxUeXBlKCkgPT0gVGhy
b3cpIHsKICAgICAgICAgICAgICAgICAgICAgVmFsdWUgZXhWYWwgPSBjb21wLnZhbHVlKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGNoYXIqIG1zZyA9IGV4VmFsLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKS5hc2NpaSgpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IGV4
VmFsLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGNzdHJpbmcg
PSBtc2cuYXNjaWkoKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbXNnID0gY3N0
cmluZy5kYXRhKCk7CiAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lbm8gPSAtMTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGV4VmFsLnR5cGUoKSA9PSBPYmplY3RUeXBlKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWx1ZSBsaW5lVmFsID0gT2JqZWN0OjpkeW5hbWljQ2FzdChleFZh
bCkuZ2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImxpbmUiKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50
aW1lT2JqZWN0TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCmluZGV4IDQ5OTIwZjJjYWE4NGY3NjliNjJkMjQ2
MmE5Yzk4MDdmNTIwY2YzZWQuLjI1OTMyODljNDU1MjJiYjllMzg3ZjQ2YWQ0Mjk3NjcwYjQ5ZTkw
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCkBAIC0xNjgsNyArMTY4LDcg
QEAgdm9pZCBOUFJ1bnRpbWVPYmplY3RNYXA6OmNvbnZlcnRKU1ZhbHVlVG9OUFZhcmlhbnQoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHUKICAgICB9CiAKICAgICBpZiAodmFsdWUuaXNTdHJp
bmcoKSkgewotICAgICAgICBOUFN0cmluZyBucFN0cmluZyA9IGNyZWF0ZU5QU3RyaW5nKHZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKS51dGY4KCkpOworICAgICAgICBOUFN0cmluZyBu
cFN0cmluZyA9IGNyZWF0ZU5QU3RyaW5nKHZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpLnV0ZjgoKSk7
CiAgICAgICAgIFNUUklOR05fVE9fTlBWQVJJQU5UKG5wU3RyaW5nLlVURjhDaGFyYWN0ZXJzLCBu
cFN0cmluZy5VVEY4TGVuZ3RoLCB2YXJpYW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>