<?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>235932</bug_id>
          
          <creation_ts>2022-01-31 17:44:06 -0800</creation_ts>
          <short_desc>[JSC] YarrJIT m_checkedOffset should be pre-computed and stored to Yarr op</short_desc>
          <delta_ts>2022-02-02 13:55:18 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1835797</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-01-31 17:44:06 -0800</bug_when>
    <thetext>[JSC] YarrJIT m_checkedOffset should be pre-computed and stored to Yarr op</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835798</commentid>
    <comment_count>1</comment_count>
      <attachid>450486</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-01-31 17:45:36 -0800</bug_when>
    <thetext>Created attachment 450486
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835799</commentid>
    <comment_count>2</comment_count>
      <attachid>450487</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-01-31 17:47:18 -0800</bug_when>
    <thetext>Created attachment 450487
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836106</commentid>
    <comment_count>3</comment_count>
      <attachid>450558</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-01 12:44:24 -0800</bug_when>
    <thetext>Created attachment 450558
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836613</commentid>
    <comment_count>4</comment_count>
      <attachid>450558</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2022-02-02 13:30:44 -0800</bug_when>
    <thetext>Comment on attachment 450558
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836624</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-02 13:54:32 -0800</bug_when>
    <thetext>Committed r288995 (246714@main): &lt;https://commits.webkit.org/246714@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450558.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836626</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-02 13:55:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/88399797&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450486</attachid>
            <date>2022-01-31 17:45:36 -0800</date>
            <delta_ts>2022-01-31 17:47:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235932-20220131174535.patch</filename>
            <type>text/plain</type>
            <size>53152</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4ODM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
YmRjN2YxNTU3YjRkOTM4Y2YwZWJjNWFmZWUwMWMwYTc1N2ZkNjQwLi42ZmM0ZDcxZmViMzU4YWM4
MjIzMDQxY2EwNjQ3MDlkZWJmNjZiMjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAyMi0wMS0zMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnJKSVQgbV9jaGVja2VkT2Zmc2V0IHNob3VsZCBiZSBwcmUt
Y29tcHV0ZWQgYW5kIHN0b3JlZCB0byBZYXJyIG9wCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU5MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9mIGFkaG9jbHkgY2FsY3VsYXRpbmcgbV9j
aGVja2VkT2Zmc2V0IHdoaWxlIGdlbmVyYXRpbmcgdGhlIG1hY2hpbmUgY29kZSwKKyAgICAgICAg
bGV0J3MganVzdCBwcmUtY29tcHV0ZSBpdCBhbmQgc3RvcmUgaXQgdG8gWWFyciBKSVQgSVIgc28g
dGhhdCB3ZSBjYW4gc2ltcGxpZnkKKyAgICAgICAgbV9jaGVja2VkT2Zmc2V0IGhhbmRsaW5nLiBU
aGlzIHBhdmVzIHRoZSB3YXkgdG8gYWxzbyBwcmUtY29tcHV0ZSBzYWZlLWxlbmd0aAorICAgICAg
ICBzbyB0aGF0IHdlIGNhbiBza2lwIHNvbWUgb2YgbGVuZ3RoIGNoZWNrIGluIHBhcmVudGhlc2l6
ZWQtYXNzZXJ0aW9ucy4KKworICAgICAgICAqIHlhcnIvWWFyckpJVC5jcHA6CisgICAgICAgICog
eWFyci9ZYXJyUGF0dGVybi5oOgorICAgICAgICAoSlNDOjpZYXJyOjpDaGFyYWN0ZXJDbGFzczo6
Q2hhcmFjdGVyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuVGVybTo6UGF0dGVy
blRlcm0pOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuQWx0ZXJuYXRpdmU6OlBhdHRlcm5B
bHRlcm5hdGl2ZSk6CisgICAgICAgIChKU0M6OllhcnI6OlBhdHRlcm5EaXNqdW5jdGlvbjo6UGF0
dGVybkRpc2p1bmN0aW9uKToKKwogMjAyMi0wMS0zMSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2Vr
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1JJU0NWNjRdIEZpeCBvZmZsaW5lYXNtIGxvd2VyaW5n
IG9mIGFyaXRobWV0aWMgYnJhbmNoIGluc3RydWN0aW9ucyB3aXRoIGFkZHJlc3MgZGVzdGluYXRp
b25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCmluZGV4IGVhMWE3YjAxNDU1
NWMxODNjOWJiYTZlMWU3ZjU4MTFjNGE1Y2VhYmUuLmUzZjA3ZTllMWQwMTVjMzAwOGM0NmFkZGUw
MTIzN2U2M2QxNWQ0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCkBA
IC04ODgsNiArODg4LDE0IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8gewogICAgICAgICAvLyByZWNhbGN1bGF0aW5nIGl0LgogICAgICAgICBDaGVja2Vk
PHVuc2lnbmVkPiBtX2NoZWNrQWRqdXN0OwogCisgICAgICAgIC8vIFRoaXMgcmVjb3JkcyB0aGUg
Y3VycmVudCBpbnB1dCBvZmZzZXQgYmVpbmcgYXBwbGllZCBkdWUgdG8gdGhlIGN1cnJlbnQKKyAg
ICAgICAgLy8gc2V0IG9mIGFsdGVybmF0aXZlcyB3ZSBhcmUgbmVzdGVkIHdpdGhpbi4gRS5nLiB3
aGVuIG1hdGNoaW5nIHRoZQorICAgICAgICAvLyBjaGFyYWN0ZXIgJ2InIHdpdGhpbiB0aGUgcmVn
dWxhciBleHByZXNzaW9uIC9hYmMvLCB3ZSB3aWxsIGtub3cgdGhhdAorICAgICAgICAvLyB0aGUg
bWluaW11bSBzaXplIGZvciB0aGUgYWx0ZXJuYXRpdmUgaXMgMywgY2hlY2tlZCB1cG9uIGVudHJ5
IHRvIHRoZQorICAgICAgICAvLyBhbHRlcm5hdGl2ZSwgYW5kIHRoYXQgJ2InIGlzIGF0IG9mZnNl
dCAxIGZyb20gdGhlIHN0YXJ0LCBhbmQgYXMgc3VjaAorICAgICAgICAvLyB3aGVuIG1hdGNoaW5n
ICdiJyB3ZSBuZWVkIHRvIGFwcGx5IGFuIG9mZnNldCBvZiAtMiB0byB0aGUgbG9hZC4KKyAgICAg
ICAgQ2hlY2tlZDx1bnNpZ25lZD4gbV9jaGVja2VkT2Zmc2V0IHsgfTsKKwogICAgICAgICAvLyBV
c2VkIGJ5IFlhcnJPcENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlTmV4dC9FbmQgdG8gaG9sZCB0aGUg
cG9pbnRlciB0byB0aGUKICAgICAgICAgLy8gdmFsdWUgdGhhdCB3aWxsIGJlIHB1c2hlZCBpbnRv
IHRoZSBwYXR0ZXJuJ3MgZnJhbWUgdG8gcmV0dXJuIHRvLAogICAgICAgICAvLyB1cG9uIGJhY2t0
cmFja2luZyBiYWNrIGludG8gdGhlIGRpc2p1bmN0aW9uLgpAQCAtMTA1Miw5ICsxMDYwLDkgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAKICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBtYXRjaERlc3Q7CiAgICAgICAgICAgICBp
ZiAoIXRlcm0tPmlucHV0UG9zaXRpb24pCi0gICAgICAgICAgICAgICAgbWF0Y2hEZXN0LmFwcGVu
ZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIG1fcmVncy5pbmRleCwgTWFj
cm9Bc3NlbWJsZXI6OkltbTMyKG1fY2hlY2tlZE9mZnNldCkpKTsKKyAgICAgICAgICAgICAgICBt
YXRjaERlc3QuYXBwZW5kKG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgbV9y
ZWdzLmluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIob3AubV9jaGVja2VkT2Zmc2V0KSkpOwog
Ci0gICAgICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0
UG9zaXRpb24gKyAxLCBjaGFyYWN0ZXIpOworICAgICAgICAgICAgcmVhZENoYXJhY3RlcihvcC5t
X2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uICsgMSwgY2hhcmFjdGVyKTsKICAg
ICAgICAgICAgIG1hdGNoQ2hhcmFjdGVyQ2xhc3MoY2hhcmFjdGVyLCBtYXRjaERlc3QsIG1fcGF0
dGVybi5uZXdsaW5lQ2hhcmFjdGVyQ2xhc3MoKSk7CiAgICAgICAgICAgICBvcC5tX2p1bXBzLmFw
cGVuZChtX2ppdC5qdW1wKCkpOwogCkBAIC0xMDY0LDcgKzEwNzIsNyBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgIGlmICh0ZXJt
LT5pbnB1dFBvc2l0aW9uKQogICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKG1faml0
Lmp1bXAoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgb3AubV9qdW1wcy5h
cHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBtX3JlZ3MuaW5k
ZXgsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihtX2NoZWNrZWRPZmZzZXQpKSk7CisgICAgICAgICAg
ICAgICAgb3AubV9qdW1wcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBtX3JlZ3MuaW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihvcC5tX2NoZWNrZWRP
ZmZzZXQpKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgdm9pZCBiYWNrdHJhY2tBc3NlcnRpb25C
T0woc2l6ZV90IG9wSW5kZXgpCkBAIC0xMDgxLDE2ICsxMDg5LDE2IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICAgICAgY29uc3QgTWFj
cm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgY2hhcmFjdGVyID0gbV9yZWdzLnJlZ1QwOwogCiAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgbWF0Y2hEZXN0OwotICAgICAgICAgICAg
aWYgKHRlcm0tPmlucHV0UG9zaXRpb24gPT0gbV9jaGVja2VkT2Zmc2V0KQorICAgICAgICAgICAg
aWYgKHRlcm0tPmlucHV0UG9zaXRpb24gPT0gb3AubV9jaGVja2VkT2Zmc2V0KQogICAgICAgICAg
ICAgICAgIG1hdGNoRGVzdC5hcHBlbmQoYXRFbmRPZklucHV0KCkpOwogCi0gICAgICAgICAgICBy
ZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24sIGNoYXJh
Y3Rlcik7CisgICAgICAgICAgICByZWFkQ2hhcmFjdGVyKG9wLm1fY2hlY2tlZE9mZnNldCAtIHRl
cm0tPmlucHV0UG9zaXRpb24sIGNoYXJhY3Rlcik7CiAgICAgICAgICAgICBtYXRjaENoYXJhY3Rl
ckNsYXNzKGNoYXJhY3RlciwgbWF0Y2hEZXN0LCBtX3BhdHRlcm4ubmV3bGluZUNoYXJhY3RlckNs
YXNzKCkpOwogICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKIAog
ICAgICAgICAgICAgbWF0Y2hEZXN0LmxpbmsoJm1faml0KTsKICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGlmICh0ZXJtLT5pbnB1dFBvc2l0aW9uID09IG1fY2hlY2tlZE9mZnNldCkKKyAg
ICAgICAgICAgIGlmICh0ZXJtLT5pbnB1dFBvc2l0aW9uID09IG9wLm1fY2hlY2tlZE9mZnNldCkK
ICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChub3RBdEVuZE9mSW5wdXQoKSk7CiAg
ICAgICAgICAgICAvLyBFcmssIHJlYWxseSBzaG91bGQgcG9pc29uIG91dCB0aGVzZSBhbHRlcm5h
dGl2ZXMgZWFybHkuIDotLwogICAgICAgICAgICAgZWxzZQpAQCAtMTExMCwxMCArMTExOCwxMCBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKIAogICAg
ICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjaGFyYWN0ZXIgPSBtX3JlZ3Mu
cmVnVDA7CiAKLSAgICAgICAgaWYgKHRlcm0tPmlucHV0UG9zaXRpb24gPT0gbV9jaGVja2VkT2Zm
c2V0KQorICAgICAgICBpZiAodGVybS0+aW5wdXRQb3NpdGlvbiA9PSBvcC5tX2NoZWNrZWRPZmZz
ZXQpCiAgICAgICAgICAgICBuZXh0SXNOb3RXb3JkQ2hhci5hcHBlbmQoYXRFbmRPZklucHV0KCkp
OwogCi0gICAgICAgIHJlYWRDaGFyYWN0ZXIobV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQ
b3NpdGlvbiwgY2hhcmFjdGVyKTsKKyAgICAgICAgcmVhZENoYXJhY3RlcihvcC5tX2NoZWNrZWRP
ZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uLCBjaGFyYWN0ZXIpOwogCiAgICAgICAgIENoYXJh
Y3RlckNsYXNzKiB3b3JkY2hhckNoYXJhY3RlckNsYXNzOwogCkBAIC0xMTM1LDggKzExNDMsOCBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgYXRCZWdpbjsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXBMaXN0IG1hdGNoRGVzdDsKICAgICAgICAgaWYgKCF0ZXJtLT5pbnB1dFBvc2l0aW9uKQot
ICAgICAgICAgICAgYXRCZWdpbiA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgbV9yZWdzLmluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIobV9jaGVja2VkT2Zmc2V0KSk7
Ci0gICAgICAgIHJlYWRDaGFyYWN0ZXIobV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQb3Np
dGlvbiArIDEsIGNoYXJhY3Rlcik7CisgICAgICAgICAgICBhdEJlZ2luID0gbV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBtX3JlZ3MuaW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpJ
bW0zMihvcC5tX2NoZWNrZWRPZmZzZXQpKTsKKyAgICAgICAgcmVhZENoYXJhY3RlcihvcC5tX2No
ZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uICsgMSwgY2hhcmFjdGVyKTsKIAogICAg
ICAgICBDaGFyYWN0ZXJDbGFzcyogd29yZGNoYXJDaGFyYWN0ZXJDbGFzczsKIApAQCAtMTE5Myw3
ICsxMjAxLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5m
byB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBsb29wKCZtX2ppdCk7CiAKICAgICAg
ICAgcmVhZENoYXJhY3RlcigwLCBwYXR0ZXJuQ2hhcmFjdGVyLCBwYXR0ZXJuSW5kZXgpOwotICAg
ICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24s
IGNoYXJhY3Rlcik7CisgICAgICAgIHJlYWRDaGFyYWN0ZXIob3AubV9jaGVja2VkT2Zmc2V0IC0g
dGVybS0+aW5wdXRQb3NpdGlvbiwgY2hhcmFjdGVyKTsKICAgICAKICAgICAgICAgaWYgKCFtX3Bh
dHRlcm4uaWdub3JlQ2FzZSgpKQogICAgICAgICAgICAgY2hhcmFjdGVyTWF0Y2hGYWlscy5hcHBl
bmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjaGFyYWN0ZXIsIHBh
dHRlcm5DaGFyYWN0ZXIpKTsKQEAgLTE1MjUsNDAgKzE1MzMsNDAgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAgICAgICBzd2l0Y2ggKG51
bWJlckNoYXJhY3RlcnMpIHsKICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAv
LyBVc2UgMzJiaXQgd2lkdGggb2YgYWxsQ2hhcmFjdGVycyBzaW5jZSBZYXJyIGNvdW50cyBzdXJy
b2dhdGUgcGFpcnMgYXMgb25lIGNoYXJhY3RlciB3aXRoIHVuaWNvZGUgZmxhZy4KLSAgICAgICAg
ICAgICAgICBjaGVjazEobV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENo
YXJhY3RlcnMgJiAweGZmZmZmZmZmKTsKKyAgICAgICAgICAgICAgICBjaGVjazEob3AubV9jaGVj
a2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMgJiAweGZmZmZmZmZm
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjYXNlIDI6IHsKLSAgICAg
ICAgICAgICAgICBjaGVjazIobV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFs
bENoYXJhY3RlcnMgJiAweGZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmKTsKKyAgICAgICAg
ICAgICAgICBjaGVjazIob3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFs
bENoYXJhY3RlcnMgJiAweGZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIDM6IHsKLSAg
ICAgICAgICAgICAgICBjaGVjazIobV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24s
IGFsbENoYXJhY3RlcnMgJiAweGZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmKTsKLSAgICAg
ICAgICAgICAgICBjaGVjazEobV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24gLSAy
LCAoYWxsQ2hhcmFjdGVycyA+PiAxNikgJiAweGZmKTsKKyAgICAgICAgICAgICAgICBjaGVjazIo
b3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMgJiAw
eGZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmKTsKKyAgICAgICAgICAgICAgICBjaGVjazEo
b3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24gLSAyLCAoYWxsQ2hhcmFjdGVy
cyA+PiAxNikgJiAweGZmKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBjYXNlIDQ6IHsKLSAgICAgICAgICAgICAgICBjaGVjazQobV9jaGVja2Vk
T2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMgJiAweGZmZmZmZmZmLCBp
Z25vcmVDYXNlTWFzayAmIDB4ZmZmZmZmZmYpOworICAgICAgICAgICAgICAgIGNoZWNrNChvcC5t
X2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFjdGVycyAmIDB4ZmZm
ZmZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmZmZmZik7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkgfHwgQ1BV
KFJJU0NWNjQpCiAgICAgICAgICAgICBjYXNlIDU6IHsKLSAgICAgICAgICAgICAgICBjaGVjazQo
bV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMgJiAweGZm
ZmZmZmZmLCBpZ25vcmVDYXNlTWFzayAmIDB4ZmZmZmZmZmYpOwotICAgICAgICAgICAgICAgIGNo
ZWNrMShtX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiAtIDQsIChhbGxDaGFyYWN0
ZXJzID4+IDMyKSAmIDB4ZmYpOworICAgICAgICAgICAgICAgIGNoZWNrNChvcC5tX2NoZWNrZWRP
ZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFjdGVycyAmIDB4ZmZmZmZmZmYsIGln
bm9yZUNhc2VNYXNrICYgMHhmZmZmZmZmZik7CisgICAgICAgICAgICAgICAgY2hlY2sxKG9wLm1f
Y2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uIC0gNCwgKGFsbENoYXJhY3RlcnMgPj4g
MzIpICYgMHhmZik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgY2FzZSA2OiB7Ci0gICAgICAgICAgICAgICAgY2hlY2s0KG1fY2hlY2tlZE9mZnNl
dCAtIHN0YXJ0VGVybVBvc2l0aW9uLCBhbGxDaGFyYWN0ZXJzICYgMHhmZmZmZmZmZiwgaWdub3Jl
Q2FzZU1hc2sgJiAweGZmZmZmZmZmKTsKLSAgICAgICAgICAgICAgICBjaGVjazIobV9jaGVja2Vk
T2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24gLSA0LCAoYWxsQ2hhcmFjdGVycyA+PiAzMikgJiAw
eGZmZmYsIChpZ25vcmVDYXNlTWFzayA+PiAzMikgJiAweGZmZmYpOworICAgICAgICAgICAgICAg
IGNoZWNrNChvcC5tX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFj
dGVycyAmIDB4ZmZmZmZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmZmZmZik7CisgICAgICAg
ICAgICAgICAgY2hlY2syKG9wLm1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uIC0g
NCwgKGFsbENoYXJhY3RlcnMgPj4gMzIpICYgMHhmZmZmLCAoaWdub3JlQ2FzZU1hc2sgPj4gMzIp
ICYgMHhmZmZmKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBjYXNlIDc6IHsKLSAgICAgICAgICAgICAgICBjaGVjazQobV9jaGVja2VkT2Zmc2V0
IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMgJiAweGZmZmZmZmZmLCBpZ25vcmVD
YXNlTWFzayAmIDB4ZmZmZmZmZmYpOwotICAgICAgICAgICAgICAgIGNoZWNrMihtX2NoZWNrZWRP
ZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiAtIDQsIChhbGxDaGFyYWN0ZXJzID4+IDMyKSAmIDB4
ZmZmZiwgKGlnbm9yZUNhc2VNYXNrID4+IDMyKSAmIDB4ZmZmZik7Ci0gICAgICAgICAgICAgICAg
Y2hlY2sxKG1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uIC0gNiwgKGFsbENoYXJh
Y3RlcnMgPj4gNDgpICYgMHhmZik7CisgICAgICAgICAgICAgICAgY2hlY2s0KG9wLm1fY2hlY2tl
ZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uLCBhbGxDaGFyYWN0ZXJzICYgMHhmZmZmZmZmZiwg
aWdub3JlQ2FzZU1hc2sgJiAweGZmZmZmZmZmKTsKKyAgICAgICAgICAgICAgICBjaGVjazIob3Au
bV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24gLSA0LCAoYWxsQ2hhcmFjdGVycyA+
PiAzMikgJiAweGZmZmYsIChpZ25vcmVDYXNlTWFzayA+PiAzMikgJiAweGZmZmYpOworICAgICAg
ICAgICAgICAgIGNoZWNrMShvcC5tX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiAt
IDYsIChhbGxDaGFyYWN0ZXJzID4+IDQ4KSAmIDB4ZmYpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgODogewotICAgICAgICAgICAgICAg
IGNoZWNrOChtX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFjdGVy
cywgaWdub3JlQ2FzZU1hc2spOworICAgICAgICAgICAgICAgIGNoZWNrOChvcC5tX2NoZWNrZWRP
ZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFjdGVycywgaWdub3JlQ2FzZU1hc2sp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICNlbmRpZgpAQCAtMTU5
MSwxOCArMTU5OSwxOCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJK
SVRJbmZvIHsKICAgICAgICAgICAgIHN3aXRjaCAobnVtYmVyQ2hhcmFjdGVycykgewogICAgICAg
ICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgIC8vIFVzZSAzMmJpdCB3aWR0aCBvZiBhbGxD
aGFyYWN0ZXJzIHNpbmNlIFlhcnIgY291bnRzIHN1cnJvZ2F0ZSBwYWlycyBhcyBvbmUgY2hhcmFj
dGVyIHdpdGggdW5pY29kZSBmbGFnLgotICAgICAgICAgICAgICAgIGNoZWNrMShtX2NoZWNrZWRP
ZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFjdGVycyAmIDB4ZmZmZmZmZmYpOwor
ICAgICAgICAgICAgICAgIGNoZWNrMShvcC5tX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3Np
dGlvbiwgYWxsQ2hhcmFjdGVycyAmIDB4ZmZmZmZmZmYpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgICAgICBjaGVjazIobV9jaGVja2Vk
T2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMgJiAweGZmZmZmZmZmLCBp
Z25vcmVDYXNlTWFzayAmIDB4ZmZmZmZmZmYpOworICAgICAgICAgICAgICAgIGNoZWNrMihvcC5t
X2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFjdGVycyAmIDB4ZmZm
ZmZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmZmZmZik7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCiAgICAg
ICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAgICAgICAgY2hlY2syKG1fY2hlY2tlZE9mZnNldCAt
IHN0YXJ0VGVybVBvc2l0aW9uLCBhbGxDaGFyYWN0ZXJzICYgMHhmZmZmZmZmZiwgaWdub3JlQ2Fz
ZU1hc2sgJiAweGZmZmZmZmZmKTsKLSAgICAgICAgICAgICAgICBjaGVjazEobV9jaGVja2VkT2Zm
c2V0IC0gc3RhcnRUZXJtUG9zaXRpb24gLSAyLCAoYWxsQ2hhcmFjdGVycyA+PiAzMikgJiAweGZm
ZmYpOworICAgICAgICAgICAgICAgIGNoZWNrMihvcC5tX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRl
cm1Qb3NpdGlvbiwgYWxsQ2hhcmFjdGVycyAmIDB4ZmZmZmZmZmYsIGlnbm9yZUNhc2VNYXNrICYg
MHhmZmZmZmZmZik7CisgICAgICAgICAgICAgICAgY2hlY2sxKG9wLm1fY2hlY2tlZE9mZnNldCAt
IHN0YXJ0VGVybVBvc2l0aW9uIC0gMiwgKGFsbENoYXJhY3RlcnMgPj4gMzIpICYgMHhmZmZmKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAg
ICAgICAgY2hlY2s0KG1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uLCBhbGxDaGFy
YWN0ZXJzLCBpZ25vcmVDYXNlTWFzayk7CisgICAgICAgICAgICAgICAgY2hlY2s0KG9wLm1fY2hl
Y2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uLCBhbGxDaGFyYWN0ZXJzLCBpZ25vcmVDYXNl
TWFzayk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAgICAgICAgICAgICB9CkBA
IC0xNjMwLDcgKzE2MzgsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlh
cnJKSVRJbmZvIHsKICAgICAgICAgbV9qaXQuc3ViMzIobV9yZWdzLmluZGV4LCBNYWNyb0Fzc2Vt
Ymxlcjo6SW1tMzIoc2NhbGVkTWF4Q291bnQpLCBjb3VudFJlZ2lzdGVyKTsKIAogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6TGFiZWwgbG9vcCgmbV9qaXQpOwotICAgICAgICByZWFkQ2hhcmFjdGVy
KG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24gLSBzY2FsZWRNYXhDb3VudCwg
Y2hhcmFjdGVyLCBjb3VudFJlZ2lzdGVyKTsKKyAgICAgICAgcmVhZENoYXJhY3RlcihvcC5tX2No
ZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uIC0gc2NhbGVkTWF4Q291bnQsIGNoYXJh
Y3RlciwgY291bnRSZWdpc3Rlcik7CiAgICAgICAgIC8vIEZvciBjYXNlLWluc2VzaXRpdmUgY29t
cGFyZXMsIG5vbi1hc2NpaSBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBkaWZmZXJlbnQKICAgICAgICAg
Ly8gdXBwZXIgJiBsb3dlciBjYXNlIHJlcHJlc2VudGF0aW9ucyBhcmUgY29udmVydGVkIHRvIGEg
Y2hhcmFjdGVyIGNsYXNzLgogICAgICAgICBBU1NFUlQoIW1fcGF0dGVybi5pZ25vcmVDYXNlKCkg
fHwgaXNBU0NJSUFscGhhKGNoKSB8fCBpc0Nhbm9uaWNhbGx5VW5pcXVlKGNoLCBtX2Nhbm9uaWNh
bE1vZGUpKTsKQEAgLTE2NjksNyArMTY3Nyw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBM
aXN0IGZhaWx1cmVzOwogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxvb3AoJm1f
aml0KTsKICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZChhdEVuZE9mSW5wdXQoKSk7Ci0gICAg
ICAgICAgICBmYWlsdXJlcy5hcHBlbmQoanVtcElmQ2hhck5vdEVxdWFscyhjaCwgbV9jaGVja2Vk
T2Zmc2V0IC0gdGVybS0+aW5wdXRQb3NpdGlvbiwgY2hhcmFjdGVyKSk7CisgICAgICAgICAgICBm
YWlsdXJlcy5hcHBlbmQoanVtcElmQ2hhck5vdEVxdWFscyhjaCwgb3AubV9jaGVja2VkT2Zmc2V0
IC0gdGVybS0+aW5wdXRQb3NpdGlvbiwgY2hhcmFjdGVyKSk7CiAKICAgICAgICAgICAgIG1faml0
LmFkZDMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMSksIG1fcmVncy5pbmRleCk7CiAj
aWYgRU5BQkxFKFlBUlJfSklUX1VOSUNPREVfRVhQUkVTU0lPTlMpCkBAIC0xNzQzLDcgKzE3NTEs
NyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAg
ICAgICAgICAgIG5vbkdyZWVkeUZhaWx1cmVzLmFwcGVuZChhdEVuZE9mSW5wdXQoKSk7CiAgICAg
ICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlNYXhDb3VudCAhPSBxdWFudGlmeUluZmluaXRlKQog
ICAgICAgICAgICAgICAgIG5vbkdyZWVkeUZhaWx1cmVzLmFwcGVuZChtX2ppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwsIGNvdW50UmVnaXN0ZXIsIE1hY3JvQXNzZW1ibGVyOjpJbW0z
Mih0ZXJtLT5xdWFudGl0eU1heENvdW50KSkpOwotICAgICAgICAgICAgbm9uR3JlZWR5RmFpbHVy
ZXMuYXBwZW5kKGp1bXBJZkNoYXJOb3RFcXVhbHMoY2gsIG1fY2hlY2tlZE9mZnNldCAtIHRlcm0t
PmlucHV0UG9zaXRpb24sIGNoYXJhY3RlcikpOworICAgICAgICAgICAgbm9uR3JlZWR5RmFpbHVy
ZXMuYXBwZW5kKGp1bXBJZkNoYXJOb3RFcXVhbHMoY2gsIG9wLm1fY2hlY2tlZE9mZnNldCAtIHRl
cm0tPmlucHV0UG9zaXRpb24sIGNoYXJhY3RlcikpOwogCiAgICAgICAgICAgICBtX2ppdC5hZGQz
MihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDEpLCBtX3JlZ3MuaW5kZXgpOwogI2lmIEVO
QUJMRShZQVJSX0pJVF9VTklDT0RFX0VYUFJFU1NJT05TKQpAQCAtMTc4Myw3ICsxNzkxLDcgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAg
IH0KIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgbWF0Y2hEZXN0OwotICAgICAg
ICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24sIGNo
YXJhY3Rlcik7CisgICAgICAgIHJlYWRDaGFyYWN0ZXIob3AubV9jaGVja2VkT2Zmc2V0IC0gdGVy
bS0+aW5wdXRQb3NpdGlvbiwgY2hhcmFjdGVyKTsKICAgICAgICAgLy8gSWYgd2UgYXJlIG1hdGNo
aW5nIHRoZSAiYW55IGNoYXJhY3RlciIgYnVpbHRpbiBjbGFzcyB3ZSBvbmx5IG5lZWQgdG8gcmVh
ZCB0aGUKICAgICAgICAgLy8gY2hhcmFjdGVyIGFuZCBkb24ndCBuZWVkIHRvIG1hdGNoIGFzIGl0
IHdpbGwgYWx3YXlzIHN1Y2NlZWQuCiAgICAgICAgIGlmICh0ZXJtLT5pbnZlcnQoKSB8fCAhdGVy
bS0+Y2hhcmFjdGVyQ2xhc3MtPm1fYW55Q2hhcmFjdGVyKSB7CkBAIC0xODQwLDcgKzE4NDgsNyBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKIAogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbG9vcCgmbV9qaXQpOwogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcExpc3QgbWF0Y2hEZXN0OwotICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hl
Y2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24gLSBzY2FsZWRNYXhDb3VudCwgY2hhcmFj
dGVyLCBjb3VudFJlZ2lzdGVyKTsKKyAgICAgICAgcmVhZENoYXJhY3RlcihvcC5tX2NoZWNrZWRP
ZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uIC0gc2NhbGVkTWF4Q291bnQsIGNoYXJhY3Rlciwg
Y291bnRSZWdpc3Rlcik7CiAgICAgICAgIC8vIElmIHdlIGFyZSBtYXRjaGluZyB0aGUgImFueSBj
aGFyYWN0ZXIiIGJ1aWx0aW4gY2xhc3Mgd2Ugb25seSBuZWVkIHRvIHJlYWQgdGhlCiAgICAgICAg
IC8vIGNoYXJhY3RlciBhbmQgZG9uJ3QgbmVlZCB0byBtYXRjaCBhcyBpdCB3aWxsIGFsd2F5cyBz
dWNjZWVkLgogICAgICAgICBpZiAodGVybS0+aW52ZXJ0KCkgfHwgIXRlcm0tPmNoYXJhY3RlckNs
YXNzLT5tX2FueUNoYXJhY3RlcikgewpAQCAtMTkwMCwxMSArMTkwOCwxMSBAQCBjbGFzcyBZYXJy
R2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgIGZhaWx1
cmVzLmFwcGVuZChhdEVuZE9mSW5wdXQoKSk7CiAKICAgICAgICAgaWYgKHRlcm0tPmludmVydCgp
KSB7Ci0gICAgICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlu
cHV0UG9zaXRpb24sIGNoYXJhY3Rlcik7CisgICAgICAgICAgICByZWFkQ2hhcmFjdGVyKG9wLm1f
Y2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24sIGNoYXJhY3Rlcik7CiAgICAgICAg
ICAgICBtYXRjaENoYXJhY3RlckNsYXNzKGNoYXJhY3RlciwgZmFpbHVyZXMsIHRlcm0tPmNoYXJh
Y3RlckNsYXNzKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wTGlzdCBtYXRjaERlc3Q7Ci0gICAgICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tl
ZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24sIGNoYXJhY3Rlcik7CisgICAgICAgICAgICBy
ZWFkQ2hhcmFjdGVyKG9wLm1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24sIGNo
YXJhY3Rlcik7CiAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgbWF0Y2hpbmcgdGhlICJhbnkgY2hh
cmFjdGVyIiBidWlsdGluIGNsYXNzIGZvciBub24tdW5pY29kZSBwYXR0ZXJucywKICAgICAgICAg
ICAgIC8vIHdlIG9ubHkgbmVlZCB0byByZWFkIHRoZSBjaGFyYWN0ZXIgYW5kIGRvbid0IG5lZWQg
dG8gbWF0Y2ggYXMgaXQgd2lsbCBhbHdheXMgc3VjY2VlZC4KICAgICAgICAgICAgIGlmICghdGVy
bS0+Y2hhcmFjdGVyQ2xhc3MtPm1fYW55Q2hhcmFjdGVyKSB7CkBAIC0xOTY1LDcgKzE5NzMsNyBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCByZW1hdGNoTG9vcCgmbV9qaXQpOwogICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZVJlbWF0Y2hpbmcgPSBtX2ppdC5icmFuY2hU
ZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGNvdW50UmVnaXN0ZXIpOwogCi0gICAgICAgICAg
ICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24sIGNo
YXJhY3Rlcik7CisgICAgICAgICAgICByZWFkQ2hhcmFjdGVyKG9wLm1fY2hlY2tlZE9mZnNldCAt
IHRlcm0tPmlucHV0UG9zaXRpb24sIGNoYXJhY3Rlcik7CiAKICAgICAgICAgICAgIG1faml0LnN1
YjMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMSksIGNvdW50UmVnaXN0ZXIpOwogICAg
ICAgICAgICAgbV9qaXQuYWRkMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigxKSwgbV9y
ZWdzLmluZGV4KTsKQEAgLTIwMzAsNyArMjAzOCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmlu
YWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICBub25HcmVlZHlGYWlsdXJlcy5hcHBl
bmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBjb3VudFJlZ2lzdGVyLCBN
YWNyb0Fzc2VtYmxlcjo6SW1tMzIodGVybS0+cXVhbnRpdHlNYXhDb3VudCkpKTsKIAogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgbWF0Y2hEZXN0OwotICAgICAgICByZWFkQ2hhcmFj
dGVyKG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24sIGNoYXJhY3Rlcik7Cisg
ICAgICAgIHJlYWRDaGFyYWN0ZXIob3AubV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQb3Np
dGlvbiwgY2hhcmFjdGVyKTsKICAgICAgICAgLy8gSWYgd2UgYXJlIG1hdGNoaW5nIHRoZSAiYW55
IGNoYXJhY3RlciIgYnVpbHRpbiBjbGFzcyBmb3Igbm9uLXVuaWNvZGUgcGF0dGVybnMsCiAgICAg
ICAgIC8vIHdlIG9ubHkgbmVlZCB0byByZWFkIHRoZSBjaGFyYWN0ZXIgYW5kIGRvbid0IG5lZWQg
dG8gbWF0Y2ggYXMgaXQgd2lsbCBhbHdheXMgc3VjY2VlZC4KICAgICAgICAgaWYgKHRlcm0tPmlu
dmVydCgpIHx8ICF0ZXJtLT5jaGFyYWN0ZXJDbGFzcy0+bV9hbnlDaGFyYWN0ZXIpIHsKQEAgLTIz
MjUsNyArMjMzMyw2IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJ
VEluZm8gewogICAgICAgICAgICAgICAgIC8vIFVwb24gZW50cnkgYXQgdGhlIGhlYWQgb2YgdGhl
IHNldCBvZiBhbHRlcm5hdGl2ZXMsIGNoZWNrIGlmIGlucHV0IGlzIGF2YWlsYWJsZQogICAgICAg
ICAgICAgICAgIC8vIHRvIHJ1biB0aGUgZmlyc3QgYWx0ZXJuYXRpdmUuIChUaGlzIHByb2dyZXNz
ZXMgdGhlIGlucHV0IHBvc2l0aW9uKS4KICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVu
ZChqdW1wSWZOb0F2YWlsYWJsZUlucHV0KGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSk7Ci0g
ICAgICAgICAgICAgICAgbV9jaGVja2VkT2Zmc2V0ICs9IGFsdGVybmF0aXZlLT5tX21pbmltdW1T
aXplOwogCiAgICAgICAgICAgICAgICAgLy8gV2Ugd2lsbCByZWVudGVyIGFmdGVyIHRoZSBjaGVj
aywgYW5kIGFzc3VtZSB0aGUgaW5wdXQgcG9zaXRpb24gdG8gaGF2ZSBiZWVuCiAgICAgICAgICAg
ICAgICAgLy8gc2V0IGFzIGFwcHJvcHJpYXRlIHRvIHRoaXMgYWx0ZXJuYXRpdmUuCkBAIC0yMzUx
LDcgKzIzNTgsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJ
bmZvIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2
ZXJib3NlUmVnRXhwQ29tcGlsYXRpb24oKSwgIkZvdW5kIGNoYXJhY3RlcnMgZmFzdHBhdGggbG9v
a2FoZWFkICIsIGNoYXJhY3RlcnNGYXN0UGF0aCwgIiByYW5nZTpbIiwgYmVnaW5JbmRleCwgIiwg
IiwgZW5kSW5kZXgsICIpIik7CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGxv
b3BIZWFkID0gbV9qaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFk
Q2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIGVuZEluZGV4ICsgMSwgbV9yZWdzLnJlZ1QwKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkQ2hhcmFjdGVyKG9wLm1fY2hlY2tlZE9m
ZnNldCAtIGVuZEluZGV4ICsgMSwgbV9yZWdzLnJlZ1QwKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXRjaGVkLmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1
YWwsIG1fcmVncy5yZWdUMCwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihjaGFyYWN0ZXJz
RmFzdFBhdGguYXQoMCkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoYXJh
Y3RlcnNGYXN0UGF0aC5zaXplKCkgPiAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtYXRjaGVkLmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIG1f
cmVncy5yZWdUMCwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihjaGFyYWN0ZXJzRmFzdFBh
dGguYXQoMSkpKSk7CkBAIC0yMzYyLDcgKzIzNjksNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZp
bmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocG9pbnRlciksIG1fcmVn
cy5yZWdUMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsb29wSGVhZCA9IG1f
aml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZENoYXJhY3Rlciht
X2NoZWNrZWRPZmZzZXQgLSBlbmRJbmRleCArIDEsIG1fcmVncy5yZWdUMCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVhZENoYXJhY3RlcihvcC5tX2NoZWNrZWRPZmZzZXQgLSBlbmRJ
bmRleCArIDEsIG1fcmVncy5yZWdUMCk7CiAjaWYgQ1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihCb3llck1v
b3JlQml0bWFwOjpNYXA6OldvcmRUeXBlKSA9PSBzaXplb2YodWludDY0X3QpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KDEgPDwgNiA9PSA2NCk7CkBAIC0yNDcx
LDEwICsyNDc4LDYgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklU
SW5mbyB7CiAgICAgICAgICAgICAgICAgICAgIG9wLm1fcmVlbnRyeSA9IG1faml0LmxhYmVsKCk7
CiAgICAgICAgICAgICAgICAgICAgIG1faml0LnN1YjMyKE1hY3JvQXNzZW1ibGVyOjpJbW0zMihw
cmlvckFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSwgbV9yZWdzLmluZGV4KTsKICAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAob3AubV9vcCA9PSBZYXJyT3BDb2RlOjpC
b2R5QWx0ZXJuYXRpdmVOZXh0KQotICAgICAgICAgICAgICAgICAgICBtX2NoZWNrZWRPZmZzZXQg
Kz0gYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7Ci0gICAgICAgICAgICAgICAgbV9jaGVja2Vk
T2Zmc2V0IC09IHByaW9yQWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKQEAgLTI1MDYsOCArMjUwOSw2IEBAIGNsYXNzIFlh
cnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICAgICAgICAg
ICAgICBvcC5tX2NoZWNrQWRqdXN0IC09IGRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXplOwogICAg
ICAgICAgICAgICAgIGlmIChvcC5tX2NoZWNrQWRqdXN0KQogICAgICAgICAgICAgICAgICAgICBv
cC5tX2p1bXBzLmFwcGVuZChqdW1wSWZOb0F2YWlsYWJsZUlucHV0KG9wLm1fY2hlY2tBZGp1c3Qp
KTsKLQotICAgICAgICAgICAgICAgIG1fY2hlY2tlZE9mZnNldCArPSBvcC5tX2NoZWNrQWRqdXN0
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2Fz
ZSBZYXJyT3BDb2RlOjpTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZU5leHQ6CkBAIC0yNTUzLDEwICsy
NTU0LDYgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7
CiAgICAgICAgICAgICAgICAgICAgIG9wLm1fY2hlY2tBZGp1c3QgLT0gZGlzanVuY3Rpb24tPm1f
bWluaW11bVNpemU7CiAgICAgICAgICAgICAgICAgaWYgKG9wLm1fY2hlY2tBZGp1c3QpCiAgICAg
ICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXBJZk5vQXZhaWxhYmxlSW5wdXQo
b3AubV9jaGVja0FkanVzdCkpOwotCi0gICAgICAgICAgICAgICAgWWFyck9wJiBsYXN0T3AgPSBt
X29wc1tvcC5tX3ByZXZpb3VzT3BdOwotICAgICAgICAgICAgICAgIG1fY2hlY2tlZE9mZnNldCAt
PSBsYXN0T3AubV9jaGVja0FkanVzdDsKLSAgICAgICAgICAgICAgICBtX2NoZWNrZWRPZmZzZXQg
Kz0gb3AubV9jaGVja0FkanVzdDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVF
bmQ6CkBAIC0yNTgwLDkgKzI1NzcsNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVi
bGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgICAgICAvLyB0aGVtIHRvIHRoaXMgbm9kZSdz
IG1fanVtcHMgbGlzdC4KICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmxpbmsoJm1faml0KTsK
ICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmNsZWFyKCk7Ci0KLSAgICAgICAgICAgICAgICBZ
YXJyT3AmIGxhc3RPcCA9IG1fb3BzW29wLm1fcHJldmlvdXNPcF07Ci0gICAgICAgICAgICAgICAg
bV9jaGVja2VkT2Zmc2V0IC09IGxhc3RPcC5tX2NoZWNrQWRqdXN0OwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogCkBAIC0yNjI2LDcgKzI2MjAsNyBAQCBjbGFzcyBZYXJy
R2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgICAgICAv
LyBvZmZzZXRzIG9ubHkgYWZ0ZXJ3YXJkcywgYXQgdGhlIHBvaW50IHRoZSByZXN1bHRzIGFycmF5
IGlzCiAgICAgICAgICAgICAgICAgLy8gYmVpbmcgYWNjZXNzZWQuCiAgICAgICAgICAgICAgICAg
aWYgKHRlcm0tPmNhcHR1cmUoKSAmJiBtX2NvbXBpbGVNb2RlID09IEpJVENvbXBpbGVNb2RlOjpJ
bmNsdWRlU3VicGF0dGVybnMpIHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5wdXRP
ZmZzZXQgPSBtX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uOworICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnB1dE9mZnNldCA9IG9wLm1fY2hlY2tlZE9mZnNldCAtIHRl
cm0tPmlucHV0UG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0
eVR5cGUgPT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnB1dE9mZnNldCArPSB0ZXJtLT5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+bV9taW5p
bXVtU2l6ZTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0T2Zmc2V0KSB7CkBAIC0yNjU1
LDcgKzI2NDksNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJ
bmZvIHsKICAgICAgICAgICAgICAgICAvLyBvZmZzZXRzIG9ubHkgYWZ0ZXJ3YXJkcywgYXQgdGhl
IHBvaW50IHRoZSByZXN1bHRzIGFycmF5IGlzCiAgICAgICAgICAgICAgICAgLy8gYmVpbmcgYWNj
ZXNzZWQuCiAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPmNhcHR1cmUoKSAmJiBtX2NvbXBpbGVN
b2RlID09IEpJVENvbXBpbGVNb2RlOjpJbmNsdWRlU3VicGF0dGVybnMpIHsKLSAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW5wdXRPZmZzZXQgPSBtX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5p
bnB1dFBvc2l0aW9uOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnB1dE9mZnNldCA9
IG9wLm1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb247CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChpbnB1dE9mZnNldCkgewogICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQu
c3ViMzIobV9yZWdzLmluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIoaW5wdXRPZmZzZXQpLCBp
bmRleFRlbXBvcmFyeSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdWJwYXR0ZXJuRW5k
KGluZGV4VGVtcG9yYXJ5LCB0ZXJtLT5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQpOwpAQCAtMjc2
MSw3ICsyNzU1LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklU
SW5mbyB7CiAgICAgICAgICAgICAgICAgLy8gYmVpbmcgYWNjZXNzZWQuCiAgICAgICAgICAgICAg
ICAgaWYgKHRlcm0tPmNhcHR1cmUoKSAmJiBtX2NvbXBpbGVNb2RlID09IEpJVENvbXBpbGVNb2Rl
OjpJbmNsdWRlU3VicGF0dGVybnMpIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWFjcm9B
c3NlbWJsZXI6OlJlZ2lzdGVySUQgaW5kZXhUZW1wb3JhcnkgPSBtX3JlZ3MucmVnVDA7Ci0gICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlucHV0T2Zmc2V0ID0gbV9jaGVja2VkT2Zmc2V0IC0g
dGVybS0+aW5wdXRQb3NpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5wdXRP
ZmZzZXQgPSBvcC5tX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uOwogICAgICAg
ICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJUeXBlOjpG
aXhlZENvdW50KQogICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRPZmZzZXQgKz0gdGVybS0+
cGFyZW50aGVzZXMuZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemU7CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChpbnB1dE9mZnNldCkgewpAQCAtMjgwMiw3ICsyNzk2LDcgQEAgY2xhc3MgWWFyckdl
bmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAgICAgICAgICAgaWYg
KHRlcm0tPmNhcHR1cmUoKSAmJiBtX2NvbXBpbGVNb2RlID09IEpJVENvbXBpbGVNb2RlOjpJbmNs
dWRlU3VicGF0dGVybnMpIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWFjcm9Bc3NlbWJs
ZXI6OlJlZ2lzdGVySUQgaW5kZXhUZW1wb3JhcnkgPSBtX3JlZ3MucmVnVDA7CiAgICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnB1dE9mZnNldCA9IG1f
Y2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb247CisgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGlucHV0T2Zmc2V0ID0gb3AubV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQ
b3NpdGlvbjsKICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0T2Zmc2V0KSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5zdWIzMihtX3JlZ3MuaW5kZXgsIE1hY3JvQXNzZW1ibGVy
OjpJbW0zMihpbnB1dE9mZnNldCksIGluZGV4VGVtcG9yYXJ5KTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFN1YnBhdHRlcm5FbmQoaW5kZXhUZW1wb3JhcnksIHRlcm0tPnBhcmVudGhlc2Vz
LnN1YnBhdHRlcm5JZCk7CkBAIC0yODQwLDEyICsyODM0LDggQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQg
cGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uID0gdGVybS0+ZnJhbWVMb2NhdGlvbjsKICAgICAgICAg
ICAgICAgICBzdG9yZVRvRnJhbWUobV9yZWdzLmluZGV4LCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRp
b24gKyBCYWNrVHJhY2tJbmZvUGFyZW50aGV0aWNhbEFzc2VydGlvbjo6YmVnaW5JbmRleCgpKTsK
IAotICAgICAgICAgICAgICAgIC8vIENoZWNrIAotICAgICAgICAgICAgICAgIG9wLm1fY2hlY2tB
ZGp1c3QgPSBtX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uOwogICAgICAgICAg
ICAgICAgIGlmIChvcC5tX2NoZWNrQWRqdXN0KQogICAgICAgICAgICAgICAgICAgICBtX2ppdC5z
dWIzMihNYWNyb0Fzc2VtYmxlcjo6SW1tMzIob3AubV9jaGVja0FkanVzdCksIG1fcmVncy5pbmRl
eCk7Ci0KLSAgICAgICAgICAgICAgICBtX2NoZWNrZWRPZmZzZXQgLT0gb3AubV9jaGVja0FkanVz
dDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNh
c2UgWWFyck9wQ29kZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbkVuZDogewpAQCAtMjg2MSw5ICsy
ODUxLDYgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7
CiAgICAgICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIG9wLm1fcmVlbnRyeSA9IG1faml0LmxhYmVsKCk7CiAgICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgWWFyck9wJiBsYXN0T3AgPSBtX29wc1tvcC5t
X3ByZXZpb3VzT3BdOwotICAgICAgICAgICAgICAgIG1fY2hlY2tlZE9mZnNldCArPSBsYXN0T3Au
bV9jaGVja0FkanVzdDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIApA
QCAtMjkyMywxMiArMjkxMCw2IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMg
WWFyckpJVEluZm8gewogICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRp
dmVOZXh0OiB7CiAgICAgICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2
ZSA9IG9wLm1fYWx0ZXJuYXRpdmU7CiAKLSAgICAgICAgICAgICAgICBtX2NoZWNrZWRPZmZzZXQg
LT0gYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7Ci0gICAgICAgICAgICAgICAgaWYgKG9wLm1f
b3AgPT0gWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlTmV4dCkgewotICAgICAgICAgICAgICAg
ICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIHByaW9yQWx0ZXJuYXRpdmUgPSBtX29wc1tvcC5tX3By
ZXZpb3VzT3BdLm1fYWx0ZXJuYXRpdmU7Ci0gICAgICAgICAgICAgICAgICAgIG1fY2hlY2tlZE9m
ZnNldCArPSBwcmlvckFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplOwotICAgICAgICAgICAgICAg
IH0KLQogICAgICAgICAgICAgICAgIC8vIElzIHRoaXMgdGhlIGxhc3QgYWx0ZXJuYXRpdmU/IElm
IG5vdCwgdGhlbiBpZiB3ZSBiYWNrdHJhY2sgdG8gdGhpcyBwb2ludCB3ZSBqdXN0CiAgICAgICAg
ICAgICAgICAgLy8gbmVlZCB0byBqdW1wIHRvIHRyeSB0byBtYXRjaCB0aGUgbmV4dCBhbHRlcm5h
dGl2ZS4KICAgICAgICAgICAgICAgICBpZiAobV9vcHNbb3AubV9uZXh0T3BdLm1fb3AgIT0gWWFy
ck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlRW5kKSB7CkBAIC0zMTI3LDkgKzMxMDgsNiBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAg
IGNhc2UgWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlRW5kOiB7CiAgICAgICAgICAgICAgICAg
Ly8gV2Ugc2hvdWxkIG5ldmVyIGJhY2t0cmFjayBiYWNrIGludG8gYSBib2R5IGRpc2p1bmN0aW9u
LgogICAgICAgICAgICAgICAgIEFTU0VSVChtX2JhY2t0cmFja2luZ1N0YXRlLmlzRW1wdHkoKSk7
Ci0KLSAgICAgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIHByaW9yQWx0ZXJuYXRpdmUg
PSBtX29wc1tvcC5tX3ByZXZpb3VzT3BdLm1fYWx0ZXJuYXRpdmU7Ci0gICAgICAgICAgICAgICAg
bV9jaGVja2VkT2Zmc2V0ICs9IHByaW9yQWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKQEAgLTMxNjAsNyArMzEzOCw3IEBA
IGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAg
ICAgICAgICAgIC8vIFNldCB0aGUgYmFja3RyYWNrcyB0byBqdW1wIHRvIHRoZSBhcHByb3ByaWF0
ZSBwbGFjZS4gV2UgbWF5IG5lZWQKICAgICAgICAgICAgICAgICAvLyB0byBsaW5rIHRoZSBiYWNr
dHJhY2tzIGluIG9uZSBvZiB0aHJlZSBkaWZmZXJlbnQgd2F5IGRlcGVuZGluZyBvbgogICAgICAg
ICAgICAgICAgIC8vIHRoZSB0eXBlIG9mIGFsdGVybmF0aXZlIHdlIGFyZSBkZWFsaW5nIHdpdGg6
Ci0gICAgICAgICAgICAgICAgLy8gIC0gQSBzaW5nbGUgYWx0ZXJuYXRpdmUsIHdpdGggbm8gc2lt
cGxpbmdzLgorICAgICAgICAgICAgICAgIC8vICAtIEEgc2luZ2xlIGFsdGVybmF0aXZlLCB3aXRo
IG5vIHNpYmxpbmdzLgogICAgICAgICAgICAgICAgIC8vICAtIFRoZSBsYXN0IGFsdGVybmF0aXZl
IG9mIGEgc2V0IG9mIHR3byBvciBtb3JlLgogICAgICAgICAgICAgICAgIC8vICAtIEFuIGFsdGVy
bmF0aXZlIG90aGVyIHRoYW4gdGhlIGxhc3Qgb2YgYSBzZXQgb2YgdHdvIG9yIG1vcmUuCiAgICAg
ICAgICAgICAgICAgLy8KQEAgLTMyMjcsMTIgKzMyMDUsNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9y
IGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KGVuZE9wLT5tX29wID09IFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlRW5kIHx8
IGVuZE9wLT5tX29wID09IFlhcnJPcENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlRW5kKTsKICAgICAg
ICAgICAgICAgICAgICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS5hcHBlbmQoZW5kT3AtPm1fanVtcHMp
OwogICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIG1fY2hlY2tlZE9mZnNldCAt
PSBvcC5tX2NoZWNrQWRqdXN0OwotICAgICAgICAgICAgICAgIGlmICghaXNCZWdpbikgewotICAg
ICAgICAgICAgICAgICAgICBZYXJyT3AmIGxhc3RPcCA9IG1fb3BzW29wLm1fcHJldmlvdXNPcF07
Ci0gICAgICAgICAgICAgICAgICAgIG1fY2hlY2tlZE9mZnNldCArPSBsYXN0T3AubV9jaGVja0Fk
anVzdDsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0
aXZlRW5kOgpAQCAtMzI1OCw5ICszMjMwLDYgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAgICAgICAgICAgICAgIC8vIGFsdGVybmF0aXZl
IHRvIHRoaXMgcG9pbnQuCiAgICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUu
YXBwZW5kKG9wLm1fcmV0dXJuQWRkcmVzcyk7CiAgICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgWWFyck9wJiBsYXN0T3AgPSBtX29wc1tvcC5tX3ByZXZpb3VzT3BdOwotICAgICAg
ICAgICAgICAgIG1fY2hlY2tlZE9mZnNldCArPSBsYXN0T3AubV9jaGVja0FkanVzdDsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIApAQCAtMzUwOSw4ICszNDc4LDYgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAg
ICAgICAgICAgLy8gdGhlIGVuZCBvZiB0aGUgYXNzZXJ0aW9uLiBBbHNvLCBpZiBpbnZlcnRlZCwg
d2Ugd2lsbCBoYXZlCiAgICAgICAgICAgICAgICAgLy8gYWRkZWQgdGhlIGZhaWx1cmUgY2F1c2Vk
IGJ5IGEgc3VjY2Vzc2Z1bCBtYXRjaCB0byB0aGlzLgogICAgICAgICAgICAgICAgIG1fYmFja3Ry
YWNraW5nU3RhdGUuYXBwZW5kKGVuZE9wLm1fanVtcHMpOwotCi0gICAgICAgICAgICAgICAgbV9j
aGVja2VkT2Zmc2V0ICs9IG9wLm1fY2hlY2tBZGp1c3Q7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlBhcmVudGhldGlj
YWxBc3NlcnRpb25FbmQ6IHsKQEAgLTM1MjAsMTYgKzM0ODcsMTIgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAKICAgICAgICAgICAgICAgICAvLyBO
ZXZlciBiYWNrdHJhY2sgaW50byBhbiBhc3NlcnRpb247IGxhdGVyIGZhaWx1cmVzIGJhaWwgdG8g
YmVmb3JlIHRoZSBiZWdpbi4KICAgICAgICAgICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRlLnRh
a2VCYWNrdHJhY2tzVG9KdW1wTGlzdChvcC5tX2p1bXBzLCAmbV9qaXQpOwotCi0gICAgICAgICAg
ICAgICAgWWFyck9wJiBsYXN0T3AgPSBtX29wc1tvcC5tX3ByZXZpb3VzT3BdOwotICAgICAgICAg
ICAgICAgIG1fY2hlY2tlZE9mZnNldCAtPSBsYXN0T3AubV9jaGVja0FkanVzdDsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY2FzZSBZYXJyT3BD
b2RlOjpNYXRjaEZhaWxlZDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
LQogICAgICAgICB9IHdoaWxlIChvcEluZGV4KTsKICAgICB9CiAKQEAgLTM1NDYsNyArMzUwOSw3
IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAg
IC8vIEFsdGVybmF0aXZlcyB3aWxsIHVzZSB0aGUgJ1NpbXBsZScgc2V0IG9mIG9wcyBpZiBlaXRo
ZXIgdGhlCiAgICAgLy8gc3VicGF0dGVybiBpcyB0ZXJtaW5hbCAoaW4gd2hpY2ggY2FzZSB3ZSB3
aWxsIG5ldmVyIG5lZWQgdG8KICAgICAvLyBiYWNrdHJhY2spLCBvciBpZiB0aGUgc3VicGF0dGVy
biBvbmx5IGNvbnRhaW5zIG9uZSBhbHRlcm5hdGl2ZS4KLSAgICB2b2lkIG9wQ29tcGlsZVBhcmVu
dGhlc2VzU3VicGF0dGVybihQYXR0ZXJuVGVybSogdGVybSkKKyAgICB2b2lkIG9wQ29tcGlsZVBh
cmVudGhlc2VzU3VicGF0dGVybihDaGVja2VkPHVuc2lnbmVkPiBjaGVja2VkT2Zmc2V0LCBQYXR0
ZXJuVGVybSogdGVybSkKICAgICB7CiAgICAgICAgIFlhcnJPcENvZGUgcGFyZW50aGVzZXNCZWdp
bk9wQ29kZTsKICAgICAgICAgWWFyck9wQ29kZSBwYXJlbnRoZXNlc0VuZE9wQ29kZTsKQEAgLTM2
MjAsMTggKzM1ODMsMjggQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJy
SklUSW5mbyB7CiAgICAgICAgIG1fb3BzLmFwcGVuZChhbHRlcm5hdGl2ZUJlZ2luT3BDb2RlKTsK
ICAgICAgICAgbV9vcHMubGFzdCgpLm1fcHJldmlvdXNPcCA9IG5vdEZvdW5kOwogICAgICAgICBt
X29wcy5sYXN0KCkubV90ZXJtID0gdGVybTsKLSAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxQYXR0ZXJuQWx0ZXJuYXRpdmU+PiYgYWx0ZXJuYXRpdmVzID0gdGVybS0+cGFyZW50aGVzZXMu
ZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzOworICAgICAgICBQYXR0ZXJuRGlzanVuY3Rpb24q
IGRpc2p1bmN0aW9uID0gdGVybS0+cGFyZW50aGVzZXMuZGlzanVuY3Rpb247CisgICAgICAgIGF1
dG8mIGFsdGVybmF0aXZlcyA9IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlczsKKyAgICAgICAg
YXV0byBvcmlnaW5hbENoZWNrZWRPZmZzZXQgPSBjaGVja2VkT2Zmc2V0OwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgYWx0ZXJuYXRpdmVzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
ICAgICBzaXplX3QgbGFzdE9wSW5kZXggPSBtX29wcy5zaXplKCkgLSAxOwogCiAgICAgICAgICAg
ICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIG5lc3RlZEFsdGVybmF0aXZlID0gYWx0ZXJuYXRpdmVzW2ld
LmdldCgpOwotICAgICAgICAgICAgb3BDb21waWxlQWx0ZXJuYXRpdmUobmVzdGVkQWx0ZXJuYXRp
dmUpOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBob3cgbXVj
aCBpbnB1dCB3ZSBuZWVkIHRvIGNoZWNrIGZvciwgYW5kIGlmIG5vbi16ZXJvIGNoZWNrLgorICAg
ICAgICAgICAgICAgIFlhcnJPcCYgbGFzdE9wID0gbV9vcHNbbGFzdE9wSW5kZXhdOworICAgICAg
ICAgICAgICAgIGxhc3RPcC5tX2NoZWNrQWRqdXN0ID0gbmVzdGVkQWx0ZXJuYXRpdmUtPm1fbWlu
aW11bVNpemU7CisgICAgICAgICAgICAgICAgaWYgKCh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVh
bnRpZmllclR5cGU6OkZpeGVkQ291bnQpICYmICh0ZXJtLT50eXBlICE9IFBhdHRlcm5UZXJtOjpU
eXBlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKSkKKyAgICAgICAgICAgICAgICAgICAgbGFzdE9w
Lm1fY2hlY2tBZGp1c3QgLT0gZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemU7CisgICAgICAgICAg
ICAgICAgbGFzdE9wLm1fY2hlY2tlZE9mZnNldCA9IGNoZWNrZWRPZmZzZXQgKyBsYXN0T3AubV9j
aGVja0FkanVzdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG9wQ29tcGlsZUFsdGVybmF0
aXZlKG1fb3BzW2xhc3RPcEluZGV4XS5tX2NoZWNrZWRPZmZzZXQsIG5lc3RlZEFsdGVybmF0aXZl
KTsKIAogICAgICAgICAgICAgc2l6ZV90IHRoaXNPcEluZGV4ID0gbV9vcHMuc2l6ZSgpOwogICAg
ICAgICAgICAgbV9vcHMuYXBwZW5kKFlhcnJPcChhbHRlcm5hdGl2ZU5leHRPcENvZGUpKTsKIAot
ICAgICAgICAgICAgWWFyck9wJiBsYXN0T3AgPSBtX29wc1tsYXN0T3BJbmRleF07CiAgICAgICAg
ICAgICBZYXJyT3AmIHRoaXNPcCA9IG1fb3BzW3RoaXNPcEluZGV4XTsKKyAgICAgICAgICAgIFlh
cnJPcCYgbGFzdE9wID0gbV9vcHNbbGFzdE9wSW5kZXhdOwogCiAgICAgICAgICAgICBsYXN0T3Au
bV9hbHRlcm5hdGl2ZSA9IG5lc3RlZEFsdGVybmF0aXZlOwogICAgICAgICAgICAgbGFzdE9wLm1f
bmV4dE9wID0gdGhpc09wSW5kZXg7CkBAIC0zNjQzLDYgKzM2MTYsNyBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgbGFzdE9wLm1fb3Ag
PSBhbHRlcm5hdGl2ZUVuZE9wQ29kZTsKICAgICAgICAgbGFzdE9wLm1fYWx0ZXJuYXRpdmUgPSBu
dWxscHRyOwogICAgICAgICBsYXN0T3AubV9uZXh0T3AgPSBub3RGb3VuZDsKKyAgICAgICAgbGFz
dE9wLm1fY2hlY2tlZE9mZnNldCA9IGNoZWNrZWRPZmZzZXQ7CiAKICAgICAgICAgc2l6ZV90IHBh
cmVuRW5kID0gbV9vcHMuc2l6ZSgpOwogICAgICAgICBtX29wcy5hcHBlbmQocGFyZW50aGVzZXNF
bmRPcENvZGUpOwpAQCAtMzY1MCw5ICszNjI0LDExIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmlu
YWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICBtX29wc1twYXJlbkJlZ2luXS5tX3Rl
cm0gPSB0ZXJtOwogICAgICAgICBtX29wc1twYXJlbkJlZ2luXS5tX3ByZXZpb3VzT3AgPSBub3RG
b3VuZDsKICAgICAgICAgbV9vcHNbcGFyZW5CZWdpbl0ubV9uZXh0T3AgPSBwYXJlbkVuZDsKKyAg
ICAgICAgbV9vcHNbcGFyZW5CZWdpbl0ubV9jaGVja2VkT2Zmc2V0ID0gY2hlY2tlZE9mZnNldDsK
ICAgICAgICAgbV9vcHNbcGFyZW5FbmRdLm1fdGVybSA9IHRlcm07CiAgICAgICAgIG1fb3BzW3Bh
cmVuRW5kXS5tX3ByZXZpb3VzT3AgPSBwYXJlbkJlZ2luOwogICAgICAgICBtX29wc1twYXJlbkVu
ZF0ubV9uZXh0T3AgPSBub3RGb3VuZDsKKyAgICAgICAgbV9vcHNbcGFyZW5FbmRdLm1fY2hlY2tl
ZE9mZnNldCA9IGNoZWNrZWRPZmZzZXQ7CiAgICAgfQogCiAgICAgLy8gb3BDb21waWxlUGFyZW50
aGV0aWNhbEFzc2VydGlvbgpAQCAtMzY2MywzMSArMzYzOSw0NCBAQCBjbGFzcyBZYXJyR2VuZXJh
dG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAvLyBXZSBjYW4gYWx3YXlzIHVz
ZSB0aGUgT3BTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZSBub2RlcyBpbiB0aGUKICAgICAvLyBjYXNl
IG9mIHBhcmVudGhldGljYWwgYXNzZXJ0aW9ucyBzaW5jZSB0aGVzZSBvbmx5IGV2ZXIgbWF0Y2gK
ICAgICAvLyBvbmNlLCBhbmQgd2lsbCBuZXZlciBiYWNrdHJhY2sgYmFjayBpbnRvIHRoZSBhc3Nl
cnRpb24uCi0gICAgdm9pZCBvcENvbXBpbGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKFBhdHRlcm5U
ZXJtKiB0ZXJtKQorICAgIHZvaWQgb3BDb21waWxlUGFyZW50aGV0aWNhbEFzc2VydGlvbihDaGVj
a2VkPHVuc2lnbmVkPiBjaGVja2VkT2Zmc2V0LCBQYXR0ZXJuVGVybSogdGVybSkKICAgICB7CiAg
ICAgICAgIGlmIChVTkxJS0VMWSghaXNTYWZlVG9SZWN1cnNlKCkpKSB7CiAgICAgICAgICAgICBt
X2ZhaWx1cmVSZWFzb24gPSBKSVRGYWlsdXJlUmVhc29uOjpQYXJlbnRoZXNpc05lc3RlZFRvb0Rl
ZXA7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBhdXRvIG9yaWdp
bmFsQ2hlY2tlZE9mZnNldCA9IGNoZWNrZWRPZmZzZXQ7CiAgICAgICAgIHNpemVfdCBwYXJlbkJl
Z2luID0gbV9vcHMuc2l6ZSgpOwogICAgICAgICBtX29wcy5hcHBlbmQoWWFyck9wQ29kZTo6UGFy
ZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKTsKKyAgICAgICAgbV9vcHMubGFzdCgpLm1fY2hlY2tB
ZGp1c3QgPSBjaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQb3NpdGlvbjsKKyAgICAgICAgY2hl
Y2tlZE9mZnNldCAtPSBtX29wcy5sYXN0KCkubV9jaGVja0FkanVzdDsKKyAgICAgICAgbV9vcHMu
bGFzdCgpLm1fY2hlY2tlZE9mZnNldCA9IGNoZWNrZWRPZmZzZXQ7CiAKICAgICAgICAgbV9vcHMu
YXBwZW5kKFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlQmVnaW4pOwogICAgICAg
ICBtX29wcy5sYXN0KCkubV9wcmV2aW91c09wID0gbm90Rm91bmQ7CiAgICAgICAgIG1fb3BzLmxh
c3QoKS5tX3Rlcm0gPSB0ZXJtOwotICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBhdHRl
cm5BbHRlcm5hdGl2ZT4+JiBhbHRlcm5hdGl2ZXMgPSAgdGVybS0+cGFyZW50aGVzZXMuZGlzanVu
Y3Rpb24tPm1fYWx0ZXJuYXRpdmVzOworICAgICAgICBQYXR0ZXJuRGlzanVuY3Rpb24qIGRpc2p1
bmN0aW9uID0gdGVybS0+cGFyZW50aGVzZXMuZGlzanVuY3Rpb247CisgICAgICAgIGF1dG8mIGFs
dGVybmF0aXZlcyA9IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlczsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGFsdGVybmF0aXZlcy5zaXplKCk7ICsraSkgewogICAgICAgICAg
ICAgc2l6ZV90IGxhc3RPcEluZGV4ID0gbV9vcHMuc2l6ZSgpIC0gMTsKIAogICAgICAgICAgICAg
UGF0dGVybkFsdGVybmF0aXZlKiBuZXN0ZWRBbHRlcm5hdGl2ZSA9IGFsdGVybmF0aXZlc1tpXS5n
ZXQoKTsKLSAgICAgICAgICAgIG9wQ29tcGlsZUFsdGVybmF0aXZlKG5lc3RlZEFsdGVybmF0aXZl
KTsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBDYWxjdWxhdGUgaG93IG11Y2gg
aW5wdXQgd2UgbmVlZCB0byBjaGVjayBmb3IsIGFuZCBpZiBub24temVybyBjaGVjay4KKyAgICAg
ICAgICAgICAgICBZYXJyT3AmIGxhc3RPcCA9IG1fb3BzW2xhc3RPcEluZGV4XTsKKyAgICAgICAg
ICAgICAgICBsYXN0T3AubV9jaGVja0FkanVzdCA9IG5lc3RlZEFsdGVybmF0aXZlLT5tX21pbmlt
dW1TaXplOworICAgICAgICAgICAgICAgIGlmICgodGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50
aWZpZXJUeXBlOjpGaXhlZENvdW50KSAmJiAodGVybS0+dHlwZSAhPSBQYXR0ZXJuVGVybTo6VHlw
ZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbikpCisgICAgICAgICAgICAgICAgICAgIGxhc3RPcC5t
X2NoZWNrQWRqdXN0IC09IGRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXplOworICAgICAgICAgICAg
ICAgIGxhc3RPcC5tX2NoZWNrZWRPZmZzZXQgPSBjaGVja2VkT2Zmc2V0ICsgbGFzdE9wLm1fY2hl
Y2tBZGp1c3Q7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvcENvbXBpbGVBbHRlcm5hdGl2
ZShtX29wc1tsYXN0T3BJbmRleF0ubV9jaGVja2VkT2Zmc2V0LCBuZXN0ZWRBbHRlcm5hdGl2ZSk7
CiAKICAgICAgICAgICAgIHNpemVfdCB0aGlzT3BJbmRleCA9IG1fb3BzLnNpemUoKTsKICAgICAg
ICAgICAgIG1fb3BzLmFwcGVuZChZYXJyT3AoWWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0ZXJu
YXRpdmVOZXh0KSk7CiAKLSAgICAgICAgICAgIFlhcnJPcCYgbGFzdE9wID0gbV9vcHNbbGFzdE9w
SW5kZXhdOwogICAgICAgICAgICAgWWFyck9wJiB0aGlzT3AgPSBtX29wc1t0aGlzT3BJbmRleF07
CisgICAgICAgICAgICBZYXJyT3AmIGxhc3RPcCA9IG1fb3BzW2xhc3RPcEluZGV4XTsKIAogICAg
ICAgICAgICAgbGFzdE9wLm1fYWx0ZXJuYXRpdmUgPSBuZXN0ZWRBbHRlcm5hdGl2ZTsKICAgICAg
ICAgICAgIGxhc3RPcC5tX25leHRPcCA9IHRoaXNPcEluZGV4OwpAQCAtMzY5OSw2ICszNjg4LDcg
QEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAg
ICAgIGxhc3RPcC5tX29wID0gWWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVFbmQ7
CiAgICAgICAgIGxhc3RPcC5tX2FsdGVybmF0aXZlID0gbnVsbHB0cjsKICAgICAgICAgbGFzdE9w
Lm1fbmV4dE9wID0gbm90Rm91bmQ7CisgICAgICAgIGxhc3RPcC5tX2NoZWNrZWRPZmZzZXQgPSBj
aGVja2VkT2Zmc2V0OwogCiAgICAgICAgIHNpemVfdCBwYXJlbkVuZCA9IG1fb3BzLnNpemUoKTsK
ICAgICAgICAgbV9vcHMuYXBwZW5kKFlhcnJPcENvZGU6OlBhcmVudGhldGljYWxBc3NlcnRpb25F
bmQpOwpAQCAtMzcwOSwxMSArMzY5OSwxMiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgbV9vcHNbcGFyZW5FbmRdLm1fdGVybSA9IHRl
cm07CiAgICAgICAgIG1fb3BzW3BhcmVuRW5kXS5tX3ByZXZpb3VzT3AgPSBwYXJlbkJlZ2luOwog
ICAgICAgICBtX29wc1twYXJlbkVuZF0ubV9uZXh0T3AgPSBub3RGb3VuZDsKKyAgICAgICAgbV9v
cHNbcGFyZW5FbmRdLm1fY2hlY2tlZE9mZnNldCA9IG9yaWdpbmFsQ2hlY2tlZE9mZnNldDsKICAg
ICB9CiAKICAgICAvLyBvcENvbXBpbGVBbHRlcm5hdGl2ZQogICAgIC8vIENhbGxlZCB0byBlbWl0
IG5vZGVzIGZvciBhbGwgdGVybXMgaW4gYW4gYWx0ZXJuYXRpdmUuCi0gICAgdm9pZCBvcENvbXBp
bGVBbHRlcm5hdGl2ZShQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlKQorICAgIHZvaWQg
b3BDb21waWxlQWx0ZXJuYXRpdmUoQ2hlY2tlZDx1bnNpZ25lZD4gY2hlY2tlZE9mZnNldCwgUGF0
dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSkKICAgICB7CiAgICAgICAgIG9wdGltaXplQWx0
ZXJuYXRpdmUoYWx0ZXJuYXRpdmUpOwogCkBAIC0zNzIyLDE1ICszNzEzLDE2IEBAIGNsYXNzIFlh
cnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogCiAgICAgICAgICAgICBz
d2l0Y2ggKHRlcm0tPnR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6
OlBhcmVudGhlc2VzU3VicGF0dGVybjoKLSAgICAgICAgICAgICAgICBvcENvbXBpbGVQYXJlbnRo
ZXNlc1N1YnBhdHRlcm4odGVybSk7CisgICAgICAgICAgICAgICAgb3BDb21waWxlUGFyZW50aGVz
ZXNTdWJwYXR0ZXJuKGNoZWNrZWRPZmZzZXQsIHRlcm0pOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogCiAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpQYXJlbnRoZXRpY2FsQXNz
ZXJ0aW9uOgotICAgICAgICAgICAgICAgIG9wQ29tcGlsZVBhcmVudGhldGljYWxBc3NlcnRpb24o
dGVybSk7CisgICAgICAgICAgICAgICAgb3BDb21waWxlUGFyZW50aGV0aWNhbEFzc2VydGlvbihj
aGVja2VkT2Zmc2V0LCB0ZXJtKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBtX29wcy5hcHBlbmQodGVybSk7CisgICAgICAg
ICAgICAgICAgbV9vcHMubGFzdCgpLm1fY2hlY2tlZE9mZnNldCA9IGNoZWNrZWRPZmZzZXQ7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0zNzU1LDcgKzM3NDcsNyBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxQYXR0ZXJuQWx0ZXJuYXRpdmU+PiYgYWx0ZXJuYXRpdmVzID0gZGlzanVuY3Rpb24tPm1f
YWx0ZXJuYXRpdmVzOworICAgICAgICBhdXRvJiBhbHRlcm5hdGl2ZXMgPSBkaXNqdW5jdGlvbi0+
bV9hbHRlcm5hdGl2ZXM7CiAgICAgICAgIHNpemVfdCBjdXJyZW50QWx0ZXJuYXRpdmVJbmRleCA9
IDA7CiAKICAgICAgICAgLy8gRW1pdCB0aGUgJ29uY2UgdGhyb3VnaCcgYWx0ZXJuYXRpdmVzLgpA
QCAtMzc2NSwxNCArMzc1NywxNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGlj
IFlhcnJKSVRJbmZvIHsKIAogICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgIHNpemVf
dCBsYXN0T3BJbmRleCA9IG1fb3BzLnNpemUoKSAtIDE7CisKICAgICAgICAgICAgICAgICBQYXR0
ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0gYWx0ZXJuYXRpdmVzW2N1cnJlbnRBbHRlcm5h
dGl2ZUluZGV4XS5nZXQoKTsKLSAgICAgICAgICAgICAgICBvcENvbXBpbGVBbHRlcm5hdGl2ZShh
bHRlcm5hdGl2ZSk7CisgICAgICAgICAgICAgICAgbV9vcHNbbGFzdE9wSW5kZXhdLm1fY2hlY2tl
ZE9mZnNldCA9IGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplOworICAgICAgICAgICAgICAgIG9w
Q29tcGlsZUFsdGVybmF0aXZlKGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplLCBhbHRlcm5hdGl2
ZSk7CiAKICAgICAgICAgICAgICAgICBzaXplX3QgdGhpc09wSW5kZXggPSBtX29wcy5zaXplKCk7
CiAgICAgICAgICAgICAgICAgbV9vcHMuYXBwZW5kKFlhcnJPcChZYXJyT3BDb2RlOjpCb2R5QWx0
ZXJuYXRpdmVOZXh0KSk7CiAKLSAgICAgICAgICAgICAgICBZYXJyT3AmIGxhc3RPcCA9IG1fb3Bz
W2xhc3RPcEluZGV4XTsKICAgICAgICAgICAgICAgICBZYXJyT3AmIHRoaXNPcCA9IG1fb3BzW3Ro
aXNPcEluZGV4XTsKKyAgICAgICAgICAgICAgICBZYXJyT3AmIGxhc3RPcCA9IG1fb3BzW2xhc3RP
cEluZGV4XTsKIAogICAgICAgICAgICAgICAgIGxhc3RPcC5tX2FsdGVybmF0aXZlID0gYWx0ZXJu
YXRpdmU7CiAgICAgICAgICAgICAgICAgbGFzdE9wLm1fbmV4dE9wID0gdGhpc09wSW5kZXg7CkBA
IC0zNzg3LDEwICszNzgxLDEyIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMg
WWFyckpJVEluZm8gewogICAgICAgICAgICAgbGFzdE9wLm1fb3AgPSBZYXJyT3BDb2RlOjpCb2R5
QWx0ZXJuYXRpdmVFbmQ7CiAgICAgICAgICAgICBsYXN0T3AubV9hbHRlcm5hdGl2ZSA9IG51bGxw
dHI7CiAgICAgICAgICAgICBsYXN0T3AubV9uZXh0T3AgPSBub3RGb3VuZDsKKyAgICAgICAgICAg
IGxhc3RPcC5tX2NoZWNrZWRPZmZzZXQgPSAwOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGN1
cnJlbnRBbHRlcm5hdGl2ZUluZGV4ID09IGFsdGVybmF0aXZlcy5zaXplKCkpIHsKICAgICAgICAg
ICAgIG1fb3BzLmFwcGVuZChZYXJyT3AoWWFyck9wQ29kZTo6TWF0Y2hGYWlsZWQpKTsKKyAgICAg
ICAgICAgIG1fb3BzLmxhc3QoKS5tX2NoZWNrZWRPZmZzZXQgPSAwOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKQEAgLTM4MTUsMTUgKzM4MTEsMTcgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAKICAgICAgICAgZG8gewogICAgICAg
ICAgICAgc2l6ZV90IGxhc3RPcEluZGV4ID0gbV9vcHMuc2l6ZSgpIC0gMTsKKwogICAgICAgICAg
ICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IGFsdGVybmF0aXZlc1tjdXJyZW50
QWx0ZXJuYXRpdmVJbmRleF0uZ2V0KCk7CiAgICAgICAgICAgICBBU1NFUlQoIWFsdGVybmF0aXZl
LT5vbmNlVGhyb3VnaCgpKTsKLSAgICAgICAgICAgIG9wQ29tcGlsZUFsdGVybmF0aXZlKGFsdGVy
bmF0aXZlKTsKKyAgICAgICAgICAgIG1fb3BzW2xhc3RPcEluZGV4XS5tX2NoZWNrZWRPZmZzZXQg
PSBhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZTsKKyAgICAgICAgICAgIG9wQ29tcGlsZUFsdGVy
bmF0aXZlKGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplLCBhbHRlcm5hdGl2ZSk7CiAKICAgICAg
ICAgICAgIHNpemVfdCB0aGlzT3BJbmRleCA9IG1fb3BzLnNpemUoKTsKICAgICAgICAgICAgIG1f
b3BzLmFwcGVuZChZYXJyT3AoWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlTmV4dCkpOwogCi0g
ICAgICAgICAgICBZYXJyT3AmIGxhc3RPcCA9IG1fb3BzW2xhc3RPcEluZGV4XTsKICAgICAgICAg
ICAgIFlhcnJPcCYgdGhpc09wID0gbV9vcHNbdGhpc09wSW5kZXhdOworICAgICAgICAgICAgWWFy
ck9wJiBsYXN0T3AgPSBtX29wc1tsYXN0T3BJbmRleF07CiAKICAgICAgICAgICAgIGxhc3RPcC5t
X2FsdGVybmF0aXZlID0gYWx0ZXJuYXRpdmU7CiAgICAgICAgICAgICBsYXN0T3AubV9uZXh0T3Ag
PSB0aGlzT3BJbmRleDsKQEAgLTM4MzYsNiArMzgzNCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICBsYXN0T3AubV9vcCA9IFlhcnJP
cENvZGU6OkJvZHlBbHRlcm5hdGl2ZUVuZDsKICAgICAgICAgbGFzdE9wLm1fYWx0ZXJuYXRpdmUg
PSBudWxscHRyOwogICAgICAgICBsYXN0T3AubV9uZXh0T3AgPSByZXBlYXRMb29wOworICAgICAg
ICBsYXN0T3AubV9jaGVja2VkT2Zmc2V0ID0gMDsKICAgICB9CiAKICAgICBib29sIGNvbGxlY3RC
b3llck1vb3JlSW5mbyhQYXR0ZXJuRGlzanVuY3Rpb24qIGRpc2p1bmN0aW9uLCBzaXplX3QgY3Vy
cmVudEFsdGVybmF0aXZlSW5kZXgsIEJveWVyTW9vcmVJbmZvJiBibUluZm8pCkBAIC00NDc3LDI5
ICs0NDc2LDI5IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVElu
Zm8gewogICAgICAgICAgICAgb3V0LnByaW50KCJUZXJtICIpOwogICAgICAgICAgICAgc3dpdGNo
ICh0ZXJtLT50eXBlKSB7CiAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3Nl
cnRpb25CT0w6Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50KCJBc3NlcnQgQk9MIik7CisgICAg
ICAgICAgICAgICAgb3V0LnByaW50ZigiQXNzZXJ0IEJPTCBjaGVja2VkLW9mZnNldDooJXUpIiwg
b3AubV9jaGVja2VkT2Zmc2V0LnZhbHVlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25FT0w6Ci0gICAgICAg
ICAgICAgICAgb3V0LnByaW50KCJBc3NlcnQgRU9MIik7CisgICAgICAgICAgICAgICAgb3V0LnBy
aW50ZigiQXNzZXJ0IEVPTCBjaGVja2VkLW9mZnNldDooJXUpIiwgb3AubV9jaGVja2VkT2Zmc2V0
LnZhbHVlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIFBh
dHRlcm5UZXJtOjpUeXBlOjpCYWNrUmVmZXJlbmNlOgotICAgICAgICAgICAgICAgIG91dC5wcmlu
dGYoIkJhY2tSZWZlcmVuY2UgcGF0dGVybiAjJXUiLCB0ZXJtLT5iYWNrUmVmZXJlbmNlU3VicGF0
dGVybklkKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJCYWNrUmVmZXJlbmNlIHBhdHRl
cm4gIyV1IGNoZWNrZWQtb2Zmc2V0OigldSkiLCB0ZXJtLT5iYWNrUmVmZXJlbmNlU3VicGF0dGVy
bklkLCBvcC5tX2NoZWNrZWRPZmZzZXQudmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgdGVybS0+
ZHVtcFF1YW50aWZpZXIob3V0KTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAg
ICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGF0dGVybkNoYXJhY3RlcjoKLSAgICAgICAgICAg
ICAgICBvdXQucHJpbnQoIlBhdHRlcm5DaGFyYWN0ZXIgIik7CisgICAgICAgICAgICAgICAgb3V0
LnByaW50ZigiUGF0dGVybkNoYXJhY3RlciBjaGVja2VkLW9mZnNldDooJXUpICIsIG9wLm1fY2hl
Y2tlZE9mZnNldC52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICBkdW1wVUNoYXIzMihvdXQsIHRl
cm0tPnBhdHRlcm5DaGFyYWN0ZXIpOwogICAgICAgICAgICAgICAgIGlmIChtX3BhdHRlcm4uaWdu
b3JlQ2FzZSgpKQotICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiBpZ25vcmUgY2FzZSIp
OworICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoImlnbm9yZSBjYXNlICIpOwogCiAgICAg
ICAgICAgICAgICAgdGVybS0+ZHVtcFF1YW50aWZpZXIob3V0KTsKICAgICAgICAgICAgICAgICBi
cmVhazsKIAogICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6Q2hhcmFjdGVyQ2xh
c3M6Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50KCJQYXR0ZXJuQ2hhcmFjdGVyQ2xhc3MgIik7
CisgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiUGF0dGVybkNoYXJhY3RlckNsYXNzIGNoZWNr
ZWQtb2Zmc2V0OigldSkgIiwgb3AubV9jaGVja2VkT2Zmc2V0LnZhbHVlKCkpOwogICAgICAgICAg
ICAgICAgIGlmICh0ZXJtLT5pbnZlcnQoKSkKICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50
KCJub3QgIik7CiAgICAgICAgICAgICAgICAgZHVtcENoYXJhY3RlckNsYXNzKG91dCwgJm1fcGF0
dGVybiwgdGVybS0+Y2hhcmFjdGVyQ2xhc3MpOwpAQCAtNDUwNywxNSArNDUwNiwxNSBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0
aW9uV29yZEJvdW5kYXJ5OgotICAgICAgICAgICAgICAgIG91dC5wcmludGYoIiVzd29yZCBib3Vu
ZGFyeSIsIHRlcm0tPmludmVydCgpID8gIm5vbi0iIDogIiIpOworICAgICAgICAgICAgICAgIG91
dC5wcmludGYoIiVzd29yZCBib3VuZGFyeSBjaGVja2VkLW9mZnNldDooJXUpIiwgdGVybS0+aW52
ZXJ0KCkgPyAibm9uLSIgOiAiIiwgb3AubV9jaGVja2VkT2Zmc2V0LnZhbHVlKCkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpE
b3RTdGFyRW5jbG9zdXJlOgotICAgICAgICAgICAgICAgIG91dC5wcmludCgiLiogZW5jbG9zdXJl
Iik7CisgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiLiogZW5jbG9zdXJlIGNoZWNrZWQtb2Zm
c2V0OigldSkiLCBvcC5tX2NoZWNrZWRPZmZzZXQudmFsdWUoKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkZvcndhcmRSZWZl
cmVuY2U6Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50KCJGb3J3YXJkUmVmZXJlbmNlIDxub3Qg
aGFuZGxlZD4iKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJGb3J3YXJkUmVmZXJlbmNl
IDxub3QgaGFuZGxlZD4gY2hlY2tlZC1vZmZzZXQ6KCV1KSIsIG9wLm1fY2hlY2tlZE9mZnNldC52
YWx1ZSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBQYXR0
ZXJuVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuOgpAQCAtNDUzMSw2NyArNDUzMCw2
NyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAg
ICAgICAgfQogCiAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlQmVnaW46
Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCJCb2R5QWx0ZXJuYXRpdmVCZWdpbiBtaW5pbXVtIHNp
emUgJXVcbiIsIG9wLm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpOworICAgICAgICAgICAg
b3V0LnByaW50ZigiQm9keUFsdGVybmF0aXZlQmVnaW4gbWluaW11bS1zaXplOigldSksY2hlY2tl
ZC1vZmZzZXQ6KCV1KVxuIiwgb3AubV9hbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSwgb3AubV9j
aGVja2VkT2Zmc2V0LnZhbHVlKCkpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAg
Y2FzZSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVOZXh0OgotICAgICAgICAgICAgb3V0LnBy
aW50ZigiQm9keUFsdGVybmF0aXZlTmV4dCBtaW5pbXVtIHNpemUgJXVcbiIsIG9wLm1fYWx0ZXJu
YXRpdmUtPm1fbWluaW11bVNpemUpOworICAgICAgICAgICAgb3V0LnByaW50ZigiQm9keUFsdGVy
bmF0aXZlTmV4dCBtaW5pbXVtLXNpemU6KCV1KSxjaGVja2VkLW9mZnNldDooJXUpXG4iLCBvcC5t
X2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplLCBvcC5tX2NoZWNrZWRPZmZzZXQudmFsdWUoKSk7
CiAgICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBjYXNlIFlhcnJPcENvZGU6OkJvZHlB
bHRlcm5hdGl2ZUVuZDoKLSAgICAgICAgICAgIG91dC5wcmludCgiQm9keUFsdGVybmF0aXZlRW5k
XG4iKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIkJvZHlBbHRlcm5hdGl2ZUVuZCBjaGVja2Vk
LW9mZnNldDooJXUpXG4iLCBvcC5tX2NoZWNrZWRPZmZzZXQudmFsdWUoKSk7CiAgICAgICAgICAg
ICByZXR1cm4gMDsKIAogICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVy
bmF0aXZlQmVnaW46Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCJTaW1wbGVOZXN0ZWRBbHRlcm5h
dGl2ZUJlZ2luIG1pbmltdW0gc2l6ZSAldVxuIiwgb3AubV9hbHRlcm5hdGl2ZS0+bV9taW5pbXVt
U2l6ZSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUJl
Z2luIG1pbmltdW0tc2l6ZTooJXUpLGNoZWNrZWQtb2Zmc2V0OigldSlcbiIsIG9wLm1fYWx0ZXJu
YXRpdmUtPm1fbWluaW11bVNpemUsIG9wLm1fY2hlY2tlZE9mZnNldC52YWx1ZSgpKTsKICAgICAg
ICAgICAgIHJldHVybiAxOwogCiAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJu
YXRpdmVCZWdpbjoKLSAgICAgICAgICAgIG91dC5wcmludGYoIk5lc3RlZEFsdGVybmF0aXZlQmVn
aW4gbWluaW11bSBzaXplICV1XG4iLCBvcC5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKTsK
KyAgICAgICAgICAgIG91dC5wcmludGYoIk5lc3RlZEFsdGVybmF0aXZlQmVnaW4gbWluaW11bS1z
aXplOigldSksY2hlY2tlZC1vZmZzZXQ6KCV1KVxuIiwgb3AubV9hbHRlcm5hdGl2ZS0+bV9taW5p
bXVtU2l6ZSwgb3AubV9jaGVja2VkT2Zmc2V0LnZhbHVlKCkpOwogICAgICAgICAgICAgcmV0dXJu
IDE7CiAKICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZU5l
eHQ6Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCJTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZU5leHQg
bWluaW11bSBzaXplICV1XG4iLCBvcC5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKTsKKyAg
ICAgICAgICAgIG91dC5wcmludGYoIlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlTmV4dCBtaW5pbXVt
LXNpemU6KCV1KSxjaGVja2VkLW9mZnNldDooJXUpXG4iLCBvcC5tX2FsdGVybmF0aXZlLT5tX21p
bmltdW1TaXplLCBvcC5tX2NoZWNrZWRPZmZzZXQudmFsdWUoKSk7CiAgICAgICAgICAgICByZXR1
cm4gMDsKIAogICAgICAgICBjYXNlIFlhcnJPcENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlTmV4dDoK
LSAgICAgICAgICAgIG91dC5wcmludGYoIk5lc3RlZEFsdGVybmF0aXZlTmV4dCBtaW5pbXVtIHNp
emUgJXVcbiIsIG9wLm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpOworICAgICAgICAgICAg
b3V0LnByaW50ZigiTmVzdGVkQWx0ZXJuYXRpdmVOZXh0IG1pbmltdW0tc2l6ZTooJXUpLGNoZWNr
ZWQtb2Zmc2V0OigldSlcbiIsIG9wLm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUsIG9wLm1f
Y2hlY2tlZE9mZnNldC52YWx1ZSgpKTsKICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAg
IGNhc2UgWWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVFbmQ6Ci0gICAgICAgICAg
ICBvdXQucHJpbnQoIlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlRW5kIik7CisgICAgICAgICAgICBv
dXQucHJpbnRmKCJTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUVuZCBjaGVja2VkLW9mZnNldDooJXUp
ICIsIG9wLm1fY2hlY2tlZE9mZnNldC52YWx1ZSgpKTsKICAgICAgICAgICAgIHRlcm0tPmR1bXBR
dWFudGlmaWVyKG91dCk7CiAgICAgICAgICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAgICAgICAg
ICByZXR1cm4gLTE7CiAKICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2
ZUVuZDoKLSAgICAgICAgICAgIG91dC5wcmludCgiTmVzdGVkQWx0ZXJuYXRpdmVFbmQiKTsKKyAg
ICAgICAgICAgIG91dC5wcmludGYoIk5lc3RlZEFsdGVybmF0aXZlRW5kIGNoZWNrZWQtb2Zmc2V0
OigldSkgIiwgb3AubV9jaGVja2VkT2Zmc2V0LnZhbHVlKCkpOwogICAgICAgICAgICAgdGVybS0+
ZHVtcFF1YW50aWZpZXIob3V0KTsKICAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKICAgICAg
ICAgICAgIHJldHVybiAtMTsKIAogICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlBhcmVudGhlc2Vz
U3VicGF0dGVybk9uY2VCZWdpbjoKLSAgICAgICAgICAgIG91dC5wcmludCgiUGFyZW50aGVzZXNT
dWJwYXR0ZXJuT25jZUJlZ2luICIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiUGFyZW50aGVz
ZXNTdWJwYXR0ZXJuT25jZUJlZ2luIGNoZWNrZWQtb2Zmc2V0OigldSkgIiwgb3AubV9jaGVja2Vk
T2Zmc2V0LnZhbHVlKCkpOwogICAgICAgICAgICAgaWYgKHRlcm0tPmNhcHR1cmUoKSkKLSAgICAg
ICAgICAgICAgICBvdXQucHJpbnRmKCJjYXB0dXJpbmcgcGF0dGVybiAjJXUiLCB0ZXJtLT5wYXJl
bnRoZXNlcy5zdWJwYXR0ZXJuSWQpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoImNhcHR1
cmluZyBwYXR0ZXJuICMldSAiLCB0ZXJtLT5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQpOwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG91dC5wcmludCgibm9uLWNhcHR1cmluZyIp
OworICAgICAgICAgICAgICAgIG91dC5wcmludCgibm9uLWNhcHR1cmluZyAiKTsKICAgICAgICAg
ICAgIHRlcm0tPmR1bXBRdWFudGlmaWVyKG91dCk7CiAgICAgICAgICAgICBvdXQucHJpbnQoIlxu
Iik7CiAgICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlBh
cmVudGhlc2VzU3VicGF0dGVybk9uY2VFbmQ6Ci0gICAgICAgICAgICBvdXQucHJpbnQoIlBhcmVu
dGhlc2VzU3VicGF0dGVybk9uY2VFbmQgIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJQYXJl
bnRoZXNlc1N1YnBhdHRlcm5PbmNlRW5kIGNoZWNrZWQtb2Zmc2V0OigldSkgIiwgb3AubV9jaGVj
a2VkT2Zmc2V0LnZhbHVlKCkpOwogICAgICAgICAgICAgaWYgKHRlcm0tPmNhcHR1cmUoKSkKLSAg
ICAgICAgICAgICAgICBvdXQucHJpbnRmKCJjYXB0dXJpbmcgcGF0dGVybiAjJXUiLCB0ZXJtLT5w
YXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoImNh
cHR1cmluZyBwYXR0ZXJuICMldSAiLCB0ZXJtLT5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG91dC5wcmludCgibm9uLWNhcHR1cmlu
ZyIpOworICAgICAgICAgICAgICAgIG91dC5wcmludCgibm9uLWNhcHR1cmluZyAiKTsKICAgICAg
ICAgICAgIHRlcm0tPmR1bXBRdWFudGlmaWVyKG91dCk7CiAgICAgICAgICAgICBvdXQucHJpbnQo
IlxuIik7CiAgICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBjYXNlIFlhcnJPcENvZGU6
OlBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsQmVnaW46Ci0gICAgICAgICAgICBvdXQucHJp
bnQoIlBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsQmVnaW4gIik7CisgICAgICAgICAgICBv
dXQucHJpbnRmKCJQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJlZ2luIGNoZWNrZWQtb2Zm
c2V0OigldSkgIiwgb3AubV9jaGVja2VkT2Zmc2V0LnZhbHVlKCkpOwogICAgICAgICAgICAgaWYg
KHRlcm0tPmNhcHR1cmUoKSkKICAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJjYXB0dXJpbmcg
cGF0dGVybiAjJXVcbiIsIHRlcm0tPnBhcmVudGhlc2VzLnN1YnBhdHRlcm5JZCk7CiAgICAgICAg
ICAgICBlbHNlCkBAIC00NTk5LDcgKzQ1OTgsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAg
IGNhc2UgWWFyck9wQ29kZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxFbmQ6Ci0gICAg
ICAgICAgICBvdXQucHJpbnQoIlBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsRW5kICIpOwor
ICAgICAgICAgICAgb3V0LnByaW50ZigiUGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxFbmQg
Y2hlY2tlZC1vZmZzZXQ6KCV1KSAiLCBvcC5tX2NoZWNrZWRPZmZzZXQudmFsdWUoKSk7CiAgICAg
ICAgICAgICBpZiAodGVybS0+Y2FwdHVyZSgpKQogICAgICAgICAgICAgICAgIG91dC5wcmludGYo
ImNhcHR1cmluZyBwYXR0ZXJuICMldVxuIiwgdGVybS0+cGFyZW50aGVzZXMuc3VicGF0dGVybklk
KTsKICAgICAgICAgICAgIGVsc2UKQEAgLTQ2MDcsNyArNDYwNiw3IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbjoK
LSAgICAgICAgICAgIG91dC5wcmludCgiUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4gIik7Cisg
ICAgICAgICAgICBvdXQucHJpbnRmKCJQYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbiBjaGVja2Vk
LW9mZnNldDooJXUpICIsIG9wLm1fY2hlY2tlZE9mZnNldC52YWx1ZSgpKTsKICAgICAgICAgICAg
IGlmICh0ZXJtLT5jYXB0dXJlKCkpCiAgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiY2FwdHVy
aW5nIHBhdHRlcm4gIyV1IiwgdGVybS0+cGFyZW50aGVzZXMuc3VicGF0dGVybklkKTsKICAgICAg
ICAgICAgIGVsc2UKQEAgLTQ2MTcsNyArNDYxNiw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmlu
YWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAg
ICAgY2FzZSBZYXJyT3BDb2RlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQ6Ci0gICAgICAgICAg
ICBvdXQucHJpbnQoIlBhcmVudGhlc2VzU3VicGF0dGVybkVuZCAiKTsKKyAgICAgICAgICAgIG91
dC5wcmludGYoIlBhcmVudGhlc2VzU3VicGF0dGVybkVuZCBjaGVja2VkLW9mZnNldDooJXUpICIs
IG9wLm1fY2hlY2tlZE9mZnNldC52YWx1ZSgpKTsKICAgICAgICAgICAgIGlmICh0ZXJtLT5jYXB0
dXJlKCkpCiAgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiY2FwdHVyaW5nIHBhdHRlcm4gIyV1
IiwgdGVybS0+cGFyZW50aGVzZXMuc3VicGF0dGVybklkKTsKICAgICAgICAgICAgIGVsc2UKQEAg
LTQ2MjcsMTUgKzQ2MjYsMTUgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZ
YXJySklUSW5mbyB7CiAgICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBjYXNlIFlhcnJP
cENvZGU6OlBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbjoKLSAgICAgICAgICAgIG91dC5wcmlu
dGYoIlBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbiVzXG4iLCB0ZXJtLT5pbnZlcnQoKSA/ICIg
aW52ZXJ0ZWQiIDogIiIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiUGFyZW50aGV0aWNhbEFz
c2VydGlvbkJlZ2luJXMgY2hlY2tlZC1vZmZzZXQ6KCV1KVxuIiwgdGVybS0+aW52ZXJ0KCkgPyAi
IGludmVydGVkIiA6ICIiLCBvcC5tX2NoZWNrZWRPZmZzZXQudmFsdWUoKSk7CiAgICAgICAgICAg
ICByZXR1cm4gMDsKIAogICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlBhcmVudGhldGljYWxBc3Nl
cnRpb25FbmQ6Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCJQYXJlbnRoZXRpY2FsQXNzZXJ0aW9u
RW5kJXNcbiIsIHRlcm0tPmludmVydCgpID8gIiBpbnZlcnRlZCIgOiAiIik7CisgICAgICAgICAg
ICBvdXQucHJpbnRmKCJQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uRW5kJXMgY2hlY2tlZC1vZmZzZXQ6
KCV1KVxuIiwgdGVybS0+aW52ZXJ0KCkgPyAiIGludmVydGVkIiA6ICIiLCBvcC5tX2NoZWNrZWRP
ZmZzZXQudmFsdWUoKSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBjYXNlIFlh
cnJPcENvZGU6Ok1hdGNoRmFpbGVkOgotICAgICAgICAgICAgb3V0LnByaW50KCJNYXRjaEZhaWxl
ZFxuIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJNYXRjaEZhaWxlZCBjaGVja2VkLW9mZnNl
dDooJXUpXG4iLCBvcC5tX2NoZWNrZWRPZmZzZXQudmFsdWUoKSk7CiAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgfQogCkBAIC00NjgxLDE4ICs0NjgwLDYgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgVmVjdG9yPFVuaXF1ZVJlZjxC
b3llck1vb3JlSW5mbz4sIDQ+IG1fYm1JbmZvczsKICAgICBWZWN0b3I8VW5pcXVlUmVmPEJveWVy
TW9vcmVCaXRtYXA6Ok1hcD4+IG1fYm1NYXBzOwogCi0gICAgLy8gVGhpcyByZWNvcmRzIHRoZSBj
dXJyZW50IGlucHV0IG9mZnNldCBiZWluZyBhcHBsaWVkIGR1ZSB0byB0aGUgY3VycmVudAotICAg
IC8vIHNldCBvZiBhbHRlcm5hdGl2ZXMgd2UgYXJlIG5lc3RlZCB3aXRoaW4uIEUuZy4gd2hlbiBt
YXRjaGluZyB0aGUKLSAgICAvLyBjaGFyYWN0ZXIgJ2InIHdpdGhpbiB0aGUgcmVndWxhciBleHBy
ZXNzaW9uIC9hYmMvLCB3ZSB3aWxsIGtub3cgdGhhdAotICAgIC8vIHRoZSBtaW5pbXVtIHNpemUg
Zm9yIHRoZSBhbHRlcm5hdGl2ZSBpcyAzLCBjaGVja2VkIHVwb24gZW50cnkgdG8gdGhlCi0gICAg
Ly8gYWx0ZXJuYXRpdmUsIGFuZCB0aGF0ICdiJyBpcyBhdCBvZmZzZXQgMSBmcm9tIHRoZSBzdGFy
dCwgYW5kIGFzIHN1Y2gKLSAgICAvLyB3aGVuIG1hdGNoaW5nICdiJyB3ZSBuZWVkIHRvIGFwcGx5
IGFuIG9mZnNldCBvZiAtMiB0byB0aGUgbG9hZC4KLSAgICAvLwotICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCBnbyBhd2F5LiBSYXRoZXIgdGhhbiB0cmFja2luZyB0aGlzIHZhbHVlIHRocm91Z2hv
dXQKLSAgICAvLyBjb2RlIGdlbmVyYXRpb24sIHdlIHNob3VsZCBnYXRoZXIgdGhpcyBpbmZvcm1h
dGlvbiB1cCBmcm9udCAmIHN0b3JlIGl0Ci0gICAgLy8gb24gdGhlIFlhcnJPcCBzdHJ1Y3R1cmUu
Ci0gICAgQ2hlY2tlZDx1bnNpZ25lZD4gbV9jaGVja2VkT2Zmc2V0OwotCiAgICAgLy8gVGhpcyBj
bGFzcyByZWNvcmRzIHN0YXRlIHdoaWxzdCBnZW5lcmF0aW5nIHRoZSBiYWNrdHJhY2tpbmcgcGF0
aCBvZiBjb2RlLgogICAgIEJhY2t0cmFja2luZ1N0YXRlIG1fYmFja3RyYWNraW5nU3RhdGU7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAppbmRleCA5ZmI2ZTYx
YWIxZTY3MzFkMzllNTY0MWQ4NDIwNzEwYWU3ZDdkMDIwLi4zMDA1N2ZmZDc0Zjg4Yjk1ZmU2NmNj
ZWE3ODBhZjliMWY3NzU3MWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJyUGF0dGVybi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0
ZXJuLmgKQEAgLTg0LDE0ICs4NCwxMiBAQCBzdHJ1Y3QgQ2hhcmFjdGVyQ2xhc3MgewogICAgIENo
YXJhY3RlckNsYXNzKCkKICAgICAgICAgOiBtX3RhYmxlKG51bGxwdHIpCiAgICAgICAgICwgbV9j
aGFyYWN0ZXJXaWR0aHMoQ2hhcmFjdGVyQ2xhc3NXaWR0aHM6OlVua25vd24pCi0gICAgICAgICwg
bV9hbnlDaGFyYWN0ZXIoZmFsc2UpCiAgICAgewogICAgIH0KICAgICBDaGFyYWN0ZXJDbGFzcyhj
b25zdCBjaGFyKiB0YWJsZSwgYm9vbCBpbnZlcnRlZCkKICAgICAgICAgOiBtX3RhYmxlKHRhYmxl
KQogICAgICAgICAsIG1fY2hhcmFjdGVyV2lkdGhzKENoYXJhY3RlckNsYXNzV2lkdGhzOjpVbmtu
b3duKQogICAgICAgICAsIG1fdGFibGVJbnZlcnRlZChpbnZlcnRlZCkKLSAgICAgICAgLCBtX2Fu
eUNoYXJhY3RlcihmYWxzZSkKICAgICB7CiAgICAgfQogICAgIENoYXJhY3RlckNsYXNzKHN0ZDo6
aW5pdGlhbGl6ZXJfbGlzdDxVQ2hhcjMyPiBtYXRjaGVzLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
Q2hhcmFjdGVyUmFuZ2U+IHJhbmdlcywgc3RkOjppbml0aWFsaXplcl9saXN0PFVDaGFyMzI+IG1h
dGNoZXNVbmljb2RlLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Q2hhcmFjdGVyUmFuZ2U+IHJhbmdl
c1VuaWNvZGUsIENoYXJhY3RlckNsYXNzV2lkdGhzIHdpZHRocykKQEAgLTEwMSw4ICs5OSw2IEBA
IHN0cnVjdCBDaGFyYWN0ZXJDbGFzcyB7CiAgICAgICAgICwgbV9yYW5nZXNVbmljb2RlKHJhbmdl
c1VuaWNvZGUpCiAgICAgICAgICwgbV90YWJsZShudWxscHRyKQogICAgICAgICAsIG1fY2hhcmFj
dGVyV2lkdGhzKHdpZHRocykKLSAgICAgICAgLCBtX3RhYmxlSW52ZXJ0ZWQoZmFsc2UpCi0gICAg
ICAgICwgbV9hbnlDaGFyYWN0ZXIoZmFsc2UpCiAgICAgewogICAgIH0KIApAQCAtMTE4LDggKzEx
NCw4IEBAIHN0cnVjdCBDaGFyYWN0ZXJDbGFzcyB7CiAKICAgICBjb25zdCBjaGFyKiBtX3RhYmxl
OwogICAgIENoYXJhY3RlckNsYXNzV2lkdGhzIG1fY2hhcmFjdGVyV2lkdGhzOwotICAgIGJvb2wg
bV90YWJsZUludmVydGVkIDogMTsKLSAgICBib29sIG1fYW55Q2hhcmFjdGVyIDogMTsKKyAgICBi
b29sIG1fdGFibGVJbnZlcnRlZCA6IDEgeyBmYWxzZSB9OworICAgIGJvb2wgbV9hbnlDaGFyYWN0
ZXIgOiAxIHsgZmFsc2UgfTsKIH07CiAKIGVudW0gY2xhc3MgUXVhbnRpZmllclR5cGUgOiB1aW50
OF90IHsKQEAgLTE0Miw4ICsxMzgsOCBAQCBzdHJ1Y3QgUGF0dGVyblRlcm0gewogICAgICAgICBE
b3RTdGFyRW5jbG9zdXJlLAogICAgIH07CiAgICAgVHlwZSB0eXBlOwotICAgIGJvb2wgbV9jYXB0
dXJlIDoxOwotICAgIGJvb2wgbV9pbnZlcnQgOjE7CisgICAgYm9vbCBtX2NhcHR1cmUgOiAxIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1faW52ZXJ0IDogMSB7IGZhbHNlIH07CiAgICAgUXVhbnRpZmll
clR5cGUgcXVhbnRpdHlUeXBlOwogICAgIENoZWNrZWQ8dW5zaWduZWQ+IHF1YW50aXR5TWluQ291
bnQ7CiAgICAgQ2hlY2tlZDx1bnNpZ25lZD4gcXVhbnRpdHlNYXhDb3VudDsKQEAgLTE2OCw4ICsx
NjQsNiBAQCBzdHJ1Y3QgUGF0dGVyblRlcm0gewogCiAgICAgUGF0dGVyblRlcm0oVUNoYXIzMiBj
aCkKICAgICAgICAgOiB0eXBlKFBhdHRlcm5UZXJtOjpUeXBlOjpQYXR0ZXJuQ2hhcmFjdGVyKQot
ICAgICAgICAsIG1fY2FwdHVyZShmYWxzZSkKLSAgICAgICAgLCBtX2ludmVydChmYWxzZSkKICAg
ICB7CiAgICAgICAgIHBhdHRlcm5DaGFyYWN0ZXIgPSBjaDsKICAgICAgICAgcXVhbnRpdHlUeXBl
ID0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQ7CkBAIC0xNzgsNyArMTcyLDYgQEAgc3RydWN0
IFBhdHRlcm5UZXJtIHsKIAogICAgIFBhdHRlcm5UZXJtKENoYXJhY3RlckNsYXNzKiBjaGFyQ2xh
c3MsIGJvb2wgaW52ZXJ0KQogICAgICAgICA6IHR5cGUoUGF0dGVyblRlcm06OlR5cGU6OkNoYXJh
Y3RlckNsYXNzKQotICAgICAgICAsIG1fY2FwdHVyZShmYWxzZSkKICAgICAgICAgLCBtX2ludmVy
dChpbnZlcnQpCiAgICAgewogICAgICAgICBjaGFyYWN0ZXJDbGFzcyA9IGNoYXJDbGFzczsKQEAg
LTIwMSw3ICsxOTQsNiBAQCBzdHJ1Y3QgUGF0dGVyblRlcm0gewogICAgIAogICAgIFBhdHRlcm5U
ZXJtKFR5cGUgdHlwZSwgYm9vbCBpbnZlcnQgPSBmYWxzZSkKICAgICAgICAgOiB0eXBlKHR5cGUp
Ci0gICAgICAgICwgbV9jYXB0dXJlKGZhbHNlKQogICAgICAgICAsIG1faW52ZXJ0KGludmVydCkK
ICAgICB7CiAgICAgICAgIHF1YW50aXR5VHlwZSA9IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50
OwpAQCAtMjEwLDggKzIwMiw2IEBAIHN0cnVjdCBQYXR0ZXJuVGVybSB7CiAKICAgICBQYXR0ZXJu
VGVybSh1bnNpZ25lZCBzcGF0dGVybklkKQogICAgICAgICA6IHR5cGUoVHlwZTo6QmFja1JlZmVy
ZW5jZSkKLSAgICAgICAgLCBtX2NhcHR1cmUoZmFsc2UpCi0gICAgICAgICwgbV9pbnZlcnQoZmFs
c2UpCiAgICAgewogICAgICAgICBiYWNrUmVmZXJlbmNlU3VicGF0dGVybklkID0gc3BhdHRlcm5J
ZDsKICAgICAgICAgcXVhbnRpdHlUeXBlID0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQ7CkBA
IC0yMjAsOCArMjEwLDYgQEAgc3RydWN0IFBhdHRlcm5UZXJtIHsKIAogICAgIFBhdHRlcm5UZXJt
KGJvb2wgYm9sQW5jaG9yLCBib29sIGVvbEFuY2hvcikKICAgICAgICAgOiB0eXBlKFR5cGU6OkRv
dFN0YXJFbmNsb3N1cmUpCi0gICAgICAgICwgbV9jYXB0dXJlKGZhbHNlKQotICAgICAgICAsIG1f
aW52ZXJ0KGZhbHNlKQogICAgIHsKICAgICAgICAgYW5jaG9ycy5ib2xBbmNob3IgPSBib2xBbmNo
b3I7CiAgICAgICAgIGFuY2hvcnMuZW9sQW5jaG9yID0gZW9sQW5jaG9yOwpAQCAtMjk2LDEwICsy
ODQsNiBAQCBzdHJ1Y3QgUGF0dGVybkFsdGVybmF0aXZlIHsKIHB1YmxpYzoKICAgICBQYXR0ZXJu
QWx0ZXJuYXRpdmUoUGF0dGVybkRpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbikKICAgICAgICAgOiBt
X3BhcmVudChkaXNqdW5jdGlvbikKLSAgICAgICAgLCBtX29uY2VUaHJvdWdoKGZhbHNlKQotICAg
ICAgICAsIG1faGFzRml4ZWRTaXplKGZhbHNlKQotICAgICAgICAsIG1fc3RhcnRzV2l0aEJPTChm
YWxzZSkKLSAgICAgICAgLCBtX2NvbnRhaW5zQk9MKGZhbHNlKQogICAgIHsKICAgICB9CiAKQEAg
LTMzMCwxMCArMzE0LDEwIEBAIHN0cnVjdCBQYXR0ZXJuQWx0ZXJuYXRpdmUgewogICAgIFZlY3Rv
cjxQYXR0ZXJuVGVybT4gbV90ZXJtczsKICAgICBQYXR0ZXJuRGlzanVuY3Rpb24qIG1fcGFyZW50
OwogICAgIHVuc2lnbmVkIG1fbWluaW11bVNpemU7Ci0gICAgYm9vbCBtX29uY2VUaHJvdWdoIDog
MTsKLSAgICBib29sIG1faGFzRml4ZWRTaXplIDogMTsKLSAgICBib29sIG1fc3RhcnRzV2l0aEJP
TCA6IDE7Ci0gICAgYm9vbCBtX2NvbnRhaW5zQk9MIDogMTsKKyAgICBib29sIG1fb25jZVRocm91
Z2ggOiAxIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzRml4ZWRTaXplIDogMSB7IGZhbHNlIH07
CisgICAgYm9vbCBtX3N0YXJ0c1dpdGhCT0wgOiAxIHsgZmFsc2UgfTsKKyAgICBib29sIG1fY29u
dGFpbnNCT0wgOiAxIHsgZmFsc2UgfTsKIH07CiAKIHN0cnVjdCBQYXR0ZXJuRGlzanVuY3Rpb24g
ewpAQCAtMzQxLDcgKzMyNSw2IEBAIHN0cnVjdCBQYXR0ZXJuRGlzanVuY3Rpb24gewogcHVibGlj
OgogICAgIFBhdHRlcm5EaXNqdW5jdGlvbihQYXR0ZXJuQWx0ZXJuYXRpdmUqIHBhcmVudCA9IG51
bGxwdHIpCiAgICAgICAgIDogbV9wYXJlbnQocGFyZW50KQotICAgICAgICAsIG1faGFzRml4ZWRT
aXplKGZhbHNlKQogICAgIHsKICAgICB9CiAgICAgCkBAIC0zNTcsNyArMzQwLDcgQEAgc3RydWN0
IFBhdHRlcm5EaXNqdW5jdGlvbiB7CiAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBtX3BhcmVudDsK
ICAgICB1bnNpZ25lZCBtX21pbmltdW1TaXplOwogICAgIHVuc2lnbmVkIG1fY2FsbEZyYW1lU2l6
ZTsKLSAgICBib29sIG1faGFzRml4ZWRTaXplOworICAgIGJvb2wgbV9oYXNGaXhlZFNpemUgOiAx
IHsgZmFsc2UgfTsKIH07CiAKIC8vIFlvdSBwcm9iYWJseSBkb24ndCB3YW50IHRvIGJlIGNhbGxp
bmcgdGhlc2UgZnVuY3Rpb25zIGRpcmVjdGx5Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450487</attachid>
            <date>2022-01-31 17:47:18 -0800</date>
            <delta_ts>2022-02-01 12:44:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235932-20220131174718.patch</filename>
            <type>text/plain</type>
            <size>52130</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4ODM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
YmRjN2YxNTU3YjRkOTM4Y2YwZWJjNWFmZWUwMWMwYTc1N2ZkNjQwLi42ZmM0ZDcxZmViMzU4YWM4
MjIzMDQxY2EwNjQ3MDlkZWJmNjZiMjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAyMi0wMS0zMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnJKSVQgbV9jaGVja2VkT2Zmc2V0IHNob3VsZCBiZSBwcmUt
Y29tcHV0ZWQgYW5kIHN0b3JlZCB0byBZYXJyIG9wCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU5MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9mIGFkaG9jbHkgY2FsY3VsYXRpbmcgbV9j
aGVja2VkT2Zmc2V0IHdoaWxlIGdlbmVyYXRpbmcgdGhlIG1hY2hpbmUgY29kZSwKKyAgICAgICAg
bGV0J3MganVzdCBwcmUtY29tcHV0ZSBpdCBhbmQgc3RvcmUgaXQgdG8gWWFyciBKSVQgSVIgc28g
dGhhdCB3ZSBjYW4gc2ltcGxpZnkKKyAgICAgICAgbV9jaGVja2VkT2Zmc2V0IGhhbmRsaW5nLiBU
aGlzIHBhdmVzIHRoZSB3YXkgdG8gYWxzbyBwcmUtY29tcHV0ZSBzYWZlLWxlbmd0aAorICAgICAg
ICBzbyB0aGF0IHdlIGNhbiBza2lwIHNvbWUgb2YgbGVuZ3RoIGNoZWNrIGluIHBhcmVudGhlc2l6
ZWQtYXNzZXJ0aW9ucy4KKworICAgICAgICAqIHlhcnIvWWFyckpJVC5jcHA6CisgICAgICAgICog
eWFyci9ZYXJyUGF0dGVybi5oOgorICAgICAgICAoSlNDOjpZYXJyOjpDaGFyYWN0ZXJDbGFzczo6
Q2hhcmFjdGVyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuVGVybTo6UGF0dGVy
blRlcm0pOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuQWx0ZXJuYXRpdmU6OlBhdHRlcm5B
bHRlcm5hdGl2ZSk6CisgICAgICAgIChKU0M6OllhcnI6OlBhdHRlcm5EaXNqdW5jdGlvbjo6UGF0
dGVybkRpc2p1bmN0aW9uKToKKwogMjAyMi0wMS0zMSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2Vr
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1JJU0NWNjRdIEZpeCBvZmZsaW5lYXNtIGxvd2VyaW5n
IG9mIGFyaXRobWV0aWMgYnJhbmNoIGluc3RydWN0aW9ucyB3aXRoIGFkZHJlc3MgZGVzdGluYXRp
b25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCmluZGV4IGVhMWE3YjAxNDU1
NWMxODNjOWJiYTZlMWU3ZjU4MTFjNGE1Y2VhYmUuLjZkMTc0YWVhNDlkYjM2MTUzNjg2ODEwNjhk
OTZjZDI5OTUyNzY0M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCkBA
IC04ODgsNiArODg4LDE0IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8gewogICAgICAgICAvLyByZWNhbGN1bGF0aW5nIGl0LgogICAgICAgICBDaGVja2Vk
PHVuc2lnbmVkPiBtX2NoZWNrQWRqdXN0OwogCisgICAgICAgIC8vIFRoaXMgcmVjb3JkcyB0aGUg
Y3VycmVudCBpbnB1dCBvZmZzZXQgYmVpbmcgYXBwbGllZCBkdWUgdG8gdGhlIGN1cnJlbnQKKyAg
ICAgICAgLy8gc2V0IG9mIGFsdGVybmF0aXZlcyB3ZSBhcmUgbmVzdGVkIHdpdGhpbi4gRS5nLiB3
aGVuIG1hdGNoaW5nIHRoZQorICAgICAgICAvLyBjaGFyYWN0ZXIgJ2InIHdpdGhpbiB0aGUgcmVn
dWxhciBleHByZXNzaW9uIC9hYmMvLCB3ZSB3aWxsIGtub3cgdGhhdAorICAgICAgICAvLyB0aGUg
bWluaW11bSBzaXplIGZvciB0aGUgYWx0ZXJuYXRpdmUgaXMgMywgY2hlY2tlZCB1cG9uIGVudHJ5
IHRvIHRoZQorICAgICAgICAvLyBhbHRlcm5hdGl2ZSwgYW5kIHRoYXQgJ2InIGlzIGF0IG9mZnNl
dCAxIGZyb20gdGhlIHN0YXJ0LCBhbmQgYXMgc3VjaAorICAgICAgICAvLyB3aGVuIG1hdGNoaW5n
ICdiJyB3ZSBuZWVkIHRvIGFwcGx5IGFuIG9mZnNldCBvZiAtMiB0byB0aGUgbG9hZC4KKyAgICAg
ICAgQ2hlY2tlZDx1bnNpZ25lZD4gbV9jaGVja2VkT2Zmc2V0IHsgfTsKKwogICAgICAgICAvLyBV
c2VkIGJ5IFlhcnJPcENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlTmV4dC9FbmQgdG8gaG9sZCB0aGUg
cG9pbnRlciB0byB0aGUKICAgICAgICAgLy8gdmFsdWUgdGhhdCB3aWxsIGJlIHB1c2hlZCBpbnRv
IHRoZSBwYXR0ZXJuJ3MgZnJhbWUgdG8gcmV0dXJuIHRvLAogICAgICAgICAvLyB1cG9uIGJhY2t0
cmFja2luZyBiYWNrIGludG8gdGhlIGRpc2p1bmN0aW9uLgpAQCAtMTA1Miw5ICsxMDYwLDkgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAKICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBtYXRjaERlc3Q7CiAgICAgICAgICAgICBp
ZiAoIXRlcm0tPmlucHV0UG9zaXRpb24pCi0gICAgICAgICAgICAgICAgbWF0Y2hEZXN0LmFwcGVu
ZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIG1fcmVncy5pbmRleCwgTWFj
cm9Bc3NlbWJsZXI6OkltbTMyKG1fY2hlY2tlZE9mZnNldCkpKTsKKyAgICAgICAgICAgICAgICBt
YXRjaERlc3QuYXBwZW5kKG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgbV9y
ZWdzLmluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIob3AubV9jaGVja2VkT2Zmc2V0KSkpOwog
Ci0gICAgICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0
UG9zaXRpb24gKyAxLCBjaGFyYWN0ZXIpOworICAgICAgICAgICAgcmVhZENoYXJhY3RlcihvcC5t
X2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uICsgMSwgY2hhcmFjdGVyKTsKICAg
ICAgICAgICAgIG1hdGNoQ2hhcmFjdGVyQ2xhc3MoY2hhcmFjdGVyLCBtYXRjaERlc3QsIG1fcGF0
dGVybi5uZXdsaW5lQ2hhcmFjdGVyQ2xhc3MoKSk7CiAgICAgICAgICAgICBvcC5tX2p1bXBzLmFw
cGVuZChtX2ppdC5qdW1wKCkpOwogCkBAIC0xMDY0LDcgKzEwNzIsNyBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgIGlmICh0ZXJt
LT5pbnB1dFBvc2l0aW9uKQogICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKG1faml0
Lmp1bXAoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgb3AubV9qdW1wcy5h
cHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBtX3JlZ3MuaW5k
ZXgsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihtX2NoZWNrZWRPZmZzZXQpKSk7CisgICAgICAgICAg
ICAgICAgb3AubV9qdW1wcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBtX3JlZ3MuaW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihvcC5tX2NoZWNrZWRP
ZmZzZXQpKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgdm9pZCBiYWNrdHJhY2tBc3NlcnRpb25C
T0woc2l6ZV90IG9wSW5kZXgpCkBAIC0xMDgxLDE2ICsxMDg5LDE2IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICAgICAgY29uc3QgTWFj
cm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgY2hhcmFjdGVyID0gbV9yZWdzLnJlZ1QwOwogCiAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgbWF0Y2hEZXN0OwotICAgICAgICAgICAg
aWYgKHRlcm0tPmlucHV0UG9zaXRpb24gPT0gbV9jaGVja2VkT2Zmc2V0KQorICAgICAgICAgICAg
aWYgKHRlcm0tPmlucHV0UG9zaXRpb24gPT0gb3AubV9jaGVja2VkT2Zmc2V0KQogICAgICAgICAg
ICAgICAgIG1hdGNoRGVzdC5hcHBlbmQoYXRFbmRPZklucHV0KCkpOwogCi0gICAgICAgICAgICBy
ZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24sIGNoYXJh
Y3Rlcik7CisgICAgICAgICAgICByZWFkQ2hhcmFjdGVyKG9wLm1fY2hlY2tlZE9mZnNldCAtIHRl
cm0tPmlucHV0UG9zaXRpb24sIGNoYXJhY3Rlcik7CiAgICAgICAgICAgICBtYXRjaENoYXJhY3Rl
ckNsYXNzKGNoYXJhY3RlciwgbWF0Y2hEZXN0LCBtX3BhdHRlcm4ubmV3bGluZUNoYXJhY3RlckNs
YXNzKCkpOwogICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKIAog
ICAgICAgICAgICAgbWF0Y2hEZXN0LmxpbmsoJm1faml0KTsKICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGlmICh0ZXJtLT5pbnB1dFBvc2l0aW9uID09IG1fY2hlY2tlZE9mZnNldCkKKyAg
ICAgICAgICAgIGlmICh0ZXJtLT5pbnB1dFBvc2l0aW9uID09IG9wLm1fY2hlY2tlZE9mZnNldCkK
ICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChub3RBdEVuZE9mSW5wdXQoKSk7CiAg
ICAgICAgICAgICAvLyBFcmssIHJlYWxseSBzaG91bGQgcG9pc29uIG91dCB0aGVzZSBhbHRlcm5h
dGl2ZXMgZWFybHkuIDotLwogICAgICAgICAgICAgZWxzZQpAQCAtMTExMCwxMCArMTExOCwxMCBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKIAogICAg
ICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjaGFyYWN0ZXIgPSBtX3JlZ3Mu
cmVnVDA7CiAKLSAgICAgICAgaWYgKHRlcm0tPmlucHV0UG9zaXRpb24gPT0gbV9jaGVja2VkT2Zm
c2V0KQorICAgICAgICBpZiAodGVybS0+aW5wdXRQb3NpdGlvbiA9PSBvcC5tX2NoZWNrZWRPZmZz
ZXQpCiAgICAgICAgICAgICBuZXh0SXNOb3RXb3JkQ2hhci5hcHBlbmQoYXRFbmRPZklucHV0KCkp
OwogCi0gICAgICAgIHJlYWRDaGFyYWN0ZXIobV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQ
b3NpdGlvbiwgY2hhcmFjdGVyKTsKKyAgICAgICAgcmVhZENoYXJhY3RlcihvcC5tX2NoZWNrZWRP
ZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uLCBjaGFyYWN0ZXIpOwogCiAgICAgICAgIENoYXJh
Y3RlckNsYXNzKiB3b3JkY2hhckNoYXJhY3RlckNsYXNzOwogCkBAIC0xMTM1LDggKzExNDMsOCBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgYXRCZWdpbjsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXBMaXN0IG1hdGNoRGVzdDsKICAgICAgICAgaWYgKCF0ZXJtLT5pbnB1dFBvc2l0aW9uKQot
ICAgICAgICAgICAgYXRCZWdpbiA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgbV9yZWdzLmluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIobV9jaGVja2VkT2Zmc2V0KSk7
Ci0gICAgICAgIHJlYWRDaGFyYWN0ZXIobV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQb3Np
dGlvbiArIDEsIGNoYXJhY3Rlcik7CisgICAgICAgICAgICBhdEJlZ2luID0gbV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBtX3JlZ3MuaW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpJ
bW0zMihvcC5tX2NoZWNrZWRPZmZzZXQpKTsKKyAgICAgICAgcmVhZENoYXJhY3RlcihvcC5tX2No
ZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uICsgMSwgY2hhcmFjdGVyKTsKIAogICAg
ICAgICBDaGFyYWN0ZXJDbGFzcyogd29yZGNoYXJDaGFyYWN0ZXJDbGFzczsKIApAQCAtMTE5Myw3
ICsxMjAxLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5m
byB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBsb29wKCZtX2ppdCk7CiAKICAgICAg
ICAgcmVhZENoYXJhY3RlcigwLCBwYXR0ZXJuQ2hhcmFjdGVyLCBwYXR0ZXJuSW5kZXgpOwotICAg
ICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24s
IGNoYXJhY3Rlcik7CisgICAgICAgIHJlYWRDaGFyYWN0ZXIob3AubV9jaGVja2VkT2Zmc2V0IC0g
dGVybS0+aW5wdXRQb3NpdGlvbiwgY2hhcmFjdGVyKTsKICAgICAKICAgICAgICAgaWYgKCFtX3Bh
dHRlcm4uaWdub3JlQ2FzZSgpKQogICAgICAgICAgICAgY2hhcmFjdGVyTWF0Y2hGYWlscy5hcHBl
bmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjaGFyYWN0ZXIsIHBh
dHRlcm5DaGFyYWN0ZXIpKTsKQEAgLTE1MjUsNDAgKzE1MzMsNDAgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAgICAgICBzd2l0Y2ggKG51
bWJlckNoYXJhY3RlcnMpIHsKICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAv
LyBVc2UgMzJiaXQgd2lkdGggb2YgYWxsQ2hhcmFjdGVycyBzaW5jZSBZYXJyIGNvdW50cyBzdXJy
b2dhdGUgcGFpcnMgYXMgb25lIGNoYXJhY3RlciB3aXRoIHVuaWNvZGUgZmxhZy4KLSAgICAgICAg
ICAgICAgICBjaGVjazEobV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENo
YXJhY3RlcnMgJiAweGZmZmZmZmZmKTsKKyAgICAgICAgICAgICAgICBjaGVjazEob3AubV9jaGVj
a2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMgJiAweGZmZmZmZmZm
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjYXNlIDI6IHsKLSAgICAg
ICAgICAgICAgICBjaGVjazIobV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFs
bENoYXJhY3RlcnMgJiAweGZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmKTsKKyAgICAgICAg
ICAgICAgICBjaGVjazIob3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFs
bENoYXJhY3RlcnMgJiAweGZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIDM6IHsKLSAg
ICAgICAgICAgICAgICBjaGVjazIobV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24s
IGFsbENoYXJhY3RlcnMgJiAweGZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmKTsKLSAgICAg
ICAgICAgICAgICBjaGVjazEobV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24gLSAy
LCAoYWxsQ2hhcmFjdGVycyA+PiAxNikgJiAweGZmKTsKKyAgICAgICAgICAgICAgICBjaGVjazIo
b3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMgJiAw
eGZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmKTsKKyAgICAgICAgICAgICAgICBjaGVjazEo
b3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24gLSAyLCAoYWxsQ2hhcmFjdGVy
cyA+PiAxNikgJiAweGZmKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBjYXNlIDQ6IHsKLSAgICAgICAgICAgICAgICBjaGVjazQobV9jaGVja2Vk
T2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMgJiAweGZmZmZmZmZmLCBp
Z25vcmVDYXNlTWFzayAmIDB4ZmZmZmZmZmYpOworICAgICAgICAgICAgICAgIGNoZWNrNChvcC5t
X2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFjdGVycyAmIDB4ZmZm
ZmZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmZmZmZik7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkgfHwgQ1BV
KFJJU0NWNjQpCiAgICAgICAgICAgICBjYXNlIDU6IHsKLSAgICAgICAgICAgICAgICBjaGVjazQo
bV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMgJiAweGZm
ZmZmZmZmLCBpZ25vcmVDYXNlTWFzayAmIDB4ZmZmZmZmZmYpOwotICAgICAgICAgICAgICAgIGNo
ZWNrMShtX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiAtIDQsIChhbGxDaGFyYWN0
ZXJzID4+IDMyKSAmIDB4ZmYpOworICAgICAgICAgICAgICAgIGNoZWNrNChvcC5tX2NoZWNrZWRP
ZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFjdGVycyAmIDB4ZmZmZmZmZmYsIGln
bm9yZUNhc2VNYXNrICYgMHhmZmZmZmZmZik7CisgICAgICAgICAgICAgICAgY2hlY2sxKG9wLm1f
Y2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uIC0gNCwgKGFsbENoYXJhY3RlcnMgPj4g
MzIpICYgMHhmZik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgY2FzZSA2OiB7Ci0gICAgICAgICAgICAgICAgY2hlY2s0KG1fY2hlY2tlZE9mZnNl
dCAtIHN0YXJ0VGVybVBvc2l0aW9uLCBhbGxDaGFyYWN0ZXJzICYgMHhmZmZmZmZmZiwgaWdub3Jl
Q2FzZU1hc2sgJiAweGZmZmZmZmZmKTsKLSAgICAgICAgICAgICAgICBjaGVjazIobV9jaGVja2Vk
T2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24gLSA0LCAoYWxsQ2hhcmFjdGVycyA+PiAzMikgJiAw
eGZmZmYsIChpZ25vcmVDYXNlTWFzayA+PiAzMikgJiAweGZmZmYpOworICAgICAgICAgICAgICAg
IGNoZWNrNChvcC5tX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFj
dGVycyAmIDB4ZmZmZmZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmZmZmZik7CisgICAgICAg
ICAgICAgICAgY2hlY2syKG9wLm1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uIC0g
NCwgKGFsbENoYXJhY3RlcnMgPj4gMzIpICYgMHhmZmZmLCAoaWdub3JlQ2FzZU1hc2sgPj4gMzIp
ICYgMHhmZmZmKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBjYXNlIDc6IHsKLSAgICAgICAgICAgICAgICBjaGVjazQobV9jaGVja2VkT2Zmc2V0
IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMgJiAweGZmZmZmZmZmLCBpZ25vcmVD
YXNlTWFzayAmIDB4ZmZmZmZmZmYpOwotICAgICAgICAgICAgICAgIGNoZWNrMihtX2NoZWNrZWRP
ZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiAtIDQsIChhbGxDaGFyYWN0ZXJzID4+IDMyKSAmIDB4
ZmZmZiwgKGlnbm9yZUNhc2VNYXNrID4+IDMyKSAmIDB4ZmZmZik7Ci0gICAgICAgICAgICAgICAg
Y2hlY2sxKG1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uIC0gNiwgKGFsbENoYXJh
Y3RlcnMgPj4gNDgpICYgMHhmZik7CisgICAgICAgICAgICAgICAgY2hlY2s0KG9wLm1fY2hlY2tl
ZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uLCBhbGxDaGFyYWN0ZXJzICYgMHhmZmZmZmZmZiwg
aWdub3JlQ2FzZU1hc2sgJiAweGZmZmZmZmZmKTsKKyAgICAgICAgICAgICAgICBjaGVjazIob3Au
bV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24gLSA0LCAoYWxsQ2hhcmFjdGVycyA+
PiAzMikgJiAweGZmZmYsIChpZ25vcmVDYXNlTWFzayA+PiAzMikgJiAweGZmZmYpOworICAgICAg
ICAgICAgICAgIGNoZWNrMShvcC5tX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiAt
IDYsIChhbGxDaGFyYWN0ZXJzID4+IDQ4KSAmIDB4ZmYpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgODogewotICAgICAgICAgICAgICAg
IGNoZWNrOChtX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFjdGVy
cywgaWdub3JlQ2FzZU1hc2spOworICAgICAgICAgICAgICAgIGNoZWNrOChvcC5tX2NoZWNrZWRP
ZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFjdGVycywgaWdub3JlQ2FzZU1hc2sp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICNlbmRpZgpAQCAtMTU5
MSwxOCArMTU5OSwxOCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJK
SVRJbmZvIHsKICAgICAgICAgICAgIHN3aXRjaCAobnVtYmVyQ2hhcmFjdGVycykgewogICAgICAg
ICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgIC8vIFVzZSAzMmJpdCB3aWR0aCBvZiBhbGxD
aGFyYWN0ZXJzIHNpbmNlIFlhcnIgY291bnRzIHN1cnJvZ2F0ZSBwYWlycyBhcyBvbmUgY2hhcmFj
dGVyIHdpdGggdW5pY29kZSBmbGFnLgotICAgICAgICAgICAgICAgIGNoZWNrMShtX2NoZWNrZWRP
ZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFjdGVycyAmIDB4ZmZmZmZmZmYpOwor
ICAgICAgICAgICAgICAgIGNoZWNrMShvcC5tX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3Np
dGlvbiwgYWxsQ2hhcmFjdGVycyAmIDB4ZmZmZmZmZmYpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgICAgICBjaGVjazIobV9jaGVja2Vk
T2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMgJiAweGZmZmZmZmZmLCBp
Z25vcmVDYXNlTWFzayAmIDB4ZmZmZmZmZmYpOworICAgICAgICAgICAgICAgIGNoZWNrMihvcC5t
X2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFjdGVycyAmIDB4ZmZm
ZmZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmZmZmZik7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCiAgICAg
ICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAgICAgICAgY2hlY2syKG1fY2hlY2tlZE9mZnNldCAt
IHN0YXJ0VGVybVBvc2l0aW9uLCBhbGxDaGFyYWN0ZXJzICYgMHhmZmZmZmZmZiwgaWdub3JlQ2Fz
ZU1hc2sgJiAweGZmZmZmZmZmKTsKLSAgICAgICAgICAgICAgICBjaGVjazEobV9jaGVja2VkT2Zm
c2V0IC0gc3RhcnRUZXJtUG9zaXRpb24gLSAyLCAoYWxsQ2hhcmFjdGVycyA+PiAzMikgJiAweGZm
ZmYpOworICAgICAgICAgICAgICAgIGNoZWNrMihvcC5tX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRl
cm1Qb3NpdGlvbiwgYWxsQ2hhcmFjdGVycyAmIDB4ZmZmZmZmZmYsIGlnbm9yZUNhc2VNYXNrICYg
MHhmZmZmZmZmZik7CisgICAgICAgICAgICAgICAgY2hlY2sxKG9wLm1fY2hlY2tlZE9mZnNldCAt
IHN0YXJ0VGVybVBvc2l0aW9uIC0gMiwgKGFsbENoYXJhY3RlcnMgPj4gMzIpICYgMHhmZmZmKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAg
ICAgICAgY2hlY2s0KG1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uLCBhbGxDaGFy
YWN0ZXJzLCBpZ25vcmVDYXNlTWFzayk7CisgICAgICAgICAgICAgICAgY2hlY2s0KG9wLm1fY2hl
Y2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uLCBhbGxDaGFyYWN0ZXJzLCBpZ25vcmVDYXNl
TWFzayk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAgICAgICAgICAgICB9CkBA
IC0xNjMwLDcgKzE2MzgsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlh
cnJKSVRJbmZvIHsKICAgICAgICAgbV9qaXQuc3ViMzIobV9yZWdzLmluZGV4LCBNYWNyb0Fzc2Vt
Ymxlcjo6SW1tMzIoc2NhbGVkTWF4Q291bnQpLCBjb3VudFJlZ2lzdGVyKTsKIAogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6TGFiZWwgbG9vcCgmbV9qaXQpOwotICAgICAgICByZWFkQ2hhcmFjdGVy
KG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24gLSBzY2FsZWRNYXhDb3VudCwg
Y2hhcmFjdGVyLCBjb3VudFJlZ2lzdGVyKTsKKyAgICAgICAgcmVhZENoYXJhY3RlcihvcC5tX2No
ZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uIC0gc2NhbGVkTWF4Q291bnQsIGNoYXJh
Y3RlciwgY291bnRSZWdpc3Rlcik7CiAgICAgICAgIC8vIEZvciBjYXNlLWluc2VzaXRpdmUgY29t
cGFyZXMsIG5vbi1hc2NpaSBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBkaWZmZXJlbnQKICAgICAgICAg
Ly8gdXBwZXIgJiBsb3dlciBjYXNlIHJlcHJlc2VudGF0aW9ucyBhcmUgY29udmVydGVkIHRvIGEg
Y2hhcmFjdGVyIGNsYXNzLgogICAgICAgICBBU1NFUlQoIW1fcGF0dGVybi5pZ25vcmVDYXNlKCkg
fHwgaXNBU0NJSUFscGhhKGNoKSB8fCBpc0Nhbm9uaWNhbGx5VW5pcXVlKGNoLCBtX2Nhbm9uaWNh
bE1vZGUpKTsKQEAgLTE2NjksNyArMTY3Nyw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBM
aXN0IGZhaWx1cmVzOwogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxvb3AoJm1f
aml0KTsKICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZChhdEVuZE9mSW5wdXQoKSk7Ci0gICAg
ICAgICAgICBmYWlsdXJlcy5hcHBlbmQoanVtcElmQ2hhck5vdEVxdWFscyhjaCwgbV9jaGVja2Vk
T2Zmc2V0IC0gdGVybS0+aW5wdXRQb3NpdGlvbiwgY2hhcmFjdGVyKSk7CisgICAgICAgICAgICBm
YWlsdXJlcy5hcHBlbmQoanVtcElmQ2hhck5vdEVxdWFscyhjaCwgb3AubV9jaGVja2VkT2Zmc2V0
IC0gdGVybS0+aW5wdXRQb3NpdGlvbiwgY2hhcmFjdGVyKSk7CiAKICAgICAgICAgICAgIG1faml0
LmFkZDMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMSksIG1fcmVncy5pbmRleCk7CiAj
aWYgRU5BQkxFKFlBUlJfSklUX1VOSUNPREVfRVhQUkVTU0lPTlMpCkBAIC0xNzQzLDcgKzE3NTEs
NyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAg
ICAgICAgICAgIG5vbkdyZWVkeUZhaWx1cmVzLmFwcGVuZChhdEVuZE9mSW5wdXQoKSk7CiAgICAg
ICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlNYXhDb3VudCAhPSBxdWFudGlmeUluZmluaXRlKQog
ICAgICAgICAgICAgICAgIG5vbkdyZWVkeUZhaWx1cmVzLmFwcGVuZChtX2ppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwsIGNvdW50UmVnaXN0ZXIsIE1hY3JvQXNzZW1ibGVyOjpJbW0z
Mih0ZXJtLT5xdWFudGl0eU1heENvdW50KSkpOwotICAgICAgICAgICAgbm9uR3JlZWR5RmFpbHVy
ZXMuYXBwZW5kKGp1bXBJZkNoYXJOb3RFcXVhbHMoY2gsIG1fY2hlY2tlZE9mZnNldCAtIHRlcm0t
PmlucHV0UG9zaXRpb24sIGNoYXJhY3RlcikpOworICAgICAgICAgICAgbm9uR3JlZWR5RmFpbHVy
ZXMuYXBwZW5kKGp1bXBJZkNoYXJOb3RFcXVhbHMoY2gsIG9wLm1fY2hlY2tlZE9mZnNldCAtIHRl
cm0tPmlucHV0UG9zaXRpb24sIGNoYXJhY3RlcikpOwogCiAgICAgICAgICAgICBtX2ppdC5hZGQz
MihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDEpLCBtX3JlZ3MuaW5kZXgpOwogI2lmIEVO
QUJMRShZQVJSX0pJVF9VTklDT0RFX0VYUFJFU1NJT05TKQpAQCAtMTc4Myw3ICsxNzkxLDcgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAg
IH0KIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgbWF0Y2hEZXN0OwotICAgICAg
ICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24sIGNo
YXJhY3Rlcik7CisgICAgICAgIHJlYWRDaGFyYWN0ZXIob3AubV9jaGVja2VkT2Zmc2V0IC0gdGVy
bS0+aW5wdXRQb3NpdGlvbiwgY2hhcmFjdGVyKTsKICAgICAgICAgLy8gSWYgd2UgYXJlIG1hdGNo
aW5nIHRoZSAiYW55IGNoYXJhY3RlciIgYnVpbHRpbiBjbGFzcyB3ZSBvbmx5IG5lZWQgdG8gcmVh
ZCB0aGUKICAgICAgICAgLy8gY2hhcmFjdGVyIGFuZCBkb24ndCBuZWVkIHRvIG1hdGNoIGFzIGl0
IHdpbGwgYWx3YXlzIHN1Y2NlZWQuCiAgICAgICAgIGlmICh0ZXJtLT5pbnZlcnQoKSB8fCAhdGVy
bS0+Y2hhcmFjdGVyQ2xhc3MtPm1fYW55Q2hhcmFjdGVyKSB7CkBAIC0xODQwLDcgKzE4NDgsNyBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKIAogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbG9vcCgmbV9qaXQpOwogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcExpc3QgbWF0Y2hEZXN0OwotICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hl
Y2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24gLSBzY2FsZWRNYXhDb3VudCwgY2hhcmFj
dGVyLCBjb3VudFJlZ2lzdGVyKTsKKyAgICAgICAgcmVhZENoYXJhY3RlcihvcC5tX2NoZWNrZWRP
ZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uIC0gc2NhbGVkTWF4Q291bnQsIGNoYXJhY3Rlciwg
Y291bnRSZWdpc3Rlcik7CiAgICAgICAgIC8vIElmIHdlIGFyZSBtYXRjaGluZyB0aGUgImFueSBj
aGFyYWN0ZXIiIGJ1aWx0aW4gY2xhc3Mgd2Ugb25seSBuZWVkIHRvIHJlYWQgdGhlCiAgICAgICAg
IC8vIGNoYXJhY3RlciBhbmQgZG9uJ3QgbmVlZCB0byBtYXRjaCBhcyBpdCB3aWxsIGFsd2F5cyBz
dWNjZWVkLgogICAgICAgICBpZiAodGVybS0+aW52ZXJ0KCkgfHwgIXRlcm0tPmNoYXJhY3RlckNs
YXNzLT5tX2FueUNoYXJhY3RlcikgewpAQCAtMTkwMCwxMSArMTkwOCwxMSBAQCBjbGFzcyBZYXJy
R2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgIGZhaWx1
cmVzLmFwcGVuZChhdEVuZE9mSW5wdXQoKSk7CiAKICAgICAgICAgaWYgKHRlcm0tPmludmVydCgp
KSB7Ci0gICAgICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlu
cHV0UG9zaXRpb24sIGNoYXJhY3Rlcik7CisgICAgICAgICAgICByZWFkQ2hhcmFjdGVyKG9wLm1f
Y2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24sIGNoYXJhY3Rlcik7CiAgICAgICAg
ICAgICBtYXRjaENoYXJhY3RlckNsYXNzKGNoYXJhY3RlciwgZmFpbHVyZXMsIHRlcm0tPmNoYXJh
Y3RlckNsYXNzKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wTGlzdCBtYXRjaERlc3Q7Ci0gICAgICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tl
ZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24sIGNoYXJhY3Rlcik7CisgICAgICAgICAgICBy
ZWFkQ2hhcmFjdGVyKG9wLm1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24sIGNo
YXJhY3Rlcik7CiAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgbWF0Y2hpbmcgdGhlICJhbnkgY2hh
cmFjdGVyIiBidWlsdGluIGNsYXNzIGZvciBub24tdW5pY29kZSBwYXR0ZXJucywKICAgICAgICAg
ICAgIC8vIHdlIG9ubHkgbmVlZCB0byByZWFkIHRoZSBjaGFyYWN0ZXIgYW5kIGRvbid0IG5lZWQg
dG8gbWF0Y2ggYXMgaXQgd2lsbCBhbHdheXMgc3VjY2VlZC4KICAgICAgICAgICAgIGlmICghdGVy
bS0+Y2hhcmFjdGVyQ2xhc3MtPm1fYW55Q2hhcmFjdGVyKSB7CkBAIC0xOTY1LDcgKzE5NzMsNyBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCByZW1hdGNoTG9vcCgmbV9qaXQpOwogICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZVJlbWF0Y2hpbmcgPSBtX2ppdC5icmFuY2hU
ZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGNvdW50UmVnaXN0ZXIpOwogCi0gICAgICAgICAg
ICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24sIGNo
YXJhY3Rlcik7CisgICAgICAgICAgICByZWFkQ2hhcmFjdGVyKG9wLm1fY2hlY2tlZE9mZnNldCAt
IHRlcm0tPmlucHV0UG9zaXRpb24sIGNoYXJhY3Rlcik7CiAKICAgICAgICAgICAgIG1faml0LnN1
YjMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMSksIGNvdW50UmVnaXN0ZXIpOwogICAg
ICAgICAgICAgbV9qaXQuYWRkMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigxKSwgbV9y
ZWdzLmluZGV4KTsKQEAgLTIwMzAsNyArMjAzOCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmlu
YWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICBub25HcmVlZHlGYWlsdXJlcy5hcHBl
bmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBjb3VudFJlZ2lzdGVyLCBN
YWNyb0Fzc2VtYmxlcjo6SW1tMzIodGVybS0+cXVhbnRpdHlNYXhDb3VudCkpKTsKIAogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgbWF0Y2hEZXN0OwotICAgICAgICByZWFkQ2hhcmFj
dGVyKG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24sIGNoYXJhY3Rlcik7Cisg
ICAgICAgIHJlYWRDaGFyYWN0ZXIob3AubV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQb3Np
dGlvbiwgY2hhcmFjdGVyKTsKICAgICAgICAgLy8gSWYgd2UgYXJlIG1hdGNoaW5nIHRoZSAiYW55
IGNoYXJhY3RlciIgYnVpbHRpbiBjbGFzcyBmb3Igbm9uLXVuaWNvZGUgcGF0dGVybnMsCiAgICAg
ICAgIC8vIHdlIG9ubHkgbmVlZCB0byByZWFkIHRoZSBjaGFyYWN0ZXIgYW5kIGRvbid0IG5lZWQg
dG8gbWF0Y2ggYXMgaXQgd2lsbCBhbHdheXMgc3VjY2VlZC4KICAgICAgICAgaWYgKHRlcm0tPmlu
dmVydCgpIHx8ICF0ZXJtLT5jaGFyYWN0ZXJDbGFzcy0+bV9hbnlDaGFyYWN0ZXIpIHsKQEAgLTIz
MjUsNyArMjMzMyw2IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJ
VEluZm8gewogICAgICAgICAgICAgICAgIC8vIFVwb24gZW50cnkgYXQgdGhlIGhlYWQgb2YgdGhl
IHNldCBvZiBhbHRlcm5hdGl2ZXMsIGNoZWNrIGlmIGlucHV0IGlzIGF2YWlsYWJsZQogICAgICAg
ICAgICAgICAgIC8vIHRvIHJ1biB0aGUgZmlyc3QgYWx0ZXJuYXRpdmUuIChUaGlzIHByb2dyZXNz
ZXMgdGhlIGlucHV0IHBvc2l0aW9uKS4KICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVu
ZChqdW1wSWZOb0F2YWlsYWJsZUlucHV0KGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSk7Ci0g
ICAgICAgICAgICAgICAgbV9jaGVja2VkT2Zmc2V0ICs9IGFsdGVybmF0aXZlLT5tX21pbmltdW1T
aXplOwogCiAgICAgICAgICAgICAgICAgLy8gV2Ugd2lsbCByZWVudGVyIGFmdGVyIHRoZSBjaGVj
aywgYW5kIGFzc3VtZSB0aGUgaW5wdXQgcG9zaXRpb24gdG8gaGF2ZSBiZWVuCiAgICAgICAgICAg
ICAgICAgLy8gc2V0IGFzIGFwcHJvcHJpYXRlIHRvIHRoaXMgYWx0ZXJuYXRpdmUuCkBAIC0yMzUx
LDcgKzIzNTgsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJ
bmZvIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2
ZXJib3NlUmVnRXhwQ29tcGlsYXRpb24oKSwgIkZvdW5kIGNoYXJhY3RlcnMgZmFzdHBhdGggbG9v
a2FoZWFkICIsIGNoYXJhY3RlcnNGYXN0UGF0aCwgIiByYW5nZTpbIiwgYmVnaW5JbmRleCwgIiwg
IiwgZW5kSW5kZXgsICIpIik7CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGxv
b3BIZWFkID0gbV9qaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFk
Q2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIGVuZEluZGV4ICsgMSwgbV9yZWdzLnJlZ1QwKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkQ2hhcmFjdGVyKG9wLm1fY2hlY2tlZE9m
ZnNldCAtIGVuZEluZGV4ICsgMSwgbV9yZWdzLnJlZ1QwKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXRjaGVkLmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1
YWwsIG1fcmVncy5yZWdUMCwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihjaGFyYWN0ZXJz
RmFzdFBhdGguYXQoMCkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoYXJh
Y3RlcnNGYXN0UGF0aC5zaXplKCkgPiAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtYXRjaGVkLmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIG1f
cmVncy5yZWdUMCwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihjaGFyYWN0ZXJzRmFzdFBh
dGguYXQoMSkpKSk7CkBAIC0yMzYyLDcgKzIzNjksNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZp
bmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocG9pbnRlciksIG1fcmVn
cy5yZWdUMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsb29wSGVhZCA9IG1f
aml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZENoYXJhY3Rlciht
X2NoZWNrZWRPZmZzZXQgLSBlbmRJbmRleCArIDEsIG1fcmVncy5yZWdUMCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVhZENoYXJhY3RlcihvcC5tX2NoZWNrZWRPZmZzZXQgLSBlbmRJ
bmRleCArIDEsIG1fcmVncy5yZWdUMCk7CiAjaWYgQ1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihCb3llck1v
b3JlQml0bWFwOjpNYXA6OldvcmRUeXBlKSA9PSBzaXplb2YodWludDY0X3QpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KDEgPDwgNiA9PSA2NCk7CkBAIC0yNDcx
LDEwICsyNDc4LDYgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklU
SW5mbyB7CiAgICAgICAgICAgICAgICAgICAgIG9wLm1fcmVlbnRyeSA9IG1faml0LmxhYmVsKCk7
CiAgICAgICAgICAgICAgICAgICAgIG1faml0LnN1YjMyKE1hY3JvQXNzZW1ibGVyOjpJbW0zMihw
cmlvckFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSwgbV9yZWdzLmluZGV4KTsKICAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAob3AubV9vcCA9PSBZYXJyT3BDb2RlOjpC
b2R5QWx0ZXJuYXRpdmVOZXh0KQotICAgICAgICAgICAgICAgICAgICBtX2NoZWNrZWRPZmZzZXQg
Kz0gYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7Ci0gICAgICAgICAgICAgICAgbV9jaGVja2Vk
T2Zmc2V0IC09IHByaW9yQWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKQEAgLTI1MDYsOCArMjUwOSw2IEBAIGNsYXNzIFlh
cnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICAgICAgICAg
ICAgICBvcC5tX2NoZWNrQWRqdXN0IC09IGRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXplOwogICAg
ICAgICAgICAgICAgIGlmIChvcC5tX2NoZWNrQWRqdXN0KQogICAgICAgICAgICAgICAgICAgICBv
cC5tX2p1bXBzLmFwcGVuZChqdW1wSWZOb0F2YWlsYWJsZUlucHV0KG9wLm1fY2hlY2tBZGp1c3Qp
KTsKLQotICAgICAgICAgICAgICAgIG1fY2hlY2tlZE9mZnNldCArPSBvcC5tX2NoZWNrQWRqdXN0
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2Fz
ZSBZYXJyT3BDb2RlOjpTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZU5leHQ6CkBAIC0yNTUzLDEwICsy
NTU0LDYgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7
CiAgICAgICAgICAgICAgICAgICAgIG9wLm1fY2hlY2tBZGp1c3QgLT0gZGlzanVuY3Rpb24tPm1f
bWluaW11bVNpemU7CiAgICAgICAgICAgICAgICAgaWYgKG9wLm1fY2hlY2tBZGp1c3QpCiAgICAg
ICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXBJZk5vQXZhaWxhYmxlSW5wdXQo
b3AubV9jaGVja0FkanVzdCkpOwotCi0gICAgICAgICAgICAgICAgWWFyck9wJiBsYXN0T3AgPSBt
X29wc1tvcC5tX3ByZXZpb3VzT3BdOwotICAgICAgICAgICAgICAgIG1fY2hlY2tlZE9mZnNldCAt
PSBsYXN0T3AubV9jaGVja0FkanVzdDsKLSAgICAgICAgICAgICAgICBtX2NoZWNrZWRPZmZzZXQg
Kz0gb3AubV9jaGVja0FkanVzdDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVF
bmQ6CkBAIC0yNTgwLDkgKzI1NzcsNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVi
bGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgICAgICAvLyB0aGVtIHRvIHRoaXMgbm9kZSdz
IG1fanVtcHMgbGlzdC4KICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmxpbmsoJm1faml0KTsK
ICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmNsZWFyKCk7Ci0KLSAgICAgICAgICAgICAgICBZ
YXJyT3AmIGxhc3RPcCA9IG1fb3BzW29wLm1fcHJldmlvdXNPcF07Ci0gICAgICAgICAgICAgICAg
bV9jaGVja2VkT2Zmc2V0IC09IGxhc3RPcC5tX2NoZWNrQWRqdXN0OwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogCkBAIC0yNjI2LDcgKzI2MjAsNyBAQCBjbGFzcyBZYXJy
R2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgICAgICAv
LyBvZmZzZXRzIG9ubHkgYWZ0ZXJ3YXJkcywgYXQgdGhlIHBvaW50IHRoZSByZXN1bHRzIGFycmF5
IGlzCiAgICAgICAgICAgICAgICAgLy8gYmVpbmcgYWNjZXNzZWQuCiAgICAgICAgICAgICAgICAg
aWYgKHRlcm0tPmNhcHR1cmUoKSAmJiBtX2NvbXBpbGVNb2RlID09IEpJVENvbXBpbGVNb2RlOjpJ
bmNsdWRlU3VicGF0dGVybnMpIHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5wdXRP
ZmZzZXQgPSBtX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uOworICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnB1dE9mZnNldCA9IG9wLm1fY2hlY2tlZE9mZnNldCAtIHRl
cm0tPmlucHV0UG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0
eVR5cGUgPT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnB1dE9mZnNldCArPSB0ZXJtLT5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+bV9taW5p
bXVtU2l6ZTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0T2Zmc2V0KSB7CkBAIC0yNjU1
LDcgKzI2NDksNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJ
bmZvIHsKICAgICAgICAgICAgICAgICAvLyBvZmZzZXRzIG9ubHkgYWZ0ZXJ3YXJkcywgYXQgdGhl
IHBvaW50IHRoZSByZXN1bHRzIGFycmF5IGlzCiAgICAgICAgICAgICAgICAgLy8gYmVpbmcgYWNj
ZXNzZWQuCiAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPmNhcHR1cmUoKSAmJiBtX2NvbXBpbGVN
b2RlID09IEpJVENvbXBpbGVNb2RlOjpJbmNsdWRlU3VicGF0dGVybnMpIHsKLSAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW5wdXRPZmZzZXQgPSBtX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5p
bnB1dFBvc2l0aW9uOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnB1dE9mZnNldCA9
IG9wLm1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb247CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChpbnB1dE9mZnNldCkgewogICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQu
c3ViMzIobV9yZWdzLmluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIoaW5wdXRPZmZzZXQpLCBp
bmRleFRlbXBvcmFyeSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdWJwYXR0ZXJuRW5k
KGluZGV4VGVtcG9yYXJ5LCB0ZXJtLT5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQpOwpAQCAtMjc2
MSw3ICsyNzU1LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklU
SW5mbyB7CiAgICAgICAgICAgICAgICAgLy8gYmVpbmcgYWNjZXNzZWQuCiAgICAgICAgICAgICAg
ICAgaWYgKHRlcm0tPmNhcHR1cmUoKSAmJiBtX2NvbXBpbGVNb2RlID09IEpJVENvbXBpbGVNb2Rl
OjpJbmNsdWRlU3VicGF0dGVybnMpIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWFjcm9B
c3NlbWJsZXI6OlJlZ2lzdGVySUQgaW5kZXhUZW1wb3JhcnkgPSBtX3JlZ3MucmVnVDA7Ci0gICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlucHV0T2Zmc2V0ID0gbV9jaGVja2VkT2Zmc2V0IC0g
dGVybS0+aW5wdXRQb3NpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5wdXRP
ZmZzZXQgPSBvcC5tX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uOwogICAgICAg
ICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJUeXBlOjpG
aXhlZENvdW50KQogICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRPZmZzZXQgKz0gdGVybS0+
cGFyZW50aGVzZXMuZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemU7CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChpbnB1dE9mZnNldCkgewpAQCAtMjgwMiw3ICsyNzk2LDcgQEAgY2xhc3MgWWFyckdl
bmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAgICAgICAgICAgaWYg
KHRlcm0tPmNhcHR1cmUoKSAmJiBtX2NvbXBpbGVNb2RlID09IEpJVENvbXBpbGVNb2RlOjpJbmNs
dWRlU3VicGF0dGVybnMpIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWFjcm9Bc3NlbWJs
ZXI6OlJlZ2lzdGVySUQgaW5kZXhUZW1wb3JhcnkgPSBtX3JlZ3MucmVnVDA7CiAgICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnB1dE9mZnNldCA9IG1f
Y2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb247CisgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGlucHV0T2Zmc2V0ID0gb3AubV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQ
b3NpdGlvbjsKICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0T2Zmc2V0KSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5zdWIzMihtX3JlZ3MuaW5kZXgsIE1hY3JvQXNzZW1ibGVy
OjpJbW0zMihpbnB1dE9mZnNldCksIGluZGV4VGVtcG9yYXJ5KTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFN1YnBhdHRlcm5FbmQoaW5kZXhUZW1wb3JhcnksIHRlcm0tPnBhcmVudGhlc2Vz
LnN1YnBhdHRlcm5JZCk7CkBAIC0yODQwLDEyICsyODM0LDggQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQg
cGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uID0gdGVybS0+ZnJhbWVMb2NhdGlvbjsKICAgICAgICAg
ICAgICAgICBzdG9yZVRvRnJhbWUobV9yZWdzLmluZGV4LCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRp
b24gKyBCYWNrVHJhY2tJbmZvUGFyZW50aGV0aWNhbEFzc2VydGlvbjo6YmVnaW5JbmRleCgpKTsK
IAotICAgICAgICAgICAgICAgIC8vIENoZWNrIAotICAgICAgICAgICAgICAgIG9wLm1fY2hlY2tB
ZGp1c3QgPSBtX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uOwogICAgICAgICAg
ICAgICAgIGlmIChvcC5tX2NoZWNrQWRqdXN0KQogICAgICAgICAgICAgICAgICAgICBtX2ppdC5z
dWIzMihNYWNyb0Fzc2VtYmxlcjo6SW1tMzIob3AubV9jaGVja0FkanVzdCksIG1fcmVncy5pbmRl
eCk7Ci0KLSAgICAgICAgICAgICAgICBtX2NoZWNrZWRPZmZzZXQgLT0gb3AubV9jaGVja0FkanVz
dDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNh
c2UgWWFyck9wQ29kZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbkVuZDogewpAQCAtMjg2MSw5ICsy
ODUxLDYgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7
CiAgICAgICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIG9wLm1fcmVlbnRyeSA9IG1faml0LmxhYmVsKCk7CiAgICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgWWFyck9wJiBsYXN0T3AgPSBtX29wc1tvcC5t
X3ByZXZpb3VzT3BdOwotICAgICAgICAgICAgICAgIG1fY2hlY2tlZE9mZnNldCArPSBsYXN0T3Au
bV9jaGVja0FkanVzdDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIApA
QCAtMjkyMywxMiArMjkxMCw2IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMg
WWFyckpJVEluZm8gewogICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRp
dmVOZXh0OiB7CiAgICAgICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2
ZSA9IG9wLm1fYWx0ZXJuYXRpdmU7CiAKLSAgICAgICAgICAgICAgICBtX2NoZWNrZWRPZmZzZXQg
LT0gYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7Ci0gICAgICAgICAgICAgICAgaWYgKG9wLm1f
b3AgPT0gWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlTmV4dCkgewotICAgICAgICAgICAgICAg
ICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIHByaW9yQWx0ZXJuYXRpdmUgPSBtX29wc1tvcC5tX3By
ZXZpb3VzT3BdLm1fYWx0ZXJuYXRpdmU7Ci0gICAgICAgICAgICAgICAgICAgIG1fY2hlY2tlZE9m
ZnNldCArPSBwcmlvckFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplOwotICAgICAgICAgICAgICAg
IH0KLQogICAgICAgICAgICAgICAgIC8vIElzIHRoaXMgdGhlIGxhc3QgYWx0ZXJuYXRpdmU/IElm
IG5vdCwgdGhlbiBpZiB3ZSBiYWNrdHJhY2sgdG8gdGhpcyBwb2ludCB3ZSBqdXN0CiAgICAgICAg
ICAgICAgICAgLy8gbmVlZCB0byBqdW1wIHRvIHRyeSB0byBtYXRjaCB0aGUgbmV4dCBhbHRlcm5h
dGl2ZS4KICAgICAgICAgICAgICAgICBpZiAobV9vcHNbb3AubV9uZXh0T3BdLm1fb3AgIT0gWWFy
ck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlRW5kKSB7CkBAIC0zMTI3LDkgKzMxMDgsNiBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAg
IGNhc2UgWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlRW5kOiB7CiAgICAgICAgICAgICAgICAg
Ly8gV2Ugc2hvdWxkIG5ldmVyIGJhY2t0cmFjayBiYWNrIGludG8gYSBib2R5IGRpc2p1bmN0aW9u
LgogICAgICAgICAgICAgICAgIEFTU0VSVChtX2JhY2t0cmFja2luZ1N0YXRlLmlzRW1wdHkoKSk7
Ci0KLSAgICAgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIHByaW9yQWx0ZXJuYXRpdmUg
PSBtX29wc1tvcC5tX3ByZXZpb3VzT3BdLm1fYWx0ZXJuYXRpdmU7Ci0gICAgICAgICAgICAgICAg
bV9jaGVja2VkT2Zmc2V0ICs9IHByaW9yQWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKQEAgLTMxNjAsNyArMzEzOCw3IEBA
IGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAg
ICAgICAgICAgIC8vIFNldCB0aGUgYmFja3RyYWNrcyB0byBqdW1wIHRvIHRoZSBhcHByb3ByaWF0
ZSBwbGFjZS4gV2UgbWF5IG5lZWQKICAgICAgICAgICAgICAgICAvLyB0byBsaW5rIHRoZSBiYWNr
dHJhY2tzIGluIG9uZSBvZiB0aHJlZSBkaWZmZXJlbnQgd2F5IGRlcGVuZGluZyBvbgogICAgICAg
ICAgICAgICAgIC8vIHRoZSB0eXBlIG9mIGFsdGVybmF0aXZlIHdlIGFyZSBkZWFsaW5nIHdpdGg6
Ci0gICAgICAgICAgICAgICAgLy8gIC0gQSBzaW5nbGUgYWx0ZXJuYXRpdmUsIHdpdGggbm8gc2lt
cGxpbmdzLgorICAgICAgICAgICAgICAgIC8vICAtIEEgc2luZ2xlIGFsdGVybmF0aXZlLCB3aXRo
IG5vIHNpYmxpbmdzLgogICAgICAgICAgICAgICAgIC8vICAtIFRoZSBsYXN0IGFsdGVybmF0aXZl
IG9mIGEgc2V0IG9mIHR3byBvciBtb3JlLgogICAgICAgICAgICAgICAgIC8vICAtIEFuIGFsdGVy
bmF0aXZlIG90aGVyIHRoYW4gdGhlIGxhc3Qgb2YgYSBzZXQgb2YgdHdvIG9yIG1vcmUuCiAgICAg
ICAgICAgICAgICAgLy8KQEAgLTMyMjcsMTIgKzMyMDUsNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9y
IGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KGVuZE9wLT5tX29wID09IFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlRW5kIHx8
IGVuZE9wLT5tX29wID09IFlhcnJPcENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlRW5kKTsKICAgICAg
ICAgICAgICAgICAgICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS5hcHBlbmQoZW5kT3AtPm1fanVtcHMp
OwogICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIG1fY2hlY2tlZE9mZnNldCAt
PSBvcC5tX2NoZWNrQWRqdXN0OwotICAgICAgICAgICAgICAgIGlmICghaXNCZWdpbikgewotICAg
ICAgICAgICAgICAgICAgICBZYXJyT3AmIGxhc3RPcCA9IG1fb3BzW29wLm1fcHJldmlvdXNPcF07
Ci0gICAgICAgICAgICAgICAgICAgIG1fY2hlY2tlZE9mZnNldCArPSBsYXN0T3AubV9jaGVja0Fk
anVzdDsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0
aXZlRW5kOgpAQCAtMzI1OCw5ICszMjMwLDYgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAgICAgICAgICAgICAgIC8vIGFsdGVybmF0aXZl
IHRvIHRoaXMgcG9pbnQuCiAgICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUu
YXBwZW5kKG9wLm1fcmV0dXJuQWRkcmVzcyk7CiAgICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgWWFyck9wJiBsYXN0T3AgPSBtX29wc1tvcC5tX3ByZXZpb3VzT3BdOwotICAgICAg
ICAgICAgICAgIG1fY2hlY2tlZE9mZnNldCArPSBsYXN0T3AubV9jaGVja0FkanVzdDsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIApAQCAtMzUwOSw4ICszNDc4LDYgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAg
ICAgICAgICAgLy8gdGhlIGVuZCBvZiB0aGUgYXNzZXJ0aW9uLiBBbHNvLCBpZiBpbnZlcnRlZCwg
d2Ugd2lsbCBoYXZlCiAgICAgICAgICAgICAgICAgLy8gYWRkZWQgdGhlIGZhaWx1cmUgY2F1c2Vk
IGJ5IGEgc3VjY2Vzc2Z1bCBtYXRjaCB0byB0aGlzLgogICAgICAgICAgICAgICAgIG1fYmFja3Ry
YWNraW5nU3RhdGUuYXBwZW5kKGVuZE9wLm1fanVtcHMpOwotCi0gICAgICAgICAgICAgICAgbV9j
aGVja2VkT2Zmc2V0ICs9IG9wLm1fY2hlY2tBZGp1c3Q7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlBhcmVudGhldGlj
YWxBc3NlcnRpb25FbmQ6IHsKQEAgLTM1MjAsMTYgKzM0ODcsMTIgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAKICAgICAgICAgICAgICAgICAvLyBO
ZXZlciBiYWNrdHJhY2sgaW50byBhbiBhc3NlcnRpb247IGxhdGVyIGZhaWx1cmVzIGJhaWwgdG8g
YmVmb3JlIHRoZSBiZWdpbi4KICAgICAgICAgICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRlLnRh
a2VCYWNrdHJhY2tzVG9KdW1wTGlzdChvcC5tX2p1bXBzLCAmbV9qaXQpOwotCi0gICAgICAgICAg
ICAgICAgWWFyck9wJiBsYXN0T3AgPSBtX29wc1tvcC5tX3ByZXZpb3VzT3BdOwotICAgICAgICAg
ICAgICAgIG1fY2hlY2tlZE9mZnNldCAtPSBsYXN0T3AubV9jaGVja0FkanVzdDsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY2FzZSBZYXJyT3BD
b2RlOjpNYXRjaEZhaWxlZDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
LQogICAgICAgICB9IHdoaWxlIChvcEluZGV4KTsKICAgICB9CiAKQEAgLTM1NDYsNyArMzUwOSw3
IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAg
IC8vIEFsdGVybmF0aXZlcyB3aWxsIHVzZSB0aGUgJ1NpbXBsZScgc2V0IG9mIG9wcyBpZiBlaXRo
ZXIgdGhlCiAgICAgLy8gc3VicGF0dGVybiBpcyB0ZXJtaW5hbCAoaW4gd2hpY2ggY2FzZSB3ZSB3
aWxsIG5ldmVyIG5lZWQgdG8KICAgICAvLyBiYWNrdHJhY2spLCBvciBpZiB0aGUgc3VicGF0dGVy
biBvbmx5IGNvbnRhaW5zIG9uZSBhbHRlcm5hdGl2ZS4KLSAgICB2b2lkIG9wQ29tcGlsZVBhcmVu
dGhlc2VzU3VicGF0dGVybihQYXR0ZXJuVGVybSogdGVybSkKKyAgICB2b2lkIG9wQ29tcGlsZVBh
cmVudGhlc2VzU3VicGF0dGVybihDaGVja2VkPHVuc2lnbmVkPiBjaGVja2VkT2Zmc2V0LCBQYXR0
ZXJuVGVybSogdGVybSkKICAgICB7CiAgICAgICAgIFlhcnJPcENvZGUgcGFyZW50aGVzZXNCZWdp
bk9wQ29kZTsKICAgICAgICAgWWFyck9wQ29kZSBwYXJlbnRoZXNlc0VuZE9wQ29kZTsKQEAgLTM2
MjAsMTIgKzM1ODMsMjIgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJy
SklUSW5mbyB7CiAgICAgICAgIG1fb3BzLmFwcGVuZChhbHRlcm5hdGl2ZUJlZ2luT3BDb2RlKTsK
ICAgICAgICAgbV9vcHMubGFzdCgpLm1fcHJldmlvdXNPcCA9IG5vdEZvdW5kOwogICAgICAgICBt
X29wcy5sYXN0KCkubV90ZXJtID0gdGVybTsKLSAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxQYXR0ZXJuQWx0ZXJuYXRpdmU+PiYgYWx0ZXJuYXRpdmVzID0gdGVybS0+cGFyZW50aGVzZXMu
ZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzOworICAgICAgICBQYXR0ZXJuRGlzanVuY3Rpb24q
IGRpc2p1bmN0aW9uID0gdGVybS0+cGFyZW50aGVzZXMuZGlzanVuY3Rpb247CisgICAgICAgIGF1
dG8mIGFsdGVybmF0aXZlcyA9IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlczsKKyAgICAgICAg
YXV0byBvcmlnaW5hbENoZWNrZWRPZmZzZXQgPSBjaGVja2VkT2Zmc2V0OwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgYWx0ZXJuYXRpdmVzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
ICAgICBzaXplX3QgbGFzdE9wSW5kZXggPSBtX29wcy5zaXplKCkgLSAxOwogCiAgICAgICAgICAg
ICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIG5lc3RlZEFsdGVybmF0aXZlID0gYWx0ZXJuYXRpdmVzW2ld
LmdldCgpOwotICAgICAgICAgICAgb3BDb21waWxlQWx0ZXJuYXRpdmUobmVzdGVkQWx0ZXJuYXRp
dmUpOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBob3cgbXVj
aCBpbnB1dCB3ZSBuZWVkIHRvIGNoZWNrIGZvciwgYW5kIGlmIG5vbi16ZXJvIGNoZWNrLgorICAg
ICAgICAgICAgICAgIFlhcnJPcCYgbGFzdE9wID0gbV9vcHNbbGFzdE9wSW5kZXhdOworICAgICAg
ICAgICAgICAgIGxhc3RPcC5tX2NoZWNrQWRqdXN0ID0gbmVzdGVkQWx0ZXJuYXRpdmUtPm1fbWlu
aW11bVNpemU7CisgICAgICAgICAgICAgICAgaWYgKCh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVh
bnRpZmllclR5cGU6OkZpeGVkQ291bnQpICYmICh0ZXJtLT50eXBlICE9IFBhdHRlcm5UZXJtOjpU
eXBlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKSkKKyAgICAgICAgICAgICAgICAgICAgbGFzdE9w
Lm1fY2hlY2tBZGp1c3QgLT0gZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemU7CisgICAgICAgICAg
ICAgICAgbGFzdE9wLm1fY2hlY2tlZE9mZnNldCA9IGNoZWNrZWRPZmZzZXQgKyBsYXN0T3AubV9j
aGVja0FkanVzdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG9wQ29tcGlsZUFsdGVybmF0
aXZlKG1fb3BzW2xhc3RPcEluZGV4XS5tX2NoZWNrZWRPZmZzZXQsIG5lc3RlZEFsdGVybmF0aXZl
KTsKIAogICAgICAgICAgICAgc2l6ZV90IHRoaXNPcEluZGV4ID0gbV9vcHMuc2l6ZSgpOwogICAg
ICAgICAgICAgbV9vcHMuYXBwZW5kKFlhcnJPcChhbHRlcm5hdGl2ZU5leHRPcENvZGUpKTsKQEAg
LTM2NDMsNiArMzYxNiw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8gewogICAgICAgICBsYXN0T3AubV9vcCA9IGFsdGVybmF0aXZlRW5kT3BDb2RlOwog
ICAgICAgICBsYXN0T3AubV9hbHRlcm5hdGl2ZSA9IG51bGxwdHI7CiAgICAgICAgIGxhc3RPcC5t
X25leHRPcCA9IG5vdEZvdW5kOworICAgICAgICBsYXN0T3AubV9jaGVja2VkT2Zmc2V0ID0gY2hl
Y2tlZE9mZnNldDsKIAogICAgICAgICBzaXplX3QgcGFyZW5FbmQgPSBtX29wcy5zaXplKCk7CiAg
ICAgICAgIG1fb3BzLmFwcGVuZChwYXJlbnRoZXNlc0VuZE9wQ29kZSk7CkBAIC0zNjUwLDkgKzM2
MjQsMTEgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7
CiAgICAgICAgIG1fb3BzW3BhcmVuQmVnaW5dLm1fdGVybSA9IHRlcm07CiAgICAgICAgIG1fb3Bz
W3BhcmVuQmVnaW5dLm1fcHJldmlvdXNPcCA9IG5vdEZvdW5kOwogICAgICAgICBtX29wc1twYXJl
bkJlZ2luXS5tX25leHRPcCA9IHBhcmVuRW5kOworICAgICAgICBtX29wc1twYXJlbkJlZ2luXS5t
X2NoZWNrZWRPZmZzZXQgPSBjaGVja2VkT2Zmc2V0OwogICAgICAgICBtX29wc1twYXJlbkVuZF0u
bV90ZXJtID0gdGVybTsKICAgICAgICAgbV9vcHNbcGFyZW5FbmRdLm1fcHJldmlvdXNPcCA9IHBh
cmVuQmVnaW47CiAgICAgICAgIG1fb3BzW3BhcmVuRW5kXS5tX25leHRPcCA9IG5vdEZvdW5kOwor
ICAgICAgICBtX29wc1twYXJlbkVuZF0ubV9jaGVja2VkT2Zmc2V0ID0gY2hlY2tlZE9mZnNldDsK
ICAgICB9CiAKICAgICAvLyBvcENvbXBpbGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uCkBAIC0zNjYz
LDI1ICszNjM5LDM4IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJ
VEluZm8gewogICAgIC8vIFdlIGNhbiBhbHdheXMgdXNlIHRoZSBPcFNpbXBsZU5lc3RlZEFsdGVy
bmF0aXZlIG5vZGVzIGluIHRoZQogICAgIC8vIGNhc2Ugb2YgcGFyZW50aGV0aWNhbCBhc3NlcnRp
b25zIHNpbmNlIHRoZXNlIG9ubHkgZXZlciBtYXRjaAogICAgIC8vIG9uY2UsIGFuZCB3aWxsIG5l
dmVyIGJhY2t0cmFjayBiYWNrIGludG8gdGhlIGFzc2VydGlvbi4KLSAgICB2b2lkIG9wQ29tcGls
ZVBhcmVudGhldGljYWxBc3NlcnRpb24oUGF0dGVyblRlcm0qIHRlcm0pCisgICAgdm9pZCBvcENv
bXBpbGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKENoZWNrZWQ8dW5zaWduZWQ+IGNoZWNrZWRPZmZz
ZXQsIFBhdHRlcm5UZXJtKiB0ZXJtKQogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFpc1Nh
ZmVUb1JlY3Vyc2UoKSkpIHsKICAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9IEpJVEZhaWx1
cmVSZWFzb246OlBhcmVudGhlc2lzTmVzdGVkVG9vRGVlcDsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCisgICAgICAgIGF1dG8gb3JpZ2luYWxDaGVja2VkT2Zmc2V0ID0gY2hlY2tl
ZE9mZnNldDsKICAgICAgICAgc2l6ZV90IHBhcmVuQmVnaW4gPSBtX29wcy5zaXplKCk7CiAgICAg
ICAgIG1fb3BzLmFwcGVuZChZYXJyT3BDb2RlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4p
OworICAgICAgICBtX29wcy5sYXN0KCkubV9jaGVja0FkanVzdCA9IGNoZWNrZWRPZmZzZXQgLSB0
ZXJtLT5pbnB1dFBvc2l0aW9uOworICAgICAgICBjaGVja2VkT2Zmc2V0IC09IG1fb3BzLmxhc3Qo
KS5tX2NoZWNrQWRqdXN0OworICAgICAgICBtX29wcy5sYXN0KCkubV9jaGVja2VkT2Zmc2V0ID0g
Y2hlY2tlZE9mZnNldDsKIAogICAgICAgICBtX29wcy5hcHBlbmQoWWFyck9wQ29kZTo6U2ltcGxl
TmVzdGVkQWx0ZXJuYXRpdmVCZWdpbik7CiAgICAgICAgIG1fb3BzLmxhc3QoKS5tX3ByZXZpb3Vz
T3AgPSBub3RGb3VuZDsKICAgICAgICAgbV9vcHMubGFzdCgpLm1fdGVybSA9IHRlcm07Ci0gICAg
ICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UGF0dGVybkFsdGVybmF0aXZlPj4mIGFsdGVybmF0
aXZlcyA9ICB0ZXJtLT5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXM7Cisg
ICAgICAgIFBhdHRlcm5EaXNqdW5jdGlvbiogZGlzanVuY3Rpb24gPSB0ZXJtLT5wYXJlbnRoZXNl
cy5kaXNqdW5jdGlvbjsKKyAgICAgICAgYXV0byYgYWx0ZXJuYXRpdmVzID0gZGlzanVuY3Rpb24t
Pm1fYWx0ZXJuYXRpdmVzOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYWx0ZXJu
YXRpdmVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBzaXplX3QgbGFzdE9wSW5kZXggPSBt
X29wcy5zaXplKCkgLSAxOwogCiAgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIG5lc3Rl
ZEFsdGVybmF0aXZlID0gYWx0ZXJuYXRpdmVzW2ldLmdldCgpOwotICAgICAgICAgICAgb3BDb21w
aWxlQWx0ZXJuYXRpdmUobmVzdGVkQWx0ZXJuYXRpdmUpOworICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIC8vIENhbGN1bGF0ZSBob3cgbXVjaCBpbnB1dCB3ZSBuZWVkIHRvIGNoZWNrIGZv
ciwgYW5kIGlmIG5vbi16ZXJvIGNoZWNrLgorICAgICAgICAgICAgICAgIFlhcnJPcCYgbGFzdE9w
ID0gbV9vcHNbbGFzdE9wSW5kZXhdOworICAgICAgICAgICAgICAgIGxhc3RPcC5tX2NoZWNrQWRq
dXN0ID0gbmVzdGVkQWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7CisgICAgICAgICAgICAgICAg
aWYgKCh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQpICYm
ICh0ZXJtLT50eXBlICE9IFBhdHRlcm5UZXJtOjpUeXBlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9u
KSkKKyAgICAgICAgICAgICAgICAgICAgbGFzdE9wLm1fY2hlY2tBZGp1c3QgLT0gZGlzanVuY3Rp
b24tPm1fbWluaW11bVNpemU7CisgICAgICAgICAgICAgICAgbGFzdE9wLm1fY2hlY2tlZE9mZnNl
dCA9IGNoZWNrZWRPZmZzZXQgKyBsYXN0T3AubV9jaGVja0FkanVzdDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIG9wQ29tcGlsZUFsdGVybmF0aXZlKG1fb3BzW2xhc3RPcEluZGV4XS5tX2No
ZWNrZWRPZmZzZXQsIG5lc3RlZEFsdGVybmF0aXZlKTsKIAogICAgICAgICAgICAgc2l6ZV90IHRo
aXNPcEluZGV4ID0gbV9vcHMuc2l6ZSgpOwogICAgICAgICAgICAgbV9vcHMuYXBwZW5kKFlhcnJP
cChZYXJyT3BDb2RlOjpTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZU5leHQpKTsKQEAgLTM2OTksNiAr
MzY4OCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8g
ewogICAgICAgICBsYXN0T3AubV9vcCA9IFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0
aXZlRW5kOwogICAgICAgICBsYXN0T3AubV9hbHRlcm5hdGl2ZSA9IG51bGxwdHI7CiAgICAgICAg
IGxhc3RPcC5tX25leHRPcCA9IG5vdEZvdW5kOworICAgICAgICBsYXN0T3AubV9jaGVja2VkT2Zm
c2V0ID0gY2hlY2tlZE9mZnNldDsKIAogICAgICAgICBzaXplX3QgcGFyZW5FbmQgPSBtX29wcy5z
aXplKCk7CiAgICAgICAgIG1fb3BzLmFwcGVuZChZYXJyT3BDb2RlOjpQYXJlbnRoZXRpY2FsQXNz
ZXJ0aW9uRW5kKTsKQEAgLTM3MDksMTEgKzM2OTksMTIgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBm
aW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAgIG1fb3BzW3BhcmVuRW5kXS5tX3Rl
cm0gPSB0ZXJtOwogICAgICAgICBtX29wc1twYXJlbkVuZF0ubV9wcmV2aW91c09wID0gcGFyZW5C
ZWdpbjsKICAgICAgICAgbV9vcHNbcGFyZW5FbmRdLm1fbmV4dE9wID0gbm90Rm91bmQ7CisgICAg
ICAgIG1fb3BzW3BhcmVuRW5kXS5tX2NoZWNrZWRPZmZzZXQgPSBvcmlnaW5hbENoZWNrZWRPZmZz
ZXQ7CiAgICAgfQogCiAgICAgLy8gb3BDb21waWxlQWx0ZXJuYXRpdmUKICAgICAvLyBDYWxsZWQg
dG8gZW1pdCBub2RlcyBmb3IgYWxsIHRlcm1zIGluIGFuIGFsdGVybmF0aXZlLgotICAgIHZvaWQg
b3BDb21waWxlQWx0ZXJuYXRpdmUoUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSkKKyAg
ICB2b2lkIG9wQ29tcGlsZUFsdGVybmF0aXZlKENoZWNrZWQ8dW5zaWduZWQ+IGNoZWNrZWRPZmZz
ZXQsIFBhdHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUpCiAgICAgewogICAgICAgICBvcHRp
bWl6ZUFsdGVybmF0aXZlKGFsdGVybmF0aXZlKTsKIApAQCAtMzcyMiwxNSArMzcxMywxNiBAQCBj
bGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKIAogICAgICAg
ICAgICAgc3dpdGNoICh0ZXJtLT50eXBlKSB7CiAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJt
OjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm46Ci0gICAgICAgICAgICAgICAgb3BDb21waWxl
UGFyZW50aGVzZXNTdWJwYXR0ZXJuKHRlcm0pOworICAgICAgICAgICAgICAgIG9wQ29tcGlsZVBh
cmVudGhlc2VzU3VicGF0dGVybihjaGVja2VkT2Zmc2V0LCB0ZXJtKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGV0
aWNhbEFzc2VydGlvbjoKLSAgICAgICAgICAgICAgICBvcENvbXBpbGVQYXJlbnRoZXRpY2FsQXNz
ZXJ0aW9uKHRlcm0pOworICAgICAgICAgICAgICAgIG9wQ29tcGlsZVBhcmVudGhldGljYWxBc3Nl
cnRpb24oY2hlY2tlZE9mZnNldCwgdGVybSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgbV9vcHMuYXBwZW5kKHRlcm0pOwor
ICAgICAgICAgICAgICAgIG1fb3BzLmxhc3QoKS5tX2NoZWNrZWRPZmZzZXQgPSBjaGVja2VkT2Zm
c2V0OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMzc1NSw3ICszNzQ3LDcg
QEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8UGF0dGVybkFsdGVybmF0aXZlPj4mIGFsdGVybmF0aXZlcyA9IGRpc2p1bmN0
aW9uLT5tX2FsdGVybmF0aXZlczsKKyAgICAgICAgYXV0byYgYWx0ZXJuYXRpdmVzID0gZGlzanVu
Y3Rpb24tPm1fYWx0ZXJuYXRpdmVzOwogICAgICAgICBzaXplX3QgY3VycmVudEFsdGVybmF0aXZl
SW5kZXggPSAwOwogCiAgICAgICAgIC8vIEVtaXQgdGhlICdvbmNlIHRocm91Z2gnIGFsdGVybmF0
aXZlcy4KQEAgLTM3NjUsOCArMzc1NywxMCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIFlhcnJKSVRJbmZvIHsKIAogICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAg
IHNpemVfdCBsYXN0T3BJbmRleCA9IG1fb3BzLnNpemUoKSAtIDE7CisKICAgICAgICAgICAgICAg
ICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0gYWx0ZXJuYXRpdmVzW2N1cnJlbnRB
bHRlcm5hdGl2ZUluZGV4XS5nZXQoKTsKLSAgICAgICAgICAgICAgICBvcENvbXBpbGVBbHRlcm5h
dGl2ZShhbHRlcm5hdGl2ZSk7CisgICAgICAgICAgICAgICAgbV9vcHNbbGFzdE9wSW5kZXhdLm1f
Y2hlY2tlZE9mZnNldCA9IGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplOworICAgICAgICAgICAg
ICAgIG9wQ29tcGlsZUFsdGVybmF0aXZlKGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplLCBhbHRl
cm5hdGl2ZSk7CiAKICAgICAgICAgICAgICAgICBzaXplX3QgdGhpc09wSW5kZXggPSBtX29wcy5z
aXplKCk7CiAgICAgICAgICAgICAgICAgbV9vcHMuYXBwZW5kKFlhcnJPcChZYXJyT3BDb2RlOjpC
b2R5QWx0ZXJuYXRpdmVOZXh0KSk7CkBAIC0zNzg3LDEwICszNzgxLDEyIEBAIGNsYXNzIFlhcnJH
ZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICAgICAgbGFzdE9w
Lm1fb3AgPSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVFbmQ7CiAgICAgICAgICAgICBsYXN0
T3AubV9hbHRlcm5hdGl2ZSA9IG51bGxwdHI7CiAgICAgICAgICAgICBsYXN0T3AubV9uZXh0T3Ag
PSBub3RGb3VuZDsKKyAgICAgICAgICAgIGxhc3RPcC5tX2NoZWNrZWRPZmZzZXQgPSAwOwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKGN1cnJlbnRBbHRlcm5hdGl2ZUluZGV4ID09IGFsdGVybmF0
aXZlcy5zaXplKCkpIHsKICAgICAgICAgICAgIG1fb3BzLmFwcGVuZChZYXJyT3AoWWFyck9wQ29k
ZTo6TWF0Y2hGYWlsZWQpKTsKKyAgICAgICAgICAgIG1fb3BzLmxhc3QoKS5tX2NoZWNrZWRPZmZz
ZXQgPSAwOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTM4MTUsOSArMzgx
MSwxMSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsK
IAogICAgICAgICBkbyB7CiAgICAgICAgICAgICBzaXplX3QgbGFzdE9wSW5kZXggPSBtX29wcy5z
aXplKCkgLSAxOworCiAgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZl
ID0gYWx0ZXJuYXRpdmVzW2N1cnJlbnRBbHRlcm5hdGl2ZUluZGV4XS5nZXQoKTsKICAgICAgICAg
ICAgIEFTU0VSVCghYWx0ZXJuYXRpdmUtPm9uY2VUaHJvdWdoKCkpOwotICAgICAgICAgICAgb3BD
b21waWxlQWx0ZXJuYXRpdmUoYWx0ZXJuYXRpdmUpOworICAgICAgICAgICAgbV9vcHNbbGFzdE9w
SW5kZXhdLm1fY2hlY2tlZE9mZnNldCA9IGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplOworICAg
ICAgICAgICAgb3BDb21waWxlQWx0ZXJuYXRpdmUoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUs
IGFsdGVybmF0aXZlKTsKIAogICAgICAgICAgICAgc2l6ZV90IHRoaXNPcEluZGV4ID0gbV9vcHMu
c2l6ZSgpOwogICAgICAgICAgICAgbV9vcHMuYXBwZW5kKFlhcnJPcChZYXJyT3BDb2RlOjpCb2R5
QWx0ZXJuYXRpdmVOZXh0KSk7CkBAIC0zODM2LDYgKzM4MzQsNyBAQCBjbGFzcyBZYXJyR2VuZXJh
dG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgbGFzdE9wLm1fb3AgPSBZ
YXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVFbmQ7CiAgICAgICAgIGxhc3RPcC5tX2FsdGVybmF0
aXZlID0gbnVsbHB0cjsKICAgICAgICAgbGFzdE9wLm1fbmV4dE9wID0gcmVwZWF0TG9vcDsKKyAg
ICAgICAgbGFzdE9wLm1fY2hlY2tlZE9mZnNldCA9IDA7CiAgICAgfQogCiAgICAgYm9vbCBjb2xs
ZWN0Qm95ZXJNb29yZUluZm8oUGF0dGVybkRpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbiwgc2l6ZV90
IGN1cnJlbnRBbHRlcm5hdGl2ZUluZGV4LCBCb3llck1vb3JlSW5mbyYgYm1JbmZvKQpAQCAtNDQ3
NywyOSArNDQ3NiwyOSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJK
SVRJbmZvIHsKICAgICAgICAgICAgIG91dC5wcmludCgiVGVybSAiKTsKICAgICAgICAgICAgIHN3
aXRjaCAodGVybS0+dHlwZSkgewogICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6
QXNzZXJ0aW9uQk9MOgotICAgICAgICAgICAgICAgIG91dC5wcmludCgiQXNzZXJ0IEJPTCIpOwor
ICAgICAgICAgICAgICAgIG91dC5wcmludGYoIkFzc2VydCBCT0wgY2hlY2tlZC1vZmZzZXQ6KCV1
KSIsIG9wLm1fY2hlY2tlZE9mZnNldC52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
IAogICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9uRU9MOgotICAg
ICAgICAgICAgICAgIG91dC5wcmludCgiQXNzZXJ0IEVPTCIpOworICAgICAgICAgICAgICAgIG91
dC5wcmludGYoIkFzc2VydCBFT0wgY2hlY2tlZC1vZmZzZXQ6KCV1KSIsIG9wLm1fY2hlY2tlZE9m
ZnNldC52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2Fz
ZSBQYXR0ZXJuVGVybTo6VHlwZTo6QmFja1JlZmVyZW5jZToKLSAgICAgICAgICAgICAgICBvdXQu
cHJpbnRmKCJCYWNrUmVmZXJlbmNlIHBhdHRlcm4gIyV1IiwgdGVybS0+YmFja1JlZmVyZW5jZVN1
YnBhdHRlcm5JZCk7CisgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiQmFja1JlZmVyZW5jZSBw
YXR0ZXJuICMldSBjaGVja2VkLW9mZnNldDooJXUpIiwgdGVybS0+YmFja1JlZmVyZW5jZVN1YnBh
dHRlcm5JZCwgb3AubV9jaGVja2VkT2Zmc2V0LnZhbHVlKCkpOwogICAgICAgICAgICAgICAgIHRl
cm0tPmR1bXBRdWFudGlmaWVyKG91dCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhdHRlcm5DaGFyYWN0ZXI6Ci0gICAgICAg
ICAgICAgICAgb3V0LnByaW50KCJQYXR0ZXJuQ2hhcmFjdGVyICIpOworICAgICAgICAgICAgICAg
IG91dC5wcmludGYoIlBhdHRlcm5DaGFyYWN0ZXIgY2hlY2tlZC1vZmZzZXQ6KCV1KSAiLCBvcC5t
X2NoZWNrZWRPZmZzZXQudmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgZHVtcFVDaGFyMzIob3V0
LCB0ZXJtLT5wYXR0ZXJuQ2hhcmFjdGVyKTsKICAgICAgICAgICAgICAgICBpZiAobV9wYXR0ZXJu
Lmlnbm9yZUNhc2UoKSkKLSAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIgaWdub3JlIGNh
c2UiKTsKKyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCJpZ25vcmUgY2FzZSAiKTsKIAog
ICAgICAgICAgICAgICAgIHRlcm0tPmR1bXBRdWFudGlmaWVyKG91dCk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkNoYXJhY3Rl
ckNsYXNzOgotICAgICAgICAgICAgICAgIG91dC5wcmludCgiUGF0dGVybkNoYXJhY3RlckNsYXNz
ICIpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoIlBhdHRlcm5DaGFyYWN0ZXJDbGFzcyBj
aGVja2VkLW9mZnNldDooJXUpICIsIG9wLm1fY2hlY2tlZE9mZnNldC52YWx1ZSgpKTsKICAgICAg
ICAgICAgICAgICBpZiAodGVybS0+aW52ZXJ0KCkpCiAgICAgICAgICAgICAgICAgICAgIG91dC5w
cmludCgibm90ICIpOwogICAgICAgICAgICAgICAgIGR1bXBDaGFyYWN0ZXJDbGFzcyhvdXQsICZt
X3BhdHRlcm4sIHRlcm0tPmNoYXJhY3RlckNsYXNzKTsKQEAgLTQ1MDcsMTUgKzQ1MDYsMTUgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkFz
c2VydGlvbldvcmRCb3VuZGFyeToKLSAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCIlc3dvcmQg
Ym91bmRhcnkiLCB0ZXJtLT5pbnZlcnQoKSA/ICJub24tIiA6ICIiKTsKKyAgICAgICAgICAgICAg
ICBvdXQucHJpbnRmKCIlc3dvcmQgYm91bmRhcnkgY2hlY2tlZC1vZmZzZXQ6KCV1KSIsIHRlcm0t
PmludmVydCgpID8gIm5vbi0iIDogIiIsIG9wLm1fY2hlY2tlZE9mZnNldC52YWx1ZSgpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlw
ZTo6RG90U3RhckVuY2xvc3VyZToKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIi4qIGVuY2xv
c3VyZSIpOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoIi4qIGVuY2xvc3VyZSBjaGVja2Vk
LW9mZnNldDooJXUpIiwgb3AubV9jaGVja2VkT2Zmc2V0LnZhbHVlKCkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpGb3J3YXJk
UmVmZXJlbmNlOgotICAgICAgICAgICAgICAgIG91dC5wcmludCgiRm9yd2FyZFJlZmVyZW5jZSA8
bm90IGhhbmRsZWQ+Iik7CisgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiRm9yd2FyZFJlZmVy
ZW5jZSA8bm90IGhhbmRsZWQ+IGNoZWNrZWQtb2Zmc2V0OigldSkiLCBvcC5tX2NoZWNrZWRPZmZz
ZXQudmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2Ug
UGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVybjoKQEAgLTQ1MzEsNjcgKzQ1
MzAsNjcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7
CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUJl
Z2luOgotICAgICAgICAgICAgb3V0LnByaW50ZigiQm9keUFsdGVybmF0aXZlQmVnaW4gbWluaW11
bSBzaXplICV1XG4iLCBvcC5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKTsKKyAgICAgICAg
ICAgIG91dC5wcmludGYoIkJvZHlBbHRlcm5hdGl2ZUJlZ2luIG1pbmltdW0tc2l6ZTooJXUpLGNo
ZWNrZWQtb2Zmc2V0OigldSlcbiIsIG9wLm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUsIG9w
Lm1fY2hlY2tlZE9mZnNldC52YWx1ZSgpKTsKICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAg
ICAgIGNhc2UgWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlTmV4dDoKLSAgICAgICAgICAgIG91
dC5wcmludGYoIkJvZHlBbHRlcm5hdGl2ZU5leHQgbWluaW11bSBzaXplICV1XG4iLCBvcC5tX2Fs
dGVybmF0aXZlLT5tX21pbmltdW1TaXplKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIkJvZHlB
bHRlcm5hdGl2ZU5leHQgbWluaW11bS1zaXplOigldSksY2hlY2tlZC1vZmZzZXQ6KCV1KVxuIiwg
b3AubV9hbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSwgb3AubV9jaGVja2VkT2Zmc2V0LnZhbHVl
KCkpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpC
b2R5QWx0ZXJuYXRpdmVFbmQ6Ci0gICAgICAgICAgICBvdXQucHJpbnQoIkJvZHlBbHRlcm5hdGl2
ZUVuZFxuIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJCb2R5QWx0ZXJuYXRpdmVFbmQgY2hl
Y2tlZC1vZmZzZXQ6KCV1KVxuIiwgb3AubV9jaGVja2VkT2Zmc2V0LnZhbHVlKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpTaW1wbGVOZXN0ZWRB
bHRlcm5hdGl2ZUJlZ2luOgotICAgICAgICAgICAgb3V0LnByaW50ZigiU2ltcGxlTmVzdGVkQWx0
ZXJuYXRpdmVCZWdpbiBtaW5pbXVtIHNpemUgJXVcbiIsIG9wLm1fYWx0ZXJuYXRpdmUtPm1fbWlu
aW11bVNpemUpOworICAgICAgICAgICAgb3V0LnByaW50ZigiU2ltcGxlTmVzdGVkQWx0ZXJuYXRp
dmVCZWdpbiBtaW5pbXVtLXNpemU6KCV1KSxjaGVja2VkLW9mZnNldDooJXUpXG4iLCBvcC5tX2Fs
dGVybmF0aXZlLT5tX21pbmltdW1TaXplLCBvcC5tX2NoZWNrZWRPZmZzZXQudmFsdWUoKSk7CiAg
ICAgICAgICAgICByZXR1cm4gMTsKIAogICAgICAgICBjYXNlIFlhcnJPcENvZGU6Ok5lc3RlZEFs
dGVybmF0aXZlQmVnaW46Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCJOZXN0ZWRBbHRlcm5hdGl2
ZUJlZ2luIG1pbmltdW0gc2l6ZSAldVxuIiwgb3AubV9hbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6
ZSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luIG1pbmlt
dW0tc2l6ZTooJXUpLGNoZWNrZWQtb2Zmc2V0OigldSlcbiIsIG9wLm1fYWx0ZXJuYXRpdmUtPm1f
bWluaW11bVNpemUsIG9wLm1fY2hlY2tlZE9mZnNldC52YWx1ZSgpKTsKICAgICAgICAgICAgIHJl
dHVybiAxOwogCiAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRp
dmVOZXh0OgotICAgICAgICAgICAgb3V0LnByaW50ZigiU2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVO
ZXh0IG1pbmltdW0gc2l6ZSAldVxuIiwgb3AubV9hbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSk7
CisgICAgICAgICAgICBvdXQucHJpbnRmKCJTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZU5leHQgbWlu
aW11bS1zaXplOigldSksY2hlY2tlZC1vZmZzZXQ6KCV1KVxuIiwgb3AubV9hbHRlcm5hdGl2ZS0+
bV9taW5pbXVtU2l6ZSwgb3AubV9jaGVja2VkT2Zmc2V0LnZhbHVlKCkpOwogICAgICAgICAgICAg
cmV0dXJuIDA7CiAKICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZU5l
eHQ6Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCJOZXN0ZWRBbHRlcm5hdGl2ZU5leHQgbWluaW11
bSBzaXplICV1XG4iLCBvcC5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKTsKKyAgICAgICAg
ICAgIG91dC5wcmludGYoIk5lc3RlZEFsdGVybmF0aXZlTmV4dCBtaW5pbXVtLXNpemU6KCV1KSxj
aGVja2VkLW9mZnNldDooJXUpXG4iLCBvcC5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplLCBv
cC5tX2NoZWNrZWRPZmZzZXQudmFsdWUoKSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKIAogICAg
ICAgICBjYXNlIFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlRW5kOgotICAgICAg
ICAgICAgb3V0LnByaW50KCJTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUVuZCIpOworICAgICAgICAg
ICAgb3V0LnByaW50ZigiU2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVFbmQgY2hlY2tlZC1vZmZzZXQ6
KCV1KSAiLCBvcC5tX2NoZWNrZWRPZmZzZXQudmFsdWUoKSk7CiAgICAgICAgICAgICB0ZXJtLT5k
dW1wUXVhbnRpZmllcihvdXQpOwogICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOwogICAgICAg
ICAgICAgcmV0dXJuIC0xOwogCiAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJu
YXRpdmVFbmQ6Ci0gICAgICAgICAgICBvdXQucHJpbnQoIk5lc3RlZEFsdGVybmF0aXZlRW5kIik7
CisgICAgICAgICAgICBvdXQucHJpbnRmKCJOZXN0ZWRBbHRlcm5hdGl2ZUVuZCBjaGVja2VkLW9m
ZnNldDooJXUpICIsIG9wLm1fY2hlY2tlZE9mZnNldC52YWx1ZSgpKTsKICAgICAgICAgICAgIHRl
cm0tPmR1bXBRdWFudGlmaWVyKG91dCk7CiAgICAgICAgICAgICBvdXQucHJpbnQoIlxuIik7CiAg
ICAgICAgICAgICByZXR1cm4gLTE7CiAKICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpQYXJlbnRo
ZXNlc1N1YnBhdHRlcm5PbmNlQmVnaW46Ci0gICAgICAgICAgICBvdXQucHJpbnQoIlBhcmVudGhl
c2VzU3VicGF0dGVybk9uY2VCZWdpbiAiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlBhcmVu
dGhlc2VzU3VicGF0dGVybk9uY2VCZWdpbiBjaGVja2VkLW9mZnNldDooJXUpICIsIG9wLm1fY2hl
Y2tlZE9mZnNldC52YWx1ZSgpKTsKICAgICAgICAgICAgIGlmICh0ZXJtLT5jYXB0dXJlKCkpCi0g
ICAgICAgICAgICAgICAgb3V0LnByaW50ZigiY2FwdHVyaW5nIHBhdHRlcm4gIyV1IiwgdGVybS0+
cGFyZW50aGVzZXMuc3VicGF0dGVybklkKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJj
YXB0dXJpbmcgcGF0dGVybiAjJXUgIiwgdGVybS0+cGFyZW50aGVzZXMuc3VicGF0dGVybklkKTsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIm5vbi1jYXB0dXJp
bmciKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoIm5vbi1jYXB0dXJpbmcgIik7CiAgICAg
ICAgICAgICB0ZXJtLT5kdW1wUXVhbnRpZmllcihvdXQpOwogICAgICAgICAgICAgb3V0LnByaW50
KCJcbiIpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgY2FzZSBZYXJyT3BDb2Rl
OjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlRW5kOgotICAgICAgICAgICAgb3V0LnByaW50KCJQ
YXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlRW5kICIpOworICAgICAgICAgICAgb3V0LnByaW50Zigi
UGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUVuZCBjaGVja2VkLW9mZnNldDooJXUpICIsIG9wLm1f
Y2hlY2tlZE9mZnNldC52YWx1ZSgpKTsKICAgICAgICAgICAgIGlmICh0ZXJtLT5jYXB0dXJlKCkp
Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50ZigiY2FwdHVyaW5nIHBhdHRlcm4gIyV1IiwgdGVy
bS0+cGFyZW50aGVzZXMuc3VicGF0dGVybklkKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRm
KCJjYXB0dXJpbmcgcGF0dGVybiAjJXUgIiwgdGVybS0+cGFyZW50aGVzZXMuc3VicGF0dGVybklk
KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIm5vbi1jYXB0
dXJpbmciKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoIm5vbi1jYXB0dXJpbmcgIik7CiAg
ICAgICAgICAgICB0ZXJtLT5kdW1wUXVhbnRpZmllcihvdXQpOwogICAgICAgICAgICAgb3V0LnBy
aW50KCJcbiIpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgY2FzZSBZYXJyT3BD
b2RlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJlZ2luOgotICAgICAgICAgICAgb3V0
LnByaW50KCJQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJlZ2luICIpOworICAgICAgICAg
ICAgb3V0LnByaW50ZigiUGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxCZWdpbiBjaGVja2Vk
LW9mZnNldDooJXUpICIsIG9wLm1fY2hlY2tlZE9mZnNldC52YWx1ZSgpKTsKICAgICAgICAgICAg
IGlmICh0ZXJtLT5jYXB0dXJlKCkpCiAgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiY2FwdHVy
aW5nIHBhdHRlcm4gIyV1XG4iLCB0ZXJtLT5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQpOwogICAg
ICAgICAgICAgZWxzZQpAQCAtNDU5OSw3ICs0NTk4LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBm
aW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAgICAgICByZXR1cm4gMDsKIAogICAg
ICAgICBjYXNlIFlhcnJPcENvZGU6OlBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsRW5kOgot
ICAgICAgICAgICAgb3V0LnByaW50KCJQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEVuZCAi
KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFs
RW5kIGNoZWNrZWQtb2Zmc2V0OigldSkgIiwgb3AubV9jaGVja2VkT2Zmc2V0LnZhbHVlKCkpOwog
ICAgICAgICAgICAgaWYgKHRlcm0tPmNhcHR1cmUoKSkKICAgICAgICAgICAgICAgICBvdXQucHJp
bnRmKCJjYXB0dXJpbmcgcGF0dGVybiAjJXVcbiIsIHRlcm0tPnBhcmVudGhlc2VzLnN1YnBhdHRl
cm5JZCk7CiAgICAgICAgICAgICBlbHNlCkBAIC00NjA3LDcgKzQ2MDYsNyBAQCBjbGFzcyBZYXJy
R2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgIHJldHVy
biAwOwogCiAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVn
aW46Ci0gICAgICAgICAgICBvdXQucHJpbnQoIlBhcmVudGhlc2VzU3VicGF0dGVybkJlZ2luICIp
OworICAgICAgICAgICAgb3V0LnByaW50ZigiUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4gY2hl
Y2tlZC1vZmZzZXQ6KCV1KSAiLCBvcC5tX2NoZWNrZWRPZmZzZXQudmFsdWUoKSk7CiAgICAgICAg
ICAgICBpZiAodGVybS0+Y2FwdHVyZSgpKQogICAgICAgICAgICAgICAgIG91dC5wcmludGYoImNh
cHR1cmluZyBwYXR0ZXJuICMldSIsIHRlcm0tPnBhcmVudGhlc2VzLnN1YnBhdHRlcm5JZCk7CiAg
ICAgICAgICAgICBlbHNlCkBAIC00NjE3LDcgKzQ2MTYsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9y
IGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgICAgIGNhc2UgWWFyck9wQ29kZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuRW5kOgotICAgICAg
ICAgICAgb3V0LnByaW50KCJQYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQgIik7CisgICAgICAgICAg
ICBvdXQucHJpbnRmKCJQYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQgY2hlY2tlZC1vZmZzZXQ6KCV1
KSAiLCBvcC5tX2NoZWNrZWRPZmZzZXQudmFsdWUoKSk7CiAgICAgICAgICAgICBpZiAodGVybS0+
Y2FwdHVyZSgpKQogICAgICAgICAgICAgICAgIG91dC5wcmludGYoImNhcHR1cmluZyBwYXR0ZXJu
ICMldSIsIHRlcm0tPnBhcmVudGhlc2VzLnN1YnBhdHRlcm5JZCk7CiAgICAgICAgICAgICBlbHNl
CkBAIC00NjI3LDE1ICs0NjI2LDE1IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJs
aWMgWWFyckpJVEluZm8gewogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgY2FzZSBZ
YXJyT3BDb2RlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW46Ci0gICAgICAgICAgICBvdXQu
cHJpbnRmKCJQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4lc1xuIiwgdGVybS0+aW52ZXJ0KCkg
PyAiIGludmVydGVkIiA6ICIiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlBhcmVudGhldGlj
YWxBc3NlcnRpb25CZWdpbiVzIGNoZWNrZWQtb2Zmc2V0OigldSlcbiIsIHRlcm0tPmludmVydCgp
ID8gIiBpbnZlcnRlZCIgOiAiIiwgb3AubV9jaGVja2VkT2Zmc2V0LnZhbHVlKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpQYXJlbnRoZXRpY2Fs
QXNzZXJ0aW9uRW5kOgotICAgICAgICAgICAgb3V0LnByaW50ZigiUGFyZW50aGV0aWNhbEFzc2Vy
dGlvbkVuZCVzXG4iLCB0ZXJtLT5pbnZlcnQoKSA/ICIgaW52ZXJ0ZWQiIDogIiIpOworICAgICAg
ICAgICAgb3V0LnByaW50ZigiUGFyZW50aGV0aWNhbEFzc2VydGlvbkVuZCVzIGNoZWNrZWQtb2Zm
c2V0OigldSlcbiIsIHRlcm0tPmludmVydCgpID8gIiBpbnZlcnRlZCIgOiAiIiwgb3AubV9jaGVj
a2VkT2Zmc2V0LnZhbHVlKCkpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgY2Fz
ZSBZYXJyT3BDb2RlOjpNYXRjaEZhaWxlZDoKLSAgICAgICAgICAgIG91dC5wcmludCgiTWF0Y2hG
YWlsZWRcbiIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiTWF0Y2hGYWlsZWQgY2hlY2tlZC1v
ZmZzZXQ6KCV1KVxuIiwgb3AubV9jaGVja2VkT2Zmc2V0LnZhbHVlKCkpOwogICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgIH0KIApAQCAtNDY4MSwxOCArNDY4MCw2IEBAIGNsYXNzIFlhcnJH
ZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgIFZlY3RvcjxVbmlxdWVS
ZWY8Qm95ZXJNb29yZUluZm8+LCA0PiBtX2JtSW5mb3M7CiAgICAgVmVjdG9yPFVuaXF1ZVJlZjxC
b3llck1vb3JlQml0bWFwOjpNYXA+PiBtX2JtTWFwczsKIAotICAgIC8vIFRoaXMgcmVjb3JkcyB0
aGUgY3VycmVudCBpbnB1dCBvZmZzZXQgYmVpbmcgYXBwbGllZCBkdWUgdG8gdGhlIGN1cnJlbnQK
LSAgICAvLyBzZXQgb2YgYWx0ZXJuYXRpdmVzIHdlIGFyZSBuZXN0ZWQgd2l0aGluLiBFLmcuIHdo
ZW4gbWF0Y2hpbmcgdGhlCi0gICAgLy8gY2hhcmFjdGVyICdiJyB3aXRoaW4gdGhlIHJlZ3VsYXIg
ZXhwcmVzc2lvbiAvYWJjLywgd2Ugd2lsbCBrbm93IHRoYXQKLSAgICAvLyB0aGUgbWluaW11bSBz
aXplIGZvciB0aGUgYWx0ZXJuYXRpdmUgaXMgMywgY2hlY2tlZCB1cG9uIGVudHJ5IHRvIHRoZQot
ICAgIC8vIGFsdGVybmF0aXZlLCBhbmQgdGhhdCAnYicgaXMgYXQgb2Zmc2V0IDEgZnJvbSB0aGUg
c3RhcnQsIGFuZCBhcyBzdWNoCi0gICAgLy8gd2hlbiBtYXRjaGluZyAnYicgd2UgbmVlZCB0byBh
cHBseSBhbiBvZmZzZXQgb2YgLTIgdG8gdGhlIGxvYWQuCi0gICAgLy8KLSAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgZ28gYXdheS4gUmF0aGVyIHRoYW4gdHJhY2tpbmcgdGhpcyB2YWx1ZSB0aHJv
dWdob3V0Ci0gICAgLy8gY29kZSBnZW5lcmF0aW9uLCB3ZSBzaG91bGQgZ2F0aGVyIHRoaXMgaW5m
b3JtYXRpb24gdXAgZnJvbnQgJiBzdG9yZSBpdAotICAgIC8vIG9uIHRoZSBZYXJyT3Agc3RydWN0
dXJlLgotICAgIENoZWNrZWQ8dW5zaWduZWQ+IG1fY2hlY2tlZE9mZnNldDsKLQogICAgIC8vIFRo
aXMgY2xhc3MgcmVjb3JkcyBzdGF0ZSB3aGlsc3QgZ2VuZXJhdGluZyB0aGUgYmFja3RyYWNraW5n
IHBhdGggb2YgY29kZS4KICAgICBCYWNrdHJhY2tpbmdTdGF0ZSBtX2JhY2t0cmFja2luZ1N0YXRl
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRl
cm4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKaW5kZXggOWZi
NmU2MWFiMWU2NzMxZDM5ZTU2NDFkODQyMDcxMGFlN2Q3ZDAyMC4uMzAwNTdmZmQ3NGY4OGI5NWZl
NjZjY2VhNzgwYWY5YjFmNzc1NzFmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyclBhdHRlcm4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
UGF0dGVybi5oCkBAIC04NCwxNCArODQsMTIgQEAgc3RydWN0IENoYXJhY3RlckNsYXNzIHsKICAg
ICBDaGFyYWN0ZXJDbGFzcygpCiAgICAgICAgIDogbV90YWJsZShudWxscHRyKQogICAgICAgICAs
IG1fY2hhcmFjdGVyV2lkdGhzKENoYXJhY3RlckNsYXNzV2lkdGhzOjpVbmtub3duKQotICAgICAg
ICAsIG1fYW55Q2hhcmFjdGVyKGZhbHNlKQogICAgIHsKICAgICB9CiAgICAgQ2hhcmFjdGVyQ2xh
c3MoY29uc3QgY2hhciogdGFibGUsIGJvb2wgaW52ZXJ0ZWQpCiAgICAgICAgIDogbV90YWJsZSh0
YWJsZSkKICAgICAgICAgLCBtX2NoYXJhY3RlcldpZHRocyhDaGFyYWN0ZXJDbGFzc1dpZHRoczo6
VW5rbm93bikKICAgICAgICAgLCBtX3RhYmxlSW52ZXJ0ZWQoaW52ZXJ0ZWQpCi0gICAgICAgICwg
bV9hbnlDaGFyYWN0ZXIoZmFsc2UpCiAgICAgewogICAgIH0KICAgICBDaGFyYWN0ZXJDbGFzcyhz
dGQ6OmluaXRpYWxpemVyX2xpc3Q8VUNoYXIzMj4gbWF0Y2hlcywgc3RkOjppbml0aWFsaXplcl9s
aXN0PENoYXJhY3RlclJhbmdlPiByYW5nZXMsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVQ2hhcjMy
PiBtYXRjaGVzVW5pY29kZSwgc3RkOjppbml0aWFsaXplcl9saXN0PENoYXJhY3RlclJhbmdlPiBy
YW5nZXNVbmljb2RlLCBDaGFyYWN0ZXJDbGFzc1dpZHRocyB3aWR0aHMpCkBAIC0xMDEsOCArOTks
NiBAQCBzdHJ1Y3QgQ2hhcmFjdGVyQ2xhc3MgewogICAgICAgICAsIG1fcmFuZ2VzVW5pY29kZShy
YW5nZXNVbmljb2RlKQogICAgICAgICAsIG1fdGFibGUobnVsbHB0cikKICAgICAgICAgLCBtX2No
YXJhY3RlcldpZHRocyh3aWR0aHMpCi0gICAgICAgICwgbV90YWJsZUludmVydGVkKGZhbHNlKQot
ICAgICAgICAsIG1fYW55Q2hhcmFjdGVyKGZhbHNlKQogICAgIHsKICAgICB9CiAKQEAgLTExOCw4
ICsxMTQsOCBAQCBzdHJ1Y3QgQ2hhcmFjdGVyQ2xhc3MgewogCiAgICAgY29uc3QgY2hhciogbV90
YWJsZTsKICAgICBDaGFyYWN0ZXJDbGFzc1dpZHRocyBtX2NoYXJhY3RlcldpZHRoczsKLSAgICBi
b29sIG1fdGFibGVJbnZlcnRlZCA6IDE7Ci0gICAgYm9vbCBtX2FueUNoYXJhY3RlciA6IDE7Cisg
ICAgYm9vbCBtX3RhYmxlSW52ZXJ0ZWQgOiAxIHsgZmFsc2UgfTsKKyAgICBib29sIG1fYW55Q2hh
cmFjdGVyIDogMSB7IGZhbHNlIH07CiB9OwogCiBlbnVtIGNsYXNzIFF1YW50aWZpZXJUeXBlIDog
dWludDhfdCB7CkBAIC0xNDIsOCArMTM4LDggQEAgc3RydWN0IFBhdHRlcm5UZXJtIHsKICAgICAg
ICAgRG90U3RhckVuY2xvc3VyZSwKICAgICB9OwogICAgIFR5cGUgdHlwZTsKLSAgICBib29sIG1f
Y2FwdHVyZSA6MTsKLSAgICBib29sIG1faW52ZXJ0IDoxOworICAgIGJvb2wgbV9jYXB0dXJlIDog
MSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2ludmVydCA6IDEgeyBmYWxzZSB9OwogICAgIFF1YW50
aWZpZXJUeXBlIHF1YW50aXR5VHlwZTsKICAgICBDaGVja2VkPHVuc2lnbmVkPiBxdWFudGl0eU1p
bkNvdW50OwogICAgIENoZWNrZWQ8dW5zaWduZWQ+IHF1YW50aXR5TWF4Q291bnQ7CkBAIC0xNjgs
OCArMTY0LDYgQEAgc3RydWN0IFBhdHRlcm5UZXJtIHsKIAogICAgIFBhdHRlcm5UZXJtKFVDaGFy
MzIgY2gpCiAgICAgICAgIDogdHlwZShQYXR0ZXJuVGVybTo6VHlwZTo6UGF0dGVybkNoYXJhY3Rl
cikKLSAgICAgICAgLCBtX2NhcHR1cmUoZmFsc2UpCi0gICAgICAgICwgbV9pbnZlcnQoZmFsc2Up
CiAgICAgewogICAgICAgICBwYXR0ZXJuQ2hhcmFjdGVyID0gY2g7CiAgICAgICAgIHF1YW50aXR5
VHlwZSA9IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50OwpAQCAtMTc4LDcgKzE3Miw2IEBAIHN0
cnVjdCBQYXR0ZXJuVGVybSB7CiAKICAgICBQYXR0ZXJuVGVybShDaGFyYWN0ZXJDbGFzcyogY2hh
ckNsYXNzLCBib29sIGludmVydCkKICAgICAgICAgOiB0eXBlKFBhdHRlcm5UZXJtOjpUeXBlOjpD
aGFyYWN0ZXJDbGFzcykKLSAgICAgICAgLCBtX2NhcHR1cmUoZmFsc2UpCiAgICAgICAgICwgbV9p
bnZlcnQoaW52ZXJ0KQogICAgIHsKICAgICAgICAgY2hhcmFjdGVyQ2xhc3MgPSBjaGFyQ2xhc3M7
CkBAIC0yMDEsNyArMTk0LDYgQEAgc3RydWN0IFBhdHRlcm5UZXJtIHsKICAgICAKICAgICBQYXR0
ZXJuVGVybShUeXBlIHR5cGUsIGJvb2wgaW52ZXJ0ID0gZmFsc2UpCiAgICAgICAgIDogdHlwZSh0
eXBlKQotICAgICAgICAsIG1fY2FwdHVyZShmYWxzZSkKICAgICAgICAgLCBtX2ludmVydChpbnZl
cnQpCiAgICAgewogICAgICAgICBxdWFudGl0eVR5cGUgPSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRD
b3VudDsKQEAgLTIxMCw4ICsyMDIsNiBAQCBzdHJ1Y3QgUGF0dGVyblRlcm0gewogCiAgICAgUGF0
dGVyblRlcm0odW5zaWduZWQgc3BhdHRlcm5JZCkKICAgICAgICAgOiB0eXBlKFR5cGU6OkJhY2tS
ZWZlcmVuY2UpCi0gICAgICAgICwgbV9jYXB0dXJlKGZhbHNlKQotICAgICAgICAsIG1faW52ZXJ0
KGZhbHNlKQogICAgIHsKICAgICAgICAgYmFja1JlZmVyZW5jZVN1YnBhdHRlcm5JZCA9IHNwYXR0
ZXJuSWQ7CiAgICAgICAgIHF1YW50aXR5VHlwZSA9IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50
OwpAQCAtMjIwLDggKzIxMCw2IEBAIHN0cnVjdCBQYXR0ZXJuVGVybSB7CiAKICAgICBQYXR0ZXJu
VGVybShib29sIGJvbEFuY2hvciwgYm9vbCBlb2xBbmNob3IpCiAgICAgICAgIDogdHlwZShUeXBl
OjpEb3RTdGFyRW5jbG9zdXJlKQotICAgICAgICAsIG1fY2FwdHVyZShmYWxzZSkKLSAgICAgICAg
LCBtX2ludmVydChmYWxzZSkKICAgICB7CiAgICAgICAgIGFuY2hvcnMuYm9sQW5jaG9yID0gYm9s
QW5jaG9yOwogICAgICAgICBhbmNob3JzLmVvbEFuY2hvciA9IGVvbEFuY2hvcjsKQEAgLTI5Niwx
MCArMjg0LDYgQEAgc3RydWN0IFBhdHRlcm5BbHRlcm5hdGl2ZSB7CiBwdWJsaWM6CiAgICAgUGF0
dGVybkFsdGVybmF0aXZlKFBhdHRlcm5EaXNqdW5jdGlvbiogZGlzanVuY3Rpb24pCiAgICAgICAg
IDogbV9wYXJlbnQoZGlzanVuY3Rpb24pCi0gICAgICAgICwgbV9vbmNlVGhyb3VnaChmYWxzZSkK
LSAgICAgICAgLCBtX2hhc0ZpeGVkU2l6ZShmYWxzZSkKLSAgICAgICAgLCBtX3N0YXJ0c1dpdGhC
T0woZmFsc2UpCi0gICAgICAgICwgbV9jb250YWluc0JPTChmYWxzZSkKICAgICB7CiAgICAgfQog
CkBAIC0zMzAsMTAgKzMxNCwxMCBAQCBzdHJ1Y3QgUGF0dGVybkFsdGVybmF0aXZlIHsKICAgICBW
ZWN0b3I8UGF0dGVyblRlcm0+IG1fdGVybXM7CiAgICAgUGF0dGVybkRpc2p1bmN0aW9uKiBtX3Bh
cmVudDsKICAgICB1bnNpZ25lZCBtX21pbmltdW1TaXplOwotICAgIGJvb2wgbV9vbmNlVGhyb3Vn
aCA6IDE7Ci0gICAgYm9vbCBtX2hhc0ZpeGVkU2l6ZSA6IDE7Ci0gICAgYm9vbCBtX3N0YXJ0c1dp
dGhCT0wgOiAxOwotICAgIGJvb2wgbV9jb250YWluc0JPTCA6IDE7CisgICAgYm9vbCBtX29uY2VU
aHJvdWdoIDogMSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc0ZpeGVkU2l6ZSA6IDEgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9zdGFydHNXaXRoQk9MIDogMSB7IGZhbHNlIH07CisgICAgYm9vbCBt
X2NvbnRhaW5zQk9MIDogMSB7IGZhbHNlIH07CiB9OwogCiBzdHJ1Y3QgUGF0dGVybkRpc2p1bmN0
aW9uIHsKQEAgLTM0MSw3ICszMjUsNiBAQCBzdHJ1Y3QgUGF0dGVybkRpc2p1bmN0aW9uIHsKIHB1
YmxpYzoKICAgICBQYXR0ZXJuRGlzanVuY3Rpb24oUGF0dGVybkFsdGVybmF0aXZlKiBwYXJlbnQg
PSBudWxscHRyKQogICAgICAgICA6IG1fcGFyZW50KHBhcmVudCkKLSAgICAgICAgLCBtX2hhc0Zp
eGVkU2l6ZShmYWxzZSkKICAgICB7CiAgICAgfQogICAgIApAQCAtMzU3LDcgKzM0MCw3IEBAIHN0
cnVjdCBQYXR0ZXJuRGlzanVuY3Rpb24gewogICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogbV9wYXJl
bnQ7CiAgICAgdW5zaWduZWQgbV9taW5pbXVtU2l6ZTsKICAgICB1bnNpZ25lZCBtX2NhbGxGcmFt
ZVNpemU7Ci0gICAgYm9vbCBtX2hhc0ZpeGVkU2l6ZTsKKyAgICBib29sIG1faGFzRml4ZWRTaXpl
IDogMSB7IGZhbHNlIH07CiB9OwogCiAvLyBZb3UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byBiZSBj
YWxsaW5nIHRoZXNlIGZ1bmN0aW9ucyBkaXJlY3RseQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450558</attachid>
            <date>2022-02-01 12:44:24 -0800</date>
            <delta_ts>2022-02-02 13:54:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235932-20220201124423.patch</filename>
            <type>text/plain</type>
            <size>47517</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4ODM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
YmRjN2YxNTU3YjRkOTM4Y2YwZWJjNWFmZWUwMWMwYTc1N2ZkNjQwLi43NTc1YzZlN2FjMjE1NzQ0
ZmJhYmU2NGEyN2ExZDI3ZGIzNGZlMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMi0wMi0wMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnJKSVQgbV9jaGVja2VkT2Zmc2V0IHNob3VsZCBiZSBwcmUt
Y29tcHV0ZWQgYW5kIHN0b3JlZCB0byBZYXJyIG9wCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU5MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9mIGFkaG9jbHkgY2FsY3VsYXRpbmcgbV9j
aGVja2VkT2Zmc2V0IHdoaWxlIGdlbmVyYXRpbmcgdGhlIG1hY2hpbmUgY29kZSwKKyAgICAgICAg
bGV0J3MganVzdCBwcmUtY29tcHV0ZSBpdCBhbmQgc3RvcmUgaXQgdG8gWWFyciBKSVQgSVIgc28g
dGhhdCB3ZSBjYW4gc2ltcGxpZnkKKyAgICAgICAgbV9jaGVja2VkT2Zmc2V0IGhhbmRsaW5nLiBU
aGlzIHBhdmVzIHRoZSB3YXkgdG8gYWxzbyBwcmUtY29tcHV0ZSBzYWZlLWxlbmd0aAorICAgICAg
ICBzbyB0aGF0IHdlIGNhbiBza2lwIHNvbWUgb2YgbGVuZ3RoIGNoZWNrIGluIHBhcmVudGhlc2l6
ZWQtYXNzZXJ0aW9ucy4KKworICAgICAgICAqIHlhcnIvWWFyckpJVC5jcHA6CisKIDIwMjItMDEt
MzEgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtSSVND
VjY0XSBGaXggb2ZmbGluZWFzbSBsb3dlcmluZyBvZiBhcml0aG1ldGljIGJyYW5jaCBpbnN0cnVj
dGlvbnMgd2l0aCBhZGRyZXNzIGRlc3RpbmF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJySklULmNwcAppbmRleCBlYTFhN2IwMTQ1NTVjMTgzYzliYmE2ZTFlN2Y1ODExYzRhNWNlYWJl
Li42ZDE3NGFlYTQ5ZGIzNjE1MzY4NjgxMDY4ZDk2Y2QyOTk1Mjc2NDNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJySklULmNwcApAQCAtODg4LDYgKzg4OCwxNCBAQCBjbGFzcyBZYXJy
R2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgLy8gcmVjYWxj
dWxhdGluZyBpdC4KICAgICAgICAgQ2hlY2tlZDx1bnNpZ25lZD4gbV9jaGVja0FkanVzdDsKIAor
ICAgICAgICAvLyBUaGlzIHJlY29yZHMgdGhlIGN1cnJlbnQgaW5wdXQgb2Zmc2V0IGJlaW5nIGFw
cGxpZWQgZHVlIHRvIHRoZSBjdXJyZW50CisgICAgICAgIC8vIHNldCBvZiBhbHRlcm5hdGl2ZXMg
d2UgYXJlIG5lc3RlZCB3aXRoaW4uIEUuZy4gd2hlbiBtYXRjaGluZyB0aGUKKyAgICAgICAgLy8g
Y2hhcmFjdGVyICdiJyB3aXRoaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAvYWJjLywgd2Ugd2ls
bCBrbm93IHRoYXQKKyAgICAgICAgLy8gdGhlIG1pbmltdW0gc2l6ZSBmb3IgdGhlIGFsdGVybmF0
aXZlIGlzIDMsIGNoZWNrZWQgdXBvbiBlbnRyeSB0byB0aGUKKyAgICAgICAgLy8gYWx0ZXJuYXRp
dmUsIGFuZCB0aGF0ICdiJyBpcyBhdCBvZmZzZXQgMSBmcm9tIHRoZSBzdGFydCwgYW5kIGFzIHN1
Y2gKKyAgICAgICAgLy8gd2hlbiBtYXRjaGluZyAnYicgd2UgbmVlZCB0byBhcHBseSBhbiBvZmZz
ZXQgb2YgLTIgdG8gdGhlIGxvYWQuCisgICAgICAgIENoZWNrZWQ8dW5zaWduZWQ+IG1fY2hlY2tl
ZE9mZnNldCB7IH07CisKICAgICAgICAgLy8gVXNlZCBieSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRl
cm5hdGl2ZU5leHQvRW5kIHRvIGhvbGQgdGhlIHBvaW50ZXIgdG8gdGhlCiAgICAgICAgIC8vIHZh
bHVlIHRoYXQgd2lsbCBiZSBwdXNoZWQgaW50byB0aGUgcGF0dGVybidzIGZyYW1lIHRvIHJldHVy
biB0bywKICAgICAgICAgLy8gdXBvbiBiYWNrdHJhY2tpbmcgYmFjayBpbnRvIHRoZSBkaXNqdW5j
dGlvbi4KQEAgLTEwNTIsOSArMTA2MCw5IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgWWFyckpJVEluZm8gewogCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExp
c3QgbWF0Y2hEZXN0OwogICAgICAgICAgICAgaWYgKCF0ZXJtLT5pbnB1dFBvc2l0aW9uKQotICAg
ICAgICAgICAgICAgIG1hdGNoRGVzdC5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6OkVxdWFsLCBtX3JlZ3MuaW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihtX2NoZWNrZWRP
ZmZzZXQpKSk7CisgICAgICAgICAgICAgICAgbWF0Y2hEZXN0LmFwcGVuZChtX2ppdC5icmFuY2gz
MihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIG1fcmVncy5pbmRleCwgTWFjcm9Bc3NlbWJsZXI6Oklt
bTMyKG9wLm1fY2hlY2tlZE9mZnNldCkpKTsKIAotICAgICAgICAgICAgcmVhZENoYXJhY3Rlciht
X2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uICsgMSwgY2hhcmFjdGVyKTsKKyAg
ICAgICAgICAgIHJlYWRDaGFyYWN0ZXIob3AubV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQ
b3NpdGlvbiArIDEsIGNoYXJhY3Rlcik7CiAgICAgICAgICAgICBtYXRjaENoYXJhY3RlckNsYXNz
KGNoYXJhY3RlciwgbWF0Y2hEZXN0LCBtX3BhdHRlcm4ubmV3bGluZUNoYXJhY3RlckNsYXNzKCkp
OwogICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKIApAQCAtMTA2
NCw3ICsxMDcyLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklU
SW5mbyB7CiAgICAgICAgICAgICBpZiAodGVybS0+aW5wdXRQb3NpdGlvbikKICAgICAgICAgICAg
ICAgICBvcC5tX2p1bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKG1faml0LmJyYW5jaDMyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgbV9yZWdzLmluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIobV9j
aGVja2VkT2Zmc2V0KSkpOworICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKG1faml0
LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgbV9yZWdzLmluZGV4LCBNYWNyb0Fz
c2VtYmxlcjo6SW1tMzIob3AubV9jaGVja2VkT2Zmc2V0KSkpOwogICAgICAgICB9CiAgICAgfQog
ICAgIHZvaWQgYmFja3RyYWNrQXNzZXJ0aW9uQk9MKHNpemVfdCBvcEluZGV4KQpAQCAtMTA4MSwx
NiArMTA4OSwxNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJ
bmZvIHsKICAgICAgICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIGNoYXJh
Y3RlciA9IG1fcmVncy5yZWdUMDsKIAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBM
aXN0IG1hdGNoRGVzdDsKLSAgICAgICAgICAgIGlmICh0ZXJtLT5pbnB1dFBvc2l0aW9uID09IG1f
Y2hlY2tlZE9mZnNldCkKKyAgICAgICAgICAgIGlmICh0ZXJtLT5pbnB1dFBvc2l0aW9uID09IG9w
Lm1fY2hlY2tlZE9mZnNldCkKICAgICAgICAgICAgICAgICBtYXRjaERlc3QuYXBwZW5kKGF0RW5k
T2ZJbnB1dCgpKTsKIAotICAgICAgICAgICAgcmVhZENoYXJhY3RlcihtX2NoZWNrZWRPZmZzZXQg
LSB0ZXJtLT5pbnB1dFBvc2l0aW9uLCBjaGFyYWN0ZXIpOworICAgICAgICAgICAgcmVhZENoYXJh
Y3RlcihvcC5tX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uLCBjaGFyYWN0ZXIp
OwogICAgICAgICAgICAgbWF0Y2hDaGFyYWN0ZXJDbGFzcyhjaGFyYWN0ZXIsIG1hdGNoRGVzdCwg
bV9wYXR0ZXJuLm5ld2xpbmVDaGFyYWN0ZXJDbGFzcygpKTsKICAgICAgICAgICAgIG9wLm1fanVt
cHMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAKICAgICAgICAgICAgIG1hdGNoRGVzdC5saW5rKCZt
X2ppdCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAodGVybS0+aW5wdXRQb3Np
dGlvbiA9PSBtX2NoZWNrZWRPZmZzZXQpCisgICAgICAgICAgICBpZiAodGVybS0+aW5wdXRQb3Np
dGlvbiA9PSBvcC5tX2NoZWNrZWRPZmZzZXQpCiAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5h
cHBlbmQobm90QXRFbmRPZklucHV0KCkpOwogICAgICAgICAgICAgLy8gRXJrLCByZWFsbHkgc2hv
dWxkIHBvaXNvbiBvdXQgdGhlc2UgYWx0ZXJuYXRpdmVzIGVhcmx5LiA6LS8KICAgICAgICAgICAg
IGVsc2UKQEAgLTExMTAsMTAgKzExMTgsMTAgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBZYXJySklUSW5mbyB7CiAKICAgICAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXI6OlJl
Z2lzdGVySUQgY2hhcmFjdGVyID0gbV9yZWdzLnJlZ1QwOwogCi0gICAgICAgIGlmICh0ZXJtLT5p
bnB1dFBvc2l0aW9uID09IG1fY2hlY2tlZE9mZnNldCkKKyAgICAgICAgaWYgKHRlcm0tPmlucHV0
UG9zaXRpb24gPT0gb3AubV9jaGVja2VkT2Zmc2V0KQogICAgICAgICAgICAgbmV4dElzTm90V29y
ZENoYXIuYXBwZW5kKGF0RW5kT2ZJbnB1dCgpKTsKIAotICAgICAgICByZWFkQ2hhcmFjdGVyKG1f
Y2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24sIGNoYXJhY3Rlcik7CisgICAgICAg
IHJlYWRDaGFyYWN0ZXIob3AubV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQb3NpdGlvbiwg
Y2hhcmFjdGVyKTsKIAogICAgICAgICBDaGFyYWN0ZXJDbGFzcyogd29yZGNoYXJDaGFyYWN0ZXJD
bGFzczsKIApAQCAtMTEzNSw4ICsxMTQzLDggQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGF0QmVn
aW47CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBtYXRjaERlc3Q7CiAgICAgICAg
IGlmICghdGVybS0+aW5wdXRQb3NpdGlvbikKLSAgICAgICAgICAgIGF0QmVnaW4gPSBtX2ppdC5i
cmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIG1fcmVncy5pbmRleCwgTWFjcm9Bc3NlbWJs
ZXI6OkltbTMyKG1fY2hlY2tlZE9mZnNldCkpOwotICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hl
Y2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24gKyAxLCBjaGFyYWN0ZXIpOworICAgICAg
ICAgICAgYXRCZWdpbiA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgbV9y
ZWdzLmluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIob3AubV9jaGVja2VkT2Zmc2V0KSk7Cisg
ICAgICAgIHJlYWRDaGFyYWN0ZXIob3AubV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQb3Np
dGlvbiArIDEsIGNoYXJhY3Rlcik7CiAKICAgICAgICAgQ2hhcmFjdGVyQ2xhc3MqIHdvcmRjaGFy
Q2hhcmFjdGVyQ2xhc3M7CiAKQEAgLTExOTMsNyArMTIwMSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0
b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
TGFiZWwgbG9vcCgmbV9qaXQpOwogCiAgICAgICAgIHJlYWRDaGFyYWN0ZXIoMCwgcGF0dGVybkNo
YXJhY3RlciwgcGF0dGVybkluZGV4KTsKLSAgICAgICAgcmVhZENoYXJhY3RlcihtX2NoZWNrZWRP
ZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uLCBjaGFyYWN0ZXIpOworICAgICAgICByZWFkQ2hh
cmFjdGVyKG9wLm1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24sIGNoYXJhY3Rl
cik7CiAgICAgCiAgICAgICAgIGlmICghbV9wYXR0ZXJuLmlnbm9yZUNhc2UoKSkKICAgICAgICAg
ICAgIGNoYXJhY3Rlck1hdGNoRmFpbHMuYXBwZW5kKG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgY2hhcmFjdGVyLCBwYXR0ZXJuQ2hhcmFjdGVyKSk7CkBAIC0xNTI1LDQw
ICsxNTMzLDQwIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVElu
Zm8gewogICAgICAgICAgICAgc3dpdGNoIChudW1iZXJDaGFyYWN0ZXJzKSB7CiAgICAgICAgICAg
ICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgLy8gVXNlIDMyYml0IHdpZHRoIG9mIGFsbENoYXJh
Y3RlcnMgc2luY2UgWWFyciBjb3VudHMgc3Vycm9nYXRlIHBhaXJzIGFzIG9uZSBjaGFyYWN0ZXIg
d2l0aCB1bmljb2RlIGZsYWcuCi0gICAgICAgICAgICAgICAgY2hlY2sxKG1fY2hlY2tlZE9mZnNl
dCAtIHN0YXJ0VGVybVBvc2l0aW9uLCBhbGxDaGFyYWN0ZXJzICYgMHhmZmZmZmZmZik7CisgICAg
ICAgICAgICAgICAgY2hlY2sxKG9wLm1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9u
LCBhbGxDaGFyYWN0ZXJzICYgMHhmZmZmZmZmZik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgY2FzZSAyOiB7Ci0gICAgICAgICAgICAgICAgY2hlY2syKG1fY2hlY2tlZE9m
ZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uLCBhbGxDaGFyYWN0ZXJzICYgMHhmZmZmLCBpZ25vcmVD
YXNlTWFzayAmIDB4ZmZmZik7CisgICAgICAgICAgICAgICAgY2hlY2syKG9wLm1fY2hlY2tlZE9m
ZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uLCBhbGxDaGFyYWN0ZXJzICYgMHhmZmZmLCBpZ25vcmVD
YXNlTWFzayAmIDB4ZmZmZik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgY2FzZSAzOiB7Ci0gICAgICAgICAgICAgICAgY2hlY2syKG1fY2hlY2tl
ZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uLCBhbGxDaGFyYWN0ZXJzICYgMHhmZmZmLCBpZ25v
cmVDYXNlTWFzayAmIDB4ZmZmZik7Ci0gICAgICAgICAgICAgICAgY2hlY2sxKG1fY2hlY2tlZE9m
ZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uIC0gMiwgKGFsbENoYXJhY3RlcnMgPj4gMTYpICYgMHhm
Zik7CisgICAgICAgICAgICAgICAgY2hlY2syKG9wLm1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVy
bVBvc2l0aW9uLCBhbGxDaGFyYWN0ZXJzICYgMHhmZmZmLCBpZ25vcmVDYXNlTWFzayAmIDB4ZmZm
Zik7CisgICAgICAgICAgICAgICAgY2hlY2sxKG9wLm1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVy
bVBvc2l0aW9uIC0gMiwgKGFsbENoYXJhY3RlcnMgPj4gMTYpICYgMHhmZik7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSA0OiB7Ci0gICAg
ICAgICAgICAgICAgY2hlY2s0KG1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uLCBh
bGxDaGFyYWN0ZXJzICYgMHhmZmZmZmZmZiwgaWdub3JlQ2FzZU1hc2sgJiAweGZmZmZmZmZmKTsK
KyAgICAgICAgICAgICAgICBjaGVjazQob3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9z
aXRpb24sIGFsbENoYXJhY3RlcnMgJiAweGZmZmZmZmZmLCBpZ25vcmVDYXNlTWFzayAmIDB4ZmZm
ZmZmZmYpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICNpZiBDUFUo
WDg2XzY0KSB8fCBDUFUoQVJNNjQpIHx8IENQVShSSVNDVjY0KQogICAgICAgICAgICAgY2FzZSA1
OiB7Ci0gICAgICAgICAgICAgICAgY2hlY2s0KG1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBv
c2l0aW9uLCBhbGxDaGFyYWN0ZXJzICYgMHhmZmZmZmZmZiwgaWdub3JlQ2FzZU1hc2sgJiAweGZm
ZmZmZmZmKTsKLSAgICAgICAgICAgICAgICBjaGVjazEobV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRU
ZXJtUG9zaXRpb24gLSA0LCAoYWxsQ2hhcmFjdGVycyA+PiAzMikgJiAweGZmKTsKKyAgICAgICAg
ICAgICAgICBjaGVjazQob3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFs
bENoYXJhY3RlcnMgJiAweGZmZmZmZmZmLCBpZ25vcmVDYXNlTWFzayAmIDB4ZmZmZmZmZmYpOwor
ICAgICAgICAgICAgICAgIGNoZWNrMShvcC5tX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3Np
dGlvbiAtIDQsIChhbGxDaGFyYWN0ZXJzID4+IDMyKSAmIDB4ZmYpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgNjogewotICAgICAgICAg
ICAgICAgIGNoZWNrNChtX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hh
cmFjdGVycyAmIDB4ZmZmZmZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmZmZmZik7Ci0gICAg
ICAgICAgICAgICAgY2hlY2syKG1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uIC0g
NCwgKGFsbENoYXJhY3RlcnMgPj4gMzIpICYgMHhmZmZmLCAoaWdub3JlQ2FzZU1hc2sgPj4gMzIp
ICYgMHhmZmZmKTsKKyAgICAgICAgICAgICAgICBjaGVjazQob3AubV9jaGVja2VkT2Zmc2V0IC0g
c3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMgJiAweGZmZmZmZmZmLCBpZ25vcmVDYXNl
TWFzayAmIDB4ZmZmZmZmZmYpOworICAgICAgICAgICAgICAgIGNoZWNrMihvcC5tX2NoZWNrZWRP
ZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiAtIDQsIChhbGxDaGFyYWN0ZXJzID4+IDMyKSAmIDB4
ZmZmZiwgKGlnbm9yZUNhc2VNYXNrID4+IDMyKSAmIDB4ZmZmZik7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSA3OiB7Ci0gICAgICAgICAg
ICAgICAgY2hlY2s0KG1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uLCBhbGxDaGFy
YWN0ZXJzICYgMHhmZmZmZmZmZiwgaWdub3JlQ2FzZU1hc2sgJiAweGZmZmZmZmZmKTsKLSAgICAg
ICAgICAgICAgICBjaGVjazIobV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24gLSA0
LCAoYWxsQ2hhcmFjdGVycyA+PiAzMikgJiAweGZmZmYsIChpZ25vcmVDYXNlTWFzayA+PiAzMikg
JiAweGZmZmYpOwotICAgICAgICAgICAgICAgIGNoZWNrMShtX2NoZWNrZWRPZmZzZXQgLSBzdGFy
dFRlcm1Qb3NpdGlvbiAtIDYsIChhbGxDaGFyYWN0ZXJzID4+IDQ4KSAmIDB4ZmYpOworICAgICAg
ICAgICAgICAgIGNoZWNrNChvcC5tX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwg
YWxsQ2hhcmFjdGVycyAmIDB4ZmZmZmZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmZmZmZik7
CisgICAgICAgICAgICAgICAgY2hlY2syKG9wLm1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBv
c2l0aW9uIC0gNCwgKGFsbENoYXJhY3RlcnMgPj4gMzIpICYgMHhmZmZmLCAoaWdub3JlQ2FzZU1h
c2sgPj4gMzIpICYgMHhmZmZmKTsKKyAgICAgICAgICAgICAgICBjaGVjazEob3AubV9jaGVja2Vk
T2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24gLSA2LCAoYWxsQ2hhcmFjdGVycyA+PiA0OCkgJiAw
eGZmKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBjYXNlIDg6IHsKLSAgICAgICAgICAgICAgICBjaGVjazgobV9jaGVja2VkT2Zmc2V0IC0gc3Rh
cnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMsIGlnbm9yZUNhc2VNYXNrKTsKKyAgICAgICAg
ICAgICAgICBjaGVjazgob3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFs
bENoYXJhY3RlcnMsIGlnbm9yZUNhc2VNYXNrKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CiAjZW5kaWYKQEAgLTE1OTEsMTggKzE1OTksMTggQEAgY2xhc3MgWWFyckdl
bmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAgICAgICBzd2l0Y2gg
KG51bWJlckNoYXJhY3RlcnMpIHsKICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAg
ICAvLyBVc2UgMzJiaXQgd2lkdGggb2YgYWxsQ2hhcmFjdGVycyBzaW5jZSBZYXJyIGNvdW50cyBz
dXJyb2dhdGUgcGFpcnMgYXMgb25lIGNoYXJhY3RlciB3aXRoIHVuaWNvZGUgZmxhZy4KLSAgICAg
ICAgICAgICAgICBjaGVjazEobV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFs
bENoYXJhY3RlcnMgJiAweGZmZmZmZmZmKTsKKyAgICAgICAgICAgICAgICBjaGVjazEob3AubV9j
aGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMgJiAweGZmZmZm
ZmZmKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjYXNlIDI6Ci0gICAg
ICAgICAgICAgICAgY2hlY2syKG1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uLCBh
bGxDaGFyYWN0ZXJzICYgMHhmZmZmZmZmZiwgaWdub3JlQ2FzZU1hc2sgJiAweGZmZmZmZmZmKTsK
KyAgICAgICAgICAgICAgICBjaGVjazIob3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9z
aXRpb24sIGFsbENoYXJhY3RlcnMgJiAweGZmZmZmZmZmLCBpZ25vcmVDYXNlTWFzayAmIDB4ZmZm
ZmZmZmYpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUo
QVJNNjQpIHx8IENQVShSSVNDVjY0KQogICAgICAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAg
ICAgIGNoZWNrMihtX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFj
dGVycyAmIDB4ZmZmZmZmZmYsIGlnbm9yZUNhc2VNYXNrICYgMHhmZmZmZmZmZik7Ci0gICAgICAg
ICAgICAgICAgY2hlY2sxKG1fY2hlY2tlZE9mZnNldCAtIHN0YXJ0VGVybVBvc2l0aW9uIC0gMiwg
KGFsbENoYXJhY3RlcnMgPj4gMzIpICYgMHhmZmZmKTsKKyAgICAgICAgICAgICAgICBjaGVjazIo
b3AubV9jaGVja2VkT2Zmc2V0IC0gc3RhcnRUZXJtUG9zaXRpb24sIGFsbENoYXJhY3RlcnMgJiAw
eGZmZmZmZmZmLCBpZ25vcmVDYXNlTWFzayAmIDB4ZmZmZmZmZmYpOworICAgICAgICAgICAgICAg
IGNoZWNrMShvcC5tX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlvbiAtIDIsIChhbGxD
aGFyYWN0ZXJzID4+IDMyKSAmIDB4ZmZmZik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgICAgIGNoZWNrNChtX2NoZWNrZWRPZmZzZXQg
LSBzdGFydFRlcm1Qb3NpdGlvbiwgYWxsQ2hhcmFjdGVycywgaWdub3JlQ2FzZU1hc2spOworICAg
ICAgICAgICAgICAgIGNoZWNrNChvcC5tX2NoZWNrZWRPZmZzZXQgLSBzdGFydFRlcm1Qb3NpdGlv
biwgYWxsQ2hhcmFjdGVycywgaWdub3JlQ2FzZU1hc2spOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICNlbmRpZgogICAgICAgICAgICAgfQpAQCAtMTYzMCw3ICsxNjM4LDcgQEAgY2xhc3MgWWFy
ckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAgIG1faml0LnN1
YjMyKG1fcmVncy5pbmRleCwgTWFjcm9Bc3NlbWJsZXI6OkltbTMyKHNjYWxlZE1heENvdW50KSwg
Y291bnRSZWdpc3Rlcik7CiAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxvb3AoJm1f
aml0KTsKLSAgICAgICAgcmVhZENoYXJhY3RlcihtX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1
dFBvc2l0aW9uIC0gc2NhbGVkTWF4Q291bnQsIGNoYXJhY3RlciwgY291bnRSZWdpc3Rlcik7Cisg
ICAgICAgIHJlYWRDaGFyYWN0ZXIob3AubV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQb3Np
dGlvbiAtIHNjYWxlZE1heENvdW50LCBjaGFyYWN0ZXIsIGNvdW50UmVnaXN0ZXIpOwogICAgICAg
ICAvLyBGb3IgY2FzZS1pbnNlc2l0aXZlIGNvbXBhcmVzLCBub24tYXNjaWkgY2hhcmFjdGVycyB0
aGF0IGhhdmUgZGlmZmVyZW50CiAgICAgICAgIC8vIHVwcGVyICYgbG93ZXIgY2FzZSByZXByZXNl
bnRhdGlvbnMgYXJlIGNvbnZlcnRlZCB0byBhIGNoYXJhY3RlciBjbGFzcy4KICAgICAgICAgQVNT
RVJUKCFtX3BhdHRlcm4uaWdub3JlQ2FzZSgpIHx8IGlzQVNDSUlBbHBoYShjaCkgfHwgaXNDYW5v
bmljYWxseVVuaXF1ZShjaCwgbV9jYW5vbmljYWxNb2RlKSk7CkBAIC0xNjY5LDcgKzE2NzcsNyBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBmYWlsdXJlczsKICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpMYWJlbCBsb29wKCZtX2ppdCk7CiAgICAgICAgICAgICBmYWlsdXJlcy5h
cHBlbmQoYXRFbmRPZklucHV0KCkpOwotICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKGp1bXBJ
ZkNoYXJOb3RFcXVhbHMoY2gsIG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24s
IGNoYXJhY3RlcikpOworICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKGp1bXBJZkNoYXJOb3RF
cXVhbHMoY2gsIG9wLm1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24sIGNoYXJh
Y3RlcikpOwogCiAgICAgICAgICAgICBtX2ppdC5hZGQzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKDEpLCBtX3JlZ3MuaW5kZXgpOwogI2lmIEVOQUJMRShZQVJSX0pJVF9VTklDT0RFX0VY
UFJFU1NJT05TKQpAQCAtMTc0Myw3ICsxNzUxLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5h
bCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAgICAgICBub25HcmVlZHlGYWlsdXJlcy5h
cHBlbmQoYXRFbmRPZklucHV0KCkpOwogICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5TWF4
Q291bnQgIT0gcXVhbnRpZnlJbmZpbml0ZSkKICAgICAgICAgICAgICAgICBub25HcmVlZHlGYWls
dXJlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBjb3VudFJl
Z2lzdGVyLCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIodGVybS0+cXVhbnRpdHlNYXhDb3VudCkpKTsK
LSAgICAgICAgICAgIG5vbkdyZWVkeUZhaWx1cmVzLmFwcGVuZChqdW1wSWZDaGFyTm90RXF1YWxz
KGNoLCBtX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uLCBjaGFyYWN0ZXIpKTsK
KyAgICAgICAgICAgIG5vbkdyZWVkeUZhaWx1cmVzLmFwcGVuZChqdW1wSWZDaGFyTm90RXF1YWxz
KGNoLCBvcC5tX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uLCBjaGFyYWN0ZXIp
KTsKIAogICAgICAgICAgICAgbV9qaXQuYWRkMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0z
MigxKSwgbV9yZWdzLmluZGV4KTsKICNpZiBFTkFCTEUoWUFSUl9KSVRfVU5JQ09ERV9FWFBSRVNT
SU9OUykKQEAgLTE3ODMsNyArMTc5MSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICB9CiAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXBMaXN0IG1hdGNoRGVzdDsKLSAgICAgICAgcmVhZENoYXJhY3RlcihtX2NoZWNrZWRPZmZz
ZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uLCBjaGFyYWN0ZXIpOworICAgICAgICByZWFkQ2hhcmFj
dGVyKG9wLm1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24sIGNoYXJhY3Rlcik7
CiAgICAgICAgIC8vIElmIHdlIGFyZSBtYXRjaGluZyB0aGUgImFueSBjaGFyYWN0ZXIiIGJ1aWx0
aW4gY2xhc3Mgd2Ugb25seSBuZWVkIHRvIHJlYWQgdGhlCiAgICAgICAgIC8vIGNoYXJhY3RlciBh
bmQgZG9uJ3QgbmVlZCB0byBtYXRjaCBhcyBpdCB3aWxsIGFsd2F5cyBzdWNjZWVkLgogICAgICAg
ICBpZiAodGVybS0+aW52ZXJ0KCkgfHwgIXRlcm0tPmNoYXJhY3RlckNsYXNzLT5tX2FueUNoYXJh
Y3RlcikgewpAQCAtMTg0MCw3ICsxODQ4LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBZYXJySklUSW5mbyB7CiAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxv
b3AoJm1faml0KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IG1hdGNoRGVzdDsK
LSAgICAgICAgcmVhZENoYXJhY3RlcihtX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0
aW9uIC0gc2NhbGVkTWF4Q291bnQsIGNoYXJhY3RlciwgY291bnRSZWdpc3Rlcik7CisgICAgICAg
IHJlYWRDaGFyYWN0ZXIob3AubV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQb3NpdGlvbiAt
IHNjYWxlZE1heENvdW50LCBjaGFyYWN0ZXIsIGNvdW50UmVnaXN0ZXIpOwogICAgICAgICAvLyBJ
ZiB3ZSBhcmUgbWF0Y2hpbmcgdGhlICJhbnkgY2hhcmFjdGVyIiBidWlsdGluIGNsYXNzIHdlIG9u
bHkgbmVlZCB0byByZWFkIHRoZQogICAgICAgICAvLyBjaGFyYWN0ZXIgYW5kIGRvbid0IG5lZWQg
dG8gbWF0Y2ggYXMgaXQgd2lsbCBhbHdheXMgc3VjY2VlZC4KICAgICAgICAgaWYgKHRlcm0tPmlu
dmVydCgpIHx8ICF0ZXJtLT5jaGFyYWN0ZXJDbGFzcy0+bV9hbnlDaGFyYWN0ZXIpIHsKQEAgLTE5
MDAsMTEgKzE5MDgsMTEgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJy
SklUSW5mbyB7CiAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQoYXRFbmRPZklucHV0KCkpOwog
CiAgICAgICAgIGlmICh0ZXJtLT5pbnZlcnQoKSkgewotICAgICAgICAgICAgcmVhZENoYXJhY3Rl
cihtX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uLCBjaGFyYWN0ZXIpOworICAg
ICAgICAgICAgcmVhZENoYXJhY3RlcihvcC5tX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBv
c2l0aW9uLCBjaGFyYWN0ZXIpOwogICAgICAgICAgICAgbWF0Y2hDaGFyYWN0ZXJDbGFzcyhjaGFy
YWN0ZXIsIGZhaWx1cmVzLCB0ZXJtLT5jaGFyYWN0ZXJDbGFzcyk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgbWF0Y2hEZXN0OwotICAgICAg
ICAgICAgcmVhZENoYXJhY3RlcihtX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9u
LCBjaGFyYWN0ZXIpOworICAgICAgICAgICAgcmVhZENoYXJhY3RlcihvcC5tX2NoZWNrZWRPZmZz
ZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uLCBjaGFyYWN0ZXIpOwogICAgICAgICAgICAgLy8gSWYg
d2UgYXJlIG1hdGNoaW5nIHRoZSAiYW55IGNoYXJhY3RlciIgYnVpbHRpbiBjbGFzcyBmb3Igbm9u
LXVuaWNvZGUgcGF0dGVybnMsCiAgICAgICAgICAgICAvLyB3ZSBvbmx5IG5lZWQgdG8gcmVhZCB0
aGUgY2hhcmFjdGVyIGFuZCBkb24ndCBuZWVkIHRvIG1hdGNoIGFzIGl0IHdpbGwgYWx3YXlzIHN1
Y2NlZWQuCiAgICAgICAgICAgICBpZiAoIXRlcm0tPmNoYXJhY3RlckNsYXNzLT5tX2FueUNoYXJh
Y3RlcikgewpAQCAtMTk2NSw3ICsxOTczLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwg
cmVtYXRjaExvb3AoJm1faml0KTsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRv
bmVSZW1hdGNoaW5nID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBj
b3VudFJlZ2lzdGVyKTsKIAotICAgICAgICAgICAgcmVhZENoYXJhY3RlcihtX2NoZWNrZWRPZmZz
ZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uLCBjaGFyYWN0ZXIpOworICAgICAgICAgICAgcmVhZENo
YXJhY3RlcihvcC5tX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uLCBjaGFyYWN0
ZXIpOwogCiAgICAgICAgICAgICBtX2ppdC5zdWIzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKDEpLCBjb3VudFJlZ2lzdGVyKTsKICAgICAgICAgICAgIG1faml0LmFkZDMyKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tMzIoMSksIG1fcmVncy5pbmRleCk7CkBAIC0yMDMwLDcgKzIwMzgs
NyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAg
ICAgICAgbm9uR3JlZWR5RmFpbHVyZXMuYXBwZW5kKG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpFcXVhbCwgY291bnRSZWdpc3RlciwgTWFjcm9Bc3NlbWJsZXI6OkltbTMyKHRlcm0tPnF1
YW50aXR5TWF4Q291bnQpKSk7CiAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IG1h
dGNoRGVzdDsKLSAgICAgICAgcmVhZENoYXJhY3RlcihtX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5p
bnB1dFBvc2l0aW9uLCBjaGFyYWN0ZXIpOworICAgICAgICByZWFkQ2hhcmFjdGVyKG9wLm1fY2hl
Y2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24sIGNoYXJhY3Rlcik7CiAgICAgICAgIC8v
IElmIHdlIGFyZSBtYXRjaGluZyB0aGUgImFueSBjaGFyYWN0ZXIiIGJ1aWx0aW4gY2xhc3MgZm9y
IG5vbi11bmljb2RlIHBhdHRlcm5zLAogICAgICAgICAvLyB3ZSBvbmx5IG5lZWQgdG8gcmVhZCB0
aGUgY2hhcmFjdGVyIGFuZCBkb24ndCBuZWVkIHRvIG1hdGNoIGFzIGl0IHdpbGwgYWx3YXlzIHN1
Y2NlZWQuCiAgICAgICAgIGlmICh0ZXJtLT5pbnZlcnQoKSB8fCAhdGVybS0+Y2hhcmFjdGVyQ2xh
c3MtPm1fYW55Q2hhcmFjdGVyKSB7CkBAIC0yMzI1LDcgKzIzMzMsNiBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgICAgICAvLyBV
cG9uIGVudHJ5IGF0IHRoZSBoZWFkIG9mIHRoZSBzZXQgb2YgYWx0ZXJuYXRpdmVzLCBjaGVjayBp
ZiBpbnB1dCBpcyBhdmFpbGFibGUKICAgICAgICAgICAgICAgICAvLyB0byBydW4gdGhlIGZpcnN0
IGFsdGVybmF0aXZlLiAoVGhpcyBwcm9ncmVzc2VzIHRoZSBpbnB1dCBwb3NpdGlvbikuCiAgICAg
ICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcElmTm9BdmFpbGFibGVJbnB1dChhbHRl
cm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSkpOwotICAgICAgICAgICAgICAgIG1fY2hlY2tlZE9mZnNl
dCArPSBhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZTsKIAogICAgICAgICAgICAgICAgIC8vIFdl
IHdpbGwgcmVlbnRlciBhZnRlciB0aGUgY2hlY2ssIGFuZCBhc3N1bWUgdGhlIGlucHV0IHBvc2l0
aW9uIHRvIGhhdmUgYmVlbgogICAgICAgICAgICAgICAgIC8vIHNldCBhcyBhcHByb3ByaWF0ZSB0
byB0aGlzIGFsdGVybmF0aXZlLgpAQCAtMjM1MSw3ICsyMzU4LDcgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZVJlZ0V4cENvbXBpbGF0aW9uKCksICJG
b3VuZCBjaGFyYWN0ZXJzIGZhc3RwYXRoIGxvb2thaGVhZCAiLCBjaGFyYWN0ZXJzRmFzdFBhdGgs
ICIgcmFuZ2U6WyIsIGJlZ2luSW5kZXgsICIsICIsIGVuZEluZGV4LCAiKSIpOwogCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXV0byBsb29wSGVhZCA9IG1faml0LmxhYmVsKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVhZENoYXJhY3RlcihtX2NoZWNrZWRPZmZzZXQgLSBl
bmRJbmRleCArIDEsIG1fcmVncy5yZWdUMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVhZENoYXJhY3RlcihvcC5tX2NoZWNrZWRPZmZzZXQgLSBlbmRJbmRleCArIDEsIG1fcmVncy5y
ZWdUMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5hcHBlbmQobV9qaXQu
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBtX3JlZ3MucmVnVDAsIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIoY2hhcmFjdGVyc0Zhc3RQYXRoLmF0KDApKSkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXJzRmFzdFBhdGguc2l6ZSgpID4gMSkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5hcHBlbmQobV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBtX3JlZ3MucmVnVDAsIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIoY2hhcmFjdGVyc0Zhc3RQYXRoLmF0KDEpKSkpOwpAQCAtMjM2Miw3ICsyMzY5
LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKHBvaW50ZXIpLCBtX3JlZ3MucmVnVDEpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGF1dG8gbG9vcEhlYWQgPSBtX2ppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlYWRDaGFyYWN0ZXIobV9jaGVja2VkT2Zmc2V0IC0gZW5kSW5kZXggKyAx
LCBtX3JlZ3MucmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRDaGFyYWN0
ZXIob3AubV9jaGVja2VkT2Zmc2V0IC0gZW5kSW5kZXggKyAxLCBtX3JlZ3MucmVnVDApOwogI2lm
IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdGljX2Fzc2VydChzaXplb2YoQm95ZXJNb29yZUJpdG1hcDo6TWFwOjpXb3JkVHlwZSkgPT0g
c2l6ZW9mKHVpbnQ2NF90KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Fz
c2VydCgxIDw8IDYgPT0gNjQpOwpAQCAtMjQ3MSwxMCArMjQ3OCw2IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICAgICAgICAgICAgICBv
cC5tX3JlZW50cnkgPSBtX2ppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAgICAgICBtX2ppdC5z
dWIzMihNYWNyb0Fzc2VtYmxlcjo6SW1tMzIocHJpb3JBbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6
ZSksIG1fcmVncy5pbmRleCk7CiAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
aWYgKG9wLm1fb3AgPT0gWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlTmV4dCkKLSAgICAgICAg
ICAgICAgICAgICAgbV9jaGVja2VkT2Zmc2V0ICs9IGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXpl
OwotICAgICAgICAgICAgICAgIG1fY2hlY2tlZE9mZnNldCAtPSBwcmlvckFsdGVybmF0aXZlLT5t
X21pbmltdW1TaXplOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCkBA
IC0yNTA2LDggKzI1MDksNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlh
cnJKSVRJbmZvIHsKICAgICAgICAgICAgICAgICAgICAgb3AubV9jaGVja0FkanVzdCAtPSBkaXNq
dW5jdGlvbi0+bV9taW5pbXVtU2l6ZTsKICAgICAgICAgICAgICAgICBpZiAob3AubV9jaGVja0Fk
anVzdCkKICAgICAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcElmTm9BdmFp
bGFibGVJbnB1dChvcC5tX2NoZWNrQWRqdXN0KSk7Ci0KLSAgICAgICAgICAgICAgICBtX2NoZWNr
ZWRPZmZzZXQgKz0gb3AubV9jaGVja0FkanVzdDsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0
ZXJuYXRpdmVOZXh0OgpAQCAtMjU1MywxMCArMjU1NCw2IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICAgICAgICAgICAgICBvcC5tX2No
ZWNrQWRqdXN0IC09IGRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXplOwogICAgICAgICAgICAgICAg
IGlmIChvcC5tX2NoZWNrQWRqdXN0KQogICAgICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFw
cGVuZChqdW1wSWZOb0F2YWlsYWJsZUlucHV0KG9wLm1fY2hlY2tBZGp1c3QpKTsKLQotICAgICAg
ICAgICAgICAgIFlhcnJPcCYgbGFzdE9wID0gbV9vcHNbb3AubV9wcmV2aW91c09wXTsKLSAgICAg
ICAgICAgICAgICBtX2NoZWNrZWRPZmZzZXQgLT0gbGFzdE9wLm1fY2hlY2tBZGp1c3Q7Ci0gICAg
ICAgICAgICAgICAgbV9jaGVja2VkT2Zmc2V0ICs9IG9wLm1fY2hlY2tBZGp1c3Q7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFlhcnJPcENv
ZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlRW5kOgpAQCAtMjU4MCw5ICsyNTc3LDYgQEAgY2xh
c3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAgICAg
ICAgICAgLy8gdGhlbSB0byB0aGlzIG5vZGUncyBtX2p1bXBzIGxpc3QuCiAgICAgICAgICAgICAg
ICAgb3AubV9qdW1wcy5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5j
bGVhcigpOwotCi0gICAgICAgICAgICAgICAgWWFyck9wJiBsYXN0T3AgPSBtX29wc1tvcC5tX3By
ZXZpb3VzT3BdOwotICAgICAgICAgICAgICAgIG1fY2hlY2tlZE9mZnNldCAtPSBsYXN0T3AubV9j
aGVja0FkanVzdDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIApAQCAt
MjYyNiw3ICsyNjIwLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJy
SklUSW5mbyB7CiAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0cyBvbmx5IGFmdGVyd2FyZHMsIGF0
IHRoZSBwb2ludCB0aGUgcmVzdWx0cyBhcnJheSBpcwogICAgICAgICAgICAgICAgIC8vIGJlaW5n
IGFjY2Vzc2VkLgogICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5jYXB0dXJlKCkgJiYgbV9jb21w
aWxlTW9kZSA9PSBKSVRDb21waWxlTW9kZTo6SW5jbHVkZVN1YnBhdHRlcm5zKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGlucHV0T2Zmc2V0ID0gbV9jaGVja2VkT2Zmc2V0IC0gdGVy
bS0+aW5wdXRQb3NpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5wdXRPZmZz
ZXQgPSBvcC5tX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uOwogICAgICAgICAg
ICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJUeXBlOjpGaXhl
ZENvdW50KQogICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRPZmZzZXQgKz0gdGVybS0+cGFy
ZW50aGVzZXMuZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemU7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChpbnB1dE9mZnNldCkgewpAQCAtMjY1NSw3ICsyNjQ5LDcgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAgICAgICAgICAgLy8gb2Zm
c2V0cyBvbmx5IGFmdGVyd2FyZHMsIGF0IHRoZSBwb2ludCB0aGUgcmVzdWx0cyBhcnJheSBpcwog
ICAgICAgICAgICAgICAgIC8vIGJlaW5nIGFjY2Vzc2VkLgogICAgICAgICAgICAgICAgIGlmICh0
ZXJtLT5jYXB0dXJlKCkgJiYgbV9jb21waWxlTW9kZSA9PSBKSVRDb21waWxlTW9kZTo6SW5jbHVk
ZVN1YnBhdHRlcm5zKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlucHV0T2Zmc2V0
ID0gbV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQb3NpdGlvbjsKKyAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW5wdXRPZmZzZXQgPSBvcC5tX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5p
bnB1dFBvc2l0aW9uOwogICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRPZmZzZXQpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIG1faml0LnN1YjMyKG1fcmVncy5pbmRleCwgTWFjcm9Bc3Nl
bWJsZXI6OkltbTMyKGlucHV0T2Zmc2V0KSwgaW5kZXhUZW1wb3JhcnkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0U3VicGF0dGVybkVuZChpbmRleFRlbXBvcmFyeSwgdGVybS0+cGFyZW50
aGVzZXMuc3VicGF0dGVybklkKTsKQEAgLTI3NjEsNyArMjc1NSw3IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICAgICAgICAgIC8vIGJl
aW5nIGFjY2Vzc2VkLgogICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5jYXB0dXJlKCkgJiYgbV9j
b21waWxlTW9kZSA9PSBKSVRDb21waWxlTW9kZTo6SW5jbHVkZVN1YnBhdHRlcm5zKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIGluZGV4VGVt
cG9yYXJ5ID0gbV9yZWdzLnJlZ1QwOwotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnB1
dE9mZnNldCA9IG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb247CisgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGlucHV0T2Zmc2V0ID0gb3AubV9jaGVja2VkT2Zmc2V0IC0g
dGVybS0+aW5wdXRQb3NpdGlvbjsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50
aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCkKICAgICAgICAgICAgICAgICAg
ICAgICAgIGlucHV0T2Zmc2V0ICs9IHRlcm0tPnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLT5tX21p
bmltdW1TaXplOwogICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRPZmZzZXQpIHsKQEAgLTI4
MDIsNyArMjc5Niw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJ
VEluZm8gewogICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5jYXB0dXJlKCkgJiYgbV9jb21waWxl
TW9kZSA9PSBKSVRDb21waWxlTW9kZTo6SW5jbHVkZVN1YnBhdHRlcm5zKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIGluZGV4VGVtcG9yYXJ5
ID0gbV9yZWdzLnJlZ1QwOwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW5wdXRPZmZzZXQgPSBtX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBv
c2l0aW9uOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnB1dE9mZnNldCA9IG9wLm1f
Y2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAg
IGlmIChpbnB1dE9mZnNldCkgewogICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3ViMzIo
bV9yZWdzLmluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIoaW5wdXRPZmZzZXQpLCBpbmRleFRl
bXBvcmFyeSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdWJwYXR0ZXJuRW5kKGluZGV4
VGVtcG9yYXJ5LCB0ZXJtLT5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQpOwpAQCAtMjg0MCwxMiAr
MjgzNCw4IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8g
ewogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiA9IHRl
cm0tPmZyYW1lTG9jYXRpb247CiAgICAgICAgICAgICAgICAgc3RvcmVUb0ZyYW1lKG1fcmVncy5p
bmRleCwgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb1BhcmVudGhldGlj
YWxBc3NlcnRpb246OmJlZ2luSW5kZXgoKSk7CiAKLSAgICAgICAgICAgICAgICAvLyBDaGVjayAK
LSAgICAgICAgICAgICAgICBvcC5tX2NoZWNrQWRqdXN0ID0gbV9jaGVja2VkT2Zmc2V0IC0gdGVy
bS0+aW5wdXRQb3NpdGlvbjsKICAgICAgICAgICAgICAgICBpZiAob3AubV9jaGVja0FkanVzdCkK
ICAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3ViMzIoTWFjcm9Bc3NlbWJsZXI6OkltbTMyKG9w
Lm1fY2hlY2tBZGp1c3QpLCBtX3JlZ3MuaW5kZXgpOwotCi0gICAgICAgICAgICAgICAgbV9jaGVj
a2VkT2Zmc2V0IC09IG9wLm1fY2hlY2tBZGp1c3Q7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlBhcmVudGhldGljYWxB
c3NlcnRpb25FbmQ6IHsKQEAgLTI4NjEsOSArMjg1MSw2IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICAgICAgICAgICAgICBvcC5tX2p1
bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAgICAgICAgICAgICAgICAgICBvcC5tX3JlZW50
cnkgPSBtX2ppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
IFlhcnJPcCYgbGFzdE9wID0gbV9vcHNbb3AubV9wcmV2aW91c09wXTsKLSAgICAgICAgICAgICAg
ICBtX2NoZWNrZWRPZmZzZXQgKz0gbGFzdE9wLm1fY2hlY2tBZGp1c3Q7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKQEAgLTI5MjMsMTIgKzI5MTAsNiBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgIGNh
c2UgWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlTmV4dDogewogICAgICAgICAgICAgICAgIFBh
dHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUgPSBvcC5tX2FsdGVybmF0aXZlOwogCi0gICAg
ICAgICAgICAgICAgbV9jaGVja2VkT2Zmc2V0IC09IGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXpl
OwotICAgICAgICAgICAgICAgIGlmIChvcC5tX29wID09IFlhcnJPcENvZGU6OkJvZHlBbHRlcm5h
dGl2ZU5leHQpIHsKLSAgICAgICAgICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBwcmlv
ckFsdGVybmF0aXZlID0gbV9vcHNbb3AubV9wcmV2aW91c09wXS5tX2FsdGVybmF0aXZlOwotICAg
ICAgICAgICAgICAgICAgICBtX2NoZWNrZWRPZmZzZXQgKz0gcHJpb3JBbHRlcm5hdGl2ZS0+bV9t
aW5pbXVtU2l6ZTsKLSAgICAgICAgICAgICAgICB9Ci0KICAgICAgICAgICAgICAgICAvLyBJcyB0
aGlzIHRoZSBsYXN0IGFsdGVybmF0aXZlPyBJZiBub3QsIHRoZW4gaWYgd2UgYmFja3RyYWNrIHRv
IHRoaXMgcG9pbnQgd2UganVzdAogICAgICAgICAgICAgICAgIC8vIG5lZWQgdG8ganVtcCB0byB0
cnkgdG8gbWF0Y2ggdGhlIG5leHQgYWx0ZXJuYXRpdmUuCiAgICAgICAgICAgICAgICAgaWYgKG1f
b3BzW29wLm1fbmV4dE9wXS5tX29wICE9IFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUVuZCkg
ewpAQCAtMzEyNyw5ICszMTA4LDYgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1Ymxp
YyBZYXJySklUSW5mbyB7CiAgICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OkJvZHlBbHRlcm5h
dGl2ZUVuZDogewogICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBuZXZlciBiYWNrdHJhY2sg
YmFjayBpbnRvIGEgYm9keSBkaXNqdW5jdGlvbi4KICAgICAgICAgICAgICAgICBBU1NFUlQobV9i
YWNrdHJhY2tpbmdTdGF0ZS5pc0VtcHR5KCkpOwotCi0gICAgICAgICAgICAgICAgUGF0dGVybkFs
dGVybmF0aXZlKiBwcmlvckFsdGVybmF0aXZlID0gbV9vcHNbb3AubV9wcmV2aW91c09wXS5tX2Fs
dGVybmF0aXZlOwotICAgICAgICAgICAgICAgIG1fY2hlY2tlZE9mZnNldCArPSBwcmlvckFsdGVy
bmF0aXZlLT5tX21pbmltdW1TaXplOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogCkBAIC0zMTYwLDcgKzMxMzgsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIGJhY2t0cmFj
a3MgdG8ganVtcCB0byB0aGUgYXBwcm9wcmlhdGUgcGxhY2UuIFdlIG1heSBuZWVkCiAgICAgICAg
ICAgICAgICAgLy8gdG8gbGluayB0aGUgYmFja3RyYWNrcyBpbiBvbmUgb2YgdGhyZWUgZGlmZmVy
ZW50IHdheSBkZXBlbmRpbmcgb24KICAgICAgICAgICAgICAgICAvLyB0aGUgdHlwZSBvZiBhbHRl
cm5hdGl2ZSB3ZSBhcmUgZGVhbGluZyB3aXRoOgotICAgICAgICAgICAgICAgIC8vICAtIEEgc2lu
Z2xlIGFsdGVybmF0aXZlLCB3aXRoIG5vIHNpbXBsaW5ncy4KKyAgICAgICAgICAgICAgICAvLyAg
LSBBIHNpbmdsZSBhbHRlcm5hdGl2ZSwgd2l0aCBubyBzaWJsaW5ncy4KICAgICAgICAgICAgICAg
ICAvLyAgLSBUaGUgbGFzdCBhbHRlcm5hdGl2ZSBvZiBhIHNldCBvZiB0d28gb3IgbW9yZS4KICAg
ICAgICAgICAgICAgICAvLyAgLSBBbiBhbHRlcm5hdGl2ZSBvdGhlciB0aGFuIHRoZSBsYXN0IG9m
IGEgc2V0IG9mIHR3byBvciBtb3JlLgogICAgICAgICAgICAgICAgIC8vCkBAIC0zMjI3LDEyICsz
MjA1LDYgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7
CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChlbmRPcC0+bV9vcCA9PSBZYXJyT3BDb2RlOjpT
aW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUVuZCB8fCBlbmRPcC0+bV9vcCA9PSBZYXJyT3BDb2RlOjpO
ZXN0ZWRBbHRlcm5hdGl2ZUVuZCk7CiAgICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNraW5n
U3RhdGUuYXBwZW5kKGVuZE9wLT5tX2p1bXBzKTsKICAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICBtX2NoZWNrZWRPZmZzZXQgLT0gb3AubV9jaGVja0FkanVzdDsKLSAgICAgICAg
ICAgICAgICBpZiAoIWlzQmVnaW4pIHsKLSAgICAgICAgICAgICAgICAgICAgWWFyck9wJiBsYXN0
T3AgPSBtX29wc1tvcC5tX3ByZXZpb3VzT3BdOwotICAgICAgICAgICAgICAgICAgICBtX2NoZWNr
ZWRPZmZzZXQgKz0gbGFzdE9wLm1fY2hlY2tBZGp1c3Q7Ci0gICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBZYXJy
T3BDb2RlOjpTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUVuZDoKQEAgLTMyNTgsOSArMzIzMCw2IEBA
IGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAg
ICAgICAgICAgICAgICAvLyBhbHRlcm5hdGl2ZSB0byB0aGlzIHBvaW50LgogICAgICAgICAgICAg
ICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRlLmFwcGVuZChvcC5tX3JldHVybkFkZHJlc3MpOwog
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIFlhcnJPcCYgbGFzdE9wID0gbV9v
cHNbb3AubV9wcmV2aW91c09wXTsKLSAgICAgICAgICAgICAgICBtX2NoZWNrZWRPZmZzZXQgKz0g
bGFzdE9wLm1fY2hlY2tBZGp1c3Q7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAKQEAgLTM1MDksOCArMzQ3OCw2IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICAgICAgICAgIC8vIHRoZSBlbmQgb2YgdGhlIGFz
c2VydGlvbi4gQWxzbywgaWYgaW52ZXJ0ZWQsIHdlIHdpbGwgaGF2ZQogICAgICAgICAgICAgICAg
IC8vIGFkZGVkIHRoZSBmYWlsdXJlIGNhdXNlZCBieSBhIHN1Y2Nlc3NmdWwgbWF0Y2ggdG8gdGhp
cy4KICAgICAgICAgICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRlLmFwcGVuZChlbmRPcC5tX2p1
bXBzKTsKLQotICAgICAgICAgICAgICAgIG1fY2hlY2tlZE9mZnNldCArPSBvcC5tX2NoZWNrQWRq
dXN0OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
Y2FzZSBZYXJyT3BDb2RlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uRW5kOiB7CkBAIC0zNTIwLDE2
ICszNDg3LDEyIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVElu
Zm8gewogCiAgICAgICAgICAgICAgICAgLy8gTmV2ZXIgYmFja3RyYWNrIGludG8gYW4gYXNzZXJ0
aW9uOyBsYXRlciBmYWlsdXJlcyBiYWlsIHRvIGJlZm9yZSB0aGUgYmVnaW4uCiAgICAgICAgICAg
ICAgICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS50YWtlQmFja3RyYWNrc1RvSnVtcExpc3Qob3AubV9q
dW1wcywgJm1faml0KTsKLQotICAgICAgICAgICAgICAgIFlhcnJPcCYgbGFzdE9wID0gbV9vcHNb
b3AubV9wcmV2aW91c09wXTsKLSAgICAgICAgICAgICAgICBtX2NoZWNrZWRPZmZzZXQgLT0gbGFz
dE9wLm1fY2hlY2tBZGp1c3Q7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6TWF0Y2hGYWlsZWQ6CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0KICAgICAgICAgfSB3aGlsZSAob3BJbmRleCk7
CiAgICAgfQogCkBAIC0zNTQ2LDcgKzM1MDksNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAvLyBBbHRlcm5hdGl2ZXMgd2lsbCB1c2UgdGhl
ICdTaW1wbGUnIHNldCBvZiBvcHMgaWYgZWl0aGVyIHRoZQogICAgIC8vIHN1YnBhdHRlcm4gaXMg
dGVybWluYWwgKGluIHdoaWNoIGNhc2Ugd2Ugd2lsbCBuZXZlciBuZWVkIHRvCiAgICAgLy8gYmFj
a3RyYWNrKSwgb3IgaWYgdGhlIHN1YnBhdHRlcm4gb25seSBjb250YWlucyBvbmUgYWx0ZXJuYXRp
dmUuCi0gICAgdm9pZCBvcENvbXBpbGVQYXJlbnRoZXNlc1N1YnBhdHRlcm4oUGF0dGVyblRlcm0q
IHRlcm0pCisgICAgdm9pZCBvcENvbXBpbGVQYXJlbnRoZXNlc1N1YnBhdHRlcm4oQ2hlY2tlZDx1
bnNpZ25lZD4gY2hlY2tlZE9mZnNldCwgUGF0dGVyblRlcm0qIHRlcm0pCiAgICAgewogICAgICAg
ICBZYXJyT3BDb2RlIHBhcmVudGhlc2VzQmVnaW5PcENvZGU7CiAgICAgICAgIFlhcnJPcENvZGUg
cGFyZW50aGVzZXNFbmRPcENvZGU7CkBAIC0zNjIwLDEyICszNTgzLDIyIEBAIGNsYXNzIFlhcnJH
ZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICBtX29wcy5hcHBl
bmQoYWx0ZXJuYXRpdmVCZWdpbk9wQ29kZSk7CiAgICAgICAgIG1fb3BzLmxhc3QoKS5tX3ByZXZp
b3VzT3AgPSBub3RGb3VuZDsKICAgICAgICAgbV9vcHMubGFzdCgpLm1fdGVybSA9IHRlcm07Ci0g
ICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UGF0dGVybkFsdGVybmF0aXZlPj4mIGFsdGVy
bmF0aXZlcyA9IHRlcm0tPnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlczsK
KyAgICAgICAgUGF0dGVybkRpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbiA9IHRlcm0tPnBhcmVudGhl
c2VzLmRpc2p1bmN0aW9uOworICAgICAgICBhdXRvJiBhbHRlcm5hdGl2ZXMgPSBkaXNqdW5jdGlv
bi0+bV9hbHRlcm5hdGl2ZXM7CisgICAgICAgIGF1dG8gb3JpZ2luYWxDaGVja2VkT2Zmc2V0ID0g
Y2hlY2tlZE9mZnNldDsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFsdGVybmF0
aXZlcy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgc2l6ZV90IGxhc3RPcEluZGV4ID0gbV9v
cHMuc2l6ZSgpIC0gMTsKIAogICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBuZXN0ZWRB
bHRlcm5hdGl2ZSA9IGFsdGVybmF0aXZlc1tpXS5nZXQoKTsKLSAgICAgICAgICAgIG9wQ29tcGls
ZUFsdGVybmF0aXZlKG5lc3RlZEFsdGVybmF0aXZlKTsKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAvLyBDYWxjdWxhdGUgaG93IG11Y2ggaW5wdXQgd2UgbmVlZCB0byBjaGVjayBmb3Is
IGFuZCBpZiBub24temVybyBjaGVjay4KKyAgICAgICAgICAgICAgICBZYXJyT3AmIGxhc3RPcCA9
IG1fb3BzW2xhc3RPcEluZGV4XTsKKyAgICAgICAgICAgICAgICBsYXN0T3AubV9jaGVja0FkanVz
dCA9IG5lc3RlZEFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplOworICAgICAgICAgICAgICAgIGlm
ICgodGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50KSAmJiAo
dGVybS0+dHlwZSAhPSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbikp
CisgICAgICAgICAgICAgICAgICAgIGxhc3RPcC5tX2NoZWNrQWRqdXN0IC09IGRpc2p1bmN0aW9u
LT5tX21pbmltdW1TaXplOworICAgICAgICAgICAgICAgIGxhc3RPcC5tX2NoZWNrZWRPZmZzZXQg
PSBjaGVja2VkT2Zmc2V0ICsgbGFzdE9wLm1fY2hlY2tBZGp1c3Q7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBvcENvbXBpbGVBbHRlcm5hdGl2ZShtX29wc1tsYXN0T3BJbmRleF0ubV9jaGVj
a2VkT2Zmc2V0LCBuZXN0ZWRBbHRlcm5hdGl2ZSk7CiAKICAgICAgICAgICAgIHNpemVfdCB0aGlz
T3BJbmRleCA9IG1fb3BzLnNpemUoKTsKICAgICAgICAgICAgIG1fb3BzLmFwcGVuZChZYXJyT3Ao
YWx0ZXJuYXRpdmVOZXh0T3BDb2RlKSk7CkBAIC0zNjQzLDYgKzM2MTYsNyBAQCBjbGFzcyBZYXJy
R2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgbGFzdE9wLm1f
b3AgPSBhbHRlcm5hdGl2ZUVuZE9wQ29kZTsKICAgICAgICAgbGFzdE9wLm1fYWx0ZXJuYXRpdmUg
PSBudWxscHRyOwogICAgICAgICBsYXN0T3AubV9uZXh0T3AgPSBub3RGb3VuZDsKKyAgICAgICAg
bGFzdE9wLm1fY2hlY2tlZE9mZnNldCA9IGNoZWNrZWRPZmZzZXQ7CiAKICAgICAgICAgc2l6ZV90
IHBhcmVuRW5kID0gbV9vcHMuc2l6ZSgpOwogICAgICAgICBtX29wcy5hcHBlbmQocGFyZW50aGVz
ZXNFbmRPcENvZGUpOwpAQCAtMzY1MCw5ICszNjI0LDExIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICBtX29wc1twYXJlbkJlZ2luXS5t
X3Rlcm0gPSB0ZXJtOwogICAgICAgICBtX29wc1twYXJlbkJlZ2luXS5tX3ByZXZpb3VzT3AgPSBu
b3RGb3VuZDsKICAgICAgICAgbV9vcHNbcGFyZW5CZWdpbl0ubV9uZXh0T3AgPSBwYXJlbkVuZDsK
KyAgICAgICAgbV9vcHNbcGFyZW5CZWdpbl0ubV9jaGVja2VkT2Zmc2V0ID0gY2hlY2tlZE9mZnNl
dDsKICAgICAgICAgbV9vcHNbcGFyZW5FbmRdLm1fdGVybSA9IHRlcm07CiAgICAgICAgIG1fb3Bz
W3BhcmVuRW5kXS5tX3ByZXZpb3VzT3AgPSBwYXJlbkJlZ2luOwogICAgICAgICBtX29wc1twYXJl
bkVuZF0ubV9uZXh0T3AgPSBub3RGb3VuZDsKKyAgICAgICAgbV9vcHNbcGFyZW5FbmRdLm1fY2hl
Y2tlZE9mZnNldCA9IGNoZWNrZWRPZmZzZXQ7CiAgICAgfQogCiAgICAgLy8gb3BDb21waWxlUGFy
ZW50aGV0aWNhbEFzc2VydGlvbgpAQCAtMzY2MywyNSArMzYzOSwzOCBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAvLyBXZSBjYW4gYWx3YXlz
IHVzZSB0aGUgT3BTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZSBub2RlcyBpbiB0aGUKICAgICAvLyBj
YXNlIG9mIHBhcmVudGhldGljYWwgYXNzZXJ0aW9ucyBzaW5jZSB0aGVzZSBvbmx5IGV2ZXIgbWF0
Y2gKICAgICAvLyBvbmNlLCBhbmQgd2lsbCBuZXZlciBiYWNrdHJhY2sgYmFjayBpbnRvIHRoZSBh
c3NlcnRpb24uCi0gICAgdm9pZCBvcENvbXBpbGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKFBhdHRl
cm5UZXJtKiB0ZXJtKQorICAgIHZvaWQgb3BDb21waWxlUGFyZW50aGV0aWNhbEFzc2VydGlvbihD
aGVja2VkPHVuc2lnbmVkPiBjaGVja2VkT2Zmc2V0LCBQYXR0ZXJuVGVybSogdGVybSkKICAgICB7
CiAgICAgICAgIGlmIChVTkxJS0VMWSghaXNTYWZlVG9SZWN1cnNlKCkpKSB7CiAgICAgICAgICAg
ICBtX2ZhaWx1cmVSZWFzb24gPSBKSVRGYWlsdXJlUmVhc29uOjpQYXJlbnRoZXNpc05lc3RlZFRv
b0RlZXA7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBhdXRvIG9y
aWdpbmFsQ2hlY2tlZE9mZnNldCA9IGNoZWNrZWRPZmZzZXQ7CiAgICAgICAgIHNpemVfdCBwYXJl
bkJlZ2luID0gbV9vcHMuc2l6ZSgpOwogICAgICAgICBtX29wcy5hcHBlbmQoWWFyck9wQ29kZTo6
UGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKTsKKyAgICAgICAgbV9vcHMubGFzdCgpLm1fY2hl
Y2tBZGp1c3QgPSBjaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQb3NpdGlvbjsKKyAgICAgICAg
Y2hlY2tlZE9mZnNldCAtPSBtX29wcy5sYXN0KCkubV9jaGVja0FkanVzdDsKKyAgICAgICAgbV9v
cHMubGFzdCgpLm1fY2hlY2tlZE9mZnNldCA9IGNoZWNrZWRPZmZzZXQ7CiAKICAgICAgICAgbV9v
cHMuYXBwZW5kKFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlQmVnaW4pOwogICAg
ICAgICBtX29wcy5sYXN0KCkubV9wcmV2aW91c09wID0gbm90Rm91bmQ7CiAgICAgICAgIG1fb3Bz
Lmxhc3QoKS5tX3Rlcm0gPSB0ZXJtOwotICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBh
dHRlcm5BbHRlcm5hdGl2ZT4+JiBhbHRlcm5hdGl2ZXMgPSAgdGVybS0+cGFyZW50aGVzZXMuZGlz
anVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzOworICAgICAgICBQYXR0ZXJuRGlzanVuY3Rpb24qIGRp
c2p1bmN0aW9uID0gdGVybS0+cGFyZW50aGVzZXMuZGlzanVuY3Rpb247CisgICAgICAgIGF1dG8m
IGFsdGVybmF0aXZlcyA9IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlczsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGFsdGVybmF0aXZlcy5zaXplKCk7ICsraSkgewogICAgICAg
ICAgICAgc2l6ZV90IGxhc3RPcEluZGV4ID0gbV9vcHMuc2l6ZSgpIC0gMTsKIAogICAgICAgICAg
ICAgUGF0dGVybkFsdGVybmF0aXZlKiBuZXN0ZWRBbHRlcm5hdGl2ZSA9IGFsdGVybmF0aXZlc1tp
XS5nZXQoKTsKLSAgICAgICAgICAgIG9wQ29tcGlsZUFsdGVybmF0aXZlKG5lc3RlZEFsdGVybmF0
aXZlKTsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBDYWxjdWxhdGUgaG93IG11
Y2ggaW5wdXQgd2UgbmVlZCB0byBjaGVjayBmb3IsIGFuZCBpZiBub24temVybyBjaGVjay4KKyAg
ICAgICAgICAgICAgICBZYXJyT3AmIGxhc3RPcCA9IG1fb3BzW2xhc3RPcEluZGV4XTsKKyAgICAg
ICAgICAgICAgICBsYXN0T3AubV9jaGVja0FkanVzdCA9IG5lc3RlZEFsdGVybmF0aXZlLT5tX21p
bmltdW1TaXplOworICAgICAgICAgICAgICAgIGlmICgodGVybS0+cXVhbnRpdHlUeXBlID09IFF1
YW50aWZpZXJUeXBlOjpGaXhlZENvdW50KSAmJiAodGVybS0+dHlwZSAhPSBQYXR0ZXJuVGVybTo6
VHlwZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbikpCisgICAgICAgICAgICAgICAgICAgIGxhc3RP
cC5tX2NoZWNrQWRqdXN0IC09IGRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXplOworICAgICAgICAg
ICAgICAgIGxhc3RPcC5tX2NoZWNrZWRPZmZzZXQgPSBjaGVja2VkT2Zmc2V0ICsgbGFzdE9wLm1f
Y2hlY2tBZGp1c3Q7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvcENvbXBpbGVBbHRlcm5h
dGl2ZShtX29wc1tsYXN0T3BJbmRleF0ubV9jaGVja2VkT2Zmc2V0LCBuZXN0ZWRBbHRlcm5hdGl2
ZSk7CiAKICAgICAgICAgICAgIHNpemVfdCB0aGlzT3BJbmRleCA9IG1fb3BzLnNpemUoKTsKICAg
ICAgICAgICAgIG1fb3BzLmFwcGVuZChZYXJyT3AoWWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0
ZXJuYXRpdmVOZXh0KSk7CkBAIC0zNjk5LDYgKzM2ODgsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9y
IGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgbGFzdE9wLm1fb3AgPSBZYXJy
T3BDb2RlOjpTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUVuZDsKICAgICAgICAgbGFzdE9wLm1fYWx0
ZXJuYXRpdmUgPSBudWxscHRyOwogICAgICAgICBsYXN0T3AubV9uZXh0T3AgPSBub3RGb3VuZDsK
KyAgICAgICAgbGFzdE9wLm1fY2hlY2tlZE9mZnNldCA9IGNoZWNrZWRPZmZzZXQ7CiAKICAgICAg
ICAgc2l6ZV90IHBhcmVuRW5kID0gbV9vcHMuc2l6ZSgpOwogICAgICAgICBtX29wcy5hcHBlbmQo
WWFyck9wQ29kZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbkVuZCk7CkBAIC0zNzA5LDExICszNjk5
LDEyIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewog
ICAgICAgICBtX29wc1twYXJlbkVuZF0ubV90ZXJtID0gdGVybTsKICAgICAgICAgbV9vcHNbcGFy
ZW5FbmRdLm1fcHJldmlvdXNPcCA9IHBhcmVuQmVnaW47CiAgICAgICAgIG1fb3BzW3BhcmVuRW5k
XS5tX25leHRPcCA9IG5vdEZvdW5kOworICAgICAgICBtX29wc1twYXJlbkVuZF0ubV9jaGVja2Vk
T2Zmc2V0ID0gb3JpZ2luYWxDaGVja2VkT2Zmc2V0OwogICAgIH0KIAogICAgIC8vIG9wQ29tcGls
ZUFsdGVybmF0aXZlCiAgICAgLy8gQ2FsbGVkIHRvIGVtaXQgbm9kZXMgZm9yIGFsbCB0ZXJtcyBp
biBhbiBhbHRlcm5hdGl2ZS4KLSAgICB2b2lkIG9wQ29tcGlsZUFsdGVybmF0aXZlKFBhdHRlcm5B
bHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUpCisgICAgdm9pZCBvcENvbXBpbGVBbHRlcm5hdGl2ZShD
aGVja2VkPHVuc2lnbmVkPiBjaGVja2VkT2Zmc2V0LCBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVy
bmF0aXZlKQogICAgIHsKICAgICAgICAgb3B0aW1pemVBbHRlcm5hdGl2ZShhbHRlcm5hdGl2ZSk7
CiAKQEAgLTM3MjIsMTUgKzM3MTMsMTYgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1
YmxpYyBZYXJySklUSW5mbyB7CiAKICAgICAgICAgICAgIHN3aXRjaCAodGVybS0+dHlwZSkgewog
ICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJu
OgotICAgICAgICAgICAgICAgIG9wQ29tcGlsZVBhcmVudGhlc2VzU3VicGF0dGVybih0ZXJtKTsK
KyAgICAgICAgICAgICAgICBvcENvbXBpbGVQYXJlbnRoZXNlc1N1YnBhdHRlcm4oY2hlY2tlZE9m
ZnNldCwgdGVybSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2Ug
UGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhldGljYWxBc3NlcnRpb246Ci0gICAgICAgICAgICAg
ICAgb3BDb21waWxlUGFyZW50aGV0aWNhbEFzc2VydGlvbih0ZXJtKTsKKyAgICAgICAgICAgICAg
ICBvcENvbXBpbGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKGNoZWNrZWRPZmZzZXQsIHRlcm0pOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgICAgIG1fb3BzLmFwcGVuZCh0ZXJtKTsKKyAgICAgICAgICAgICAgICBtX29wcy5sYXN0KCku
bV9jaGVja2VkT2Zmc2V0ID0gY2hlY2tlZE9mZnNldDsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0KQEAgLTM3NTUsNyArMzc0Nyw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBhdHRlcm5BbHRlcm5hdGl2
ZT4+JiBhbHRlcm5hdGl2ZXMgPSBkaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXM7CisgICAgICAg
IGF1dG8mIGFsdGVybmF0aXZlcyA9IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlczsKICAgICAg
ICAgc2l6ZV90IGN1cnJlbnRBbHRlcm5hdGl2ZUluZGV4ID0gMDsKIAogICAgICAgICAvLyBFbWl0
IHRoZSAnb25jZSB0aHJvdWdoJyBhbHRlcm5hdGl2ZXMuCkBAIC0zNzY1LDggKzM3NTcsMTAgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAKICAgICAg
ICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICBzaXplX3QgbGFzdE9wSW5kZXggPSBtX29wcy5z
aXplKCkgLSAxOworCiAgICAgICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5h
dGl2ZSA9IGFsdGVybmF0aXZlc1tjdXJyZW50QWx0ZXJuYXRpdmVJbmRleF0uZ2V0KCk7Ci0gICAg
ICAgICAgICAgICAgb3BDb21waWxlQWx0ZXJuYXRpdmUoYWx0ZXJuYXRpdmUpOworICAgICAgICAg
ICAgICAgIG1fb3BzW2xhc3RPcEluZGV4XS5tX2NoZWNrZWRPZmZzZXQgPSBhbHRlcm5hdGl2ZS0+
bV9taW5pbXVtU2l6ZTsKKyAgICAgICAgICAgICAgICBvcENvbXBpbGVBbHRlcm5hdGl2ZShhbHRl
cm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSwgYWx0ZXJuYXRpdmUpOwogCiAgICAgICAgICAgICAgICAg
c2l6ZV90IHRoaXNPcEluZGV4ID0gbV9vcHMuc2l6ZSgpOwogICAgICAgICAgICAgICAgIG1fb3Bz
LmFwcGVuZChZYXJyT3AoWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlTmV4dCkpOwpAQCAtMzc4
NywxMCArMzc4MSwxMiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJK
SVRJbmZvIHsKICAgICAgICAgICAgIGxhc3RPcC5tX29wID0gWWFyck9wQ29kZTo6Qm9keUFsdGVy
bmF0aXZlRW5kOwogICAgICAgICAgICAgbGFzdE9wLm1fYWx0ZXJuYXRpdmUgPSBudWxscHRyOwog
ICAgICAgICAgICAgbGFzdE9wLm1fbmV4dE9wID0gbm90Rm91bmQ7CisgICAgICAgICAgICBsYXN0
T3AubV9jaGVja2VkT2Zmc2V0ID0gMDsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjdXJyZW50
QWx0ZXJuYXRpdmVJbmRleCA9PSBhbHRlcm5hdGl2ZXMuc2l6ZSgpKSB7CiAgICAgICAgICAgICBt
X29wcy5hcHBlbmQoWWFyck9wKFlhcnJPcENvZGU6Ok1hdGNoRmFpbGVkKSk7CisgICAgICAgICAg
ICBtX29wcy5sYXN0KCkubV9jaGVja2VkT2Zmc2V0ID0gMDsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCkBAIC0zODE1LDkgKzM4MTEsMTEgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBm
aW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAKICAgICAgICAgZG8gewogICAgICAgICAgICAg
c2l6ZV90IGxhc3RPcEluZGV4ID0gbV9vcHMuc2l6ZSgpIC0gMTsKKwogICAgICAgICAgICAgUGF0
dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IGFsdGVybmF0aXZlc1tjdXJyZW50QWx0ZXJu
YXRpdmVJbmRleF0uZ2V0KCk7CiAgICAgICAgICAgICBBU1NFUlQoIWFsdGVybmF0aXZlLT5vbmNl
VGhyb3VnaCgpKTsKLSAgICAgICAgICAgIG9wQ29tcGlsZUFsdGVybmF0aXZlKGFsdGVybmF0aXZl
KTsKKyAgICAgICAgICAgIG1fb3BzW2xhc3RPcEluZGV4XS5tX2NoZWNrZWRPZmZzZXQgPSBhbHRl
cm5hdGl2ZS0+bV9taW5pbXVtU2l6ZTsKKyAgICAgICAgICAgIG9wQ29tcGlsZUFsdGVybmF0aXZl
KGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplLCBhbHRlcm5hdGl2ZSk7CiAKICAgICAgICAgICAg
IHNpemVfdCB0aGlzT3BJbmRleCA9IG1fb3BzLnNpemUoKTsKICAgICAgICAgICAgIG1fb3BzLmFw
cGVuZChZYXJyT3AoWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlTmV4dCkpOwpAQCAtMzgzNiw2
ICszODM0LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5m
byB7CiAgICAgICAgIGxhc3RPcC5tX29wID0gWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlRW5k
OwogICAgICAgICBsYXN0T3AubV9hbHRlcm5hdGl2ZSA9IG51bGxwdHI7CiAgICAgICAgIGxhc3RP
cC5tX25leHRPcCA9IHJlcGVhdExvb3A7CisgICAgICAgIGxhc3RPcC5tX2NoZWNrZWRPZmZzZXQg
PSAwOwogICAgIH0KIAogICAgIGJvb2wgY29sbGVjdEJveWVyTW9vcmVJbmZvKFBhdHRlcm5EaXNq
dW5jdGlvbiogZGlzanVuY3Rpb24sIHNpemVfdCBjdXJyZW50QWx0ZXJuYXRpdmVJbmRleCwgQm95
ZXJNb29yZUluZm8mIGJtSW5mbykKQEAgLTQ0NzcsMjkgKzQ0NzYsMjkgQEAgY2xhc3MgWWFyckdl
bmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7CiAgICAgICAgICAgICBvdXQucHJp
bnQoIlRlcm0gIik7CiAgICAgICAgICAgICBzd2l0Y2ggKHRlcm0tPnR5cGUpIHsKICAgICAgICAg
ICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbkJPTDoKLSAgICAgICAgICAgICAg
ICBvdXQucHJpbnQoIkFzc2VydCBCT0wiKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJB
c3NlcnQgQk9MIGNoZWNrZWQtb2Zmc2V0OigldSkiLCBvcC5tX2NoZWNrZWRPZmZzZXQudmFsdWUo
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRl
cm06OlR5cGU6OkFzc2VydGlvbkVPTDoKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIkFzc2Vy
dCBFT0wiKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJBc3NlcnQgRU9MIGNoZWNrZWQt
b2Zmc2V0OigldSkiLCBvcC5tX2NoZWNrZWRPZmZzZXQudmFsdWUoKSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkJhY2tSZWZl
cmVuY2U6Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50ZigiQmFja1JlZmVyZW5jZSBwYXR0ZXJu
ICMldSIsIHRlcm0tPmJhY2tSZWZlcmVuY2VTdWJwYXR0ZXJuSWQpOworICAgICAgICAgICAgICAg
IG91dC5wcmludGYoIkJhY2tSZWZlcmVuY2UgcGF0dGVybiAjJXUgY2hlY2tlZC1vZmZzZXQ6KCV1
KSIsIHRlcm0tPmJhY2tSZWZlcmVuY2VTdWJwYXR0ZXJuSWQsIG9wLm1fY2hlY2tlZE9mZnNldC52
YWx1ZSgpKTsKICAgICAgICAgICAgICAgICB0ZXJtLT5kdW1wUXVhbnRpZmllcihvdXQpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBl
OjpQYXR0ZXJuQ2hhcmFjdGVyOgotICAgICAgICAgICAgICAgIG91dC5wcmludCgiUGF0dGVybkNo
YXJhY3RlciAiKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJQYXR0ZXJuQ2hhcmFjdGVy
IGNoZWNrZWQtb2Zmc2V0OigldSkgIiwgb3AubV9jaGVja2VkT2Zmc2V0LnZhbHVlKCkpOwogICAg
ICAgICAgICAgICAgIGR1bXBVQ2hhcjMyKG91dCwgdGVybS0+cGF0dGVybkNoYXJhY3Rlcik7CiAg
ICAgICAgICAgICAgICAgaWYgKG1fcGF0dGVybi5pZ25vcmVDYXNlKCkpCi0gICAgICAgICAgICAg
ICAgICAgIG91dC5wcmludCgiIGlnbm9yZSBjYXNlIik7CisgICAgICAgICAgICAgICAgICAgIG91
dC5wcmludCgiaWdub3JlIGNhc2UgIik7CiAKICAgICAgICAgICAgICAgICB0ZXJtLT5kdW1wUXVh
bnRpZmllcihvdXQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNl
IFBhdHRlcm5UZXJtOjpUeXBlOjpDaGFyYWN0ZXJDbGFzczoKLSAgICAgICAgICAgICAgICBvdXQu
cHJpbnQoIlBhdHRlcm5DaGFyYWN0ZXJDbGFzcyAiKTsKKyAgICAgICAgICAgICAgICBvdXQucHJp
bnRmKCJQYXR0ZXJuQ2hhcmFjdGVyQ2xhc3MgY2hlY2tlZC1vZmZzZXQ6KCV1KSAiLCBvcC5tX2No
ZWNrZWRPZmZzZXQudmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPmludmVydCgp
KQogICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIm5vdCAiKTsKICAgICAgICAgICAgICAg
ICBkdW1wQ2hhcmFjdGVyQ2xhc3Mob3V0LCAmbV9wYXR0ZXJuLCB0ZXJtLT5jaGFyYWN0ZXJDbGFz
cyk7CkBAIC00NTA3LDE1ICs0NTA2LDE1IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAg
ICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25Xb3JkQm91bmRhcnk6Ci0gICAgICAg
ICAgICAgICAgb3V0LnByaW50ZigiJXN3b3JkIGJvdW5kYXJ5IiwgdGVybS0+aW52ZXJ0KCkgPyAi
bm9uLSIgOiAiIik7CisgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiJXN3b3JkIGJvdW5kYXJ5
IGNoZWNrZWQtb2Zmc2V0OigldSkiLCB0ZXJtLT5pbnZlcnQoKSA/ICJub24tIiA6ICIiLCBvcC5t
X2NoZWNrZWRPZmZzZXQudmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkRvdFN0YXJFbmNsb3N1cmU6Ci0gICAgICAg
ICAgICAgICAgb3V0LnByaW50KCIuKiBlbmNsb3N1cmUiKTsKKyAgICAgICAgICAgICAgICBvdXQu
cHJpbnRmKCIuKiBlbmNsb3N1cmUgY2hlY2tlZC1vZmZzZXQ6KCV1KSIsIG9wLm1fY2hlY2tlZE9m
ZnNldC52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2Fz
ZSBQYXR0ZXJuVGVybTo6VHlwZTo6Rm9yd2FyZFJlZmVyZW5jZToKLSAgICAgICAgICAgICAgICBv
dXQucHJpbnQoIkZvcndhcmRSZWZlcmVuY2UgPG5vdCBoYW5kbGVkPiIpOworICAgICAgICAgICAg
ICAgIG91dC5wcmludGYoIkZvcndhcmRSZWZlcmVuY2UgPG5vdCBoYW5kbGVkPiBjaGVja2VkLW9m
ZnNldDooJXUpIiwgb3AubV9jaGVja2VkT2Zmc2V0LnZhbHVlKCkpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpQYXJlbnRoZXNl
c1N1YnBhdHRlcm46CkBAIC00NTMxLDY3ICs0NTMwLDY3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBZ
YXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVCZWdpbjoKLSAgICAgICAgICAgIG91dC5wcmludGYo
IkJvZHlBbHRlcm5hdGl2ZUJlZ2luIG1pbmltdW0gc2l6ZSAldVxuIiwgb3AubV9hbHRlcm5hdGl2
ZS0+bV9taW5pbXVtU2l6ZSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJCb2R5QWx0ZXJuYXRp
dmVCZWdpbiBtaW5pbXVtLXNpemU6KCV1KSxjaGVja2VkLW9mZnNldDooJXUpXG4iLCBvcC5tX2Fs
dGVybmF0aXZlLT5tX21pbmltdW1TaXplLCBvcC5tX2NoZWNrZWRPZmZzZXQudmFsdWUoKSk7CiAg
ICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBjYXNlIFlhcnJPcENvZGU6OkJvZHlBbHRl
cm5hdGl2ZU5leHQ6Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCJCb2R5QWx0ZXJuYXRpdmVOZXh0
IG1pbmltdW0gc2l6ZSAldVxuIiwgb3AubV9hbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSk7Cisg
ICAgICAgICAgICBvdXQucHJpbnRmKCJCb2R5QWx0ZXJuYXRpdmVOZXh0IG1pbmltdW0tc2l6ZToo
JXUpLGNoZWNrZWQtb2Zmc2V0OigldSlcbiIsIG9wLm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNp
emUsIG9wLm1fY2hlY2tlZE9mZnNldC52YWx1ZSgpKTsKICAgICAgICAgICAgIHJldHVybiAwOwog
CiAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlRW5kOgotICAgICAgICAg
ICAgb3V0LnByaW50KCJCb2R5QWx0ZXJuYXRpdmVFbmRcbiIpOworICAgICAgICAgICAgb3V0LnBy
aW50ZigiQm9keUFsdGVybmF0aXZlRW5kIGNoZWNrZWQtb2Zmc2V0OigldSlcbiIsIG9wLm1fY2hl
Y2tlZE9mZnNldC52YWx1ZSgpKTsKICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgIGNh
c2UgWWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVCZWdpbjoKLSAgICAgICAgICAg
IG91dC5wcmludGYoIlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlQmVnaW4gbWluaW11bSBzaXplICV1
XG4iLCBvcC5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKTsKKyAgICAgICAgICAgIG91dC5w
cmludGYoIlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlQmVnaW4gbWluaW11bS1zaXplOigldSksY2hl
Y2tlZC1vZmZzZXQ6KCV1KVxuIiwgb3AubV9hbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSwgb3Au
bV9jaGVja2VkT2Zmc2V0LnZhbHVlKCkpOwogICAgICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAg
ICAgY2FzZSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luOgotICAgICAgICAgICAg
b3V0LnByaW50ZigiTmVzdGVkQWx0ZXJuYXRpdmVCZWdpbiBtaW5pbXVtIHNpemUgJXVcbiIsIG9w
Lm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpOworICAgICAgICAgICAgb3V0LnByaW50Zigi
TmVzdGVkQWx0ZXJuYXRpdmVCZWdpbiBtaW5pbXVtLXNpemU6KCV1KSxjaGVja2VkLW9mZnNldDoo
JXUpXG4iLCBvcC5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplLCBvcC5tX2NoZWNrZWRPZmZz
ZXQudmFsdWUoKSk7CiAgICAgICAgICAgICByZXR1cm4gMTsKIAogICAgICAgICBjYXNlIFlhcnJP
cENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlTmV4dDoKLSAgICAgICAgICAgIG91dC5wcmlu
dGYoIlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlTmV4dCBtaW5pbXVtIHNpemUgJXVcbiIsIG9wLm1f
YWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpOworICAgICAgICAgICAgb3V0LnByaW50ZigiU2lt
cGxlTmVzdGVkQWx0ZXJuYXRpdmVOZXh0IG1pbmltdW0tc2l6ZTooJXUpLGNoZWNrZWQtb2Zmc2V0
OigldSlcbiIsIG9wLm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUsIG9wLm1fY2hlY2tlZE9m
ZnNldC52YWx1ZSgpKTsKICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgIGNhc2UgWWFy
ck9wQ29kZTo6TmVzdGVkQWx0ZXJuYXRpdmVOZXh0OgotICAgICAgICAgICAgb3V0LnByaW50Zigi
TmVzdGVkQWx0ZXJuYXRpdmVOZXh0IG1pbmltdW0gc2l6ZSAldVxuIiwgb3AubV9hbHRlcm5hdGl2
ZS0+bV9taW5pbXVtU2l6ZSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJOZXN0ZWRBbHRlcm5h
dGl2ZU5leHQgbWluaW11bS1zaXplOigldSksY2hlY2tlZC1vZmZzZXQ6KCV1KVxuIiwgb3AubV9h
bHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSwgb3AubV9jaGVja2VkT2Zmc2V0LnZhbHVlKCkpOwog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpTaW1wbGVO
ZXN0ZWRBbHRlcm5hdGl2ZUVuZDoKLSAgICAgICAgICAgIG91dC5wcmludCgiU2ltcGxlTmVzdGVk
QWx0ZXJuYXRpdmVFbmQiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlNpbXBsZU5lc3RlZEFs
dGVybmF0aXZlRW5kIGNoZWNrZWQtb2Zmc2V0OigldSkgIiwgb3AubV9jaGVja2VkT2Zmc2V0LnZh
bHVlKCkpOwogICAgICAgICAgICAgdGVybS0+ZHVtcFF1YW50aWZpZXIob3V0KTsKICAgICAgICAg
ICAgIG91dC5wcmludCgiXG4iKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKIAogICAgICAgICBj
YXNlIFlhcnJPcENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlRW5kOgotICAgICAgICAgICAgb3V0LnBy
aW50KCJOZXN0ZWRBbHRlcm5hdGl2ZUVuZCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiTmVz
dGVkQWx0ZXJuYXRpdmVFbmQgY2hlY2tlZC1vZmZzZXQ6KCV1KSAiLCBvcC5tX2NoZWNrZWRPZmZz
ZXQudmFsdWUoKSk7CiAgICAgICAgICAgICB0ZXJtLT5kdW1wUXVhbnRpZmllcihvdXQpOwogICAg
ICAgICAgICAgb3V0LnByaW50KCJcbiIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAg
ICAgIGNhc2UgWWFyck9wQ29kZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUJlZ2luOgotICAg
ICAgICAgICAgb3V0LnByaW50KCJQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlQmVnaW4gIik7Cisg
ICAgICAgICAgICBvdXQucHJpbnRmKCJQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlQmVnaW4gY2hl
Y2tlZC1vZmZzZXQ6KCV1KSAiLCBvcC5tX2NoZWNrZWRPZmZzZXQudmFsdWUoKSk7CiAgICAgICAg
ICAgICBpZiAodGVybS0+Y2FwdHVyZSgpKQotICAgICAgICAgICAgICAgIG91dC5wcmludGYoImNh
cHR1cmluZyBwYXR0ZXJuICMldSIsIHRlcm0tPnBhcmVudGhlc2VzLnN1YnBhdHRlcm5JZCk7Cisg
ICAgICAgICAgICAgICAgb3V0LnByaW50ZigiY2FwdHVyaW5nIHBhdHRlcm4gIyV1ICIsIHRlcm0t
PnBhcmVudGhlc2VzLnN1YnBhdHRlcm5JZCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgb3V0LnByaW50KCJub24tY2FwdHVyaW5nIik7CisgICAgICAgICAgICAgICAgb3V0LnBy
aW50KCJub24tY2FwdHVyaW5nICIpOwogICAgICAgICAgICAgdGVybS0+ZHVtcFF1YW50aWZpZXIo
b3V0KTsKICAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKICAgICAgICAgICAgIHJldHVybiAw
OwogCiAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUVu
ZDoKLSAgICAgICAgICAgIG91dC5wcmludCgiUGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUVuZCAi
KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VFbmQg
Y2hlY2tlZC1vZmZzZXQ6KCV1KSAiLCBvcC5tX2NoZWNrZWRPZmZzZXQudmFsdWUoKSk7CiAgICAg
ICAgICAgICBpZiAodGVybS0+Y2FwdHVyZSgpKQotICAgICAgICAgICAgICAgIG91dC5wcmludGYo
ImNhcHR1cmluZyBwYXR0ZXJuICMldSIsIHRlcm0tPnBhcmVudGhlc2VzLnN1YnBhdHRlcm5JZCk7
CisgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiY2FwdHVyaW5nIHBhdHRlcm4gIyV1ICIsIHRl
cm0tPnBhcmVudGhlc2VzLnN1YnBhdHRlcm5JZCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgb3V0LnByaW50KCJub24tY2FwdHVyaW5nIik7CisgICAgICAgICAgICAgICAgb3V0
LnByaW50KCJub24tY2FwdHVyaW5nICIpOwogICAgICAgICAgICAgdGVybS0+ZHVtcFF1YW50aWZp
ZXIob3V0KTsKICAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKICAgICAgICAgICAgIHJldHVy
biAwOwogCiAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVy
bWluYWxCZWdpbjoKLSAgICAgICAgICAgIG91dC5wcmludCgiUGFyZW50aGVzZXNTdWJwYXR0ZXJu
VGVybWluYWxCZWdpbiAiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlBhcmVudGhlc2VzU3Vi
cGF0dGVyblRlcm1pbmFsQmVnaW4gY2hlY2tlZC1vZmZzZXQ6KCV1KSAiLCBvcC5tX2NoZWNrZWRP
ZmZzZXQudmFsdWUoKSk7CiAgICAgICAgICAgICBpZiAodGVybS0+Y2FwdHVyZSgpKQogICAgICAg
ICAgICAgICAgIG91dC5wcmludGYoImNhcHR1cmluZyBwYXR0ZXJuICMldVxuIiwgdGVybS0+cGFy
ZW50aGVzZXMuc3VicGF0dGVybklkKTsKICAgICAgICAgICAgIGVsc2UKQEAgLTQ1OTksNyArNDU5
OCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8gewog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpQYXJlbnRo
ZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEVuZDoKLSAgICAgICAgICAgIG91dC5wcmludCgiUGFyZW50
aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxFbmQgIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJQ
YXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEVuZCBjaGVja2VkLW9mZnNldDooJXUpICIsIG9w
Lm1fY2hlY2tlZE9mZnNldC52YWx1ZSgpKTsKICAgICAgICAgICAgIGlmICh0ZXJtLT5jYXB0dXJl
KCkpCiAgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiY2FwdHVyaW5nIHBhdHRlcm4gIyV1XG4i
LCB0ZXJtLT5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQpOwogICAgICAgICAgICAgZWxzZQpAQCAt
NDYwNyw3ICs0NjA2LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJy
SklUSW5mbyB7CiAgICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBjYXNlIFlhcnJPcENv
ZGU6OlBhcmVudGhlc2VzU3VicGF0dGVybkJlZ2luOgotICAgICAgICAgICAgb3V0LnByaW50KCJQ
YXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbiAiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlBh
cmVudGhlc2VzU3VicGF0dGVybkJlZ2luIGNoZWNrZWQtb2Zmc2V0OigldSkgIiwgb3AubV9jaGVj
a2VkT2Zmc2V0LnZhbHVlKCkpOwogICAgICAgICAgICAgaWYgKHRlcm0tPmNhcHR1cmUoKSkKICAg
ICAgICAgICAgICAgICBvdXQucHJpbnRmKCJjYXB0dXJpbmcgcGF0dGVybiAjJXUiLCB0ZXJtLT5w
YXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQpOwogICAgICAgICAgICAgZWxzZQpAQCAtNDYxNyw3ICs0
NjE2LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbyB7
CiAgICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlBhcmVu
dGhlc2VzU3VicGF0dGVybkVuZDoKLSAgICAgICAgICAgIG91dC5wcmludCgiUGFyZW50aGVzZXNT
dWJwYXR0ZXJuRW5kICIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiUGFyZW50aGVzZXNTdWJw
YXR0ZXJuRW5kIGNoZWNrZWQtb2Zmc2V0OigldSkgIiwgb3AubV9jaGVja2VkT2Zmc2V0LnZhbHVl
KCkpOwogICAgICAgICAgICAgaWYgKHRlcm0tPmNhcHR1cmUoKSkKICAgICAgICAgICAgICAgICBv
dXQucHJpbnRmKCJjYXB0dXJpbmcgcGF0dGVybiAjJXUiLCB0ZXJtLT5wYXJlbnRoZXNlcy5zdWJw
YXR0ZXJuSWQpOwogICAgICAgICAgICAgZWxzZQpAQCAtNDYyNywxNSArNDYyNiwxNSBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvIHsKICAgICAgICAgICAg
IHJldHVybiAwOwogCiAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6UGFyZW50aGV0aWNhbEFzc2Vy
dGlvbkJlZ2luOgotICAgICAgICAgICAgb3V0LnByaW50ZigiUGFyZW50aGV0aWNhbEFzc2VydGlv
bkJlZ2luJXNcbiIsIHRlcm0tPmludmVydCgpID8gIiBpbnZlcnRlZCIgOiAiIik7CisgICAgICAg
ICAgICBvdXQucHJpbnRmKCJQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4lcyBjaGVja2VkLW9m
ZnNldDooJXUpXG4iLCB0ZXJtLT5pbnZlcnQoKSA/ICIgaW52ZXJ0ZWQiIDogIiIsIG9wLm1fY2hl
Y2tlZE9mZnNldC52YWx1ZSgpKTsKICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgIGNh
c2UgWWFyck9wQ29kZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbkVuZDoKLSAgICAgICAgICAgIG91
dC5wcmludGYoIlBhcmVudGhldGljYWxBc3NlcnRpb25FbmQlc1xuIiwgdGVybS0+aW52ZXJ0KCkg
PyAiIGludmVydGVkIiA6ICIiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlBhcmVudGhldGlj
YWxBc3NlcnRpb25FbmQlcyBjaGVja2VkLW9mZnNldDooJXUpXG4iLCB0ZXJtLT5pbnZlcnQoKSA/
ICIgaW52ZXJ0ZWQiIDogIiIsIG9wLm1fY2hlY2tlZE9mZnNldC52YWx1ZSgpKTsKICAgICAgICAg
ICAgIHJldHVybiAwOwogCiAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6TWF0Y2hGYWlsZWQ6Ci0g
ICAgICAgICAgICBvdXQucHJpbnQoIk1hdGNoRmFpbGVkXG4iKTsKKyAgICAgICAgICAgIG91dC5w
cmludGYoIk1hdGNoRmFpbGVkIGNoZWNrZWQtb2Zmc2V0OigldSlcbiIsIG9wLm1fY2hlY2tlZE9m
ZnNldC52YWx1ZSgpKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKQEAgLTQ2
ODEsMTggKzQ2ODAsNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJK
SVRJbmZvIHsKICAgICBWZWN0b3I8VW5pcXVlUmVmPEJveWVyTW9vcmVJbmZvPiwgND4gbV9ibUlu
Zm9zOwogICAgIFZlY3RvcjxVbmlxdWVSZWY8Qm95ZXJNb29yZUJpdG1hcDo6TWFwPj4gbV9ibU1h
cHM7CiAKLSAgICAvLyBUaGlzIHJlY29yZHMgdGhlIGN1cnJlbnQgaW5wdXQgb2Zmc2V0IGJlaW5n
IGFwcGxpZWQgZHVlIHRvIHRoZSBjdXJyZW50Ci0gICAgLy8gc2V0IG9mIGFsdGVybmF0aXZlcyB3
ZSBhcmUgbmVzdGVkIHdpdGhpbi4gRS5nLiB3aGVuIG1hdGNoaW5nIHRoZQotICAgIC8vIGNoYXJh
Y3RlciAnYicgd2l0aGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gL2FiYy8sIHdlIHdpbGwga25v
dyB0aGF0Ci0gICAgLy8gdGhlIG1pbmltdW0gc2l6ZSBmb3IgdGhlIGFsdGVybmF0aXZlIGlzIDMs
IGNoZWNrZWQgdXBvbiBlbnRyeSB0byB0aGUKLSAgICAvLyBhbHRlcm5hdGl2ZSwgYW5kIHRoYXQg
J2InIGlzIGF0IG9mZnNldCAxIGZyb20gdGhlIHN0YXJ0LCBhbmQgYXMgc3VjaAotICAgIC8vIHdo
ZW4gbWF0Y2hpbmcgJ2InIHdlIG5lZWQgdG8gYXBwbHkgYW4gb2Zmc2V0IG9mIC0yIHRvIHRoZSBs
b2FkLgotICAgIC8vCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGdvIGF3YXkuIFJhdGhlciB0
aGFuIHRyYWNraW5nIHRoaXMgdmFsdWUgdGhyb3VnaG91dAotICAgIC8vIGNvZGUgZ2VuZXJhdGlv
biwgd2Ugc2hvdWxkIGdhdGhlciB0aGlzIGluZm9ybWF0aW9uIHVwIGZyb250ICYgc3RvcmUgaXQK
LSAgICAvLyBvbiB0aGUgWWFyck9wIHN0cnVjdHVyZS4KLSAgICBDaGVja2VkPHVuc2lnbmVkPiBt
X2NoZWNrZWRPZmZzZXQ7Ci0KICAgICAvLyBUaGlzIGNsYXNzIHJlY29yZHMgc3RhdGUgd2hpbHN0
IGdlbmVyYXRpbmcgdGhlIGJhY2t0cmFja2luZyBwYXRoIG9mIGNvZGUuCiAgICAgQmFja3RyYWNr
aW5nU3RhdGUgbV9iYWNrdHJhY2tpbmdTdGF0ZTsKICAgICAK
</data>

          </attachment>
      

    </bug>

</bugzilla>