<?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>122877</bug_id>
          
          <creation_ts>2013-10-15 19:48:40 -0700</creation_ts>
          <short_desc>Get rid of the StructureStubInfo::patch union</short_desc>
          <delta_ts>2013-10-15 21:31:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>121641</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>940233</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-15 19:48:40 -0700</bug_when>
    <thetext>The baseline JIT part of this isn&apos;t used anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940234</commentid>
    <comment_count>1</comment_count>
      <attachid>214333</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-15 19:50:00 -0700</bug_when>
    <thetext>Created attachment 214333
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940235</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-15 19:50:46 -0700</bug_when>
    <thetext>Attachment 214333 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/bytecode/StructureStubInfo.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGJITCompiler.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JIT.cpp&apos;, u&apos;Source/JavaScriptCore/jit/Repatch.cpp&apos;]&quot; exit_code: 1
Source/JavaScriptCore/jit/Repatch.cpp:562:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940236</commentid>
    <comment_count>3</comment_count>
      <attachid>214334</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-15 19:51:33 -0700</bug_when>
    <thetext>Created attachment 214334
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940237</commentid>
    <comment_count>4</comment_count>
      <attachid>214335</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-15 19:53:27 -0700</bug_when>
    <thetext>Created attachment 214335
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940262</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-15 21:31:46 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/157489</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214333</attachid>
            <date>2013-10-15 19:50:00 -0700</date>
            <delta_ts>2013-10-15 19:51:33 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>40382</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3NDgwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBA
CisyMDEzLTEwLTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
R2V0IHJpZCBvZiB0aGUgU3RydWN0dXJlU3R1YkluZm86OnBhdGNoIHVuaW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI4NzcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEp1c3Qgc2ltcGxp
ZnlpbmcgY29kZSBieSBnZXR0aW5nIHJpZCBvZiBkYXRhIHN0cnVjdHVyZXMgdGhhdCBhaW4ndCB1
c2VkIG5vIG1vcmUuCisKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgor
ICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklU
Q29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm86OmNvcHlUb1N0dWJJbmZvKToKKyAgICAgICAgKiBq
aXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnJlcGF0Y2hCeUlkU2VsZkFjY2Vzcyk6Cisg
ICAgICAgIChKU0M6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6OmxpbmtSZXN0b3Jl
U2NyYXRjaCk6CisgICAgICAgIChKU0M6OmdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIpOgor
ICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAoSlNDOjpnZXRQb2x5bW9y
cGhpY1N0cnVjdHVyZUxpc3QpOgorICAgICAgICAoSlNDOjpwYXRjaEp1bXBUb0dldEJ5SWRTdHVi
KToKKyAgICAgICAgKEpTQzo6dHJ5QnVpbGRHZXRCeUlETGlzdCk6CisgICAgICAgIChKU0M6OmVt
aXRQdXRSZXBsYWNlU3R1Yik6CisgICAgICAgIChKU0M6OmVtaXRQdXRUcmFuc2l0aW9uU3R1Yik6
CisgICAgICAgIChKU0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnRyeUJ1aWxk
UHV0QnlJZExpc3QpOgorICAgICAgICAoSlNDOjp0cnlSZXBhdGNoSW4pOgorICAgICAgICAoSlND
OjpyZXNldEdldEJ5SUQpOgorICAgICAgICAoSlNDOjpyZXNldFB1dEJ5SUQpOgorICAgICAgICAo
SlNDOjpyZXNldEluKToKKwogMjAxMy0xMC0xNSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIEJhc2VsaW5lIEpJVCBzaG91bGQgdXNlIHRoZSBERkcgR2V0QnlJZCBJ
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmgJKHJldmlzaW9uIDE1NzQ4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsNTcgKzIy
MywyNSBAQCBzdHJ1Y3QgU3RydWN0dXJlU3R1YkluZm8gewogCiAgICAgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luOwogCi0gICAgdW5pb24gewotICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgaW50
OF90IHJlZ2lzdGVyc0ZsdXNoZWQ7Ci0gICAgICAgICAgICBpbnQ4X3QgYmFzZUdQUjsKKyAgICBz
dHJ1Y3QgeworICAgICAgICBpbnQ4X3QgcmVnaXN0ZXJzRmx1c2hlZDsKKyAgICAgICAgaW50OF90
IGJhc2VHUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgICAgIGludDhfdCB2YWx1
ZVRhZ0dQUjsKLSNlbmRpZgotICAgICAgICAgICAgaW50OF90IHZhbHVlR1BSOwotICAgICAgICAg
ICAgUmVnaXN0ZXJTZXRQT0QgdXNlZFJlZ2lzdGVyczsKLSAgICAgICAgICAgIGludDMyX3QgZGVs
dGFDYWxsVG9Eb25lOwotICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb1N0b3JhZ2VMb2Fk
OwotICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb1N0cnVjdENoZWNrOwotICAgICAgICAg
ICAgaW50MzJfdCBkZWx0YUNhbGxUb1Nsb3dDYXNlOwotICAgICAgICAgICAgaW50MzJfdCBkZWx0
YUNoZWNrSW1tVG9DYWxsOwotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBpbnQzMl90
IGRlbHRhQ2FsbFRvTG9hZE9yU3RvcmU7Ci0jZWxzZQotICAgICAgICAgICAgaW50MzJfdCBkZWx0
YUNhbGxUb1RhZ0xvYWRPclN0b3JlOwotICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb1Bh
eWxvYWRMb2FkT3JTdG9yZTsKLSNlbmRpZgotICAgICAgICB9IGRmZzsKLSAgICAgICAgc3RydWN0
IHsKLSAgICAgICAgICAgIHVuaW9uIHsKLSAgICAgICAgICAgICAgICBzdHJ1Y3QgewotICAgICAg
ICAgICAgICAgICAgICBpbnQxNl90IHN0cnVjdHVyZVRvQ29tcGFyZTsKLSAgICAgICAgICAgICAg
ICAgICAgaW50MTZfdCBzdHJ1Y3R1cmVDaGVjazsKLSAgICAgICAgICAgICAgICAgICAgaW50MTZf
dCBwcm9wZXJ0eVN0b3JhZ2VMb2FkOwotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICAg
ICAgICAgIGludDE2X3QgZGlzcGxhY2VtZW50TGFiZWw7Ci0jZWxzZQotICAgICAgICAgICAgICAg
ICAgICBpbnQxNl90IGRpc3BsYWNlbWVudExhYmVsMTsKLSAgICAgICAgICAgICAgICAgICAgaW50
MTZfdCBkaXNwbGFjZW1lbnRMYWJlbDI7CisgICAgICAgIGludDhfdCB2YWx1ZVRhZ0dQUjsKICNl
bmRpZgotICAgICAgICAgICAgICAgICAgICBpbnQxNl90IHB1dFJlc3VsdDsKLSAgICAgICAgICAg
ICAgICAgICAgaW50MTZfdCBjb2xkUGF0aEJlZ2luOwotICAgICAgICAgICAgICAgIH0gZ2V0Owot
ICAgICAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgICAgIGludDE2X3Qgc3Ry
dWN0dXJlVG9Db21wYXJlOwotICAgICAgICAgICAgICAgICAgICBpbnQxNl90IHByb3BlcnR5U3Rv
cmFnZUxvYWQ7CisgICAgICAgIGludDhfdCB2YWx1ZUdQUjsKKyAgICAgICAgUmVnaXN0ZXJTZXQg
dXNlZFJlZ2lzdGVyczsKKyAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb0RvbmU7CisgICAgICAg
IGludDMyX3QgZGVsdGFDYWxsVG9TdG9yYWdlTG9hZDsKKyAgICAgICAgaW50MzJfdCBkZWx0YUNh
bGxUb1N0cnVjdENoZWNrOworICAgICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvU2xvd0Nhc2U7Cisg
ICAgICAgIGludDMyX3QgZGVsdGFDaGVja0ltbVRvQ2FsbDsKICNpZiBVU0UoSlNWQUxVRTY0KQot
ICAgICAgICAgICAgICAgICAgICBpbnQxNl90IGRpc3BsYWNlbWVudExhYmVsOworICAgICAgICBp
bnQzMl90IGRlbHRhQ2FsbFRvTG9hZE9yU3RvcmU7CiAjZWxzZQotICAgICAgICAgICAgICAgICAg
ICBpbnQxNl90IGRpc3BsYWNlbWVudExhYmVsMTsKLSAgICAgICAgICAgICAgICAgICAgaW50MTZf
dCBkaXNwbGFjZW1lbnRMYWJlbDI7CisgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9UYWdMb2Fk
T3JTdG9yZTsKKyAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9yZTsK
ICNlbmRpZgotICAgICAgICAgICAgICAgIH0gcHV0OwotICAgICAgICAgICAgfSB1OwotICAgICAg
ICAgICAgaW50MTZfdCBtZXRob2RDaGVja1Byb3RvT2JqOwotICAgICAgICAgICAgaW50MTZfdCBt
ZXRob2RDaGVja1Byb3RvU3RydWN0dXJlVG9Db21wYXJlOwotICAgICAgICAgICAgaW50MTZfdCBt
ZXRob2RDaGVja1B1dEZ1bmN0aW9uOwotICAgICAgICB9IGJhc2VsaW5lOwogICAgIH0gcGF0Y2g7
CiAKICAgICB1bmlvbiB7CkBAIC0zMjIsNyArMjkwLDcgQEAgc3RydWN0IFN0cnVjdHVyZVN0dWJJ
bmZvIHsKIAogICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gc3R1YlJvdXRpbmU7CiAgICAgQ29k
ZUxvY2F0aW9uQ2FsbCBjYWxsUmV0dXJuTG9jYXRpb247Ci0gICAgQ29kZUxvY2F0aW9uTGFiZWwg
aG90UGF0aEJlZ2luOworICAgIENvZGVMb2NhdGlvbkxhYmVsIGhvdFBhdGhCZWdpbjsgLy8gRklY
TUU6IFRoaXMgaXMgb25seSB1c2VkIGJ5IERGRyBJbiBJQy4KICAgICBSZWZQdHI8V2F0Y2hwb2lu
dHNPblN0cnVjdHVyZVN0dWJJbmZvPiB3YXRjaHBvaW50czsKIH07CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNTc0ODAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMyLDI2ICsyMzIsMjYgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5r
QnVmZmVyJiBsaW5rQgogICAgICAgICBDb2RlTG9jYXRpb25DYWxsIGNhbGxSZXR1cm5Mb2NhdGlv
biA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9zbG93UGF0
aEdlbmVyYXRvci0+Y2FsbCgpKTsKICAgICAgICAgaW5mby5jb2RlT3JpZ2luID0gbV9wcm9wZXJ0
eUFjY2Vzc2VzW2ldLm1fY29kZU9yaWdpbjsKICAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9jYXRp
b24gPSBjYWxsUmV0dXJuTG9jYXRpb247Ci0gICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2hl
Y2tJbW1Ub0NhbGwgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIobGlua0J1ZmZlci5sb2NhdGlv
bk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3N0cnVjdHVyZUltbSksIGNhbGxSZXR1cm5Mb2Nh
dGlvbik7Ci0gICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU3RydWN0Q2hlY2sgPSBk
aWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxv
Y2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fc3RydWN0dXJlQ2hlY2spKTsKKyAgICAg
ICAgaW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsID0gZGlmZmVyZW5jZUJldHdlZW5Db2Rl
UHRyKGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9zdHJ1Y3R1
cmVJbW0pLCBjYWxsUmV0dXJuTG9jYXRpb24pOworICAgICAgICBpbmZvLnBhdGNoLmRlbHRhQ2Fs
bFRvU3RydWN0Q2hlY2sgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0
aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fc3RydWN0
dXJlQ2hlY2spKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBpbmZvLnBhdGNoLmRmZy5k
ZWx0YUNhbGxUb0xvYWRPclN0b3JlID0gZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGNhbGxSZXR1
cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5t
X2xvYWRPclN0b3JlKSk7CisgICAgICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9Mb2FkT3JTdG9y
ZSA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZm
ZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9sb2FkT3JTdG9yZSkpOwogI2Vs
c2UKLSAgICAgICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSA9IGRp
ZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9j
YXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV90YWdMb2FkT3JTdG9yZSkpOwotICAgICAg
ICBpbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9yZSA9IGRpZmZlcmVu
Y2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25P
ZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9wYXlsb2FkTG9hZE9yU3RvcmUpKTsKKyAgICAgICAg
aW5mby5wYXRjaC5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlID0gZGlmZmVyZW5jZUJldHdlZW5D
b2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1fcHJvcGVy
dHlBY2Nlc3Nlc1tpXS5tX3RhZ0xvYWRPclN0b3JlKSk7CisgICAgICAgIGluZm8ucGF0Y2guZGVs
dGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2Fs
bFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2Vz
W2ldLm1fcGF5bG9hZExvYWRPclN0b3JlKSk7CiAjZW5kaWYKLSAgICAgICAgaW5mby5wYXRjaC5k
ZmcuZGVsdGFDYWxsVG9TbG93Q2FzZSA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0
dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0u
bV9zbG93UGF0aEdlbmVyYXRvci0+bGFiZWwoKSkpOwotICAgICAgICBpbmZvLnBhdGNoLmRmZy5k
ZWx0YUNhbGxUb0RvbmUgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0
aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fZG9uZSkp
OwotICAgICAgICBpbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1N0b3JhZ2VMb2FkID0gZGlmZmVy
ZW5jZUJldHdlZW5Db2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlv
bk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3Byb3BlcnR5U3RvcmFnZUxvYWQpKTsKLSAgICAg
ICAgaW5mby5wYXRjaC5kZmcuYmFzZUdQUiA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX2Jhc2VH
UFI7CisgICAgICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93Q2FzZSA9IGRpZmZlcmVuY2VC
ZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZiht
X3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9zbG93UGF0aEdlbmVyYXRvci0+bGFiZWwoKSkpOworICAg
ICAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0
cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNj
ZXNzZXNbaV0ubV9kb25lKSk7CisgICAgICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9TdG9yYWdl
TG9hZCA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtC
dWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9wcm9wZXJ0eVN0b3JhZ2VM
b2FkKSk7CisgICAgICAgIGluZm8ucGF0Y2guYmFzZUdQUiA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tp
XS5tX2Jhc2VHUFI7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgaW5mby5wYXRjaC5kZmcu
dmFsdWVHUFIgPSBtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV92YWx1ZUdQUjsKKyAgICAgICAgaW5m
by5wYXRjaC52YWx1ZUdQUiA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3ZhbHVlR1BSOwogI2Vs
c2UKLSAgICAgICAgaW5mby5wYXRjaC5kZmcudmFsdWVUYWdHUFIgPSBtX3Byb3BlcnR5QWNjZXNz
ZXNbaV0ubV92YWx1ZVRhZ0dQUjsKLSAgICAgICAgaW5mby5wYXRjaC5kZmcudmFsdWVHUFIgPSBt
X3Byb3BlcnR5QWNjZXNzZXNbaV0ubV92YWx1ZUdQUjsKKyAgICAgICAgaW5mby5wYXRjaC52YWx1
ZVRhZ0dQUiA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3ZhbHVlVGFnR1BSOworICAgICAgICBp
bmZvLnBhdGNoLnZhbHVlR1BSID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fdmFsdWVHUFI7CiAj
ZW5kaWYKLSAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fdXNlZFJlZ2lzdGVycy5jb3B5
SW5mbyhpbmZvLnBhdGNoLmRmZy51c2VkUmVnaXN0ZXJzKTsKLSAgICAgICAgaW5mby5wYXRjaC5k
ZmcucmVnaXN0ZXJzRmx1c2hlZCA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3JlZ2lzdGVyTW9k
ZSA9PSBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hlZDsKKyAgICAgICAgaW5m
by5wYXRjaC51c2VkUmVnaXN0ZXJzID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fdXNlZFJlZ2lz
dGVyczsKKyAgICAgICAgaW5mby5wYXRjaC5yZWdpc3RlcnNGbHVzaGVkID0gbV9wcm9wZXJ0eUFj
Y2Vzc2VzW2ldLm1fcmVnaXN0ZXJNb2RlID09IFByb3BlcnR5QWNjZXNzUmVjb3JkOjpSZWdpc3Rl
cnNGbHVzaGVkOwogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9pbnMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIGluZm8gPSBtX2NvZGVCbG9j
ay0+c3RydWN0dXJlU3R1YkluZm8obV9wcm9wZXJ0eUFjY2Vzc2VzLnNpemUoKSArIGkpOwpAQCAt
MjYwLDExICsyNjAsMTEgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5r
QgogICAgICAgICBpbmZvLmNvZGVPcmlnaW4gPSBtX2luc1tpXS5tX2NvZGVPcmlnaW47CiAgICAg
ICAgIGluZm8uaG90UGF0aEJlZ2luID0ganVtcDsKICAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9j
YXRpb24gPSBjYWxsUmV0dXJuTG9jYXRpb247Ci0gICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRh
Q2FsbFRvU2xvd0Nhc2UgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0
aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9pbnNbaV0ubV9zbG93UGF0aEdlbmVyYXRvci0+
bGFiZWwoKSkpOwotICAgICAgICBpbmZvLnBhdGNoLmRmZy5iYXNlR1BSID0gbV9pbnNbaV0ubV9i
YXNlR1BSOwotICAgICAgICBpbmZvLnBhdGNoLmRmZy52YWx1ZUdQUiA9IG1faW5zW2ldLm1fcmVz
dWx0R1BSOwotICAgICAgICBtX2luc1tpXS5tX3VzZWRSZWdpc3RlcnMuY29weUluZm8oaW5mby5w
YXRjaC5kZmcudXNlZFJlZ2lzdGVycyk7Ci0gICAgICAgIGluZm8ucGF0Y2guZGZnLnJlZ2lzdGVy
c0ZsdXNoZWQgPSBmYWxzZTsKKyAgICAgICAgaW5mby5wYXRjaC5kZWx0YUNhbGxUb1Nsb3dDYXNl
ID0gZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZl
ci5sb2NhdGlvbk9mKG1faW5zW2ldLm1fc2xvd1BhdGhHZW5lcmF0b3ItPmxhYmVsKCkpKTsKKyAg
ICAgICAgaW5mby5wYXRjaC5iYXNlR1BSID0gbV9pbnNbaV0ubV9iYXNlR1BSOworICAgICAgICBp
bmZvLnBhdGNoLnZhbHVlR1BSID0gbV9pbnNbaV0ubV9yZXN1bHRHUFI7CisgICAgICAgIGluZm8u
cGF0Y2gudXNlZFJlZ2lzdGVycyA9IG1faW5zW2ldLm1fdXNlZFJlZ2lzdGVyczsKKyAgICAgICAg
aW5mby5wYXRjaC5yZWdpc3RlcnNGbHVzaGVkID0gZmFsc2U7CiAgICAgfQogICAgIG1fY29kZUJs
b2NrLT5zb3J0U3RydWN0dXJlU3R1YkluZm9zKCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxNTc0ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5MiwxNCArNDkyLDE0IEBAIEFMV0FZU19J
TkxJTkUgdm9pZCBQcm9wZXJ0eVN0dWJDb21waWxhdGkKICAgICBpbmZvLmNvZGVPcmlnaW4gPSBD
b2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpOwogICAgIGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0g
bGlua0J1ZmZlci5sb2NhdGlvbk9mKGNhbGxSZXR1cm5Mb2NhdGlvbik7CiAKLSAgICBpbmZvLnBh
dGNoLmRmZy5kZWx0YUNoZWNrSW1tVG9DYWxsID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VC
ZXR3ZWVuQ29kZVB0cihsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc3RydWN0dXJlVG9Db21wYXJlKSwg
aW5mby5jYWxsUmV0dXJuTG9jYXRpb24pOwotICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRv
U3RydWN0Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGlu
Zm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc3RydWN0dXJlQ2hl
Y2spKTsKKyAgICBpbmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0NhbGwgPSBNYWNyb0Fzc2VtYmxl
cjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGxpbmtCdWZmZXIubG9jYXRpb25PZihzdHJ1Y3R1
cmVUb0NvbXBhcmUpLCBpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbik7CisgICAgaW5mby5wYXRjaC5k
ZWx0YUNhbGxUb1N0cnVjdENoZWNrID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVu
Q29kZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHN0
cnVjdHVyZUNoZWNrKSk7CiAgICAgCi0gICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TbG93
Q2FzZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaW5mby5jYWxs
UmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihjb2xkUGF0aEJlZ2luKSk7Ci0g
ICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZl
cmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5s
b2NhdGlvbk9mKGRvbmUpKTsKLSAgICBpbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1N0b3JhZ2VM
b2FkID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHByb3BlcnR5U3RvcmFnZUxvYWQp
KTsKKyAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nhc2UgPSBNYWNyb0Fzc2VtYmxlcjo6
ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVm
ZmVyLmxvY2F0aW9uT2YoY29sZFBhdGhCZWdpbikpOworICAgIGluZm8ucGF0Y2guZGVsdGFDYWxs
VG9Eb25lID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGRvbmUpKTsKKyAgICBpbmZv
LnBhdGNoLmRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5j
ZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0
aW9uT2YocHJvcGVydHlTdG9yYWdlTG9hZCkpOwogICAgIAotICAgIGluZm8ucGF0Y2guZGZnLmJh
c2VHUFIgPSBHUFJJbmZvOjpyZWdUMDsKKyAgICBpbmZvLnBhdGNoLmJhc2VHUFIgPSBHUFJJbmZv
OjpyZWdUMDsKIAogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnM7CiAgICAgdXNlZFJlZ2lz
dGVycy5zZXQoR1BSSW5mbzo6cmVnVDApOwpAQCAtNTA3LDM3ICs1MDcsMzcgQEAgQUxXQVlTX0lO
TElORSB2b2lkIFByb3BlcnR5U3R1YkNvbXBpbGF0aQogI2lmIFVTRShKU1ZBTFVFNjQpIC8vIEpT
VkFMVUUgY2FzZXMKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgR2V0QnlJZDoKLSAg
ICAgICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1i
bGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGxp
bmtCdWZmZXIubG9jYXRpb25PZihnZXREaXNwbGFjZW1lbnRMYWJlbCkpOwotICAgICAgICBpbmZv
LnBhdGNoLmRmZy52YWx1ZUdQUiA9IEdQUkluZm86OnJlZ1QwOworICAgICAgICBpbmZvLnBhdGNo
LmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdl
ZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yo
Z2V0RGlzcGxhY2VtZW50TGFiZWwpKTsKKyAgICAgICAgaW5mby5wYXRjaC52YWx1ZUdQUiA9IEdQ
UkluZm86OnJlZ1QwOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFB1dEJ5SWQ6Ci0gICAgICAg
IGluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6
ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVm
ZmVyLmxvY2F0aW9uT2YocHV0RGlzcGxhY2VtZW50TGFiZWwpKTsKLSAgICAgICAgaW5mby5wYXRj
aC5kZmcudmFsdWVHUFIgPSBHUFJJbmZvOjpyZWdUMTsKKyAgICAgICAgaW5mby5wYXRjaC5kZWx0
YUNhbGxUb0xvYWRPclN0b3JlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29k
ZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHB1dERp
c3BsYWNlbWVudExhYmVsKSk7CisgICAgICAgIGluZm8ucGF0Y2gudmFsdWVHUFIgPSBHUFJJbmZv
OjpyZWdUMTsKICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoR1BSSW5mbzo6cmVnVDEpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAjZWxzZSAvLyBKU1ZBTFVFIGNhc2VzCiAgICAgc3dpdGNoICht
X3R5cGUpIHsKICAgICBjYXNlIEdldEJ5SWQ6Ci0gICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRh
Q2FsbFRvVGFnTG9hZE9yU3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5D
b2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZ2V0
RGlzcGxhY2VtZW50TGFiZWwyKSk7Ci0gICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRv
UGF5bG9hZExvYWRPclN0b3JlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29k
ZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGdldERp
c3BsYWNlbWVudExhYmVsMSkpOwotICAgICAgICBpbmZvLnBhdGNoLmRmZy52YWx1ZUdQUiA9IEdQ
UkluZm86OnJlZ1QwOwotICAgICAgICBpbmZvLnBhdGNoLmRmZy52YWx1ZVRhZ0dQUiA9IEdQUklu
Zm86OnJlZ1QxOworICAgICAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUg
PSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVy
bkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZ2V0RGlzcGxhY2VtZW50TGFiZWwyKSk7
CisgICAgICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUgPSBNYWNy
b0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0
aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZ2V0RGlzcGxhY2VtZW50TGFiZWwxKSk7CisgICAg
ICAgIGluZm8ucGF0Y2gudmFsdWVHUFIgPSBHUFJJbmZvOjpyZWdUMDsKKyAgICAgICAgaW5mby5w
YXRjaC52YWx1ZVRhZ0dQUiA9IEdQUkluZm86OnJlZ1QxOwogICAgICAgICB1c2VkUmVnaXN0ZXJz
LnNldChHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHV0QnlJZDoK
LSAgICAgICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSA9IE1hY3Jv
QXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRp
b24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihwdXREaXNwbGFjZW1lbnRMYWJlbDIpKTsKLSAgICAg
ICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUgPSBNYWNyb0Fz
c2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9u
LCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHV0RGlzcGxhY2VtZW50TGFiZWwxKSk7Ci0gICAgICAg
IGluZm8ucGF0Y2guZGZnLnZhbHVlR1BSID0gR1BSSW5mbzo6cmVnVDI7Ci0gICAgICAgIGluZm8u
cGF0Y2guZGZnLnZhbHVlVGFnR1BSID0gR1BSSW5mbzo6cmVnVDM7CisgICAgICAgIGluZm8ucGF0
Y2guZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNl
QmV0d2VlbkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRp
b25PZihwdXREaXNwbGFjZW1lbnRMYWJlbDIpKTsKKyAgICAgICAgaW5mby5wYXRjaC5kZWx0YUNh
bGxUb1BheWxvYWRMb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2Vl
bkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihw
dXREaXNwbGFjZW1lbnRMYWJlbDEpKTsKKyAgICAgICAgaW5mby5wYXRjaC52YWx1ZUdQUiA9IEdQ
UkluZm86OnJlZ1QyOworICAgICAgICBpbmZvLnBhdGNoLnZhbHVlVGFnR1BSID0gR1BSSW5mbzo6
cmVnVDM7CiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KEdQUkluZm86OnJlZ1QyKTsKICAgICAg
ICAgdXNlZFJlZ2lzdGVycy5zZXQoR1BSSW5mbzo6cmVnVDMpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAjZW5kaWYgLy8gSlNWQUxVRSBjYXNlcwogICAgIAotICAgIHVzZWRSZWdpc3RlcnMuY29w
eUluZm8oaW5mby5wYXRjaC5kZmcudXNlZFJlZ2lzdGVycyk7Ci0gICAgaW5mby5wYXRjaC5kZmcu
cmVnaXN0ZXJzRmx1c2hlZCA9IHRydWU7CisgICAgaW5mby5wYXRjaC51c2VkUmVnaXN0ZXJzID0g
dXNlZFJlZ2lzdGVyczsKKyAgICBpbmZvLnBhdGNoLnJlZ2lzdGVyc0ZsdXNoZWQgPSB0cnVlOwog
fQogCiBDb21waWxhdGlvblJlc3VsdCBKSVQ6OnByaXZhdGVDb21waWxlKEpJVENvbXBpbGF0aW9u
RWZmb3J0IGVmZm9ydCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAko
cmV2aXNpb24gMTU3NDgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTYsMjAgKzU2LDIwIEBAIHN0YXRpYyB2b2lkIHJlcGF0Y2hC
eUlkU2VsZkFjY2VzcyhDb2RlQmwKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHViSW5mby5j
YWxsUmV0dXJuTG9jYXRpb24sIHNsb3dQYXRoRnVuY3Rpb24pOwogCiAgICAgLy8gUGF0Y2ggdGhl
IHN0cnVjdHVyZSBjaGVjayAmIHRoZSBvZmZzZXQgb2YgdGhlIGxvYWQuCi0gICAgcmVwYXRjaEJ1
ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9m
ZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNoZWNrSW1tVG9DYWxsKSwg
c3RydWN0dXJlKTsKLSAgICByZXBhdGNoQnVmZmVyLnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZl
KHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5jb252ZXJ0aWJsZUxvYWRBdE9mZnNldChzdHVi
SW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TdG9yYWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zmc2V0
KG9mZnNldCkpOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24uZGF0YUxhYmVsUHRyQXRPZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5k
ZWx0YUNoZWNrSW1tVG9DYWxsKSwgc3RydWN0dXJlKTsKKyAgICByZXBhdGNoQnVmZmVyLnNldExv
YWRJbnN0cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5jb252ZXJ0
aWJsZUxvYWRBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1N0b3JhZ2VMb2FkKSwg
aXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAo
Y29tcGFjdCkKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRl
bHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zm
c2V0KSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2Fs
bFRvTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSk7
CiAgICAgZWxzZQotICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJl
dHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRh
Q2FsbFRvTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0
KSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9j
YXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0xvYWRP
clN0b3JlKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkpOwogI2VsaWYg
VVNFKEpTVkFMVUUzMl82NCkKICAgICBpZiAoY29tcGFjdCkgewotICAgICAgICByZXBhdGNoQnVm
ZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RB
dE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSksIG9m
ZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKLSAgICAgICAgcmVwYXRjaEJ1ZmZl
ci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRP
ZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0b3JlKSwg
b2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0Yo
RW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKKyAgICAgICAgcmVwYXRj
aEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21w
YWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSksIG9m
ZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZl
ci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRP
ZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBvZmZz
ZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOwogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0
YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JT
dG9yZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKLSAgICAgICAgcmVw
YXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwz
MkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9y
ZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSk7CisgICAgICAgIHJl
cGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVs
MzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlKSwgb2Zm
c2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5j
b2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpOworICAgICAgICByZXBhdGNoQnVmZmVy
LnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQo
c3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxh
dGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMTIy
LDE0ICsxMjIsMTQgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKFJlcGF0Y2hCdWZmZQog
ICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGxhY2VXaXRoSnVtcCgKICAgICAgICAgICAgIFJlcGF0
Y2hCdWZmZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MoCiAg
ICAgICAgICAgICAgICAgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbFB0ckF0
T2Zmc2V0KAotICAgICAgICAgICAgICAgICAgICAtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRm
Zy5kZWx0YUNoZWNrSW1tVG9DYWxsKSksCisgICAgICAgICAgICAgICAgICAgIC0oaW50cHRyX3Qp
c3R1YkluZm8ucGF0Y2guZGVsdGFDaGVja0ltbVRvQ2FsbCkpLAogICAgICAgICAgICAgQ29kZUxv
Y2F0aW9uTGFiZWwodGFyZ2V0KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAg
cmVwYXRjaEJ1ZmZlci5yZWxpbmsoCiAgICAgICAgIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bi5qdW1wQXRPZmZzZXQoCi0gICAgICAgICAgICBzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxs
VG9TdHJ1Y3RDaGVjayksCisgICAgICAgICAgICBzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1N0
cnVjdENoZWNrKSwKICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwodGFyZ2V0KSk7CiB9CiAKQEAg
LTE2Nyw3ICsxNjcsNyBAQCBzdGF0aWMgdm9pZCBsaW5rUmVzdG9yZVNjcmF0Y2goTGlua0J1ZmZl
CiAKIHN0YXRpYyB2b2lkIGxpbmtSZXN0b3JlU2NyYXRjaChMaW5rQnVmZmVyJiBwYXRjaEJ1ZmZl
ciwgYm9vbCBuZWVkVG9SZXN0b3JlU2NyYXRjaCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzdWNjZXNzLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBmYWls
LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZmFpbHVyZUNhc2VzKQogewotICAgIGxpbmtSZXN0
b3JlU2NyYXRjaChwYXRjaEJ1ZmZlciwgbmVlZFRvUmVzdG9yZVNjcmF0Y2gsIHN1Y2Nlc3MsIGZh
aWwsIGZhaWx1cmVDYXNlcywgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZz
ZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSksIHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1Ns
b3dDYXNlKSk7CisgICAgbGlua1Jlc3RvcmVTY3JhdGNoKHBhdGNoQnVmZmVyLCBuZWVkVG9SZXN0
b3JlU2NyYXRjaCwgc3VjY2VzcywgZmFpbCwgZmFpbHVyZUNhc2VzLCBzdHViSW5mby5jYWxsUmV0
dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0RvbmUp
LCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRj
aC5kZWx0YUNhbGxUb1Nsb3dDYXNlKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGdlbmVyYXRlUHJvdG9D
aGFpbkFjY2Vzc1N0dWIoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8sIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlTG9jYXRpb25MYWJlbCBzdWNjZXNzTGFi
ZWwsIENvZGVMb2NhdGlvbkxhYmVsIHNsb3dDYXNlTGFiZWwsIFJlZlB0cjxKSVRTdHViUm91dGlu
ZT4mIHN0dWJSb3V0aW5lKQpAQCAtMTc2LDEyICsxNzYsMTIgQEAgc3RhdGljIHZvaWQgZ2VuZXJh
dGVQcm90b0NoYWluQWNjZXNzU3R1YgogCiAgICAgTWFjcm9Bc3NlbWJsZXIgc3R1YkppdDsKICAg
ICAgICAgCi0gICAgR1BSUmVnIGJhc2VHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZv
LnBhdGNoLmRmZy5iYXNlR1BSKTsKKyAgICBHUFJSZWcgYmFzZUdQUiA9IHN0YXRpY19jYXN0PEdQ
UlJlZz4oc3R1YkluZm8ucGF0Y2guYmFzZUdQUik7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAg
ICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRj
aC5kZmcudmFsdWVUYWdHUFIpOworICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSBzdGF0aWNfY2Fz
dDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLnZhbHVlVGFnR1BSKTsKICNlbmRpZgotICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy52YWx1
ZUdQUik7Ci0gICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBSZWdpc3RlclNldChzdHViSW5mby5wYXRj
aC5kZmcudXNlZFJlZ2lzdGVycykuZ2V0RnJlZUdQUigpOworICAgIEdQUlJlZyByZXN1bHRHUFIg
PSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLnZhbHVlR1BSKTsKKyAgICBHUFJS
ZWcgc2NyYXRjaEdQUiA9IHN0dWJJbmZvLnBhdGNoLnVzZWRSZWdpc3RlcnMuZ2V0RnJlZUdQUigp
OwogICAgIGJvb2wgbmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSBmYWxzZTsKICAgICAKICAgICBpZiAo
c2NyYXRjaEdQUiA9PSBJbnZhbGlkR1BSUmVnKSB7CkBAIC0yNTAsMTIgKzI1MCwxMiBAQCBzdGF0
aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAgVk0qIHZtID0gJmV4ZWMt
PnZtKCk7CiAgICAgCiAgICAgaWYgKGlzSlNBcnJheShiYXNlVmFsdWUpICYmIHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7Ci0gICAgICAgIEdQUlJlZyBiYXNl
R1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcuYmFzZUdQUik7Cisg
ICAgICAgIEdQUlJlZyBiYXNlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRj
aC5iYXNlR1BSKTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBHUFJSZWcgcmVzdWx0
VGFnR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcudmFsdWVUYWdH
UFIpOworICAgICAgICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihz
dHViSW5mby5wYXRjaC52YWx1ZVRhZ0dQUik7CiAjZW5kaWYKLSAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLnZhbHVlR1BSKTsK
LSAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBSZWdpc3RlclNldChzdHViSW5mby5wYXRjaC5k
ZmcudXNlZFJlZ2lzdGVycykuZ2V0RnJlZUdQUigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC52YWx1ZUdQUik7CisgICAgICAg
IEdQUlJlZyBzY3JhdGNoR1BSID0gc3R1YkluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycy5nZXRGcmVl
R1BSKCk7CiAgICAgICAgIGJvb2wgbmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSBmYWxzZTsKICAgICAg
ICAgCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyIHN0dWJKaXQ7CkBAIC0zMDAsNyArMzAwLDcgQEAg
c3RhdGljIGJvb2wgdHJ5Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0ZSogZQogICAgICAgICAgICAgcGF0
Y2hCdWZmZXIsCiAgICAgICAgICAgICAoIkRGRyBHZXRCeUlkIGFycmF5IGxlbmd0aCBzdHViIGZv
ciAlcywgcmV0dXJuIHBvaW50ICVwIiwKICAgICAgICAgICAgICAgICB0b0NTdHJpbmcoKmV4ZWMt
PmNvZGVCbG9jaygpKS5kYXRhKCksIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0
T2Zmc2V0KAotICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxs
VG9Eb25lKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgICAgICAgICAgICAgIHN0dWJJ
bmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAg
ICAKICAgICAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAgICAg
ICAgIHJlcGxhY2VXaXRoSnVtcChyZXBhdGNoQnVmZmVyLCBzdHViSW5mbywgc3R1YkluZm8uc3R1
YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOwpAQCAtMzQ4LDcgKzM0OCw3IEBAIHN0YXRpYyBib29s
IHRyeUNhY2hlR2V0QnlJRChFeGVjU3RhdGUqIGUKIAogICAgIFN0cnVjdHVyZUNoYWluKiBwcm90
b3R5cGVDaGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYyk7CiAgICAgCi0gICAg
Z2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1YihleGVjLCBzdHViSW5mbywgcHJvdG90eXBlQ2hh
aW4sIGNvdW50LCBvZmZzZXQsIHN0cnVjdHVyZSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSksIHN0dWJJ
bmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5k
ZWx0YUNhbGxUb1Nsb3dDYXNlKSwgc3R1YkluZm8uc3R1YlJvdXRpbmUpOworICAgIGdlbmVyYXRl
UHJvdG9DaGFpbkFjY2Vzc1N0dWIoZXhlYywgc3R1YkluZm8sIHByb3RvdHlwZUNoYWluLCBjb3Vu
dCwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0
T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSksIHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nh
c2UpLCBzdHViSW5mby5zdHViUm91dGluZSk7CiAgICAgCiAgICAgUmVwYXRjaEJ1ZmZlciByZXBh
dGNoQnVmZmVyKGNvZGVCbG9jayk7CiAgICAgcmVwbGFjZVdpdGhKdW1wKHJlcGF0Y2hCdWZmZXIs
IHN0dWJJbmZvLCBzdHViSW5mby5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CkBAIC0zNzIs
NyArMzcyLDcgQEAgc3RhdGljIGJvb2wgZ2V0UG9seW1vcnBoaWNTdHJ1Y3R1cmVMaXN0KAogICAg
IFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdComIHBvbHltb3JwaGljU3RydWN0dXJlTGlz
dCwgaW50JiBsaXN0SW5kZXgsCiAgICAgQ29kZUxvY2F0aW9uTGFiZWwmIHNsb3dDYXNlKQogewot
ICAgIHNsb3dDYXNlID0gc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQo
c3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU2xvd0Nhc2UpOworICAgIHNsb3dDYXNlID0g
c3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2gu
ZGVsdGFDYWxsVG9TbG93Q2FzZSk7CiAgICAgCiAgICAgaWYgKHN0dWJJbmZvLmFjY2Vzc1R5cGUg
PT0gYWNjZXNzX3Vuc2V0KSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFzdHViSW5mby5zdHVi
Um91dGluZSk7CkBAIC00MTIsNyArNDEyLDcgQEAgc3RhdGljIHZvaWQgcGF0Y2hKdW1wVG9HZXRC
eUlkU3R1YihDb2RlQgogICAgIGlmIChzdHViSW5mby51LmdldEJ5SWRTZWxmTGlzdC5kaWRTZWxm
UGF0Y2hpbmcpIHsKICAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoCiAgICAgICAgICAgICBz
dHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uanVtcEF0T2Zmc2V0KAotICAgICAgICAgICAgICAg
IHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1N0cnVjdENoZWNrKSwKKyAgICAgICAgICAg
ICAgICBzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1N0cnVjdENoZWNrKSwKICAgICAgICAgICAg
IENvZGVMb2NhdGlvbkxhYmVsKHN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC00MzMsNyArNDMzLDcgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRH
ZXRCeUlETGlzdChFeGVjU3RhdAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwt
PnN0cnVjdHVyZSgpOwogICAgIAogICAgIGlmIChzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVl
KSB7Ci0gICAgICAgIGlmICghc3R1YkluZm8ucGF0Y2guZGZnLnJlZ2lzdGVyc0ZsdXNoZWQpIHsK
KyAgICAgICAgaWYgKCFzdHViSW5mby5wYXRjaC5yZWdpc3RlcnNGbHVzaGVkKSB7CiAgICAgICAg
ICAgICAvLyBXZSBjYW5ub3QgZG8gYXMgbXVjaCBpbmxpbmUgY2FjaGluZyBpZiB0aGUgcmVnaXN0
ZXJzIHdlcmUgbm90IGZsdXNoZWQgcHJpb3IgdG8gdGhpcyBHZXRCeUlkLiBJbiBwYXJ0aWN1bGFy
LAogICAgICAgICAgICAgLy8gbm9uLVZhbHVlIGNhY2hlZCBwcm9wZXJ0aWVzIHJlcXVpcmUgcGxh
bnRpbmcgY2FsbHMsIHdoaWNoIHJlcXVpcmVzIHJlZ2lzdGVycyB0byBoYXZlIGJlZW4gZmx1c2hl
ZC4gVGh1cywKICAgICAgICAgICAgIC8vIGlmIHJlZ2lzdGVycyB3ZXJlIG5vdCBmbHVzaGVkLCBk
b24ndCBkbyBub24tVmFsdWUgY2FjaGluZy4KQEAgLTQ1MCwxMiArNDUwLDEyIEBAIHN0YXRpYyBi
b29sIHRyeUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXQKICAgICAgICAgCiAgICAgICAgIHN0dWJJ
bmZvLnUuZ2V0QnlJZFNlbGZMaXN0Lmxpc3RTaXplKys7CiAgICAgICAgIAotICAgICAgICBHUFJS
ZWcgYmFzZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLmJhc2VH
UFIpOworICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1Yklu
Zm8ucGF0Y2guYmFzZUdQUik7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgR1BSUmVn
IHJlc3VsdFRhZ0dQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLnZh
bHVlVGFnR1BSKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHN0YXRpY19jYXN0PEdQ
UlJlZz4oc3R1YkluZm8ucGF0Y2gudmFsdWVUYWdHUFIpOwogI2VuZGlmCi0gICAgICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy52YWx1
ZUdQUik7Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gUmVnaXN0ZXJTZXQoc3R1YkluZm8u
cGF0Y2guZGZnLnVzZWRSZWdpc3RlcnMpLmdldEZyZWVHUFIoKTsKKyAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2gudmFsdWVHUFIpOwor
ICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHN0dWJJbmZvLnBhdGNoLnVzZWRSZWdpc3RlcnMu
Z2V0RnJlZUdQUigpOwogICAgICAgICAKICAgICAgICAgQ0NhbGxIZWxwZXJzIHN0dWJKaXQodm0s
IGNvZGVCbG9jayk7CiAgICAgICAgIApAQCAtNTQ3LDcgKzU0Nyw3IEBAIHN0YXRpYyBib29sIHRy
eUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXQKICAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cigqdm0sICZzdHViSml0LCBjb2RlQmxvY2spOwogICAgICAgICAKICAgICAgICAgcGF0Y2hCdWZm
ZXIubGluayh3cm9uZ1N0cnVjdCwgc2xvd0Nhc2UpOwotICAgICAgICBwYXRjaEJ1ZmZlci5saW5r
KHN1Y2Nlc3MsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJ
bmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpKTsKKyAgICAgICAgcGF0Y2hCdWZmZXIubGlu
ayhzdWNjZXNzLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHVi
SW5mby5wYXRjaC5kZWx0YUNhbGxUb0RvbmUpKTsKICAgICAgICAgaWYgKCFpc0RpcmVjdCkgewog
ICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb25DYWxsLCBvcGVyYXRpb25GdW5j
dGlvbik7CiAgICAgICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGhhbmRsZXJDYWxsLCBsb29rdXBF
eGNlcHRpb25IYW5kbGVyKTsKQEAgLTU1OSw3ICs1NTksNyBAQCBzdGF0aWMgYm9vbCB0cnlCdWls
ZEdldEJ5SURMaXN0KEV4ZWNTdGF0CiAgICAgICAgICAgICAgICAgICAgIHBhdGNoQnVmZmVyLAog
ICAgICAgICAgICAgICAgICAgICAoIkRGRyBHZXRCeUlkIHBvbHltb3JwaGljIGxpc3QgYWNjZXNz
IGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwKICAgICAgICAgICAgICAgICAgICAgIHRvQ1N0cmlu
ZygqZXhlYy0+Y29kZUJsb2NrKCkpLmRhdGEoKSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LmxhYmVsQXRPZmZzZXQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2gu
ZGZnLmRlbHRhQ2FsbFRvRG9uZSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSkpLAogICAgICAgICAgICAgICAgICp2bSwKICAgICAgICAgICAgICAgICBjb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLAogICAgICAgICAgICAgICAgIHNsb3QuaXNDYWNoZWFibGVH
ZXR0ZXIoKSB8fCBzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkpOwpAQCAtNTkwLDcgKzU5MCw3IEBA
IHN0YXRpYyBib29sIHRyeUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXQKICAgICAKICAgICBSZWZQ
dHI8SklUU3R1YlJvdXRpbmU+IHN0dWJSb3V0aW5lOwogICAgIAotICAgIGdlbmVyYXRlUHJvdG9D
aGFpbkFjY2Vzc1N0dWIoZXhlYywgc3R1YkluZm8sIHByb3RvdHlwZUNoYWluLCBjb3VudCwgb2Zm
c2V0LCBzdHJ1Y3R1cmUsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0
KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpLCBzbG93Q2FzZSwgc3R1YlJvdXRp
bmUpOworICAgIGdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIoZXhlYywgc3R1YkluZm8sIHBy
b3RvdHlwZUNoYWluLCBjb3VudCwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSks
IHNsb3dDYXNlLCBzdHViUm91dGluZSk7CiAgICAgCiAgICAgcG9seW1vcnBoaWNTdHJ1Y3R1cmVM
aXN0LT5saXN0W2xpc3RJbmRleF0uc2V0KCp2bSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KSwgc3R1YlJvdXRpbmUsIHN0cnVjdHVyZSwgdHJ1ZSk7CiAgICAgCkBAIC02NDQsMTIgKzY0NCwx
MiBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0UmVwbGFjZVN0dWIoCiAgICAgUmVmUHRyPEpJVFN0dWJS
b3V0aW5lPiYgc3R1YlJvdXRpbmUpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAg
R1BSUmVnIGJhc2VHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy5i
YXNlR1BSKTsKKyAgICBHUFJSZWcgYmFzZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1Yklu
Zm8ucGF0Y2guYmFzZUdQUik7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBHUFJSZWcgdmFs
dWVUYWdHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy52YWx1ZVRh
Z0dQUik7CisgICAgR1BSUmVnIHZhbHVlVGFnR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHVi
SW5mby5wYXRjaC52YWx1ZVRhZ0dQUik7CiAjZW5kaWYKLSAgICBHUFJSZWcgdmFsdWVHUFIgPSBz
dGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy52YWx1ZUdQUik7Ci0gICAgR1BS
UmVnIHNjcmF0Y2hHUFIgPSBSZWdpc3RlclNldChzdHViSW5mby5wYXRjaC5kZmcudXNlZFJlZ2lz
dGVycykuZ2V0RnJlZUdQUigpOworICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHN0YXRpY19jYXN0PEdQ
UlJlZz4oc3R1YkluZm8ucGF0Y2gudmFsdWVHUFIpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0g
c3R1YkluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycy5nZXRGcmVlR1BSKCk7CiAgICAgYm9vbCBuZWVk
VG9SZXN0b3JlU2NyYXRjaCA9IGZhbHNlOwogI2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJ
TElORykKICAgICBHUFJSZWcgc2NyYXRjaEdQUjI7CkBAIC03MjAsMTQgKzcyMCwxNCBAQCBzdGF0
aWMgdm9pZCBlbWl0UHV0UmVwbGFjZVN0dWIoCiAgICAgfQogICAgIAogICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoKnZtLCAmc3R1YkppdCwgZXhlYy0+Y29kZUJsb2NrKCkpOwotICAgIHBhdGNo
QnVmZmVyLmxpbmsoc3VjY2Vzcywgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRP
ZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSkpOworICAgIHBhdGNoQnVm
ZmVyLmxpbmsoc3VjY2Vzcywgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZz
ZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9Eb25lKSk7CiAgICAgcGF0Y2hCdWZmZXIubGlu
ayhmYWlsdXJlLCBmYWlsdXJlTGFiZWwpOwogICAgICAgICAgICAgCiAgICAgc3R1YlJvdXRpbmUg
PSBGSU5BTElaRV9DT0RFX0ZPUl9ERkdfU1RVQigKICAgICAgICAgcGF0Y2hCdWZmZXIsCiAgICAg
ICAgICgiREZHIFB1dEJ5SWQgcmVwbGFjZSBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwK
ICAgICAgICAgICAgIHRvQ1N0cmluZygqZXhlYy0+Y29kZUJsb2NrKCkpLmRhdGEoKSwgc3R1Yklu
Zm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoCi0gICAgICAgICAgICAgICAgc3R1
YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwor
ICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkpOwogfQogCiBzdGF0aWMgdm9pZCBlbWl0UHV0VHJhbnNpdGlvblN0dWIoCkBA
IC03NDUsMTMgKzc0NSwxMyBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0VHJhbnNpdGlvblN0dWIoCiB7
CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAKLSAgICBHUFJSZWcgYmFzZUdQUiA9IHN0YXRp
Y19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLmJhc2VHUFIpOworICAgIEdQUlJlZyBi
YXNlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5iYXNlR1BSKTsKICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIEdQUlJlZyB2YWx1ZVRhZ0dQUiA9IHN0YXRpY19jYXN0
PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLnZhbHVlVGFnR1BSKTsKKyAgICBHUFJSZWcgdmFs
dWVUYWdHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLnZhbHVlVGFnR1BS
KTsKICNlbmRpZgotICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1
YkluZm8ucGF0Y2guZGZnLnZhbHVlR1BSKTsKKyAgICBHUFJSZWcgdmFsdWVHUFIgPSBzdGF0aWNf
Y2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLnZhbHVlR1BSKTsKICAgICAKLSAgICBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnBhdGNoLmRmZy51c2VkUmVnaXN0
ZXJzKTsKKyAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnBh
dGNoLnVzZWRSZWdpc3RlcnMpOwogICAgIGFsbG9jYXRvci5sb2NrKGJhc2VHUFIpOwogI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCiAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVUYWdHUFIpOwpAQCAtOTEx
LDE0ICs5MTEsMTQgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFRyYW5zaXRpb25TdHViKAogICAgIH0K
ICAgICAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgJnN0dWJKaXQsIGV4ZWMtPmNv
ZGVCbG9jaygpKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKHN1Y2Nlc3MsIHN0dWJJbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxU
b0RvbmUpKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKHN1Y2Nlc3MsIHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSkp
OwogICAgIGlmIChhbGxvY2F0b3IuZGlkUmV1c2VSZWdpc3RlcnMoKSkKICAgICAgICAgcGF0Y2hC
dWZmZXIubGluayhmYWlsdXJlLCBmYWlsdXJlTGFiZWwpOwogICAgIGVsc2UKICAgICAgICAgcGF0
Y2hCdWZmZXIubGluayhmYWlsdXJlQ2FzZXMsIGZhaWx1cmVMYWJlbCk7CiAgICAgaWYgKHN0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFj
aXR5KCkpIHsKICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb25DYWxsLCBvcGVyYXRp
b25SZWFsbG9jYXRlU3RvcmFnZUFuZEZpbmlzaFB1dCk7Ci0gICAgICAgIHBhdGNoQnVmZmVyLmxp
bmsoc3VjY2Vzc0luU2xvd1BhdGgsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0
T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpKTsKKyAgICAgICAgcGF0
Y2hCdWZmZXIubGluayhzdWNjZXNzSW5TbG93UGF0aCwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0
aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9Eb25lKSk7CiAgICAg
fQogICAgIAogICAgIHN0dWJSb3V0aW5lID0KQEAgLTkyOSw3ICs5MjksNyBAQCBzdGF0aWMgdm9p
ZCBlbWl0UHV0VHJhbnNpdGlvblN0dWIoCiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkg
PyAicmVhbGxvY2F0aW5nICIgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgb2xkU3RydWN0dXJl
LCBzdHJ1Y3R1cmUsCiAgICAgICAgICAgICAgICAgICAgIHRvQ1N0cmluZygqZXhlYy0+Y29kZUJs
b2NrKCkpLmRhdGEoKSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQo
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9E
b25lKS5leGVjdXRhYmxlQWRkcmVzcygpKSksCisgICAgICAgICAgICAgICAgICAgICAgICBzdHVi
SW5mby5wYXRjaC5kZWx0YUNhbGxUb0RvbmUpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSwKICAgICAg
ICAgICAgICp2bSwKICAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFi
bGUoKSwKICAgICAgICAgICAgIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBvbGRT
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksCkBAIC05NzgsMTMgKzk3OCwxMyBAQCBzdGF0
aWMgYm9vbCB0cnlDYWNoZVB1dEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAgICAgICAgICBlbWl0UHV0
VHJhbnNpdGlvblN0dWIoCiAgICAgICAgICAgICAgICAgZXhlYywgYmFzZVZhbHVlLCBpZGVudCwg
c2xvdCwgc3R1YkluZm8sIHB1dEtpbmQsCiAgICAgICAgICAgICAgICAgc3RydWN0dXJlLCBvbGRT
dHJ1Y3R1cmUsIHByb3RvdHlwZUNoYWluLAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxU
b1Nsb3dDYXNlKSwKKyAgICAgICAgICAgICAgICBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24u
bGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1Nsb3dDYXNlKSwKICAgICAg
ICAgICAgICAgICBzdHViSW5mby5zdHViUm91dGluZSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwogICAgICAgICAgICAg
cmVwYXRjaEJ1ZmZlci5yZWxpbmsoCiAgICAgICAgICAgICAgICAgc3R1YkluZm8uY2FsbFJldHVy
bkxvY2F0aW9uLmp1bXBBdE9mZnNldCgKLSAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8ucGF0
Y2guZGZnLmRlbHRhQ2FsbFRvU3RydWN0Q2hlY2spLAorICAgICAgICAgICAgICAgICAgICBzdHVi
SW5mby5wYXRjaC5kZWx0YUNhbGxUb1N0cnVjdENoZWNrKSwKICAgICAgICAgICAgICAgICBDb2Rl
TG9jYXRpb25MYWJlbChzdHViSW5mby5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwogICAg
ICAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LCBhcHByb3ByaWF0ZUxpc3RCdWlsZGluZ1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7
CiAgICAgICAgICAgICAKQEAgLTEwNTgsNyArMTA1OCw3IEBAIHN0YXRpYyBib29sIHRyeUJ1aWxk
UHV0QnlJZExpc3QoRXhlY1N0YXQKICAgICAgICAgICAgIC8vIFdlJ3JlIG5vdyBjb21taXR0ZWQg
dG8gY3JlYXRpbmcgdGhlIHN0dWIuIE1vZ3JpZnkgdGhlIG1ldGEtZGF0YSBhY2NvcmRpbmdseS4K
ICAgICAgICAgICAgIGxpc3QgPSBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0Ojpmcm9tKAogICAgICAg
ICAgICAgICAgIHB1dEtpbmQsIHN0dWJJbmZvLAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNh
bGxUb1Nsb3dDYXNlKSk7CisgICAgICAgICAgICAgICAgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0
aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93Q2FzZSkpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBlbWl0UHV0VHJhbnNpdGlvblN0dWIoCiAgICAgICAg
ICAgICAgICAgZXhlYywgYmFzZVZhbHVlLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHN0dWJJbmZvLCBw
dXRLaW5kLApAQCAtMTA3NSw3ICsxMDc1LDcgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRQdXRCeUlk
TGlzdChFeGVjU3RhdAogICAgICAgICAgICAgLy8gV2UncmUgbm93IGNvbW1pdHRlZCB0byBjcmVh
dGluZyB0aGUgc3R1Yi4gTW9ncmlmeSB0aGUgbWV0YS1kYXRhIGFjY29yZGluZ2x5LgogICAgICAg
ICAgICAgbGlzdCA9IFBvbHltb3JwaGljUHV0QnlJZExpc3Q6OmZyb20oCiAgICAgICAgICAgICAg
ICAgcHV0S2luZCwgc3R1YkluZm8sCi0gICAgICAgICAgICAgICAgc3R1YkluZm8uY2FsbFJldHVy
bkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU2xv
d0Nhc2UpKTsKKyAgICAgICAgICAgICAgICBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFi
ZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1Nsb3dDYXNlKSk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGVtaXRQdXRSZXBsYWNlU3R1YigKICAgICAgICAgICAgICAgICBl
eGVjLCBiYXNlVmFsdWUsIHByb3BlcnR5TmFtZSwgc2xvdCwgc3R1YkluZm8sIHB1dEtpbmQsCkBA
IC0xMDg4LDcgKzEwODgsNyBAQCBzdGF0aWMgYm9vbCB0cnlCdWlsZFB1dEJ5SWRMaXN0KEV4ZWNT
dGF0CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1
ZmZlcihjb2RlQmxvY2spOwotICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHViSW5mby5j
YWxsUmV0dXJuTG9jYXRpb24uanVtcEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNh
bGxUb1N0cnVjdENoZWNrKSwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YlJvdXRpbmUtPmNvZGUoKS5j
b2RlKCkpKTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8uY2FsbFJldHVy
bkxvY2F0aW9uLmp1bXBBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1N0cnVjdENo
ZWNrKSwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKICAg
ICAgICAgCiAgICAgICAgIGlmIChsaXN0LT5pc0Z1bGwoKSkKICAgICAgICAgICAgIHJlcGF0Y2hC
dWZmZXIucmVsaW5rKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgYXBwcm9wcmlhdGVHZW5l
cmljUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKQEAgLTExMzksNyArMTEzOSw3IEBA
IHN0YXRpYyBib29sIHRyeVJlcGF0Y2hJbigKICAgICAgICAgcG9seW1vcnBoaWNTdHJ1Y3R1cmVM
aXN0ID0gbmV3IFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCgpOwogICAgICAgICBzdHVi
SW5mby5pbml0SW5MaXN0KHBvbHltb3JwaGljU3RydWN0dXJlTGlzdCwgMCk7CiAgICAgICAgIHNs
b3dDYXNlTGFiZWwgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldCgK
LSAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1Nsb3dDYXNlKTsKKyAg
ICAgICAgICAgIHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nhc2UpOwogICAgICAgICBs
aXN0SW5kZXggPSAwOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0dWJJ
bmZvLmFjY2Vzc1R5cGUgPT0gYWNjZXNzX2luX2xpc3QpOwpAQCAtMTE1NSw5ICsxMTU1LDkgQEAg
c3RhdGljIGJvb2wgdHJ5UmVwYXRjaEluKAogICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gc3R1
YlJvdXRpbmU7CiAgICAgCiAgICAgewotICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHN0YXRpY19j
YXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLmJhc2VHUFIpOwotICAgICAgICBHUFJSZWcg
cmVzdWx0R1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcudmFsdWVH
UFIpOwotICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IFJlZ2lzdGVyU2V0KHN0dWJJbmZvLnBh
dGNoLmRmZy51c2VkUmVnaXN0ZXJzKS5nZXRGcmVlR1BSKCk7CisgICAgICAgIEdQUlJlZyBiYXNl
R1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5iYXNlR1BSKTsKKyAgICAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2gu
dmFsdWVHUFIpOworICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHN0dWJJbmZvLnBhdGNoLnVz
ZWRSZWdpc3RlcnMuZ2V0RnJlZUdQUigpOwogICAgICAgICAKICAgICAgICAgQ0NhbGxIZWxwZXJz
IHN0dWJKaXQodm0pOwogICAgICAgICAKQEAgLTEzNjUsMjMgKzEzNjUsMjMgQEAgdm9pZCBsaW5r
Q2xvc3VyZUNhbGwoRXhlY1N0YXRlKiBleGVjLCBDYQogdm9pZCByZXNldEdldEJ5SUQoUmVwYXRj
aEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlciwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewog
ICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgb3Bl
cmF0aW9uR2V0QnlJZE9wdGltaXplKTsKLSAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgc3Ry
dWN0dXJlTGFiZWwgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsUHRyQXRP
ZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDaGVja0ltbVRvQ2FsbCk7
CisgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIHN0cnVjdHVyZUxhYmVsID0gc3R1YkluZm8u
Y2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KC0oaW50cHRyX3Qpc3R1Yklu
Zm8ucGF0Y2guZGVsdGFDaGVja0ltbVRvQ2FsbCk7CiAgICAgaWYgKE1hY3JvQXNzZW1ibGVyOjpj
YW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgpKSB7CiAgICAgICAgIHJl
cGF0Y2hCdWZmZXIucmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2hQdHJXaXRo
UGF0Y2goCiAgICAgICAgICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNo
UHRyV2l0aFBhdGNoT25BZGRyZXNzKHN0cnVjdHVyZUxhYmVsKSwKICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKAotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1hY3JvQXNz
ZW1ibGVyOjpSZWdpc3RlcklEPihzdHViSW5mby5wYXRjaC5kZmcuYmFzZUdQUiksCisgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ+KHN0dWJJbmZv
LnBhdGNoLmJhc2VHUFIpLAogICAgICAgICAgICAgICAgIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLAogICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odW51c2VkUG9pbnRlcikp
OwogICAgIH0KICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3RydWN0dXJlTGFiZWwsIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHVudXNlZFBvaW50ZXIpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQot
ICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0
YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0xvYWRP
clN0b3JlKSwgMCk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFD
YWxsVG9Mb2FkT3JTdG9yZSksIDApOwogI2Vsc2UKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2go
c3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHVi
SW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSksIDApOwotICAgIHJlcGF0
Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29t
cGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JT
dG9yZSksIDApOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2Fs
bFRvVGFnTG9hZE9yU3RvcmUpLCAwKTsKKyAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1Yklu
Zm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5w
YXRjaC5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9yZSksIDApOwogI2VuZGlmCi0gICAgcmVw
YXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmp1bXBBdE9mZnNl
dChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TdHJ1Y3RDaGVjayksIHN0dWJJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNh
bGxUb1Nsb3dDYXNlKSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8uY2FsbFJl
dHVybkxvY2F0aW9uLmp1bXBBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1N0cnVj
dENoZWNrKSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1Yklu
Zm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93Q2FzZSkpOwogfQogCiB2b2lkIHJlc2V0UHV0QnlJRChS
ZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8p
CkBAIC0xMzk5LDI4ICsxMzk5LDI4IEBAIHZvaWQgcmVzZXRQdXRCeUlEKFJlcGF0Y2hCdWZmZXIm
IHJlcGF0Y2gKICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeUlkRGly
ZWN0Tm9uU3RyaWN0T3B0aW1pemU7CiAgICAgfQogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKHN0
dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgb3B0aW1pemVkRnVuY3Rpb24pOwotICAgIENvZGVM
b2NhdGlvbkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVMYWJlbCA9IHN0dWJJbmZvLmNhbGxSZXR1cm5M
b2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRm
Zy5kZWx0YUNoZWNrSW1tVG9DYWxsKTsKKyAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgc3Ry
dWN0dXJlTGFiZWwgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsUHRyQXRP
ZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsKTsKICAg
ICBpZiAoTWFjcm9Bc3NlbWJsZXI6OmNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0
aFBhdGNoKCkpIHsKICAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXZlcnRKdW1wUmVwbGFjZW1lbnRU
b1BhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgKICAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXI6
OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3Moc3RydWN0dXJlTGFi
ZWwpLAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoCi0gICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ+KHN0dWJJbmZvLnBhdGNo
LmRmZy5iYXNlR1BSKSwKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxl
cjo6UmVnaXN0ZXJJRD4oc3R1YkluZm8ucGF0Y2guYmFzZUdQUiksCiAgICAgICAgICAgICAgICAg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCiAgICAgICAgICAgICByZWludGVycHJldF9jYXN0
PHZvaWQqPih1bnVzZWRQb2ludGVyKSk7CiAgICAgfQogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRj
aChzdHJ1Y3R1cmVMYWJlbCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odW51c2VkUG9pbnRlcikp
OwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZv
LmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRm
Zy5kZWx0YUNhbGxUb0xvYWRPclN0b3JlKSwgMCk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNo
KHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZv
LnBhdGNoLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCAwKTsKICNlbHNlCi0gICAgcmVwYXRjaEJ1
ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zm
c2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlKSwgMCk7Ci0g
ICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRh
TGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRMb2Fk
T3JTdG9yZSksIDApOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0
dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxU
b1RhZ0xvYWRPclN0b3JlKSwgMCk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZv
LmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRl
bHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0b3JlKSwgMCk7CiAjZW5kaWYKLSAgICByZXBhdGNoQnVm
ZmVyLnJlbGluayhzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uanVtcEF0T2Zmc2V0KHN0dWJJ
bmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1N0cnVjdENoZWNrKSwgc3R1YkluZm8uY2FsbFJldHVy
bkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU2xv
d0Nhc2UpKTsKKyAgICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHViSW5mby5jYWxsUmV0dXJuTG9j
YXRpb24uanVtcEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU3RydWN0Q2hlY2sp
LCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRj
aC5kZWx0YUNhbGxUb1Nsb3dDYXNlKSk7CiB9CiAKIHZvaWQgcmVzZXRJbihSZXBhdGNoQnVmZmVy
JiByZXBhdGNoQnVmZmVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0gICAgcmVw
YXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8uaG90UGF0aEJlZ2luLmp1bXBBdE9mZnNldCgwKSwg
c3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2gu
ZGZnLmRlbHRhQ2FsbFRvU2xvd0Nhc2UpKTsKKyAgICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHVi
SW5mby5ob3RQYXRoQmVnaW4uanVtcEF0T2Zmc2V0KDApLCBzdHViSW5mby5jYWxsUmV0dXJuTG9j
YXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1Nsb3dDYXNlKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214334</attachid>
            <date>2013-10-15 19:51:33 -0700</date>
            <delta_ts>2013-10-15 19:53:27 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>40724</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3NDgwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDEzLTEwLTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
R2V0IHJpZCBvZiB0aGUgU3RydWN0dXJlU3R1YkluZm86OnBhdGNoIHVuaW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI4NzcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEp1c3Qgc2ltcGxp
ZnlpbmcgY29kZSBieSBnZXR0aW5nIHJpZCBvZiBkYXRhIHN0cnVjdHVyZXMgdGhhdCBhaW4ndCB1
c2VkIG5vIG1vcmUuCisgICAgICAgIAorICAgICAgICBOb3RlIHRoYXQgSSByZXBsYWNlIHRoZSBw
YXRjaCB1bmlvbiB3aXRoIGEgcGF0Y2ggc3RydWN0LiBUaGlzIG1lYW5zIHdlIHNheSB0aGluZ3Mg
bGlrZQorICAgICAgICBzdHViSW5mby5wYXRjaC52YWx1ZUdQUiBpbnN0ZWFkIG9mIHN0dWJJbmZv
LnZhbHVlR1BSLiBJIHRoaW5rIHRoYXQgdGhpcyBleHRyYQorICAgICAgICBlbmNhcHN1bGF0aW9u
IG1ha2VzIHRoZSBjb2RlIG1vcmUgcmVhZGFibGU6IHRoZSBwYXRjaCBzdHJ1Y3QgY29udGFpbnMg
anVzdCB0aG9zZSB0aGluZ3MKKyAgICAgICAgdGhhdCB5b3UgbmVlZCB0byBrbm93IHRvIHBlcmZv
cm0gcGF0Y2hpbmcuCisKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgor
ICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklU
Q29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm86OmNvcHlUb1N0dWJJbmZvKToKKyAgICAgICAgKiBq
aXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnJlcGF0Y2hCeUlkU2VsZkFjY2Vzcyk6Cisg
ICAgICAgIChKU0M6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6OmxpbmtSZXN0b3Jl
U2NyYXRjaCk6CisgICAgICAgIChKU0M6OmdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIpOgor
ICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAoSlNDOjpnZXRQb2x5bW9y
cGhpY1N0cnVjdHVyZUxpc3QpOgorICAgICAgICAoSlNDOjpwYXRjaEp1bXBUb0dldEJ5SWRTdHVi
KToKKyAgICAgICAgKEpTQzo6dHJ5QnVpbGRHZXRCeUlETGlzdCk6CisgICAgICAgIChKU0M6OmVt
aXRQdXRSZXBsYWNlU3R1Yik6CisgICAgICAgIChKU0M6OmVtaXRQdXRUcmFuc2l0aW9uU3R1Yik6
CisgICAgICAgIChKU0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnRyeUJ1aWxk
UHV0QnlJZExpc3QpOgorICAgICAgICAoSlNDOjp0cnlSZXBhdGNoSW4pOgorICAgICAgICAoSlND
OjpyZXNldEdldEJ5SUQpOgorICAgICAgICAoSlNDOjpyZXNldFB1dEJ5SUQpOgorICAgICAgICAo
SlNDOjpyZXNldEluKToKKwogMjAxMy0xMC0xNSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIEJhc2VsaW5lIEpJVCBzaG91bGQgdXNlIHRoZSBERkcgR2V0QnlJZCBJ
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmgJKHJldmlzaW9uIDE1NzQ4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsNTcgKzIy
MywyNSBAQCBzdHJ1Y3QgU3RydWN0dXJlU3R1YkluZm8gewogCiAgICAgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luOwogCi0gICAgdW5pb24gewotICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgaW50
OF90IHJlZ2lzdGVyc0ZsdXNoZWQ7Ci0gICAgICAgICAgICBpbnQ4X3QgYmFzZUdQUjsKKyAgICBz
dHJ1Y3QgeworICAgICAgICBpbnQ4X3QgcmVnaXN0ZXJzRmx1c2hlZDsKKyAgICAgICAgaW50OF90
IGJhc2VHUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgICAgIGludDhfdCB2YWx1
ZVRhZ0dQUjsKLSNlbmRpZgotICAgICAgICAgICAgaW50OF90IHZhbHVlR1BSOwotICAgICAgICAg
ICAgUmVnaXN0ZXJTZXRQT0QgdXNlZFJlZ2lzdGVyczsKLSAgICAgICAgICAgIGludDMyX3QgZGVs
dGFDYWxsVG9Eb25lOwotICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb1N0b3JhZ2VMb2Fk
OwotICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb1N0cnVjdENoZWNrOwotICAgICAgICAg
ICAgaW50MzJfdCBkZWx0YUNhbGxUb1Nsb3dDYXNlOwotICAgICAgICAgICAgaW50MzJfdCBkZWx0
YUNoZWNrSW1tVG9DYWxsOwotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBpbnQzMl90
IGRlbHRhQ2FsbFRvTG9hZE9yU3RvcmU7Ci0jZWxzZQotICAgICAgICAgICAgaW50MzJfdCBkZWx0
YUNhbGxUb1RhZ0xvYWRPclN0b3JlOwotICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb1Bh
eWxvYWRMb2FkT3JTdG9yZTsKLSNlbmRpZgotICAgICAgICB9IGRmZzsKLSAgICAgICAgc3RydWN0
IHsKLSAgICAgICAgICAgIHVuaW9uIHsKLSAgICAgICAgICAgICAgICBzdHJ1Y3QgewotICAgICAg
ICAgICAgICAgICAgICBpbnQxNl90IHN0cnVjdHVyZVRvQ29tcGFyZTsKLSAgICAgICAgICAgICAg
ICAgICAgaW50MTZfdCBzdHJ1Y3R1cmVDaGVjazsKLSAgICAgICAgICAgICAgICAgICAgaW50MTZf
dCBwcm9wZXJ0eVN0b3JhZ2VMb2FkOwotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICAg
ICAgICAgIGludDE2X3QgZGlzcGxhY2VtZW50TGFiZWw7Ci0jZWxzZQotICAgICAgICAgICAgICAg
ICAgICBpbnQxNl90IGRpc3BsYWNlbWVudExhYmVsMTsKLSAgICAgICAgICAgICAgICAgICAgaW50
MTZfdCBkaXNwbGFjZW1lbnRMYWJlbDI7CisgICAgICAgIGludDhfdCB2YWx1ZVRhZ0dQUjsKICNl
bmRpZgotICAgICAgICAgICAgICAgICAgICBpbnQxNl90IHB1dFJlc3VsdDsKLSAgICAgICAgICAg
ICAgICAgICAgaW50MTZfdCBjb2xkUGF0aEJlZ2luOwotICAgICAgICAgICAgICAgIH0gZ2V0Owot
ICAgICAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgICAgIGludDE2X3Qgc3Ry
dWN0dXJlVG9Db21wYXJlOwotICAgICAgICAgICAgICAgICAgICBpbnQxNl90IHByb3BlcnR5U3Rv
cmFnZUxvYWQ7CisgICAgICAgIGludDhfdCB2YWx1ZUdQUjsKKyAgICAgICAgUmVnaXN0ZXJTZXQg
dXNlZFJlZ2lzdGVyczsKKyAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb0RvbmU7CisgICAgICAg
IGludDMyX3QgZGVsdGFDYWxsVG9TdG9yYWdlTG9hZDsKKyAgICAgICAgaW50MzJfdCBkZWx0YUNh
bGxUb1N0cnVjdENoZWNrOworICAgICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvU2xvd0Nhc2U7Cisg
ICAgICAgIGludDMyX3QgZGVsdGFDaGVja0ltbVRvQ2FsbDsKICNpZiBVU0UoSlNWQUxVRTY0KQot
ICAgICAgICAgICAgICAgICAgICBpbnQxNl90IGRpc3BsYWNlbWVudExhYmVsOworICAgICAgICBp
bnQzMl90IGRlbHRhQ2FsbFRvTG9hZE9yU3RvcmU7CiAjZWxzZQotICAgICAgICAgICAgICAgICAg
ICBpbnQxNl90IGRpc3BsYWNlbWVudExhYmVsMTsKLSAgICAgICAgICAgICAgICAgICAgaW50MTZf
dCBkaXNwbGFjZW1lbnRMYWJlbDI7CisgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9UYWdMb2Fk
T3JTdG9yZTsKKyAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9yZTsK
ICNlbmRpZgotICAgICAgICAgICAgICAgIH0gcHV0OwotICAgICAgICAgICAgfSB1OwotICAgICAg
ICAgICAgaW50MTZfdCBtZXRob2RDaGVja1Byb3RvT2JqOwotICAgICAgICAgICAgaW50MTZfdCBt
ZXRob2RDaGVja1Byb3RvU3RydWN0dXJlVG9Db21wYXJlOwotICAgICAgICAgICAgaW50MTZfdCBt
ZXRob2RDaGVja1B1dEZ1bmN0aW9uOwotICAgICAgICB9IGJhc2VsaW5lOwogICAgIH0gcGF0Y2g7
CiAKICAgICB1bmlvbiB7CkBAIC0zMjIsNyArMjkwLDcgQEAgc3RydWN0IFN0cnVjdHVyZVN0dWJJ
bmZvIHsKIAogICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gc3R1YlJvdXRpbmU7CiAgICAgQ29k
ZUxvY2F0aW9uQ2FsbCBjYWxsUmV0dXJuTG9jYXRpb247Ci0gICAgQ29kZUxvY2F0aW9uTGFiZWwg
aG90UGF0aEJlZ2luOworICAgIENvZGVMb2NhdGlvbkxhYmVsIGhvdFBhdGhCZWdpbjsgLy8gRklY
TUU6IFRoaXMgaXMgb25seSB1c2VkIGJ5IERGRyBJbiBJQy4KICAgICBSZWZQdHI8V2F0Y2hwb2lu
dHNPblN0cnVjdHVyZVN0dWJJbmZvPiB3YXRjaHBvaW50czsKIH07CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNTc0ODAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMyLDI2ICsyMzIsMjYgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5r
QnVmZmVyJiBsaW5rQgogICAgICAgICBDb2RlTG9jYXRpb25DYWxsIGNhbGxSZXR1cm5Mb2NhdGlv
biA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9zbG93UGF0
aEdlbmVyYXRvci0+Y2FsbCgpKTsKICAgICAgICAgaW5mby5jb2RlT3JpZ2luID0gbV9wcm9wZXJ0
eUFjY2Vzc2VzW2ldLm1fY29kZU9yaWdpbjsKICAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9jYXRp
b24gPSBjYWxsUmV0dXJuTG9jYXRpb247Ci0gICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2hl
Y2tJbW1Ub0NhbGwgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIobGlua0J1ZmZlci5sb2NhdGlv
bk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3N0cnVjdHVyZUltbSksIGNhbGxSZXR1cm5Mb2Nh
dGlvbik7Ci0gICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU3RydWN0Q2hlY2sgPSBk
aWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxv
Y2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fc3RydWN0dXJlQ2hlY2spKTsKKyAgICAg
ICAgaW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsID0gZGlmZmVyZW5jZUJldHdlZW5Db2Rl
UHRyKGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9zdHJ1Y3R1
cmVJbW0pLCBjYWxsUmV0dXJuTG9jYXRpb24pOworICAgICAgICBpbmZvLnBhdGNoLmRlbHRhQ2Fs
bFRvU3RydWN0Q2hlY2sgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0
aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fc3RydWN0
dXJlQ2hlY2spKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBpbmZvLnBhdGNoLmRmZy5k
ZWx0YUNhbGxUb0xvYWRPclN0b3JlID0gZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGNhbGxSZXR1
cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5t
X2xvYWRPclN0b3JlKSk7CisgICAgICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9Mb2FkT3JTdG9y
ZSA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZm
ZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9sb2FkT3JTdG9yZSkpOwogI2Vs
c2UKLSAgICAgICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSA9IGRp
ZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9j
YXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV90YWdMb2FkT3JTdG9yZSkpOwotICAgICAg
ICBpbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9yZSA9IGRpZmZlcmVu
Y2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25P
ZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9wYXlsb2FkTG9hZE9yU3RvcmUpKTsKKyAgICAgICAg
aW5mby5wYXRjaC5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlID0gZGlmZmVyZW5jZUJldHdlZW5D
b2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1fcHJvcGVy
dHlBY2Nlc3Nlc1tpXS5tX3RhZ0xvYWRPclN0b3JlKSk7CisgICAgICAgIGluZm8ucGF0Y2guZGVs
dGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2Fs
bFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2Vz
W2ldLm1fcGF5bG9hZExvYWRPclN0b3JlKSk7CiAjZW5kaWYKLSAgICAgICAgaW5mby5wYXRjaC5k
ZmcuZGVsdGFDYWxsVG9TbG93Q2FzZSA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0
dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0u
bV9zbG93UGF0aEdlbmVyYXRvci0+bGFiZWwoKSkpOwotICAgICAgICBpbmZvLnBhdGNoLmRmZy5k
ZWx0YUNhbGxUb0RvbmUgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0
aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fZG9uZSkp
OwotICAgICAgICBpbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1N0b3JhZ2VMb2FkID0gZGlmZmVy
ZW5jZUJldHdlZW5Db2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlv
bk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3Byb3BlcnR5U3RvcmFnZUxvYWQpKTsKLSAgICAg
ICAgaW5mby5wYXRjaC5kZmcuYmFzZUdQUiA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX2Jhc2VH
UFI7CisgICAgICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93Q2FzZSA9IGRpZmZlcmVuY2VC
ZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZiht
X3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9zbG93UGF0aEdlbmVyYXRvci0+bGFiZWwoKSkpOworICAg
ICAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0
cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNj
ZXNzZXNbaV0ubV9kb25lKSk7CisgICAgICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9TdG9yYWdl
TG9hZCA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtC
dWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9wcm9wZXJ0eVN0b3JhZ2VM
b2FkKSk7CisgICAgICAgIGluZm8ucGF0Y2guYmFzZUdQUiA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tp
XS5tX2Jhc2VHUFI7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgaW5mby5wYXRjaC5kZmcu
dmFsdWVHUFIgPSBtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV92YWx1ZUdQUjsKKyAgICAgICAgaW5m
by5wYXRjaC52YWx1ZUdQUiA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3ZhbHVlR1BSOwogI2Vs
c2UKLSAgICAgICAgaW5mby5wYXRjaC5kZmcudmFsdWVUYWdHUFIgPSBtX3Byb3BlcnR5QWNjZXNz
ZXNbaV0ubV92YWx1ZVRhZ0dQUjsKLSAgICAgICAgaW5mby5wYXRjaC5kZmcudmFsdWVHUFIgPSBt
X3Byb3BlcnR5QWNjZXNzZXNbaV0ubV92YWx1ZUdQUjsKKyAgICAgICAgaW5mby5wYXRjaC52YWx1
ZVRhZ0dQUiA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3ZhbHVlVGFnR1BSOworICAgICAgICBp
bmZvLnBhdGNoLnZhbHVlR1BSID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fdmFsdWVHUFI7CiAj
ZW5kaWYKLSAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fdXNlZFJlZ2lzdGVycy5jb3B5
SW5mbyhpbmZvLnBhdGNoLmRmZy51c2VkUmVnaXN0ZXJzKTsKLSAgICAgICAgaW5mby5wYXRjaC5k
ZmcucmVnaXN0ZXJzRmx1c2hlZCA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3JlZ2lzdGVyTW9k
ZSA9PSBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hlZDsKKyAgICAgICAgaW5m
by5wYXRjaC51c2VkUmVnaXN0ZXJzID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fdXNlZFJlZ2lz
dGVyczsKKyAgICAgICAgaW5mby5wYXRjaC5yZWdpc3RlcnNGbHVzaGVkID0gbV9wcm9wZXJ0eUFj
Y2Vzc2VzW2ldLm1fcmVnaXN0ZXJNb2RlID09IFByb3BlcnR5QWNjZXNzUmVjb3JkOjpSZWdpc3Rl
cnNGbHVzaGVkOwogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9pbnMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIGluZm8gPSBtX2NvZGVCbG9j
ay0+c3RydWN0dXJlU3R1YkluZm8obV9wcm9wZXJ0eUFjY2Vzc2VzLnNpemUoKSArIGkpOwpAQCAt
MjYwLDExICsyNjAsMTEgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5r
QgogICAgICAgICBpbmZvLmNvZGVPcmlnaW4gPSBtX2luc1tpXS5tX2NvZGVPcmlnaW47CiAgICAg
ICAgIGluZm8uaG90UGF0aEJlZ2luID0ganVtcDsKICAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9j
YXRpb24gPSBjYWxsUmV0dXJuTG9jYXRpb247Ci0gICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRh
Q2FsbFRvU2xvd0Nhc2UgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0
aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9pbnNbaV0ubV9zbG93UGF0aEdlbmVyYXRvci0+
bGFiZWwoKSkpOwotICAgICAgICBpbmZvLnBhdGNoLmRmZy5iYXNlR1BSID0gbV9pbnNbaV0ubV9i
YXNlR1BSOwotICAgICAgICBpbmZvLnBhdGNoLmRmZy52YWx1ZUdQUiA9IG1faW5zW2ldLm1fcmVz
dWx0R1BSOwotICAgICAgICBtX2luc1tpXS5tX3VzZWRSZWdpc3RlcnMuY29weUluZm8oaW5mby5w
YXRjaC5kZmcudXNlZFJlZ2lzdGVycyk7Ci0gICAgICAgIGluZm8ucGF0Y2guZGZnLnJlZ2lzdGVy
c0ZsdXNoZWQgPSBmYWxzZTsKKyAgICAgICAgaW5mby5wYXRjaC5kZWx0YUNhbGxUb1Nsb3dDYXNl
ID0gZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZl
ci5sb2NhdGlvbk9mKG1faW5zW2ldLm1fc2xvd1BhdGhHZW5lcmF0b3ItPmxhYmVsKCkpKTsKKyAg
ICAgICAgaW5mby5wYXRjaC5iYXNlR1BSID0gbV9pbnNbaV0ubV9iYXNlR1BSOworICAgICAgICBp
bmZvLnBhdGNoLnZhbHVlR1BSID0gbV9pbnNbaV0ubV9yZXN1bHRHUFI7CisgICAgICAgIGluZm8u
cGF0Y2gudXNlZFJlZ2lzdGVycyA9IG1faW5zW2ldLm1fdXNlZFJlZ2lzdGVyczsKKyAgICAgICAg
aW5mby5wYXRjaC5yZWdpc3RlcnNGbHVzaGVkID0gZmFsc2U7CiAgICAgfQogICAgIG1fY29kZUJs
b2NrLT5zb3J0U3RydWN0dXJlU3R1YkluZm9zKCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxNTc0ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5MiwxNCArNDkyLDE0IEBAIEFMV0FZU19J
TkxJTkUgdm9pZCBQcm9wZXJ0eVN0dWJDb21waWxhdGkKICAgICBpbmZvLmNvZGVPcmlnaW4gPSBD
b2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpOwogICAgIGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0g
bGlua0J1ZmZlci5sb2NhdGlvbk9mKGNhbGxSZXR1cm5Mb2NhdGlvbik7CiAKLSAgICBpbmZvLnBh
dGNoLmRmZy5kZWx0YUNoZWNrSW1tVG9DYWxsID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VC
ZXR3ZWVuQ29kZVB0cihsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc3RydWN0dXJlVG9Db21wYXJlKSwg
aW5mby5jYWxsUmV0dXJuTG9jYXRpb24pOwotICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRv
U3RydWN0Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGlu
Zm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc3RydWN0dXJlQ2hl
Y2spKTsKKyAgICBpbmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0NhbGwgPSBNYWNyb0Fzc2VtYmxl
cjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGxpbmtCdWZmZXIubG9jYXRpb25PZihzdHJ1Y3R1
cmVUb0NvbXBhcmUpLCBpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbik7CisgICAgaW5mby5wYXRjaC5k
ZWx0YUNhbGxUb1N0cnVjdENoZWNrID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVu
Q29kZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHN0
cnVjdHVyZUNoZWNrKSk7CiAgICAgCi0gICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TbG93
Q2FzZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaW5mby5jYWxs
UmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihjb2xkUGF0aEJlZ2luKSk7Ci0g
ICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZl
cmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5s
b2NhdGlvbk9mKGRvbmUpKTsKLSAgICBpbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1N0b3JhZ2VM
b2FkID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHByb3BlcnR5U3RvcmFnZUxvYWQp
KTsKKyAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nhc2UgPSBNYWNyb0Fzc2VtYmxlcjo6
ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVm
ZmVyLmxvY2F0aW9uT2YoY29sZFBhdGhCZWdpbikpOworICAgIGluZm8ucGF0Y2guZGVsdGFDYWxs
VG9Eb25lID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGRvbmUpKTsKKyAgICBpbmZv
LnBhdGNoLmRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5j
ZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0
aW9uT2YocHJvcGVydHlTdG9yYWdlTG9hZCkpOwogICAgIAotICAgIGluZm8ucGF0Y2guZGZnLmJh
c2VHUFIgPSBHUFJJbmZvOjpyZWdUMDsKKyAgICBpbmZvLnBhdGNoLmJhc2VHUFIgPSBHUFJJbmZv
OjpyZWdUMDsKIAogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnM7CiAgICAgdXNlZFJlZ2lz
dGVycy5zZXQoR1BSSW5mbzo6cmVnVDApOwpAQCAtNTA3LDM3ICs1MDcsMzcgQEAgQUxXQVlTX0lO
TElORSB2b2lkIFByb3BlcnR5U3R1YkNvbXBpbGF0aQogI2lmIFVTRShKU1ZBTFVFNjQpIC8vIEpT
VkFMVUUgY2FzZXMKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgR2V0QnlJZDoKLSAg
ICAgICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1i
bGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGxp
bmtCdWZmZXIubG9jYXRpb25PZihnZXREaXNwbGFjZW1lbnRMYWJlbCkpOwotICAgICAgICBpbmZv
LnBhdGNoLmRmZy52YWx1ZUdQUiA9IEdQUkluZm86OnJlZ1QwOworICAgICAgICBpbmZvLnBhdGNo
LmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdl
ZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yo
Z2V0RGlzcGxhY2VtZW50TGFiZWwpKTsKKyAgICAgICAgaW5mby5wYXRjaC52YWx1ZUdQUiA9IEdQ
UkluZm86OnJlZ1QwOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFB1dEJ5SWQ6Ci0gICAgICAg
IGluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6
ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVm
ZmVyLmxvY2F0aW9uT2YocHV0RGlzcGxhY2VtZW50TGFiZWwpKTsKLSAgICAgICAgaW5mby5wYXRj
aC5kZmcudmFsdWVHUFIgPSBHUFJJbmZvOjpyZWdUMTsKKyAgICAgICAgaW5mby5wYXRjaC5kZWx0
YUNhbGxUb0xvYWRPclN0b3JlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29k
ZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHB1dERp
c3BsYWNlbWVudExhYmVsKSk7CisgICAgICAgIGluZm8ucGF0Y2gudmFsdWVHUFIgPSBHUFJJbmZv
OjpyZWdUMTsKICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoR1BSSW5mbzo6cmVnVDEpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAjZWxzZSAvLyBKU1ZBTFVFIGNhc2VzCiAgICAgc3dpdGNoICht
X3R5cGUpIHsKICAgICBjYXNlIEdldEJ5SWQ6Ci0gICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRh
Q2FsbFRvVGFnTG9hZE9yU3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5D
b2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZ2V0
RGlzcGxhY2VtZW50TGFiZWwyKSk7Ci0gICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRv
UGF5bG9hZExvYWRPclN0b3JlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29k
ZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGdldERp
c3BsYWNlbWVudExhYmVsMSkpOwotICAgICAgICBpbmZvLnBhdGNoLmRmZy52YWx1ZUdQUiA9IEdQ
UkluZm86OnJlZ1QwOwotICAgICAgICBpbmZvLnBhdGNoLmRmZy52YWx1ZVRhZ0dQUiA9IEdQUklu
Zm86OnJlZ1QxOworICAgICAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUg
PSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVy
bkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZ2V0RGlzcGxhY2VtZW50TGFiZWwyKSk7
CisgICAgICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUgPSBNYWNy
b0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0
aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZ2V0RGlzcGxhY2VtZW50TGFiZWwxKSk7CisgICAg
ICAgIGluZm8ucGF0Y2gudmFsdWVHUFIgPSBHUFJJbmZvOjpyZWdUMDsKKyAgICAgICAgaW5mby5w
YXRjaC52YWx1ZVRhZ0dQUiA9IEdQUkluZm86OnJlZ1QxOwogICAgICAgICB1c2VkUmVnaXN0ZXJz
LnNldChHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHV0QnlJZDoK
LSAgICAgICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSA9IE1hY3Jv
QXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRp
b24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihwdXREaXNwbGFjZW1lbnRMYWJlbDIpKTsKLSAgICAg
ICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUgPSBNYWNyb0Fz
c2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9u
LCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHV0RGlzcGxhY2VtZW50TGFiZWwxKSk7Ci0gICAgICAg
IGluZm8ucGF0Y2guZGZnLnZhbHVlR1BSID0gR1BSSW5mbzo6cmVnVDI7Ci0gICAgICAgIGluZm8u
cGF0Y2guZGZnLnZhbHVlVGFnR1BSID0gR1BSSW5mbzo6cmVnVDM7CisgICAgICAgIGluZm8ucGF0
Y2guZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNl
QmV0d2VlbkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRp
b25PZihwdXREaXNwbGFjZW1lbnRMYWJlbDIpKTsKKyAgICAgICAgaW5mby5wYXRjaC5kZWx0YUNh
bGxUb1BheWxvYWRMb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2Vl
bkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihw
dXREaXNwbGFjZW1lbnRMYWJlbDEpKTsKKyAgICAgICAgaW5mby5wYXRjaC52YWx1ZUdQUiA9IEdQ
UkluZm86OnJlZ1QyOworICAgICAgICBpbmZvLnBhdGNoLnZhbHVlVGFnR1BSID0gR1BSSW5mbzo6
cmVnVDM7CiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KEdQUkluZm86OnJlZ1QyKTsKICAgICAg
ICAgdXNlZFJlZ2lzdGVycy5zZXQoR1BSSW5mbzo6cmVnVDMpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAjZW5kaWYgLy8gSlNWQUxVRSBjYXNlcwogICAgIAotICAgIHVzZWRSZWdpc3RlcnMuY29w
eUluZm8oaW5mby5wYXRjaC5kZmcudXNlZFJlZ2lzdGVycyk7Ci0gICAgaW5mby5wYXRjaC5kZmcu
cmVnaXN0ZXJzRmx1c2hlZCA9IHRydWU7CisgICAgaW5mby5wYXRjaC51c2VkUmVnaXN0ZXJzID0g
dXNlZFJlZ2lzdGVyczsKKyAgICBpbmZvLnBhdGNoLnJlZ2lzdGVyc0ZsdXNoZWQgPSB0cnVlOwog
fQogCiBDb21waWxhdGlvblJlc3VsdCBKSVQ6OnByaXZhdGVDb21waWxlKEpJVENvbXBpbGF0aW9u
RWZmb3J0IGVmZm9ydCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAko
cmV2aXNpb24gMTU3NDgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTYsMjAgKzU2LDIwIEBAIHN0YXRpYyB2b2lkIHJlcGF0Y2hC
eUlkU2VsZkFjY2VzcyhDb2RlQmwKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHViSW5mby5j
YWxsUmV0dXJuTG9jYXRpb24sIHNsb3dQYXRoRnVuY3Rpb24pOwogCiAgICAgLy8gUGF0Y2ggdGhl
IHN0cnVjdHVyZSBjaGVjayAmIHRoZSBvZmZzZXQgb2YgdGhlIGxvYWQuCi0gICAgcmVwYXRjaEJ1
ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9m
ZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNoZWNrSW1tVG9DYWxsKSwg
c3RydWN0dXJlKTsKLSAgICByZXBhdGNoQnVmZmVyLnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZl
KHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5jb252ZXJ0aWJsZUxvYWRBdE9mZnNldChzdHVi
SW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TdG9yYWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zmc2V0
KG9mZnNldCkpOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24uZGF0YUxhYmVsUHRyQXRPZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5k
ZWx0YUNoZWNrSW1tVG9DYWxsKSwgc3RydWN0dXJlKTsKKyAgICByZXBhdGNoQnVmZmVyLnNldExv
YWRJbnN0cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5jb252ZXJ0
aWJsZUxvYWRBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1N0b3JhZ2VMb2FkKSwg
aXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAo
Y29tcGFjdCkKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRl
bHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zm
c2V0KSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2Fs
bFRvTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSk7
CiAgICAgZWxzZQotICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJl
dHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRh
Q2FsbFRvTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0
KSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9j
YXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0xvYWRP
clN0b3JlKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkpOwogI2VsaWYg
VVNFKEpTVkFMVUUzMl82NCkKICAgICBpZiAoY29tcGFjdCkgewotICAgICAgICByZXBhdGNoQnVm
ZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RB
dE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSksIG9m
ZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKLSAgICAgICAgcmVwYXRjaEJ1ZmZl
ci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRP
ZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0b3JlKSwg
b2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0Yo
RW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKKyAgICAgICAgcmVwYXRj
aEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21w
YWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSksIG9m
ZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZl
ci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRP
ZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBvZmZz
ZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOwogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0
YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JT
dG9yZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKLSAgICAgICAgcmVw
YXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwz
MkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9y
ZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSk7CisgICAgICAgIHJl
cGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVs
MzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlKSwgb2Zm
c2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5j
b2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpOworICAgICAgICByZXBhdGNoQnVmZmVy
LnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQo
c3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxh
dGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMTIy
LDE0ICsxMjIsMTQgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKFJlcGF0Y2hCdWZmZQog
ICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGxhY2VXaXRoSnVtcCgKICAgICAgICAgICAgIFJlcGF0
Y2hCdWZmZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MoCiAg
ICAgICAgICAgICAgICAgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbFB0ckF0
T2Zmc2V0KAotICAgICAgICAgICAgICAgICAgICAtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRm
Zy5kZWx0YUNoZWNrSW1tVG9DYWxsKSksCisgICAgICAgICAgICAgICAgICAgIC0oaW50cHRyX3Qp
c3R1YkluZm8ucGF0Y2guZGVsdGFDaGVja0ltbVRvQ2FsbCkpLAogICAgICAgICAgICAgQ29kZUxv
Y2F0aW9uTGFiZWwodGFyZ2V0KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAg
cmVwYXRjaEJ1ZmZlci5yZWxpbmsoCiAgICAgICAgIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bi5qdW1wQXRPZmZzZXQoCi0gICAgICAgICAgICBzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxs
VG9TdHJ1Y3RDaGVjayksCisgICAgICAgICAgICBzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1N0
cnVjdENoZWNrKSwKICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwodGFyZ2V0KSk7CiB9CiAKQEAg
LTE2Nyw3ICsxNjcsNyBAQCBzdGF0aWMgdm9pZCBsaW5rUmVzdG9yZVNjcmF0Y2goTGlua0J1ZmZl
CiAKIHN0YXRpYyB2b2lkIGxpbmtSZXN0b3JlU2NyYXRjaChMaW5rQnVmZmVyJiBwYXRjaEJ1ZmZl
ciwgYm9vbCBuZWVkVG9SZXN0b3JlU2NyYXRjaCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzdWNjZXNzLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBmYWls
LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZmFpbHVyZUNhc2VzKQogewotICAgIGxpbmtSZXN0
b3JlU2NyYXRjaChwYXRjaEJ1ZmZlciwgbmVlZFRvUmVzdG9yZVNjcmF0Y2gsIHN1Y2Nlc3MsIGZh
aWwsIGZhaWx1cmVDYXNlcywgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZz
ZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSksIHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1Ns
b3dDYXNlKSk7CisgICAgbGlua1Jlc3RvcmVTY3JhdGNoKHBhdGNoQnVmZmVyLCBuZWVkVG9SZXN0
b3JlU2NyYXRjaCwgc3VjY2VzcywgZmFpbCwgZmFpbHVyZUNhc2VzLCBzdHViSW5mby5jYWxsUmV0
dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0RvbmUp
LCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRj
aC5kZWx0YUNhbGxUb1Nsb3dDYXNlKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGdlbmVyYXRlUHJvdG9D
aGFpbkFjY2Vzc1N0dWIoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8sIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlTG9jYXRpb25MYWJlbCBzdWNjZXNzTGFi
ZWwsIENvZGVMb2NhdGlvbkxhYmVsIHNsb3dDYXNlTGFiZWwsIFJlZlB0cjxKSVRTdHViUm91dGlu
ZT4mIHN0dWJSb3V0aW5lKQpAQCAtMTc2LDEyICsxNzYsMTIgQEAgc3RhdGljIHZvaWQgZ2VuZXJh
dGVQcm90b0NoYWluQWNjZXNzU3R1YgogCiAgICAgTWFjcm9Bc3NlbWJsZXIgc3R1YkppdDsKICAg
ICAgICAgCi0gICAgR1BSUmVnIGJhc2VHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZv
LnBhdGNoLmRmZy5iYXNlR1BSKTsKKyAgICBHUFJSZWcgYmFzZUdQUiA9IHN0YXRpY19jYXN0PEdQ
UlJlZz4oc3R1YkluZm8ucGF0Y2guYmFzZUdQUik7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAg
ICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRj
aC5kZmcudmFsdWVUYWdHUFIpOworICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSBzdGF0aWNfY2Fz
dDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLnZhbHVlVGFnR1BSKTsKICNlbmRpZgotICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy52YWx1
ZUdQUik7Ci0gICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBSZWdpc3RlclNldChzdHViSW5mby5wYXRj
aC5kZmcudXNlZFJlZ2lzdGVycykuZ2V0RnJlZUdQUigpOworICAgIEdQUlJlZyByZXN1bHRHUFIg
PSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLnZhbHVlR1BSKTsKKyAgICBHUFJS
ZWcgc2NyYXRjaEdQUiA9IHN0dWJJbmZvLnBhdGNoLnVzZWRSZWdpc3RlcnMuZ2V0RnJlZUdQUigp
OwogICAgIGJvb2wgbmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSBmYWxzZTsKICAgICAKICAgICBpZiAo
c2NyYXRjaEdQUiA9PSBJbnZhbGlkR1BSUmVnKSB7CkBAIC0yNTAsMTIgKzI1MCwxMiBAQCBzdGF0
aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAgVk0qIHZtID0gJmV4ZWMt
PnZtKCk7CiAgICAgCiAgICAgaWYgKGlzSlNBcnJheShiYXNlVmFsdWUpICYmIHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7Ci0gICAgICAgIEdQUlJlZyBiYXNl
R1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcuYmFzZUdQUik7Cisg
ICAgICAgIEdQUlJlZyBiYXNlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRj
aC5iYXNlR1BSKTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBHUFJSZWcgcmVzdWx0
VGFnR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcudmFsdWVUYWdH
UFIpOworICAgICAgICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihz
dHViSW5mby5wYXRjaC52YWx1ZVRhZ0dQUik7CiAjZW5kaWYKLSAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLnZhbHVlR1BSKTsK
LSAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBSZWdpc3RlclNldChzdHViSW5mby5wYXRjaC5k
ZmcudXNlZFJlZ2lzdGVycykuZ2V0RnJlZUdQUigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC52YWx1ZUdQUik7CisgICAgICAg
IEdQUlJlZyBzY3JhdGNoR1BSID0gc3R1YkluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycy5nZXRGcmVl
R1BSKCk7CiAgICAgICAgIGJvb2wgbmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSBmYWxzZTsKICAgICAg
ICAgCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyIHN0dWJKaXQ7CkBAIC0zMDAsNyArMzAwLDcgQEAg
c3RhdGljIGJvb2wgdHJ5Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0ZSogZQogICAgICAgICAgICAgcGF0
Y2hCdWZmZXIsCiAgICAgICAgICAgICAoIkRGRyBHZXRCeUlkIGFycmF5IGxlbmd0aCBzdHViIGZv
ciAlcywgcmV0dXJuIHBvaW50ICVwIiwKICAgICAgICAgICAgICAgICB0b0NTdHJpbmcoKmV4ZWMt
PmNvZGVCbG9jaygpKS5kYXRhKCksIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0
T2Zmc2V0KAotICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxs
VG9Eb25lKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgICAgICAgICAgICAgIHN0dWJJ
bmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAg
ICAKICAgICAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAgICAg
ICAgIHJlcGxhY2VXaXRoSnVtcChyZXBhdGNoQnVmZmVyLCBzdHViSW5mbywgc3R1YkluZm8uc3R1
YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOwpAQCAtMzQ4LDcgKzM0OCw3IEBAIHN0YXRpYyBib29s
IHRyeUNhY2hlR2V0QnlJRChFeGVjU3RhdGUqIGUKIAogICAgIFN0cnVjdHVyZUNoYWluKiBwcm90
b3R5cGVDaGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYyk7CiAgICAgCi0gICAg
Z2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1YihleGVjLCBzdHViSW5mbywgcHJvdG90eXBlQ2hh
aW4sIGNvdW50LCBvZmZzZXQsIHN0cnVjdHVyZSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSksIHN0dWJJ
bmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5k
ZWx0YUNhbGxUb1Nsb3dDYXNlKSwgc3R1YkluZm8uc3R1YlJvdXRpbmUpOworICAgIGdlbmVyYXRl
UHJvdG9DaGFpbkFjY2Vzc1N0dWIoZXhlYywgc3R1YkluZm8sIHByb3RvdHlwZUNoYWluLCBjb3Vu
dCwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0
T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSksIHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nh
c2UpLCBzdHViSW5mby5zdHViUm91dGluZSk7CiAgICAgCiAgICAgUmVwYXRjaEJ1ZmZlciByZXBh
dGNoQnVmZmVyKGNvZGVCbG9jayk7CiAgICAgcmVwbGFjZVdpdGhKdW1wKHJlcGF0Y2hCdWZmZXIs
IHN0dWJJbmZvLCBzdHViSW5mby5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CkBAIC0zNzIs
NyArMzcyLDcgQEAgc3RhdGljIGJvb2wgZ2V0UG9seW1vcnBoaWNTdHJ1Y3R1cmVMaXN0KAogICAg
IFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdComIHBvbHltb3JwaGljU3RydWN0dXJlTGlz
dCwgaW50JiBsaXN0SW5kZXgsCiAgICAgQ29kZUxvY2F0aW9uTGFiZWwmIHNsb3dDYXNlKQogewot
ICAgIHNsb3dDYXNlID0gc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQo
c3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU2xvd0Nhc2UpOworICAgIHNsb3dDYXNlID0g
c3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2gu
ZGVsdGFDYWxsVG9TbG93Q2FzZSk7CiAgICAgCiAgICAgaWYgKHN0dWJJbmZvLmFjY2Vzc1R5cGUg
PT0gYWNjZXNzX3Vuc2V0KSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFzdHViSW5mby5zdHVi
Um91dGluZSk7CkBAIC00MTIsNyArNDEyLDcgQEAgc3RhdGljIHZvaWQgcGF0Y2hKdW1wVG9HZXRC
eUlkU3R1YihDb2RlQgogICAgIGlmIChzdHViSW5mby51LmdldEJ5SWRTZWxmTGlzdC5kaWRTZWxm
UGF0Y2hpbmcpIHsKICAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoCiAgICAgICAgICAgICBz
dHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uanVtcEF0T2Zmc2V0KAotICAgICAgICAgICAgICAg
IHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1N0cnVjdENoZWNrKSwKKyAgICAgICAgICAg
ICAgICBzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1N0cnVjdENoZWNrKSwKICAgICAgICAgICAg
IENvZGVMb2NhdGlvbkxhYmVsKHN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC00MzMsNyArNDMzLDcgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRH
ZXRCeUlETGlzdChFeGVjU3RhdAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwt
PnN0cnVjdHVyZSgpOwogICAgIAogICAgIGlmIChzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVl
KSB7Ci0gICAgICAgIGlmICghc3R1YkluZm8ucGF0Y2guZGZnLnJlZ2lzdGVyc0ZsdXNoZWQpIHsK
KyAgICAgICAgaWYgKCFzdHViSW5mby5wYXRjaC5yZWdpc3RlcnNGbHVzaGVkKSB7CiAgICAgICAg
ICAgICAvLyBXZSBjYW5ub3QgZG8gYXMgbXVjaCBpbmxpbmUgY2FjaGluZyBpZiB0aGUgcmVnaXN0
ZXJzIHdlcmUgbm90IGZsdXNoZWQgcHJpb3IgdG8gdGhpcyBHZXRCeUlkLiBJbiBwYXJ0aWN1bGFy
LAogICAgICAgICAgICAgLy8gbm9uLVZhbHVlIGNhY2hlZCBwcm9wZXJ0aWVzIHJlcXVpcmUgcGxh
bnRpbmcgY2FsbHMsIHdoaWNoIHJlcXVpcmVzIHJlZ2lzdGVycyB0byBoYXZlIGJlZW4gZmx1c2hl
ZC4gVGh1cywKICAgICAgICAgICAgIC8vIGlmIHJlZ2lzdGVycyB3ZXJlIG5vdCBmbHVzaGVkLCBk
b24ndCBkbyBub24tVmFsdWUgY2FjaGluZy4KQEAgLTQ1MCwxMiArNDUwLDEyIEBAIHN0YXRpYyBi
b29sIHRyeUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXQKICAgICAgICAgCiAgICAgICAgIHN0dWJJ
bmZvLnUuZ2V0QnlJZFNlbGZMaXN0Lmxpc3RTaXplKys7CiAgICAgICAgIAotICAgICAgICBHUFJS
ZWcgYmFzZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLmJhc2VH
UFIpOworICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1Yklu
Zm8ucGF0Y2guYmFzZUdQUik7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgR1BSUmVn
IHJlc3VsdFRhZ0dQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLnZh
bHVlVGFnR1BSKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHN0YXRpY19jYXN0PEdQ
UlJlZz4oc3R1YkluZm8ucGF0Y2gudmFsdWVUYWdHUFIpOwogI2VuZGlmCi0gICAgICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy52YWx1
ZUdQUik7Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gUmVnaXN0ZXJTZXQoc3R1YkluZm8u
cGF0Y2guZGZnLnVzZWRSZWdpc3RlcnMpLmdldEZyZWVHUFIoKTsKKyAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2gudmFsdWVHUFIpOwor
ICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHN0dWJJbmZvLnBhdGNoLnVzZWRSZWdpc3RlcnMu
Z2V0RnJlZUdQUigpOwogICAgICAgICAKICAgICAgICAgQ0NhbGxIZWxwZXJzIHN0dWJKaXQodm0s
IGNvZGVCbG9jayk7CiAgICAgICAgIApAQCAtNTQ3LDcgKzU0Nyw3IEBAIHN0YXRpYyBib29sIHRy
eUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXQKICAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cigqdm0sICZzdHViSml0LCBjb2RlQmxvY2spOwogICAgICAgICAKICAgICAgICAgcGF0Y2hCdWZm
ZXIubGluayh3cm9uZ1N0cnVjdCwgc2xvd0Nhc2UpOwotICAgICAgICBwYXRjaEJ1ZmZlci5saW5r
KHN1Y2Nlc3MsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJ
bmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpKTsKKyAgICAgICAgcGF0Y2hCdWZmZXIubGlu
ayhzdWNjZXNzLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHVi
SW5mby5wYXRjaC5kZWx0YUNhbGxUb0RvbmUpKTsKICAgICAgICAgaWYgKCFpc0RpcmVjdCkgewog
ICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb25DYWxsLCBvcGVyYXRpb25GdW5j
dGlvbik7CiAgICAgICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGhhbmRsZXJDYWxsLCBsb29rdXBF
eGNlcHRpb25IYW5kbGVyKTsKQEAgLTU1OSw3ICs1NTksNyBAQCBzdGF0aWMgYm9vbCB0cnlCdWls
ZEdldEJ5SURMaXN0KEV4ZWNTdGF0CiAgICAgICAgICAgICAgICAgICAgIHBhdGNoQnVmZmVyLAog
ICAgICAgICAgICAgICAgICAgICAoIkRGRyBHZXRCeUlkIHBvbHltb3JwaGljIGxpc3QgYWNjZXNz
IGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwKICAgICAgICAgICAgICAgICAgICAgIHRvQ1N0cmlu
ZygqZXhlYy0+Y29kZUJsb2NrKCkpLmRhdGEoKSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LmxhYmVsQXRPZmZzZXQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2gu
ZGZnLmRlbHRhQ2FsbFRvRG9uZSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSkpLAogICAgICAgICAgICAgICAgICp2bSwKICAgICAgICAgICAgICAgICBjb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLAogICAgICAgICAgICAgICAgIHNsb3QuaXNDYWNoZWFibGVH
ZXR0ZXIoKSB8fCBzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkpOwpAQCAtNTkwLDcgKzU5MCw3IEBA
IHN0YXRpYyBib29sIHRyeUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXQKICAgICAKICAgICBSZWZQ
dHI8SklUU3R1YlJvdXRpbmU+IHN0dWJSb3V0aW5lOwogICAgIAotICAgIGdlbmVyYXRlUHJvdG9D
aGFpbkFjY2Vzc1N0dWIoZXhlYywgc3R1YkluZm8sIHByb3RvdHlwZUNoYWluLCBjb3VudCwgb2Zm
c2V0LCBzdHJ1Y3R1cmUsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0
KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpLCBzbG93Q2FzZSwgc3R1YlJvdXRp
bmUpOworICAgIGdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIoZXhlYywgc3R1YkluZm8sIHBy
b3RvdHlwZUNoYWluLCBjb3VudCwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSks
IHNsb3dDYXNlLCBzdHViUm91dGluZSk7CiAgICAgCiAgICAgcG9seW1vcnBoaWNTdHJ1Y3R1cmVM
aXN0LT5saXN0W2xpc3RJbmRleF0uc2V0KCp2bSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KSwgc3R1YlJvdXRpbmUsIHN0cnVjdHVyZSwgdHJ1ZSk7CiAgICAgCkBAIC02NDQsMTIgKzY0NCwx
MiBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0UmVwbGFjZVN0dWIoCiAgICAgUmVmUHRyPEpJVFN0dWJS
b3V0aW5lPiYgc3R1YlJvdXRpbmUpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAg
R1BSUmVnIGJhc2VHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy5i
YXNlR1BSKTsKKyAgICBHUFJSZWcgYmFzZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1Yklu
Zm8ucGF0Y2guYmFzZUdQUik7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBHUFJSZWcgdmFs
dWVUYWdHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy52YWx1ZVRh
Z0dQUik7CisgICAgR1BSUmVnIHZhbHVlVGFnR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHVi
SW5mby5wYXRjaC52YWx1ZVRhZ0dQUik7CiAjZW5kaWYKLSAgICBHUFJSZWcgdmFsdWVHUFIgPSBz
dGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy52YWx1ZUdQUik7Ci0gICAgR1BS
UmVnIHNjcmF0Y2hHUFIgPSBSZWdpc3RlclNldChzdHViSW5mby5wYXRjaC5kZmcudXNlZFJlZ2lz
dGVycykuZ2V0RnJlZUdQUigpOworICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHN0YXRpY19jYXN0PEdQ
UlJlZz4oc3R1YkluZm8ucGF0Y2gudmFsdWVHUFIpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0g
c3R1YkluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycy5nZXRGcmVlR1BSKCk7CiAgICAgYm9vbCBuZWVk
VG9SZXN0b3JlU2NyYXRjaCA9IGZhbHNlOwogI2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJ
TElORykKICAgICBHUFJSZWcgc2NyYXRjaEdQUjI7CkBAIC03MjAsMTQgKzcyMCwxNCBAQCBzdGF0
aWMgdm9pZCBlbWl0UHV0UmVwbGFjZVN0dWIoCiAgICAgfQogICAgIAogICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoKnZtLCAmc3R1YkppdCwgZXhlYy0+Y29kZUJsb2NrKCkpOwotICAgIHBhdGNo
QnVmZmVyLmxpbmsoc3VjY2Vzcywgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRP
ZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSkpOworICAgIHBhdGNoQnVm
ZmVyLmxpbmsoc3VjY2Vzcywgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZz
ZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9Eb25lKSk7CiAgICAgcGF0Y2hCdWZmZXIubGlu
ayhmYWlsdXJlLCBmYWlsdXJlTGFiZWwpOwogICAgICAgICAgICAgCiAgICAgc3R1YlJvdXRpbmUg
PSBGSU5BTElaRV9DT0RFX0ZPUl9ERkdfU1RVQigKICAgICAgICAgcGF0Y2hCdWZmZXIsCiAgICAg
ICAgICgiREZHIFB1dEJ5SWQgcmVwbGFjZSBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwK
ICAgICAgICAgICAgIHRvQ1N0cmluZygqZXhlYy0+Y29kZUJsb2NrKCkpLmRhdGEoKSwgc3R1Yklu
Zm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoCi0gICAgICAgICAgICAgICAgc3R1
YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwor
ICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkpOwogfQogCiBzdGF0aWMgdm9pZCBlbWl0UHV0VHJhbnNpdGlvblN0dWIoCkBA
IC03NDUsMTMgKzc0NSwxMyBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0VHJhbnNpdGlvblN0dWIoCiB7
CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAKLSAgICBHUFJSZWcgYmFzZUdQUiA9IHN0YXRp
Y19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLmJhc2VHUFIpOworICAgIEdQUlJlZyBi
YXNlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5iYXNlR1BSKTsKICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIEdQUlJlZyB2YWx1ZVRhZ0dQUiA9IHN0YXRpY19jYXN0
PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLnZhbHVlVGFnR1BSKTsKKyAgICBHUFJSZWcgdmFs
dWVUYWdHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLnZhbHVlVGFnR1BS
KTsKICNlbmRpZgotICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1
YkluZm8ucGF0Y2guZGZnLnZhbHVlR1BSKTsKKyAgICBHUFJSZWcgdmFsdWVHUFIgPSBzdGF0aWNf
Y2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLnZhbHVlR1BSKTsKICAgICAKLSAgICBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnBhdGNoLmRmZy51c2VkUmVnaXN0
ZXJzKTsKKyAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnBh
dGNoLnVzZWRSZWdpc3RlcnMpOwogICAgIGFsbG9jYXRvci5sb2NrKGJhc2VHUFIpOwogI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCiAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVUYWdHUFIpOwpAQCAtOTEx
LDE0ICs5MTEsMTQgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFRyYW5zaXRpb25TdHViKAogICAgIH0K
ICAgICAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgJnN0dWJKaXQsIGV4ZWMtPmNv
ZGVCbG9jaygpKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKHN1Y2Nlc3MsIHN0dWJJbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxU
b0RvbmUpKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKHN1Y2Nlc3MsIHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSkp
OwogICAgIGlmIChhbGxvY2F0b3IuZGlkUmV1c2VSZWdpc3RlcnMoKSkKICAgICAgICAgcGF0Y2hC
dWZmZXIubGluayhmYWlsdXJlLCBmYWlsdXJlTGFiZWwpOwogICAgIGVsc2UKICAgICAgICAgcGF0
Y2hCdWZmZXIubGluayhmYWlsdXJlQ2FzZXMsIGZhaWx1cmVMYWJlbCk7CiAgICAgaWYgKHN0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFj
aXR5KCkpIHsKICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb25DYWxsLCBvcGVyYXRp
b25SZWFsbG9jYXRlU3RvcmFnZUFuZEZpbmlzaFB1dCk7Ci0gICAgICAgIHBhdGNoQnVmZmVyLmxp
bmsoc3VjY2Vzc0luU2xvd1BhdGgsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0
T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpKTsKKyAgICAgICAgcGF0
Y2hCdWZmZXIubGluayhzdWNjZXNzSW5TbG93UGF0aCwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0
aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9Eb25lKSk7CiAgICAg
fQogICAgIAogICAgIHN0dWJSb3V0aW5lID0KQEAgLTkyOSw3ICs5MjksNyBAQCBzdGF0aWMgdm9p
ZCBlbWl0UHV0VHJhbnNpdGlvblN0dWIoCiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkg
PyAicmVhbGxvY2F0aW5nICIgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgb2xkU3RydWN0dXJl
LCBzdHJ1Y3R1cmUsCiAgICAgICAgICAgICAgICAgICAgIHRvQ1N0cmluZygqZXhlYy0+Y29kZUJs
b2NrKCkpLmRhdGEoKSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQo
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9E
b25lKS5leGVjdXRhYmxlQWRkcmVzcygpKSksCisgICAgICAgICAgICAgICAgICAgICAgICBzdHVi
SW5mby5wYXRjaC5kZWx0YUNhbGxUb0RvbmUpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSwKICAgICAg
ICAgICAgICp2bSwKICAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFi
bGUoKSwKICAgICAgICAgICAgIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBvbGRT
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksCkBAIC05NzgsMTMgKzk3OCwxMyBAQCBzdGF0
aWMgYm9vbCB0cnlDYWNoZVB1dEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAgICAgICAgICBlbWl0UHV0
VHJhbnNpdGlvblN0dWIoCiAgICAgICAgICAgICAgICAgZXhlYywgYmFzZVZhbHVlLCBpZGVudCwg
c2xvdCwgc3R1YkluZm8sIHB1dEtpbmQsCiAgICAgICAgICAgICAgICAgc3RydWN0dXJlLCBvbGRT
dHJ1Y3R1cmUsIHByb3RvdHlwZUNoYWluLAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxU
b1Nsb3dDYXNlKSwKKyAgICAgICAgICAgICAgICBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24u
bGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1Nsb3dDYXNlKSwKICAgICAg
ICAgICAgICAgICBzdHViSW5mby5zdHViUm91dGluZSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwogICAgICAgICAgICAg
cmVwYXRjaEJ1ZmZlci5yZWxpbmsoCiAgICAgICAgICAgICAgICAgc3R1YkluZm8uY2FsbFJldHVy
bkxvY2F0aW9uLmp1bXBBdE9mZnNldCgKLSAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8ucGF0
Y2guZGZnLmRlbHRhQ2FsbFRvU3RydWN0Q2hlY2spLAorICAgICAgICAgICAgICAgICAgICBzdHVi
SW5mby5wYXRjaC5kZWx0YUNhbGxUb1N0cnVjdENoZWNrKSwKICAgICAgICAgICAgICAgICBDb2Rl
TG9jYXRpb25MYWJlbChzdHViSW5mby5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwogICAg
ICAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LCBhcHByb3ByaWF0ZUxpc3RCdWlsZGluZ1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7
CiAgICAgICAgICAgICAKQEAgLTEwNTgsNyArMTA1OCw3IEBAIHN0YXRpYyBib29sIHRyeUJ1aWxk
UHV0QnlJZExpc3QoRXhlY1N0YXQKICAgICAgICAgICAgIC8vIFdlJ3JlIG5vdyBjb21taXR0ZWQg
dG8gY3JlYXRpbmcgdGhlIHN0dWIuIE1vZ3JpZnkgdGhlIG1ldGEtZGF0YSBhY2NvcmRpbmdseS4K
ICAgICAgICAgICAgIGxpc3QgPSBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0Ojpmcm9tKAogICAgICAg
ICAgICAgICAgIHB1dEtpbmQsIHN0dWJJbmZvLAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNh
bGxUb1Nsb3dDYXNlKSk7CisgICAgICAgICAgICAgICAgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0
aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93Q2FzZSkpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBlbWl0UHV0VHJhbnNpdGlvblN0dWIoCiAgICAgICAg
ICAgICAgICAgZXhlYywgYmFzZVZhbHVlLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHN0dWJJbmZvLCBw
dXRLaW5kLApAQCAtMTA3NSw3ICsxMDc1LDcgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRQdXRCeUlk
TGlzdChFeGVjU3RhdAogICAgICAgICAgICAgLy8gV2UncmUgbm93IGNvbW1pdHRlZCB0byBjcmVh
dGluZyB0aGUgc3R1Yi4gTW9ncmlmeSB0aGUgbWV0YS1kYXRhIGFjY29yZGluZ2x5LgogICAgICAg
ICAgICAgbGlzdCA9IFBvbHltb3JwaGljUHV0QnlJZExpc3Q6OmZyb20oCiAgICAgICAgICAgICAg
ICAgcHV0S2luZCwgc3R1YkluZm8sCi0gICAgICAgICAgICAgICAgc3R1YkluZm8uY2FsbFJldHVy
bkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU2xv
d0Nhc2UpKTsKKyAgICAgICAgICAgICAgICBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFi
ZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1Nsb3dDYXNlKSk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGVtaXRQdXRSZXBsYWNlU3R1YigKICAgICAgICAgICAgICAgICBl
eGVjLCBiYXNlVmFsdWUsIHByb3BlcnR5TmFtZSwgc2xvdCwgc3R1YkluZm8sIHB1dEtpbmQsCkBA
IC0xMDg4LDcgKzEwODgsNyBAQCBzdGF0aWMgYm9vbCB0cnlCdWlsZFB1dEJ5SWRMaXN0KEV4ZWNT
dGF0CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1
ZmZlcihjb2RlQmxvY2spOwotICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHViSW5mby5j
YWxsUmV0dXJuTG9jYXRpb24uanVtcEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNh
bGxUb1N0cnVjdENoZWNrKSwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YlJvdXRpbmUtPmNvZGUoKS5j
b2RlKCkpKTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8uY2FsbFJldHVy
bkxvY2F0aW9uLmp1bXBBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1N0cnVjdENo
ZWNrKSwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKICAg
ICAgICAgCiAgICAgICAgIGlmIChsaXN0LT5pc0Z1bGwoKSkKICAgICAgICAgICAgIHJlcGF0Y2hC
dWZmZXIucmVsaW5rKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgYXBwcm9wcmlhdGVHZW5l
cmljUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKQEAgLTExMzksNyArMTEzOSw3IEBA
IHN0YXRpYyBib29sIHRyeVJlcGF0Y2hJbigKICAgICAgICAgcG9seW1vcnBoaWNTdHJ1Y3R1cmVM
aXN0ID0gbmV3IFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCgpOwogICAgICAgICBzdHVi
SW5mby5pbml0SW5MaXN0KHBvbHltb3JwaGljU3RydWN0dXJlTGlzdCwgMCk7CiAgICAgICAgIHNs
b3dDYXNlTGFiZWwgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldCgK
LSAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1Nsb3dDYXNlKTsKKyAg
ICAgICAgICAgIHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nhc2UpOwogICAgICAgICBs
aXN0SW5kZXggPSAwOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0dWJJ
bmZvLmFjY2Vzc1R5cGUgPT0gYWNjZXNzX2luX2xpc3QpOwpAQCAtMTE1NSw5ICsxMTU1LDkgQEAg
c3RhdGljIGJvb2wgdHJ5UmVwYXRjaEluKAogICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gc3R1
YlJvdXRpbmU7CiAgICAgCiAgICAgewotICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHN0YXRpY19j
YXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLmJhc2VHUFIpOwotICAgICAgICBHUFJSZWcg
cmVzdWx0R1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcudmFsdWVH
UFIpOwotICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IFJlZ2lzdGVyU2V0KHN0dWJJbmZvLnBh
dGNoLmRmZy51c2VkUmVnaXN0ZXJzKS5nZXRGcmVlR1BSKCk7CisgICAgICAgIEdQUlJlZyBiYXNl
R1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5iYXNlR1BSKTsKKyAgICAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2gu
dmFsdWVHUFIpOworICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHN0dWJJbmZvLnBhdGNoLnVz
ZWRSZWdpc3RlcnMuZ2V0RnJlZUdQUigpOwogICAgICAgICAKICAgICAgICAgQ0NhbGxIZWxwZXJz
IHN0dWJKaXQodm0pOwogICAgICAgICAKQEAgLTEzNjUsMjMgKzEzNjUsMjMgQEAgdm9pZCBsaW5r
Q2xvc3VyZUNhbGwoRXhlY1N0YXRlKiBleGVjLCBDYQogdm9pZCByZXNldEdldEJ5SUQoUmVwYXRj
aEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlciwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewog
ICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgb3Bl
cmF0aW9uR2V0QnlJZE9wdGltaXplKTsKLSAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgc3Ry
dWN0dXJlTGFiZWwgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsUHRyQXRP
ZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDaGVja0ltbVRvQ2FsbCk7
CisgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIHN0cnVjdHVyZUxhYmVsID0gc3R1YkluZm8u
Y2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KC0oaW50cHRyX3Qpc3R1Yklu
Zm8ucGF0Y2guZGVsdGFDaGVja0ltbVRvQ2FsbCk7CiAgICAgaWYgKE1hY3JvQXNzZW1ibGVyOjpj
YW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgpKSB7CiAgICAgICAgIHJl
cGF0Y2hCdWZmZXIucmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2hQdHJXaXRo
UGF0Y2goCiAgICAgICAgICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNo
UHRyV2l0aFBhdGNoT25BZGRyZXNzKHN0cnVjdHVyZUxhYmVsKSwKICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKAotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1hY3JvQXNz
ZW1ibGVyOjpSZWdpc3RlcklEPihzdHViSW5mby5wYXRjaC5kZmcuYmFzZUdQUiksCisgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ+KHN0dWJJbmZv
LnBhdGNoLmJhc2VHUFIpLAogICAgICAgICAgICAgICAgIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLAogICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odW51c2VkUG9pbnRlcikp
OwogICAgIH0KICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3RydWN0dXJlTGFiZWwsIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHVudXNlZFBvaW50ZXIpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQot
ICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0
YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0xvYWRP
clN0b3JlKSwgMCk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFD
YWxsVG9Mb2FkT3JTdG9yZSksIDApOwogI2Vsc2UKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2go
c3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHVi
SW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSksIDApOwotICAgIHJlcGF0
Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29t
cGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JT
dG9yZSksIDApOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2Fs
bFRvVGFnTG9hZE9yU3RvcmUpLCAwKTsKKyAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1Yklu
Zm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5w
YXRjaC5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9yZSksIDApOwogI2VuZGlmCi0gICAgcmVw
YXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmp1bXBBdE9mZnNl
dChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TdHJ1Y3RDaGVjayksIHN0dWJJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNh
bGxUb1Nsb3dDYXNlKSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8uY2FsbFJl
dHVybkxvY2F0aW9uLmp1bXBBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1N0cnVj
dENoZWNrKSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1Yklu
Zm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93Q2FzZSkpOwogfQogCiB2b2lkIHJlc2V0UHV0QnlJRChS
ZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8p
CkBAIC0xMzk5LDI4ICsxMzk5LDI4IEBAIHZvaWQgcmVzZXRQdXRCeUlEKFJlcGF0Y2hCdWZmZXIm
IHJlcGF0Y2gKICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeUlkRGly
ZWN0Tm9uU3RyaWN0T3B0aW1pemU7CiAgICAgfQogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKHN0
dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgb3B0aW1pemVkRnVuY3Rpb24pOwotICAgIENvZGVM
b2NhdGlvbkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVMYWJlbCA9IHN0dWJJbmZvLmNhbGxSZXR1cm5M
b2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRm
Zy5kZWx0YUNoZWNrSW1tVG9DYWxsKTsKKyAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgc3Ry
dWN0dXJlTGFiZWwgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsUHRyQXRP
ZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsKTsKICAg
ICBpZiAoTWFjcm9Bc3NlbWJsZXI6OmNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0
aFBhdGNoKCkpIHsKICAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXZlcnRKdW1wUmVwbGFjZW1lbnRU
b1BhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgKICAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXI6
OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3Moc3RydWN0dXJlTGFi
ZWwpLAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoCi0gICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ+KHN0dWJJbmZvLnBhdGNo
LmRmZy5iYXNlR1BSKSwKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxl
cjo6UmVnaXN0ZXJJRD4oc3R1YkluZm8ucGF0Y2guYmFzZUdQUiksCiAgICAgICAgICAgICAgICAg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCiAgICAgICAgICAgICByZWludGVycHJldF9jYXN0
PHZvaWQqPih1bnVzZWRQb2ludGVyKSk7CiAgICAgfQogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRj
aChzdHJ1Y3R1cmVMYWJlbCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odW51c2VkUG9pbnRlcikp
OwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZv
LmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRm
Zy5kZWx0YUNhbGxUb0xvYWRPclN0b3JlKSwgMCk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNo
KHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZv
LnBhdGNoLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCAwKTsKICNlbHNlCi0gICAgcmVwYXRjaEJ1
ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zm
c2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlKSwgMCk7Ci0g
ICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRh
TGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRMb2Fk
T3JTdG9yZSksIDApOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0
dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxU
b1RhZ0xvYWRPclN0b3JlKSwgMCk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZv
LmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRl
bHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0b3JlKSwgMCk7CiAjZW5kaWYKLSAgICByZXBhdGNoQnVm
ZmVyLnJlbGluayhzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uanVtcEF0T2Zmc2V0KHN0dWJJ
bmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1N0cnVjdENoZWNrKSwgc3R1YkluZm8uY2FsbFJldHVy
bkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU2xv
d0Nhc2UpKTsKKyAgICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHViSW5mby5jYWxsUmV0dXJuTG9j
YXRpb24uanVtcEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU3RydWN0Q2hlY2sp
LCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRj
aC5kZWx0YUNhbGxUb1Nsb3dDYXNlKSk7CiB9CiAKIHZvaWQgcmVzZXRJbihSZXBhdGNoQnVmZmVy
JiByZXBhdGNoQnVmZmVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0gICAgcmVw
YXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8uaG90UGF0aEJlZ2luLmp1bXBBdE9mZnNldCgwKSwg
c3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2gu
ZGZnLmRlbHRhQ2FsbFRvU2xvd0Nhc2UpKTsKKyAgICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHVi
SW5mby5ob3RQYXRoQmVnaW4uanVtcEF0T2Zmc2V0KDApLCBzdHViSW5mby5jYWxsUmV0dXJuTG9j
YXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1Nsb3dDYXNlKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214335</attachid>
            <date>2013-10-15 19:53:27 -0700</date>
            <delta_ts>2013-10-15 21:00:15 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>40869</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3NDgwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDEzLTEwLTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
R2V0IHJpZCBvZiB0aGUgU3RydWN0dXJlU3R1YkluZm86OnBhdGNoIHVuaW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI4NzcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEp1c3Qgc2ltcGxp
ZnlpbmcgY29kZSBieSBnZXR0aW5nIHJpZCBvZiBkYXRhIHN0cnVjdHVyZXMgdGhhdCBhaW4ndCB1
c2VkIG5vIG1vcmUuCisgICAgICAgIAorICAgICAgICBOb3RlIHRoYXQgSSByZXBsYWNlIHRoZSBw
YXRjaCB1bmlvbiB3aXRoIGEgcGF0Y2ggc3RydWN0LiBUaGlzIG1lYW5zIHdlIHNheSB0aGluZ3Mg
bGlrZQorICAgICAgICBzdHViSW5mby5wYXRjaC52YWx1ZUdQUiBpbnN0ZWFkIG9mIHN0dWJJbmZv
LnZhbHVlR1BSLiBJIHRoaW5rIHRoYXQgdGhpcyBleHRyYQorICAgICAgICBlbmNhcHN1bGF0aW9u
IG1ha2VzIHRoZSBjb2RlIG1vcmUgcmVhZGFibGU6IHRoZSBwYXRjaCBzdHJ1Y3QgY29udGFpbnMg
anVzdCB0aG9zZSB0aGluZ3MKKyAgICAgICAgdGhhdCB5b3UgbmVlZCB0byBrbm93IHRvIHBlcmZv
cm0gcGF0Y2hpbmcuCisKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgor
ICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklU
Q29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm86OmNvcHlUb1N0dWJJbmZvKToKKyAgICAgICAgKiBq
aXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnJlcGF0Y2hCeUlkU2VsZkFjY2Vzcyk6Cisg
ICAgICAgIChKU0M6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6OmxpbmtSZXN0b3Jl
U2NyYXRjaCk6CisgICAgICAgIChKU0M6OmdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIpOgor
ICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAoSlNDOjpnZXRQb2x5bW9y
cGhpY1N0cnVjdHVyZUxpc3QpOgorICAgICAgICAoSlNDOjpwYXRjaEp1bXBUb0dldEJ5SWRTdHVi
KToKKyAgICAgICAgKEpTQzo6dHJ5QnVpbGRHZXRCeUlETGlzdCk6CisgICAgICAgIChKU0M6OmVt
aXRQdXRSZXBsYWNlU3R1Yik6CisgICAgICAgIChKU0M6OmVtaXRQdXRUcmFuc2l0aW9uU3R1Yik6
CisgICAgICAgIChKU0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnRyeUJ1aWxk
UHV0QnlJZExpc3QpOgorICAgICAgICAoSlNDOjp0cnlSZXBhdGNoSW4pOgorICAgICAgICAoSlND
OjpyZXNldEdldEJ5SUQpOgorICAgICAgICAoSlNDOjpyZXNldFB1dEJ5SUQpOgorICAgICAgICAo
SlNDOjpyZXNldEluKToKKwogMjAxMy0xMC0xNSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIEJhc2VsaW5lIEpJVCBzaG91bGQgdXNlIHRoZSBERkcgR2V0QnlJZCBJ
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmgJKHJldmlzaW9uIDE1NzQ4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsNTcgKzIy
MywyNSBAQCBzdHJ1Y3QgU3RydWN0dXJlU3R1YkluZm8gewogCiAgICAgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luOwogCi0gICAgdW5pb24gewotICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgaW50
OF90IHJlZ2lzdGVyc0ZsdXNoZWQ7Ci0gICAgICAgICAgICBpbnQ4X3QgYmFzZUdQUjsKKyAgICBz
dHJ1Y3QgeworICAgICAgICBpbnQ4X3QgcmVnaXN0ZXJzRmx1c2hlZDsKKyAgICAgICAgaW50OF90
IGJhc2VHUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgICAgIGludDhfdCB2YWx1
ZVRhZ0dQUjsKLSNlbmRpZgotICAgICAgICAgICAgaW50OF90IHZhbHVlR1BSOwotICAgICAgICAg
ICAgUmVnaXN0ZXJTZXRQT0QgdXNlZFJlZ2lzdGVyczsKLSAgICAgICAgICAgIGludDMyX3QgZGVs
dGFDYWxsVG9Eb25lOwotICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb1N0b3JhZ2VMb2Fk
OwotICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb1N0cnVjdENoZWNrOwotICAgICAgICAg
ICAgaW50MzJfdCBkZWx0YUNhbGxUb1Nsb3dDYXNlOwotICAgICAgICAgICAgaW50MzJfdCBkZWx0
YUNoZWNrSW1tVG9DYWxsOwotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBpbnQzMl90
IGRlbHRhQ2FsbFRvTG9hZE9yU3RvcmU7Ci0jZWxzZQotICAgICAgICAgICAgaW50MzJfdCBkZWx0
YUNhbGxUb1RhZ0xvYWRPclN0b3JlOwotICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb1Bh
eWxvYWRMb2FkT3JTdG9yZTsKLSNlbmRpZgotICAgICAgICB9IGRmZzsKLSAgICAgICAgc3RydWN0
IHsKLSAgICAgICAgICAgIHVuaW9uIHsKLSAgICAgICAgICAgICAgICBzdHJ1Y3QgewotICAgICAg
ICAgICAgICAgICAgICBpbnQxNl90IHN0cnVjdHVyZVRvQ29tcGFyZTsKLSAgICAgICAgICAgICAg
ICAgICAgaW50MTZfdCBzdHJ1Y3R1cmVDaGVjazsKLSAgICAgICAgICAgICAgICAgICAgaW50MTZf
dCBwcm9wZXJ0eVN0b3JhZ2VMb2FkOwotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICAg
ICAgICAgIGludDE2X3QgZGlzcGxhY2VtZW50TGFiZWw7Ci0jZWxzZQotICAgICAgICAgICAgICAg
ICAgICBpbnQxNl90IGRpc3BsYWNlbWVudExhYmVsMTsKLSAgICAgICAgICAgICAgICAgICAgaW50
MTZfdCBkaXNwbGFjZW1lbnRMYWJlbDI7CisgICAgICAgIGludDhfdCB2YWx1ZVRhZ0dQUjsKICNl
bmRpZgotICAgICAgICAgICAgICAgICAgICBpbnQxNl90IHB1dFJlc3VsdDsKLSAgICAgICAgICAg
ICAgICAgICAgaW50MTZfdCBjb2xkUGF0aEJlZ2luOwotICAgICAgICAgICAgICAgIH0gZ2V0Owot
ICAgICAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgICAgIGludDE2X3Qgc3Ry
dWN0dXJlVG9Db21wYXJlOwotICAgICAgICAgICAgICAgICAgICBpbnQxNl90IHByb3BlcnR5U3Rv
cmFnZUxvYWQ7CisgICAgICAgIGludDhfdCB2YWx1ZUdQUjsKKyAgICAgICAgUmVnaXN0ZXJTZXQg
dXNlZFJlZ2lzdGVyczsKKyAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb0RvbmU7CisgICAgICAg
IGludDMyX3QgZGVsdGFDYWxsVG9TdG9yYWdlTG9hZDsKKyAgICAgICAgaW50MzJfdCBkZWx0YUNh
bGxUb1N0cnVjdENoZWNrOworICAgICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvU2xvd0Nhc2U7Cisg
ICAgICAgIGludDMyX3QgZGVsdGFDaGVja0ltbVRvQ2FsbDsKICNpZiBVU0UoSlNWQUxVRTY0KQot
ICAgICAgICAgICAgICAgICAgICBpbnQxNl90IGRpc3BsYWNlbWVudExhYmVsOworICAgICAgICBp
bnQzMl90IGRlbHRhQ2FsbFRvTG9hZE9yU3RvcmU7CiAjZWxzZQotICAgICAgICAgICAgICAgICAg
ICBpbnQxNl90IGRpc3BsYWNlbWVudExhYmVsMTsKLSAgICAgICAgICAgICAgICAgICAgaW50MTZf
dCBkaXNwbGFjZW1lbnRMYWJlbDI7CisgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9UYWdMb2Fk
T3JTdG9yZTsKKyAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9yZTsK
ICNlbmRpZgotICAgICAgICAgICAgICAgIH0gcHV0OwotICAgICAgICAgICAgfSB1OwotICAgICAg
ICAgICAgaW50MTZfdCBtZXRob2RDaGVja1Byb3RvT2JqOwotICAgICAgICAgICAgaW50MTZfdCBt
ZXRob2RDaGVja1Byb3RvU3RydWN0dXJlVG9Db21wYXJlOwotICAgICAgICAgICAgaW50MTZfdCBt
ZXRob2RDaGVja1B1dEZ1bmN0aW9uOwotICAgICAgICB9IGJhc2VsaW5lOwogICAgIH0gcGF0Y2g7
CiAKICAgICB1bmlvbiB7CkBAIC0zMjIsNyArMjkwLDcgQEAgc3RydWN0IFN0cnVjdHVyZVN0dWJJ
bmZvIHsKIAogICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gc3R1YlJvdXRpbmU7CiAgICAgQ29k
ZUxvY2F0aW9uQ2FsbCBjYWxsUmV0dXJuTG9jYXRpb247Ci0gICAgQ29kZUxvY2F0aW9uTGFiZWwg
aG90UGF0aEJlZ2luOworICAgIENvZGVMb2NhdGlvbkxhYmVsIGhvdFBhdGhCZWdpbjsgLy8gRklY
TUU6IFRoaXMgaXMgb25seSB1c2VkIGJ5IERGRyBJbiBJQy4KICAgICBSZWZQdHI8V2F0Y2hwb2lu
dHNPblN0cnVjdHVyZVN0dWJJbmZvPiB3YXRjaHBvaW50czsKIH07CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNTc0ODAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMyLDI2ICsyMzIsMjYgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5r
QnVmZmVyJiBsaW5rQgogICAgICAgICBDb2RlTG9jYXRpb25DYWxsIGNhbGxSZXR1cm5Mb2NhdGlv
biA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9zbG93UGF0
aEdlbmVyYXRvci0+Y2FsbCgpKTsKICAgICAgICAgaW5mby5jb2RlT3JpZ2luID0gbV9wcm9wZXJ0
eUFjY2Vzc2VzW2ldLm1fY29kZU9yaWdpbjsKICAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9jYXRp
b24gPSBjYWxsUmV0dXJuTG9jYXRpb247Ci0gICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2hl
Y2tJbW1Ub0NhbGwgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIobGlua0J1ZmZlci5sb2NhdGlv
bk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3N0cnVjdHVyZUltbSksIGNhbGxSZXR1cm5Mb2Nh
dGlvbik7Ci0gICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU3RydWN0Q2hlY2sgPSBk
aWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxv
Y2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fc3RydWN0dXJlQ2hlY2spKTsKKyAgICAg
ICAgaW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsID0gZGlmZmVyZW5jZUJldHdlZW5Db2Rl
UHRyKGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9zdHJ1Y3R1
cmVJbW0pLCBjYWxsUmV0dXJuTG9jYXRpb24pOworICAgICAgICBpbmZvLnBhdGNoLmRlbHRhQ2Fs
bFRvU3RydWN0Q2hlY2sgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0
aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fc3RydWN0
dXJlQ2hlY2spKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBpbmZvLnBhdGNoLmRmZy5k
ZWx0YUNhbGxUb0xvYWRPclN0b3JlID0gZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGNhbGxSZXR1
cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5t
X2xvYWRPclN0b3JlKSk7CisgICAgICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9Mb2FkT3JTdG9y
ZSA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZm
ZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9sb2FkT3JTdG9yZSkpOwogI2Vs
c2UKLSAgICAgICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSA9IGRp
ZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9j
YXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV90YWdMb2FkT3JTdG9yZSkpOwotICAgICAg
ICBpbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9yZSA9IGRpZmZlcmVu
Y2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25P
ZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9wYXlsb2FkTG9hZE9yU3RvcmUpKTsKKyAgICAgICAg
aW5mby5wYXRjaC5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlID0gZGlmZmVyZW5jZUJldHdlZW5D
b2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1fcHJvcGVy
dHlBY2Nlc3Nlc1tpXS5tX3RhZ0xvYWRPclN0b3JlKSk7CisgICAgICAgIGluZm8ucGF0Y2guZGVs
dGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2Fs
bFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2Vz
W2ldLm1fcGF5bG9hZExvYWRPclN0b3JlKSk7CiAjZW5kaWYKLSAgICAgICAgaW5mby5wYXRjaC5k
ZmcuZGVsdGFDYWxsVG9TbG93Q2FzZSA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0
dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0u
bV9zbG93UGF0aEdlbmVyYXRvci0+bGFiZWwoKSkpOwotICAgICAgICBpbmZvLnBhdGNoLmRmZy5k
ZWx0YUNhbGxUb0RvbmUgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0
aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fZG9uZSkp
OwotICAgICAgICBpbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1N0b3JhZ2VMb2FkID0gZGlmZmVy
ZW5jZUJldHdlZW5Db2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlv
bk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3Byb3BlcnR5U3RvcmFnZUxvYWQpKTsKLSAgICAg
ICAgaW5mby5wYXRjaC5kZmcuYmFzZUdQUiA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX2Jhc2VH
UFI7CisgICAgICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93Q2FzZSA9IGRpZmZlcmVuY2VC
ZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZiht
X3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9zbG93UGF0aEdlbmVyYXRvci0+bGFiZWwoKSkpOworICAg
ICAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0
cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNj
ZXNzZXNbaV0ubV9kb25lKSk7CisgICAgICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9TdG9yYWdl
TG9hZCA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtC
dWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9wcm9wZXJ0eVN0b3JhZ2VM
b2FkKSk7CisgICAgICAgIGluZm8ucGF0Y2guYmFzZUdQUiA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tp
XS5tX2Jhc2VHUFI7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgaW5mby5wYXRjaC5kZmcu
dmFsdWVHUFIgPSBtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV92YWx1ZUdQUjsKKyAgICAgICAgaW5m
by5wYXRjaC52YWx1ZUdQUiA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3ZhbHVlR1BSOwogI2Vs
c2UKLSAgICAgICAgaW5mby5wYXRjaC5kZmcudmFsdWVUYWdHUFIgPSBtX3Byb3BlcnR5QWNjZXNz
ZXNbaV0ubV92YWx1ZVRhZ0dQUjsKLSAgICAgICAgaW5mby5wYXRjaC5kZmcudmFsdWVHUFIgPSBt
X3Byb3BlcnR5QWNjZXNzZXNbaV0ubV92YWx1ZUdQUjsKKyAgICAgICAgaW5mby5wYXRjaC52YWx1
ZVRhZ0dQUiA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3ZhbHVlVGFnR1BSOworICAgICAgICBp
bmZvLnBhdGNoLnZhbHVlR1BSID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fdmFsdWVHUFI7CiAj
ZW5kaWYKLSAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fdXNlZFJlZ2lzdGVycy5jb3B5
SW5mbyhpbmZvLnBhdGNoLmRmZy51c2VkUmVnaXN0ZXJzKTsKLSAgICAgICAgaW5mby5wYXRjaC5k
ZmcucmVnaXN0ZXJzRmx1c2hlZCA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3JlZ2lzdGVyTW9k
ZSA9PSBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hlZDsKKyAgICAgICAgaW5m
by5wYXRjaC51c2VkUmVnaXN0ZXJzID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fdXNlZFJlZ2lz
dGVyczsKKyAgICAgICAgaW5mby5wYXRjaC5yZWdpc3RlcnNGbHVzaGVkID0gbV9wcm9wZXJ0eUFj
Y2Vzc2VzW2ldLm1fcmVnaXN0ZXJNb2RlID09IFByb3BlcnR5QWNjZXNzUmVjb3JkOjpSZWdpc3Rl
cnNGbHVzaGVkOwogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9pbnMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIGluZm8gPSBtX2NvZGVCbG9j
ay0+c3RydWN0dXJlU3R1YkluZm8obV9wcm9wZXJ0eUFjY2Vzc2VzLnNpemUoKSArIGkpOwpAQCAt
MjYwLDExICsyNjAsMTEgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5r
QgogICAgICAgICBpbmZvLmNvZGVPcmlnaW4gPSBtX2luc1tpXS5tX2NvZGVPcmlnaW47CiAgICAg
ICAgIGluZm8uaG90UGF0aEJlZ2luID0ganVtcDsKICAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9j
YXRpb24gPSBjYWxsUmV0dXJuTG9jYXRpb247Ci0gICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRh
Q2FsbFRvU2xvd0Nhc2UgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0
aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9pbnNbaV0ubV9zbG93UGF0aEdlbmVyYXRvci0+
bGFiZWwoKSkpOwotICAgICAgICBpbmZvLnBhdGNoLmRmZy5iYXNlR1BSID0gbV9pbnNbaV0ubV9i
YXNlR1BSOwotICAgICAgICBpbmZvLnBhdGNoLmRmZy52YWx1ZUdQUiA9IG1faW5zW2ldLm1fcmVz
dWx0R1BSOwotICAgICAgICBtX2luc1tpXS5tX3VzZWRSZWdpc3RlcnMuY29weUluZm8oaW5mby5w
YXRjaC5kZmcudXNlZFJlZ2lzdGVycyk7Ci0gICAgICAgIGluZm8ucGF0Y2guZGZnLnJlZ2lzdGVy
c0ZsdXNoZWQgPSBmYWxzZTsKKyAgICAgICAgaW5mby5wYXRjaC5kZWx0YUNhbGxUb1Nsb3dDYXNl
ID0gZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZl
ci5sb2NhdGlvbk9mKG1faW5zW2ldLm1fc2xvd1BhdGhHZW5lcmF0b3ItPmxhYmVsKCkpKTsKKyAg
ICAgICAgaW5mby5wYXRjaC5iYXNlR1BSID0gbV9pbnNbaV0ubV9iYXNlR1BSOworICAgICAgICBp
bmZvLnBhdGNoLnZhbHVlR1BSID0gbV9pbnNbaV0ubV9yZXN1bHRHUFI7CisgICAgICAgIGluZm8u
cGF0Y2gudXNlZFJlZ2lzdGVycyA9IG1faW5zW2ldLm1fdXNlZFJlZ2lzdGVyczsKKyAgICAgICAg
aW5mby5wYXRjaC5yZWdpc3RlcnNGbHVzaGVkID0gZmFsc2U7CiAgICAgfQogICAgIG1fY29kZUJs
b2NrLT5zb3J0U3RydWN0dXJlU3R1YkluZm9zKCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxNTc0ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5MiwxNCArNDkyLDE0IEBAIEFMV0FZU19J
TkxJTkUgdm9pZCBQcm9wZXJ0eVN0dWJDb21waWxhdGkKICAgICBpbmZvLmNvZGVPcmlnaW4gPSBD
b2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpOwogICAgIGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0g
bGlua0J1ZmZlci5sb2NhdGlvbk9mKGNhbGxSZXR1cm5Mb2NhdGlvbik7CiAKLSAgICBpbmZvLnBh
dGNoLmRmZy5kZWx0YUNoZWNrSW1tVG9DYWxsID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VC
ZXR3ZWVuQ29kZVB0cihsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc3RydWN0dXJlVG9Db21wYXJlKSwg
aW5mby5jYWxsUmV0dXJuTG9jYXRpb24pOwotICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRv
U3RydWN0Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGlu
Zm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc3RydWN0dXJlQ2hl
Y2spKTsKKyAgICBpbmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0NhbGwgPSBNYWNyb0Fzc2VtYmxl
cjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGxpbmtCdWZmZXIubG9jYXRpb25PZihzdHJ1Y3R1
cmVUb0NvbXBhcmUpLCBpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbik7CisgICAgaW5mby5wYXRjaC5k
ZWx0YUNhbGxUb1N0cnVjdENoZWNrID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVu
Q29kZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHN0
cnVjdHVyZUNoZWNrKSk7CiAgICAgCi0gICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TbG93
Q2FzZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaW5mby5jYWxs
UmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihjb2xkUGF0aEJlZ2luKSk7Ci0g
ICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZl
cmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5s
b2NhdGlvbk9mKGRvbmUpKTsKLSAgICBpbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1N0b3JhZ2VM
b2FkID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHByb3BlcnR5U3RvcmFnZUxvYWQp
KTsKKyAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nhc2UgPSBNYWNyb0Fzc2VtYmxlcjo6
ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVm
ZmVyLmxvY2F0aW9uT2YoY29sZFBhdGhCZWdpbikpOworICAgIGluZm8ucGF0Y2guZGVsdGFDYWxs
VG9Eb25lID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGRvbmUpKTsKKyAgICBpbmZv
LnBhdGNoLmRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5j
ZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0
aW9uT2YocHJvcGVydHlTdG9yYWdlTG9hZCkpOwogICAgIAotICAgIGluZm8ucGF0Y2guZGZnLmJh
c2VHUFIgPSBHUFJJbmZvOjpyZWdUMDsKKyAgICBpbmZvLnBhdGNoLmJhc2VHUFIgPSBHUFJJbmZv
OjpyZWdUMDsKIAogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnM7CiAgICAgdXNlZFJlZ2lz
dGVycy5zZXQoR1BSSW5mbzo6cmVnVDApOwpAQCAtNTA3LDM3ICs1MDcsMzcgQEAgQUxXQVlTX0lO
TElORSB2b2lkIFByb3BlcnR5U3R1YkNvbXBpbGF0aQogI2lmIFVTRShKU1ZBTFVFNjQpIC8vIEpT
VkFMVUUgY2FzZXMKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgR2V0QnlJZDoKLSAg
ICAgICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1i
bGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGxp
bmtCdWZmZXIubG9jYXRpb25PZihnZXREaXNwbGFjZW1lbnRMYWJlbCkpOwotICAgICAgICBpbmZv
LnBhdGNoLmRmZy52YWx1ZUdQUiA9IEdQUkluZm86OnJlZ1QwOworICAgICAgICBpbmZvLnBhdGNo
LmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdl
ZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yo
Z2V0RGlzcGxhY2VtZW50TGFiZWwpKTsKKyAgICAgICAgaW5mby5wYXRjaC52YWx1ZUdQUiA9IEdQ
UkluZm86OnJlZ1QwOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFB1dEJ5SWQ6Ci0gICAgICAg
IGluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6
ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVm
ZmVyLmxvY2F0aW9uT2YocHV0RGlzcGxhY2VtZW50TGFiZWwpKTsKLSAgICAgICAgaW5mby5wYXRj
aC5kZmcudmFsdWVHUFIgPSBHUFJJbmZvOjpyZWdUMTsKKyAgICAgICAgaW5mby5wYXRjaC5kZWx0
YUNhbGxUb0xvYWRPclN0b3JlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29k
ZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHB1dERp
c3BsYWNlbWVudExhYmVsKSk7CisgICAgICAgIGluZm8ucGF0Y2gudmFsdWVHUFIgPSBHUFJJbmZv
OjpyZWdUMTsKICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoR1BSSW5mbzo6cmVnVDEpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAjZWxzZSAvLyBKU1ZBTFVFIGNhc2VzCiAgICAgc3dpdGNoICht
X3R5cGUpIHsKICAgICBjYXNlIEdldEJ5SWQ6Ci0gICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRh
Q2FsbFRvVGFnTG9hZE9yU3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5D
b2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZ2V0
RGlzcGxhY2VtZW50TGFiZWwyKSk7Ci0gICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRv
UGF5bG9hZExvYWRPclN0b3JlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29k
ZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGdldERp
c3BsYWNlbWVudExhYmVsMSkpOwotICAgICAgICBpbmZvLnBhdGNoLmRmZy52YWx1ZUdQUiA9IEdQ
UkluZm86OnJlZ1QwOwotICAgICAgICBpbmZvLnBhdGNoLmRmZy52YWx1ZVRhZ0dQUiA9IEdQUklu
Zm86OnJlZ1QxOworICAgICAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUg
PSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVy
bkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZ2V0RGlzcGxhY2VtZW50TGFiZWwyKSk7
CisgICAgICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUgPSBNYWNy
b0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0
aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZ2V0RGlzcGxhY2VtZW50TGFiZWwxKSk7CisgICAg
ICAgIGluZm8ucGF0Y2gudmFsdWVHUFIgPSBHUFJJbmZvOjpyZWdUMDsKKyAgICAgICAgaW5mby5w
YXRjaC52YWx1ZVRhZ0dQUiA9IEdQUkluZm86OnJlZ1QxOwogICAgICAgICB1c2VkUmVnaXN0ZXJz
LnNldChHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHV0QnlJZDoK
LSAgICAgICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSA9IE1hY3Jv
QXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRp
b24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihwdXREaXNwbGFjZW1lbnRMYWJlbDIpKTsKLSAgICAg
ICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUgPSBNYWNyb0Fz
c2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9u
LCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHV0RGlzcGxhY2VtZW50TGFiZWwxKSk7Ci0gICAgICAg
IGluZm8ucGF0Y2guZGZnLnZhbHVlR1BSID0gR1BSSW5mbzo6cmVnVDI7Ci0gICAgICAgIGluZm8u
cGF0Y2guZGZnLnZhbHVlVGFnR1BSID0gR1BSSW5mbzo6cmVnVDM7CisgICAgICAgIGluZm8ucGF0
Y2guZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNl
QmV0d2VlbkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRp
b25PZihwdXREaXNwbGFjZW1lbnRMYWJlbDIpKTsKKyAgICAgICAgaW5mby5wYXRjaC5kZWx0YUNh
bGxUb1BheWxvYWRMb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2Vl
bkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihw
dXREaXNwbGFjZW1lbnRMYWJlbDEpKTsKKyAgICAgICAgaW5mby5wYXRjaC52YWx1ZUdQUiA9IEdQ
UkluZm86OnJlZ1QyOworICAgICAgICBpbmZvLnBhdGNoLnZhbHVlVGFnR1BSID0gR1BSSW5mbzo6
cmVnVDM7CiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KEdQUkluZm86OnJlZ1QyKTsKICAgICAg
ICAgdXNlZFJlZ2lzdGVycy5zZXQoR1BSSW5mbzo6cmVnVDMpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAjZW5kaWYgLy8gSlNWQUxVRSBjYXNlcwogICAgIAotICAgIHVzZWRSZWdpc3RlcnMuY29w
eUluZm8oaW5mby5wYXRjaC5kZmcudXNlZFJlZ2lzdGVycyk7Ci0gICAgaW5mby5wYXRjaC5kZmcu
cmVnaXN0ZXJzRmx1c2hlZCA9IHRydWU7CisgICAgaW5mby5wYXRjaC51c2VkUmVnaXN0ZXJzID0g
dXNlZFJlZ2lzdGVyczsKKyAgICBpbmZvLnBhdGNoLnJlZ2lzdGVyc0ZsdXNoZWQgPSB0cnVlOwog
fQogCiBDb21waWxhdGlvblJlc3VsdCBKSVQ6OnByaXZhdGVDb21waWxlKEpJVENvbXBpbGF0aW9u
RWZmb3J0IGVmZm9ydCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAko
cmV2aXNpb24gMTU3NDgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTYsMjAgKzU2LDIwIEBAIHN0YXRpYyB2b2lkIHJlcGF0Y2hC
eUlkU2VsZkFjY2VzcyhDb2RlQmwKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHViSW5mby5j
YWxsUmV0dXJuTG9jYXRpb24sIHNsb3dQYXRoRnVuY3Rpb24pOwogCiAgICAgLy8gUGF0Y2ggdGhl
IHN0cnVjdHVyZSBjaGVjayAmIHRoZSBvZmZzZXQgb2YgdGhlIGxvYWQuCi0gICAgcmVwYXRjaEJ1
ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9m
ZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNoZWNrSW1tVG9DYWxsKSwg
c3RydWN0dXJlKTsKLSAgICByZXBhdGNoQnVmZmVyLnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZl
KHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5jb252ZXJ0aWJsZUxvYWRBdE9mZnNldChzdHVi
SW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TdG9yYWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zmc2V0
KG9mZnNldCkpOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24uZGF0YUxhYmVsUHRyQXRPZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5k
ZWx0YUNoZWNrSW1tVG9DYWxsKSwgc3RydWN0dXJlKTsKKyAgICByZXBhdGNoQnVmZmVyLnNldExv
YWRJbnN0cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5jb252ZXJ0
aWJsZUxvYWRBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1N0b3JhZ2VMb2FkKSwg
aXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAo
Y29tcGFjdCkKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRl
bHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zm
c2V0KSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2Fs
bFRvTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSk7
CiAgICAgZWxzZQotICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJl
dHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRh
Q2FsbFRvTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0
KSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9j
YXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0xvYWRP
clN0b3JlKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkpOwogI2VsaWYg
VVNFKEpTVkFMVUUzMl82NCkKICAgICBpZiAoY29tcGFjdCkgewotICAgICAgICByZXBhdGNoQnVm
ZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RB
dE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSksIG9m
ZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKLSAgICAgICAgcmVwYXRjaEJ1ZmZl
ci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRP
ZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0b3JlKSwg
b2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0Yo
RW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKKyAgICAgICAgcmVwYXRj
aEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21w
YWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSksIG9m
ZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZl
ci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRP
ZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBvZmZz
ZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOwogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0
YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JT
dG9yZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKLSAgICAgICAgcmVw
YXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwz
MkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9y
ZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSk7CisgICAgICAgIHJl
cGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVs
MzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlKSwgb2Zm
c2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5j
b2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpOworICAgICAgICByZXBhdGNoQnVmZmVy
LnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQo
c3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxh
dGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMTIy
LDE0ICsxMjIsMTQgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKFJlcGF0Y2hCdWZmZQog
ICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGxhY2VXaXRoSnVtcCgKICAgICAgICAgICAgIFJlcGF0
Y2hCdWZmZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MoCiAg
ICAgICAgICAgICAgICAgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbFB0ckF0
T2Zmc2V0KAotICAgICAgICAgICAgICAgICAgICAtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRm
Zy5kZWx0YUNoZWNrSW1tVG9DYWxsKSksCisgICAgICAgICAgICAgICAgICAgIC0oaW50cHRyX3Qp
c3R1YkluZm8ucGF0Y2guZGVsdGFDaGVja0ltbVRvQ2FsbCkpLAogICAgICAgICAgICAgQ29kZUxv
Y2F0aW9uTGFiZWwodGFyZ2V0KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAg
cmVwYXRjaEJ1ZmZlci5yZWxpbmsoCiAgICAgICAgIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bi5qdW1wQXRPZmZzZXQoCi0gICAgICAgICAgICBzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxs
VG9TdHJ1Y3RDaGVjayksCisgICAgICAgICAgICBzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1N0
cnVjdENoZWNrKSwKICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwodGFyZ2V0KSk7CiB9CiAKQEAg
LTE2Nyw3ICsxNjcsNyBAQCBzdGF0aWMgdm9pZCBsaW5rUmVzdG9yZVNjcmF0Y2goTGlua0J1ZmZl
CiAKIHN0YXRpYyB2b2lkIGxpbmtSZXN0b3JlU2NyYXRjaChMaW5rQnVmZmVyJiBwYXRjaEJ1ZmZl
ciwgYm9vbCBuZWVkVG9SZXN0b3JlU2NyYXRjaCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzdWNjZXNzLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBmYWls
LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZmFpbHVyZUNhc2VzKQogewotICAgIGxpbmtSZXN0
b3JlU2NyYXRjaChwYXRjaEJ1ZmZlciwgbmVlZFRvUmVzdG9yZVNjcmF0Y2gsIHN1Y2Nlc3MsIGZh
aWwsIGZhaWx1cmVDYXNlcywgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZz
ZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSksIHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1Ns
b3dDYXNlKSk7CisgICAgbGlua1Jlc3RvcmVTY3JhdGNoKHBhdGNoQnVmZmVyLCBuZWVkVG9SZXN0
b3JlU2NyYXRjaCwgc3VjY2VzcywgZmFpbCwgZmFpbHVyZUNhc2VzLCBzdHViSW5mby5jYWxsUmV0
dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0RvbmUp
LCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRj
aC5kZWx0YUNhbGxUb1Nsb3dDYXNlKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGdlbmVyYXRlUHJvdG9D
aGFpbkFjY2Vzc1N0dWIoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8sIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlTG9jYXRpb25MYWJlbCBzdWNjZXNzTGFi
ZWwsIENvZGVMb2NhdGlvbkxhYmVsIHNsb3dDYXNlTGFiZWwsIFJlZlB0cjxKSVRTdHViUm91dGlu
ZT4mIHN0dWJSb3V0aW5lKQpAQCAtMTc2LDEyICsxNzYsMTIgQEAgc3RhdGljIHZvaWQgZ2VuZXJh
dGVQcm90b0NoYWluQWNjZXNzU3R1YgogCiAgICAgTWFjcm9Bc3NlbWJsZXIgc3R1YkppdDsKICAg
ICAgICAgCi0gICAgR1BSUmVnIGJhc2VHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZv
LnBhdGNoLmRmZy5iYXNlR1BSKTsKKyAgICBHUFJSZWcgYmFzZUdQUiA9IHN0YXRpY19jYXN0PEdQ
UlJlZz4oc3R1YkluZm8ucGF0Y2guYmFzZUdQUik7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAg
ICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRj
aC5kZmcudmFsdWVUYWdHUFIpOworICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSBzdGF0aWNfY2Fz
dDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLnZhbHVlVGFnR1BSKTsKICNlbmRpZgotICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy52YWx1
ZUdQUik7Ci0gICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBSZWdpc3RlclNldChzdHViSW5mby5wYXRj
aC5kZmcudXNlZFJlZ2lzdGVycykuZ2V0RnJlZUdQUigpOworICAgIEdQUlJlZyByZXN1bHRHUFIg
PSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLnZhbHVlR1BSKTsKKyAgICBHUFJS
ZWcgc2NyYXRjaEdQUiA9IHN0dWJJbmZvLnBhdGNoLnVzZWRSZWdpc3RlcnMuZ2V0RnJlZUdQUigp
OwogICAgIGJvb2wgbmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSBmYWxzZTsKICAgICAKICAgICBpZiAo
c2NyYXRjaEdQUiA9PSBJbnZhbGlkR1BSUmVnKSB7CkBAIC0yNTAsMTIgKzI1MCwxMiBAQCBzdGF0
aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAgVk0qIHZtID0gJmV4ZWMt
PnZtKCk7CiAgICAgCiAgICAgaWYgKGlzSlNBcnJheShiYXNlVmFsdWUpICYmIHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7Ci0gICAgICAgIEdQUlJlZyBiYXNl
R1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcuYmFzZUdQUik7Cisg
ICAgICAgIEdQUlJlZyBiYXNlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRj
aC5iYXNlR1BSKTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBHUFJSZWcgcmVzdWx0
VGFnR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcudmFsdWVUYWdH
UFIpOworICAgICAgICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihz
dHViSW5mby5wYXRjaC52YWx1ZVRhZ0dQUik7CiAjZW5kaWYKLSAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLnZhbHVlR1BSKTsK
LSAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBSZWdpc3RlclNldChzdHViSW5mby5wYXRjaC5k
ZmcudXNlZFJlZ2lzdGVycykuZ2V0RnJlZUdQUigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC52YWx1ZUdQUik7CisgICAgICAg
IEdQUlJlZyBzY3JhdGNoR1BSID0gc3R1YkluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycy5nZXRGcmVl
R1BSKCk7CiAgICAgICAgIGJvb2wgbmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSBmYWxzZTsKICAgICAg
ICAgCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyIHN0dWJKaXQ7CkBAIC0zMDAsNyArMzAwLDcgQEAg
c3RhdGljIGJvb2wgdHJ5Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0ZSogZQogICAgICAgICAgICAgcGF0
Y2hCdWZmZXIsCiAgICAgICAgICAgICAoIkRGRyBHZXRCeUlkIGFycmF5IGxlbmd0aCBzdHViIGZv
ciAlcywgcmV0dXJuIHBvaW50ICVwIiwKICAgICAgICAgICAgICAgICB0b0NTdHJpbmcoKmV4ZWMt
PmNvZGVCbG9jaygpKS5kYXRhKCksIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0
T2Zmc2V0KAotICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxs
VG9Eb25lKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgICAgICAgICAgICAgIHN0dWJJ
bmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAg
ICAKICAgICAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAgICAg
ICAgIHJlcGxhY2VXaXRoSnVtcChyZXBhdGNoQnVmZmVyLCBzdHViSW5mbywgc3R1YkluZm8uc3R1
YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOwpAQCAtMzQ4LDcgKzM0OCw3IEBAIHN0YXRpYyBib29s
IHRyeUNhY2hlR2V0QnlJRChFeGVjU3RhdGUqIGUKIAogICAgIFN0cnVjdHVyZUNoYWluKiBwcm90
b3R5cGVDaGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYyk7CiAgICAgCi0gICAg
Z2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1YihleGVjLCBzdHViSW5mbywgcHJvdG90eXBlQ2hh
aW4sIGNvdW50LCBvZmZzZXQsIHN0cnVjdHVyZSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSksIHN0dWJJ
bmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5k
ZWx0YUNhbGxUb1Nsb3dDYXNlKSwgc3R1YkluZm8uc3R1YlJvdXRpbmUpOworICAgIGdlbmVyYXRl
UHJvdG9DaGFpbkFjY2Vzc1N0dWIoZXhlYywgc3R1YkluZm8sIHByb3RvdHlwZUNoYWluLCBjb3Vu
dCwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0
T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSksIHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nh
c2UpLCBzdHViSW5mby5zdHViUm91dGluZSk7CiAgICAgCiAgICAgUmVwYXRjaEJ1ZmZlciByZXBh
dGNoQnVmZmVyKGNvZGVCbG9jayk7CiAgICAgcmVwbGFjZVdpdGhKdW1wKHJlcGF0Y2hCdWZmZXIs
IHN0dWJJbmZvLCBzdHViSW5mby5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CkBAIC0zNzIs
NyArMzcyLDcgQEAgc3RhdGljIGJvb2wgZ2V0UG9seW1vcnBoaWNTdHJ1Y3R1cmVMaXN0KAogICAg
IFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdComIHBvbHltb3JwaGljU3RydWN0dXJlTGlz
dCwgaW50JiBsaXN0SW5kZXgsCiAgICAgQ29kZUxvY2F0aW9uTGFiZWwmIHNsb3dDYXNlKQogewot
ICAgIHNsb3dDYXNlID0gc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQo
c3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU2xvd0Nhc2UpOworICAgIHNsb3dDYXNlID0g
c3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2gu
ZGVsdGFDYWxsVG9TbG93Q2FzZSk7CiAgICAgCiAgICAgaWYgKHN0dWJJbmZvLmFjY2Vzc1R5cGUg
PT0gYWNjZXNzX3Vuc2V0KSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFzdHViSW5mby5zdHVi
Um91dGluZSk7CkBAIC00MTIsNyArNDEyLDcgQEAgc3RhdGljIHZvaWQgcGF0Y2hKdW1wVG9HZXRC
eUlkU3R1YihDb2RlQgogICAgIGlmIChzdHViSW5mby51LmdldEJ5SWRTZWxmTGlzdC5kaWRTZWxm
UGF0Y2hpbmcpIHsKICAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoCiAgICAgICAgICAgICBz
dHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uanVtcEF0T2Zmc2V0KAotICAgICAgICAgICAgICAg
IHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1N0cnVjdENoZWNrKSwKKyAgICAgICAgICAg
ICAgICBzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1N0cnVjdENoZWNrKSwKICAgICAgICAgICAg
IENvZGVMb2NhdGlvbkxhYmVsKHN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC00MzMsNyArNDMzLDcgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRH
ZXRCeUlETGlzdChFeGVjU3RhdAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwt
PnN0cnVjdHVyZSgpOwogICAgIAogICAgIGlmIChzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVl
KSB7Ci0gICAgICAgIGlmICghc3R1YkluZm8ucGF0Y2guZGZnLnJlZ2lzdGVyc0ZsdXNoZWQpIHsK
KyAgICAgICAgaWYgKCFzdHViSW5mby5wYXRjaC5yZWdpc3RlcnNGbHVzaGVkKSB7CiAgICAgICAg
ICAgICAvLyBXZSBjYW5ub3QgZG8gYXMgbXVjaCBpbmxpbmUgY2FjaGluZyBpZiB0aGUgcmVnaXN0
ZXJzIHdlcmUgbm90IGZsdXNoZWQgcHJpb3IgdG8gdGhpcyBHZXRCeUlkLiBJbiBwYXJ0aWN1bGFy
LAogICAgICAgICAgICAgLy8gbm9uLVZhbHVlIGNhY2hlZCBwcm9wZXJ0aWVzIHJlcXVpcmUgcGxh
bnRpbmcgY2FsbHMsIHdoaWNoIHJlcXVpcmVzIHJlZ2lzdGVycyB0byBoYXZlIGJlZW4gZmx1c2hl
ZC4gVGh1cywKICAgICAgICAgICAgIC8vIGlmIHJlZ2lzdGVycyB3ZXJlIG5vdCBmbHVzaGVkLCBk
b24ndCBkbyBub24tVmFsdWUgY2FjaGluZy4KQEAgLTQ1MCwxMiArNDUwLDEyIEBAIHN0YXRpYyBi
b29sIHRyeUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXQKICAgICAgICAgCiAgICAgICAgIHN0dWJJ
bmZvLnUuZ2V0QnlJZFNlbGZMaXN0Lmxpc3RTaXplKys7CiAgICAgICAgIAotICAgICAgICBHUFJS
ZWcgYmFzZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLmJhc2VH
UFIpOworICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1Yklu
Zm8ucGF0Y2guYmFzZUdQUik7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgR1BSUmVn
IHJlc3VsdFRhZ0dQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLnZh
bHVlVGFnR1BSKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHN0YXRpY19jYXN0PEdQ
UlJlZz4oc3R1YkluZm8ucGF0Y2gudmFsdWVUYWdHUFIpOwogI2VuZGlmCi0gICAgICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy52YWx1
ZUdQUik7Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gUmVnaXN0ZXJTZXQoc3R1YkluZm8u
cGF0Y2guZGZnLnVzZWRSZWdpc3RlcnMpLmdldEZyZWVHUFIoKTsKKyAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2gudmFsdWVHUFIpOwor
ICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHN0dWJJbmZvLnBhdGNoLnVzZWRSZWdpc3RlcnMu
Z2V0RnJlZUdQUigpOwogICAgICAgICAKICAgICAgICAgQ0NhbGxIZWxwZXJzIHN0dWJKaXQodm0s
IGNvZGVCbG9jayk7CiAgICAgICAgIApAQCAtNTQ3LDcgKzU0Nyw3IEBAIHN0YXRpYyBib29sIHRy
eUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXQKICAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cigqdm0sICZzdHViSml0LCBjb2RlQmxvY2spOwogICAgICAgICAKICAgICAgICAgcGF0Y2hCdWZm
ZXIubGluayh3cm9uZ1N0cnVjdCwgc2xvd0Nhc2UpOwotICAgICAgICBwYXRjaEJ1ZmZlci5saW5r
KHN1Y2Nlc3MsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJ
bmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpKTsKKyAgICAgICAgcGF0Y2hCdWZmZXIubGlu
ayhzdWNjZXNzLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHVi
SW5mby5wYXRjaC5kZWx0YUNhbGxUb0RvbmUpKTsKICAgICAgICAgaWYgKCFpc0RpcmVjdCkgewog
ICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb25DYWxsLCBvcGVyYXRpb25GdW5j
dGlvbik7CiAgICAgICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGhhbmRsZXJDYWxsLCBsb29rdXBF
eGNlcHRpb25IYW5kbGVyKTsKQEAgLTU1OCw4ICs1NTgsOCBAQCBzdGF0aWMgYm9vbCB0cnlCdWls
ZEdldEJ5SURMaXN0KEV4ZWNTdGF0CiAgICAgICAgICAgICAgICAgRklOQUxJWkVfREZHX0NPREUo
CiAgICAgICAgICAgICAgICAgICAgIHBhdGNoQnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAo
IkRGRyBHZXRCeUlkIHBvbHltb3JwaGljIGxpc3QgYWNjZXNzIGZvciAlcywgcmV0dXJuIHBvaW50
ICVwIiwKLSAgICAgICAgICAgICAgICAgICAgIHRvQ1N0cmluZygqZXhlYy0+Y29kZUJsb2NrKCkp
LmRhdGEoKSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSku
ZXhlY3V0YWJsZUFkZHJlc3MoKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgdG9DU3RyaW5n
KCpleGVjLT5jb2RlQmxvY2soKSkuZGF0YSgpLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24u
bGFiZWxBdE9mZnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5wYXRj
aC5kZWx0YUNhbGxUb0RvbmUpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSwKICAgICAgICAgICAgICAg
ICAqdm0sCiAgICAgICAgICAgICAgICAgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwKICAg
ICAgICAgICAgICAgICBzbG90LmlzQ2FjaGVhYmxlR2V0dGVyKCkgfHwgc2xvdC5pc0NhY2hlYWJs
ZUN1c3RvbSgpKTsKQEAgLTU5MCw3ICs1OTAsNyBAQCBzdGF0aWMgYm9vbCB0cnlCdWlsZEdldEJ5
SURMaXN0KEV4ZWNTdGF0CiAgICAgCiAgICAgUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiBzdHViUm91
dGluZTsKICAgICAKLSAgICBnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nlc3NTdHViKGV4ZWMsIHN0dWJJ
bmZvLCBwcm90b3R5cGVDaGFpbiwgY291bnQsIG9mZnNldCwgc3RydWN0dXJlLCBzdHViSW5mby5j
YWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFD
YWxsVG9Eb25lKSwgc2xvd0Nhc2UsIHN0dWJSb3V0aW5lKTsKKyAgICBnZW5lcmF0ZVByb3RvQ2hh
aW5BY2Nlc3NTdHViKGV4ZWMsIHN0dWJJbmZvLCBwcm90b3R5cGVDaGFpbiwgY291bnQsIG9mZnNl
dCwgc3RydWN0dXJlLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChz
dHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0RvbmUpLCBzbG93Q2FzZSwgc3R1YlJvdXRpbmUpOwog
ICAgIAogICAgIHBvbHltb3JwaGljU3RydWN0dXJlTGlzdC0+bGlzdFtsaXN0SW5kZXhdLnNldCgq
dm0sIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0dWJSb3V0aW5lLCBzdHJ1Y3R1cmUs
IHRydWUpOwogICAgIApAQCAtNjQ0LDEyICs2NDQsMTIgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFJl
cGxhY2VTdHViKAogICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4mIHN0dWJSb3V0aW5lKQogewog
ICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIEdQUlJlZyBiYXNlR1BSID0gc3RhdGljX2Nh
c3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcuYmFzZUdQUik7CisgICAgR1BSUmVnIGJhc2VH
UFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmJhc2VHUFIpOwogI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCi0gICAgR1BSUmVnIHZhbHVlVGFnR1BSID0gc3RhdGljX2Nhc3Q8R1BS
UmVnPihzdHViSW5mby5wYXRjaC5kZmcudmFsdWVUYWdHUFIpOworICAgIEdQUlJlZyB2YWx1ZVRh
Z0dQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2gudmFsdWVUYWdHUFIpOwog
I2VuZGlmCi0gICAgR1BSUmVnIHZhbHVlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5m
by5wYXRjaC5kZmcudmFsdWVHUFIpOwotICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gUmVnaXN0ZXJT
ZXQoc3R1YkluZm8ucGF0Y2guZGZnLnVzZWRSZWdpc3RlcnMpLmdldEZyZWVHUFIoKTsKKyAgICBH
UFJSZWcgdmFsdWVHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLnZhbHVl
R1BSKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHN0dWJJbmZvLnBhdGNoLnVzZWRSZWdpc3Rl
cnMuZ2V0RnJlZUdQUigpOwogICAgIGJvb2wgbmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSBmYWxzZTsK
ICNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCiAgICAgR1BSUmVnIHNjcmF0Y2hH
UFIyOwpAQCAtNzIwLDE0ICs3MjAsMTQgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFJlcGxhY2VTdHVi
KAogICAgIH0KICAgICAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgJnN0dWJKaXQs
IGV4ZWMtPmNvZGVCbG9jaygpKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKHN1Y2Nlc3MsIHN0dWJJ
bmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5k
ZWx0YUNhbGxUb0RvbmUpKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKHN1Y2Nlc3MsIHN0dWJJbmZv
LmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2Fs
bFRvRG9uZSkpOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoZmFpbHVyZSwgZmFpbHVyZUxhYmVsKTsK
ICAgICAgICAgICAgIAogICAgIHN0dWJSb3V0aW5lID0gRklOQUxJWkVfQ09ERV9GT1JfREZHX1NU
VUIoCiAgICAgICAgIHBhdGNoQnVmZmVyLAogICAgICAgICAoIkRGRyBQdXRCeUlkIHJlcGxhY2Ug
c3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsCiAgICAgICAgICAgICB0b0NTdHJpbmcoKmV4
ZWMtPmNvZGVCbG9jaygpKS5kYXRhKCksIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJl
bEF0T2Zmc2V0KAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxU
b0RvbmUpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgICAgICAgICBzdHViSW5mby5w
YXRjaC5kZWx0YUNhbGxUb0RvbmUpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKIH0KIAogc3RhdGlj
IHZvaWQgZW1pdFB1dFRyYW5zaXRpb25TdHViKApAQCAtNzQ1LDEzICs3NDUsMTMgQEAgc3RhdGlj
IHZvaWQgZW1pdFB1dFRyYW5zaXRpb25TdHViKAogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OwogCi0gICAgR1BSUmVnIGJhc2VHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBh
dGNoLmRmZy5iYXNlR1BSKTsKKyAgICBHUFJSZWcgYmFzZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJl
Zz4oc3R1YkluZm8ucGF0Y2guYmFzZUdQUik7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBH
UFJSZWcgdmFsdWVUYWdHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRm
Zy52YWx1ZVRhZ0dQUik7CisgICAgR1BSUmVnIHZhbHVlVGFnR1BSID0gc3RhdGljX2Nhc3Q8R1BS
UmVnPihzdHViSW5mby5wYXRjaC52YWx1ZVRhZ0dQUik7CiAjZW5kaWYKLSAgICBHUFJSZWcgdmFs
dWVHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy52YWx1ZUdQUik7
CisgICAgR1BSUmVnIHZhbHVlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRj
aC52YWx1ZUdQUik7CiAgICAgCi0gICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRv
cihzdHViSW5mby5wYXRjaC5kZmcudXNlZFJlZ2lzdGVycyk7CisgICAgU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yIGFsbG9jYXRvcihzdHViSW5mby5wYXRjaC51c2VkUmVnaXN0ZXJzKTsKICAgICBh
bGxvY2F0b3IubG9jayhiYXNlR1BSKTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIGFsbG9j
YXRvci5sb2NrKHZhbHVlVGFnR1BSKTsKQEAgLTkxMSwxNCArOTExLDE0IEBAIHN0YXRpYyB2b2lk
IGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKICAgICB9CiAgICAgCiAgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcigqdm0sICZzdHViSml0LCBleGVjLT5jb2RlQmxvY2soKSk7Ci0gICAgcGF0Y2hCdWZm
ZXIubGluayhzdWNjZXNzLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNl
dChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lKSk7CisgICAgcGF0Y2hCdWZmZXIu
bGluayhzdWNjZXNzLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChz
dHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0RvbmUpKTsKICAgICBpZiAoYWxsb2NhdG9yLmRpZFJl
dXNlUmVnaXN0ZXJzKCkpCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoZmFpbHVyZSwgZmFpbHVy
ZUxhYmVsKTsKICAgICBlbHNlCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoZmFpbHVyZUNhc2Vz
LCBmYWlsdXJlTGFiZWwpOwogICAgIGlmIChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkg
IT0gb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CiAgICAgICAgIHBhdGNoQnVm
ZmVyLmxpbmsob3BlcmF0aW9uQ2FsbCwgb3BlcmF0aW9uUmVhbGxvY2F0ZVN0b3JhZ2VBbmRGaW5p
c2hQdXQpOwotICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKHN1Y2Nlc3NJblNsb3dQYXRoLCBzdHVi
SW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcu
ZGVsdGFDYWxsVG9Eb25lKSk7CisgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoc3VjY2Vzc0luU2xv
d1BhdGgsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZv
LnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSkpOwogICAgIH0KICAgICAKICAgICBzdHViUm91dGluZSA9
CkBAIC05MjksNyArOTI5LDcgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFRyYW5zaXRpb25TdHViKAog
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgIT0gb2xk
U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpID8gInJlYWxsb2NhdGluZyAiIDogIiIsCiAg
ICAgICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZSwgc3RydWN0dXJlLAogICAgICAgICAgICAg
ICAgICAgICB0b0NTdHJpbmcoKmV4ZWMtPmNvZGVCbG9jaygpKS5kYXRhKCksIHN0dWJJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KAotICAgICAgICAgICAgICAgICAgICAgICAg
c3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkp
LAorICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9Eb25l
KS5leGVjdXRhYmxlQWRkcmVzcygpKSksCiAgICAgICAgICAgICAqdm0sCiAgICAgICAgICAgICBl
eGVjLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCksCiAgICAgICAgICAgICBzdHJ1Y3R1
cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgIT0gb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0
eSgpLApAQCAtOTc4LDEzICs5NzgsMTMgQEAgc3RhdGljIGJvb2wgdHJ5Q2FjaGVQdXRCeUlEKEV4
ZWNTdGF0ZSogZQogICAgICAgICAgICAgZW1pdFB1dFRyYW5zaXRpb25TdHViKAogICAgICAgICAg
ICAgICAgIGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsIHN0dWJJbmZvLCBwdXRLaW5kLAog
ICAgICAgICAgICAgICAgIHN0cnVjdHVyZSwgb2xkU3RydWN0dXJlLCBwcm90b3R5cGVDaGFpbiwK
LSAgICAgICAgICAgICAgICBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNl
dChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TbG93Q2FzZSksCisgICAgICAgICAgICAg
ICAgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0
Y2guZGVsdGFDYWxsVG9TbG93Q2FzZSksCiAgICAgICAgICAgICAgICAgc3R1YkluZm8uc3R1YlJv
dXRpbmUpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hC
dWZmZXIoY29kZUJsb2NrKTsKICAgICAgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKAogICAg
ICAgICAgICAgICAgIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5qdW1wQXRPZmZzZXQoCi0g
ICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1N0cnVjdENo
ZWNrKSwKKyAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9TdHJ1
Y3RDaGVjayksCiAgICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YkluZm8uc3R1
YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKICAgICAgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVs
aW5rKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgYXBwcm9wcmlhdGVMaXN0QnVpbGRpbmdQ
dXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwogICAgICAgICAgICAgCkBAIC0xMDU4LDcg
KzEwNTgsNyBAQCBzdGF0aWMgYm9vbCB0cnlCdWlsZFB1dEJ5SWRMaXN0KEV4ZWNTdGF0CiAgICAg
ICAgICAgICAvLyBXZSdyZSBub3cgY29tbWl0dGVkIHRvIGNyZWF0aW5nIHRoZSBzdHViLiBNb2dy
aWZ5IHRoZSBtZXRhLWRhdGEgYWNjb3JkaW5nbHkuCiAgICAgICAgICAgICBsaXN0ID0gUG9seW1v
cnBoaWNQdXRCeUlkTGlzdDo6ZnJvbSgKICAgICAgICAgICAgICAgICBwdXRLaW5kLCBzdHViSW5m
bywKLSAgICAgICAgICAgICAgICBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9m
ZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TbG93Q2FzZSkpOworICAgICAgICAg
ICAgICAgIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZv
LnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nhc2UpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
ZW1pdFB1dFRyYW5zaXRpb25TdHViKAogICAgICAgICAgICAgICAgIGV4ZWMsIGJhc2VWYWx1ZSwg
cHJvcGVydHlOYW1lLCBzbG90LCBzdHViSW5mbywgcHV0S2luZCwKQEAgLTEwNzUsNyArMTA3NSw3
IEBAIHN0YXRpYyBib29sIHRyeUJ1aWxkUHV0QnlJZExpc3QoRXhlY1N0YXQKICAgICAgICAgICAg
IC8vIFdlJ3JlIG5vdyBjb21taXR0ZWQgdG8gY3JlYXRpbmcgdGhlIHN0dWIuIE1vZ3JpZnkgdGhl
IG1ldGEtZGF0YSBhY2NvcmRpbmdseS4KICAgICAgICAgICAgIGxpc3QgPSBQb2x5bW9ycGhpY1B1
dEJ5SWRMaXN0Ojpmcm9tKAogICAgICAgICAgICAgICAgIHB1dEtpbmQsIHN0dWJJbmZvLAotICAg
ICAgICAgICAgICAgIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0
dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1Nsb3dDYXNlKSk7CisgICAgICAgICAgICAgICAg
c3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2gu
ZGVsdGFDYWxsVG9TbG93Q2FzZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBlbWl0UHV0
UmVwbGFjZVN0dWIoCiAgICAgICAgICAgICAgICAgZXhlYywgYmFzZVZhbHVlLCBwcm9wZXJ0eU5h
bWUsIHNsb3QsIHN0dWJJbmZvLCBwdXRLaW5kLApAQCAtMTA4OCw3ICsxMDg4LDcgQEAgc3RhdGlj
IGJvb2wgdHJ5QnVpbGRQdXRCeUlkTGlzdChFeGVjU3RhdAogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKLSAgICAgICAg
cmVwYXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmp1bXBBdE9m
ZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TdHJ1Y3RDaGVjayksIENvZGVMb2Nh
dGlvbkxhYmVsKHN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CisgICAgICAgIHJlcGF0Y2hC
dWZmZXIucmVsaW5rKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5qdW1wQXRPZmZzZXQoc3R1
YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9TdHJ1Y3RDaGVjayksIENvZGVMb2NhdGlvbkxhYmVsKHN0
dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CiAgICAgICAgIAogICAgICAgICBpZiAobGlzdC0+
aXNGdWxsKCkpCiAgICAgICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHViSW5mby5jYWxs
UmV0dXJuTG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihzbG90LCBw
dXRLaW5kKSk7CkBAIC0xMTM5LDcgKzExMzksNyBAQCBzdGF0aWMgYm9vbCB0cnlSZXBhdGNoSW4o
CiAgICAgICAgIHBvbHltb3JwaGljU3RydWN0dXJlTGlzdCA9IG5ldyBQb2x5bW9ycGhpY0FjY2Vz
c1N0cnVjdHVyZUxpc3QoKTsKICAgICAgICAgc3R1YkluZm8uaW5pdEluTGlzdChwb2x5bW9ycGhp
Y1N0cnVjdHVyZUxpc3QsIDApOwogICAgICAgICBzbG93Q2FzZUxhYmVsID0gc3R1YkluZm8uY2Fs
bFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoCi0gICAgICAgICAgICBzdHViSW5mby5wYXRj
aC5kZmcuZGVsdGFDYWxsVG9TbG93Q2FzZSk7CisgICAgICAgICAgICBzdHViSW5mby5wYXRjaC5k
ZWx0YUNhbGxUb1Nsb3dDYXNlKTsKICAgICAgICAgbGlzdEluZGV4ID0gMDsKICAgICB9IGVsc2Ug
ewogICAgICAgICBSRUxFQVNFX0FTU0VSVChzdHViSW5mby5hY2Nlc3NUeXBlID09IGFjY2Vzc19p
bl9saXN0KTsKQEAgLTExNTUsOSArMTE1NSw5IEBAIHN0YXRpYyBib29sIHRyeVJlcGF0Y2hJbigK
ICAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IHN0dWJSb3V0aW5lOwogICAgIAogICAgIHsKLSAg
ICAgICAgR1BSUmVnIGJhc2VHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNo
LmRmZy5iYXNlR1BSKTsKLSAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHN0YXRpY19jYXN0PEdQ
UlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLnZhbHVlR1BSKTsKLSAgICAgICAgR1BSUmVnIHNjcmF0
Y2hHUFIgPSBSZWdpc3RlclNldChzdHViSW5mby5wYXRjaC5kZmcudXNlZFJlZ2lzdGVycykuZ2V0
RnJlZUdQUigpOworICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4o
c3R1YkluZm8ucGF0Y2guYmFzZUdQUik7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBzdGF0
aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLnZhbHVlR1BSKTsKKyAgICAgICAgR1BSUmVn
IHNjcmF0Y2hHUFIgPSBzdHViSW5mby5wYXRjaC51c2VkUmVnaXN0ZXJzLmdldEZyZWVHUFIoKTsK
ICAgICAgICAgCiAgICAgICAgIENDYWxsSGVscGVycyBzdHViSml0KHZtKTsKICAgICAgICAgCkBA
IC0xMzY1LDIzICsxMzY1LDIzIEBAIHZvaWQgbGlua0Nsb3N1cmVDYWxsKEV4ZWNTdGF0ZSogZXhl
YywgQ2EKIHZvaWQgcmVzZXRHZXRCeUlEKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIsIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhz
dHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7Ci0g
ICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIHN0cnVjdHVyZUxhYmVsID0gc3R1YkluZm8uY2Fs
bFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KC0oaW50cHRyX3Qpc3R1YkluZm8u
cGF0Y2guZGZnLmRlbHRhQ2hlY2tJbW1Ub0NhbGwpOworICAgIENvZGVMb2NhdGlvbkRhdGFMYWJl
bFB0ciBzdHJ1Y3R1cmVMYWJlbCA9IHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFi
ZWxQdHJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0Nh
bGwpOwogICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFu
Y2hQdHJXaXRoUGF0Y2goKSkgewogICAgICAgICByZXBhdGNoQnVmZmVyLnJldmVydEp1bXBSZXBs
YWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKAogICAgICAgICAgICAgUmVwYXRj
aEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRkcmVzcyhzdHJ1
Y3R1cmVMYWJlbCksCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygKLSAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4oc3R1Yklu
Zm8ucGF0Y2guZGZnLmJhc2VHUFIpLAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1hY3Jv
QXNzZW1ibGVyOjpSZWdpc3RlcklEPihzdHViSW5mby5wYXRjaC5iYXNlR1BSKSwKICAgICAgICAg
ICAgICAgICBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKICAgICAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KHVudXNlZFBvaW50ZXIpKTsKICAgICB9CiAgICAgcmVwYXRjaEJ1ZmZl
ci5yZXBhdGNoKHN0cnVjdHVyZUxhYmVsLCByZWludGVycHJldF9jYXN0PHZvaWQqPih1bnVzZWRQ
b2ludGVyKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2go
c3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHVi
SW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSksIDApOworICAgIHJlcGF0Y2hC
dWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29tcGFj
dEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCAwKTsKICNl
bHNlCi0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRv
VGFnTG9hZE9yU3RvcmUpLCAwKTsKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8u
Y2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRj
aC5kZmcuZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCAwKTsKKyAgICByZXBhdGNoQnVm
ZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RB
dE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlKSwgMCk7Cisg
ICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRh
TGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9QYXlsb2FkTG9h
ZE9yU3RvcmUpLCAwKTsKICNlbmRpZgotICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKHN0dWJJbmZv
LmNhbGxSZXR1cm5Mb2NhdGlvbi5qdW1wQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRh
Q2FsbFRvU3RydWN0Q2hlY2spLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9m
ZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TbG93Q2FzZSkpOworICAgIHJlcGF0
Y2hCdWZmZXIucmVsaW5rKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5qdW1wQXRPZmZzZXQo
c3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9TdHJ1Y3RDaGVjayksIHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nh
c2UpKTsKIH0KIAogdm9pZCByZXNldFB1dEJ5SUQoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZl
ciwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQpAQCAtMTM5OSwyOCArMTM5OSwyOCBAQCB2
b2lkIHJlc2V0UHV0QnlJRChSZXBhdGNoQnVmZmVyJiByZXBhdGNoCiAgICAgICAgIG9wdGltaXpl
ZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplOwogICAg
IH0KICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24s
IG9wdGltaXplZEZ1bmN0aW9uKTsKLSAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgc3RydWN0
dXJlTGFiZWwgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsUHRyQXRPZmZz
ZXQoLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDaGVja0ltbVRvQ2FsbCk7Cisg
ICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIHN0cnVjdHVyZUxhYmVsID0gc3R1YkluZm8uY2Fs
bFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KC0oaW50cHRyX3Qpc3R1YkluZm8u
cGF0Y2guZGVsdGFDaGVja0ltbVRvQ2FsbCk7CiAgICAgaWYgKE1hY3JvQXNzZW1ibGVyOjpjYW5K
dW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgpKSB7CiAgICAgICAgIHJlcGF0
Y2hCdWZmZXIucmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0
Y2goCiAgICAgICAgICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRy
V2l0aFBhdGNoT25BZGRyZXNzKHN0cnVjdHVyZUxhYmVsKSwKICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKAotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1i
bGVyOjpSZWdpc3RlcklEPihzdHViSW5mby5wYXRjaC5kZmcuYmFzZUdQUiksCisgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ+KHN0dWJJbmZvLnBh
dGNoLmJhc2VHUFIpLAogICAgICAgICAgICAgICAgIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LAogICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odW51c2VkUG9pbnRlcikpOwog
ICAgIH0KICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3RydWN0dXJlTGFiZWwsIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KHVudXNlZFBvaW50ZXIpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAg
IHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxh
YmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSks
IDApOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRp
b24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0xvYWRPclN0
b3JlKSwgMCk7CiAjZWxzZQotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxs
UmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVs
dGFDYWxsVG9UYWdMb2FkT3JTdG9yZSksIDApOwotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChz
dHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5w
YXRjaC5kZmcuZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCAwKTsKKyAgICByZXBhdGNo
QnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRP
ZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSksIDApOworICAg
IHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxh
YmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9y
ZSksIDApOwogI2VuZGlmCi0gICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8uY2FsbFJl
dHVybkxvY2F0aW9uLmp1bXBBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9T
dHJ1Y3RDaGVjayksIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0
dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1Nsb3dDYXNlKSk7CisgICAgcmVwYXRjaEJ1ZmZl
ci5yZWxpbmsoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmp1bXBBdE9mZnNldChzdHViSW5m
by5wYXRjaC5kZWx0YUNhbGxUb1N0cnVjdENoZWNrKSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0
aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93Q2FzZSkpOwog
fQogCiB2b2lkIHJlc2V0SW4oUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlciwgU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvKQogewotICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKHN0dWJJbmZv
LmhvdFBhdGhCZWdpbi5qdW1wQXRPZmZzZXQoMCksIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1Nsb3dDYXNlKSk7
CisgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8uaG90UGF0aEJlZ2luLmp1bXBBdE9m
ZnNldCgwKSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1Yklu
Zm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93Q2FzZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
</data>
<flag name="review"
          id="236868"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>