<?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>115938</bug_id>
          
          <creation_ts>2013-05-10 14:51:53 -0700</creation_ts>
          <short_desc>Rename StructureCheckHoistingPhase to TypeCheckHoistingPhase</short_desc>
          <delta_ts>2013-05-11 17:26:16 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>887631</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-05-10 14:51:53 -0700</bug_when>
    <thetext>We&apos;re going to add some more types of check hoisting soon, so let&apos;s have the right name here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887632</commentid>
    <comment_count>1</comment_count>
      <attachid>201428</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-05-10 14:58:03 -0700</bug_when>
    <thetext>Created attachment 201428
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887634</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-10 14:59:12 -0700</bug_when>
    <thetext>Attachment 201428 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/Target.pri&apos;, u&apos;Source/JavaScriptCore/dfg/DFGDriver.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGStructureCheckHoistingPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGStructureCheckHoistingPhase.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGTypeCheckHoistingPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGTypeCheckHoistingPhase.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGTypeCheckHoistingPhase.cpp:239:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 8 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>887659</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-05-10 16:14:31 -0700</bug_when>
    <thetext>Committed r149911: &lt;http://trac.webkit.org/changeset/149911&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887871</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-05-11 17:26:16 -0700</bug_when>
    <thetext>Landed on the branch as well.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201428</attachid>
            <date>2013-05-10 14:58:03 -0700</date>
            <delta_ts>2013-05-10 16:14:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115938-20130510145754.patch</filename>
            <type>text/plain</type>
            <size>52214</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ5OTA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBA
CisyMDEzLTA1LTEwICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmVuYW1lIFN0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZSB0byBUeXBlQ2hlY2tI
b2lzdGluZ1BoYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTU5MzgKKworICAgICAgICBXZSdyZSBnb2luZyB0byBhZGQgc29tZSBtb3JlIHR5cGVz
IG9mIGNoZWNrIGhvaXN0aW5nIHNvb24sIHNvIGxldCdzIGhhdmUgdGhlIHJpZ2h0IG5hbWUgaGVy
ZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJn
ZXQucHJpOgorICAgICAgICAqIGRmZy9ERkdEcml2ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2Uu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhh
c2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBkZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5j
cHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQ2hl
Y2tIb2lzdGluZ1BoYXNlLmNwcC4KKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tIb2lzdGlu
Z1BoYXNlOjpUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpwZXJm
b3JtVHlwZUNoZWNrSG9pc3RpbmcpOgorICAgICAgICAqIGRmZy9ERkdUeXBlQ2hlY2tIb2lzdGlu
Z1BoYXNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0
dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmguCisKIDIwMTMtMDUtMDkgIENocmlzdG9waGUgRHVtZXog
IDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQg
Zml4IGFmdGVyIHIxNDk4MzYuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAxNDk5MDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3ICsxMTIsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVf
U09VUkNFUwogICAgIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKICAgICBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAKICAgICBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKLSAgICBk
ZmcvREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAorICAgIGRmZy9ERkdUeXBlQ2hl
Y2tIb2lzdGluZ1BoYXNlLmNwcAogICAgIGRmZy9ERkdUaHVua3MuY3BwCiAgICAgZGZnL0RGR1Vu
aWZpY2F0aW9uUGhhc2UuY3BwCiAgICAgZGZnL0RGR1VzZUtpbmQuY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTQ5OTAyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkK
QEAgLTI3MCw4ICsyNzAsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCBcCi0JU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UuY3BwIFwKLQlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5oIFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwIFwKKwlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1RodW5rcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1VuaWZpY2F0aW9uUGhhc2UuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJn
ZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCShy
ZXZpc2lvbiAxNDk5MDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkod29y
a2luZyBjb3B5KQpAQCAtMTUxLDcgKzE1MSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAgXAogICAgIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBc
CiAgICAgZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIFwKLSAgICBkZmcvREZHU3RydWN0dXJl
Q2hlY2tIb2lzdGluZ1BoYXNlLmNwcCBcCisgICAgZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhh
c2UuY3BwIFwKICAgICBkZmcvREZHVGh1bmtzLmNwcCBcCiAgICAgZGZnL0RGR1VuaWZpY2F0aW9u
UGhhc2UuY3BwIFwKICAgICBkZmcvREZHVXNlS2luZC5jcHAgXApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0OTkwMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTQsOCArMTU0LDggQEAKIAkJMEY2MjAxNzcxNDNGQ0QzRjAwNjhCNzdDIC8qIERGR0Fi
c3RyYWN0VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNjIwMTZGMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFZhbHVlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2MjAxNzgxNDNG
Q0Q0NDAwNjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjIwMTZFMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdB
YnN0cmFjdFN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY2MjAxNzkxNDNGQ0Q0ODAwNjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MjAxNkQx
NDNGQ0QyRjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUuY3BwICovOyB9OwotCQkwRjYzOTQz
RjE1Qzc1RjE5MDA2QTU5N0MgLyogREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYzOTQzRDE1Qzc1
RjE0MDA2QTU5N0MgLyogREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEY2Mzk0NDAxNUM3NUYx
RDAwNkE1OTdDIC8qIERGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYzOTQzQzE1Qzc1RjE0MDA2
QTU5N0MgLyogREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcCAqLzsgfTsKKwkJMEY2
Mzk0M0YxNUM3NUYxOTAwNkE1OTdDIC8qIERGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjM5NDNEMTVDNzVG
MTQwMDZBNTk3QyAvKiBERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY2Mzk0NDAxNUM3NUYxRDAwNkE1
OTdDIC8qIERGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2Mzk0M0MxNUM3NUYxNDAwNkE1OTdDIC8qIERG
R1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwICovOyB9OwogCQkwRjYzOTQ1NDE1RDA3MDU1MDA2
QTU5N0MgLyogQXJyYXlQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNjM5NDUxMTVEMDcwNTEwMDZBNTk3QyAvKiBBcnJheVByb2ZpbGUu
Y3BwICovOyB9OwogCQkwRjYzOTQ1NTE1RDA3MDU3MDA2QTU5N0MgLyogQXJyYXlQcm9maWxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYzOTQ1MjE1
RDA3MDUxMDA2QTU5N0MgLyogQXJyYXlQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2Mzk0NzgxNURDRTM0QjAwNkE1OTdDIC8qIERG
R1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNjM5NDc2MTVEQ0UzNDcwMDZBNTk3QyAvKiBERkdTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTEwNjYsOCArMTA2Niw4IEBACiAJCTBGNjIwMTZGMTQzRkNEMkYwMDY4Qjc3QyAv
KiBERkdBYnN0cmFjdFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERG
R0Fic3RyYWN0VmFsdWUuaDsgcGF0aCA9IGRmZy9ERkdBYnN0cmFjdFZhbHVlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjIwMTcwMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdCYXNp
Y0Jsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Jhc2ljQmxvY2su
aDsgcGF0aCA9IGRmZy9ERkdCYXNpY0Jsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNjIwMTcyMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVmFyaWFibGVBY2Nlc3NEYXRhLmg7
IHBhdGggPSBkZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTBGNjM5NDNDMTVDNzVGMTQwMDZBNTk3QyAvKiBERkdTdHJ1Y3R1cmVDaGVja0hv
aXN0aW5nUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZH
U3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdTdHJ1Y3R1cmVD
aGVja0hvaXN0aW5nUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjYz
OTQzRDE1Qzc1RjE0MDA2QTU5N0MgLyogREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0cnVjdHVyZUNoZWNrSG9pc3Rp
bmdQaGFzZS5oOyBwYXRoID0gZGZnL0RGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjYzOTQzQzE1Qzc1RjE0MDA2QTU5N0MgLyog
REZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdU
eXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY2Mzk0M0QxNUM3NUYxNDAwNkE1OTdDIC8qIERGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFz
ZS5oOyBwYXRoID0gZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY2Mzk0NTExNUQwNzA1MTAwNkE1OTdDIC8qIEFycmF5UHJvZmls
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheVByb2ZpbGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjYzOTQ1MjE1RDA3MDUxMDA2QTU5
N0MgLyogQXJyYXlQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFy
cmF5UHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjYzOTQ3NjE1RENF
MzQ3MDA2QTU5N0MgLyogREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmg7IHBhdGggPSBk
ZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTk4Myw3ICsxOTgzLDcgQEAKIAkJfTsKIAkJMEZGNDI3MkUxNThFQkNDRTAwNENCOUZG
IC8qIGRpc2Fzc2VtYmxlciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4g
PSAoCQkJCisJCQljaGlsZHJlbiA9ICgKIAkJCQk2NUMwMjg1OTE3MTc5NjY4MDAzNTFFMzUgLyog
QVJNdjcgKi8sCiAJCQkJMEZGNDI3MzMxNThFQkQ2NDAwNENCOUZGIC8qIHVkaXM4NiAqLywKIAkJ
CQk2NUMwMjg0RjE3MTc5NUUyMDAzNTFFMzUgLyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwICovLApA
QCAtMjc2Nyw4ICsyNzY3LDggQEAKIAkJCQk4Njg4MEYxQjE0MzI4QkI5MDBCMDhENDIgLyogREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi8sCiAJCQkJODY4ODBGNEMxNDM1M0IyMTAwQjA4RDQy
IC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwICovLAogCQkJCTBGNjM5NDc2MTVEQ0UzNDcwMDZB
NTk3QyAvKiBERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmggKi8sCi0JCQkJMEY2Mzk0M0MxNUM3
NUYxNDAwNkE1OTdDIC8qIERGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgKi8sCi0J
CQkJMEY2Mzk0M0QxNUM3NUYxNDAwNkE1OTdDIC8qIERGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQ
aGFzZS5oICovLAorCQkJCTBGNjM5NDNDMTVDNzVGMTQwMDZBNTk3QyAvKiBERkdUeXBlQ2hlY2tI
b2lzdGluZ1BoYXNlLmNwcCAqLywKKwkJCQkwRjYzOTQzRDE1Qzc1RjE0MDA2QTU5N0MgLyogREZH
VHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5oICovLAogCQkJCTBGQzA5NzlGMTQ2QjI4QzcwMENGMjQ0
MiAvKiBERkdUaHVua3MuY3BwICovLAogCQkJCTBGQzA5N0EwMTQ2QjI4QzcwMENGMjQ0MiAvKiBE
RkdUaHVua3MuaCAqLywKIAkJCQkwRkJFMEY2RjE2QzFEQjAxMDA4MkM1RTggLyogREZHVW5pZmlj
YXRpb25QaGFzZS5jcHAgKi8sCkBAIC0zMTE0LDcgKzMxMTQsNyBAQAogCQkJCTBGMUUzQTY3MTUz
QTIxRTIwMDBGOTQ1NiAvKiBERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NkVDOUREMzEzMjhERjgyMDAyQjJBRDcgLyogREZHU3BlY3VsYXRpdmVKSVQuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNjM5NDc4MTVEQ0UzNEIwMDZBNTk3QyAvKiBERkdTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjYzOTQzRjE1Qzc1RjE5MDA2
QTU5N0MgLyogREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjYzOTQzRjE1Qzc1RjE5MDA2QTU5N0MgLyogREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3QTIxNDZCMjhDQzAwQ0YyNDQyIC8qIERGR1Ro
dW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzQjNBMkMxNTQ3NTAwMjAwM0VEMEZGIC8qIERG
R1ZhbGlkYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCREM0NzE1MjI4MDI1MDBDRDg5MTAg
LyogREZHVmFsdWVSZWNvdmVyeU92ZXJyaWRlLmggaW4gSGVhZGVycyAqLywKQEAgLTM4NzgsNyAr
Mzg3OCw3IEBACiAJCQkJODZFQzlERDIxMzI4REY4MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZl
SklULmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2ODgwRjFGMTQzMjhCQjkwMEIwOEQ0MiAvKiBE
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2ODgwRjREMTQz
NTNCMjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTBGNjM5NDQwMTVDNzVGMUQwMDZBNTk3QyAvKiBERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5n
UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY2Mzk0NDAxNUM3NUYxRDAwNkE1OTdDIC8q
IERGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMDk3
QTExNDZCMjhDQTAwQ0YyNDQyIC8qIERGR1RodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjNCM0EyQjE1NDc1MDAwMDAzRUQwRkYgLyogREZHVmFsaWRhdGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEYyQkRDNEYxNTIyOEJGMzAwQ0Q4OTEwIC8qIERGR1ZhbHVlU291cmNlLmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAko
cmV2aXNpb24gMTQ5OTAyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVkZSAiREZHSklUQ29t
cGlsZXIuaCIKICNpbmNsdWRlICJERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuaCIKICNpbmNs
dWRlICJERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5oIgotI2luY2x1ZGUgIkRGR1N0cnVj
dHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5oIgorI2luY2x1ZGUgIkRGR1R5cGVDaGVja0hvaXN0aW5n
UGhhc2UuaCIKICNpbmNsdWRlICJERkdVbmlmaWNhdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZH
VmFsaWRhdGUuaCIKICNpbmNsdWRlICJERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2Uu
aCIKQEAgLTEyOSw3ICsxMjksNyBAQCBpbmxpbmUgYm9vbCBjb21waWxlKENvbXBpbGVNb2RlIGNv
bXBpbGVNCiAgICAgcGVyZm9ybUJhY2t3YXJkc1Byb3BhZ2F0aW9uKGRmZyk7CiAgICAgcGVyZm9y
bVByZWRpY3Rpb25Qcm9wYWdhdGlvbihkZmcpOwogICAgIHBlcmZvcm1GaXh1cChkZmcpOwotICAg
IHBlcmZvcm1TdHJ1Y3R1cmVDaGVja0hvaXN0aW5nKGRmZyk7CisgICAgcGVyZm9ybVR5cGVDaGVj
a0hvaXN0aW5nKGRmZyk7CiAgICAgCiAgICAgZGZnLm1fZml4cG9pbnRTdGF0ZSA9IEZpeHBvaW50
Tm90Q29udmVyZ2VkOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVj
dHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCShyZXZpc2lvbiAx
NDk5MDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUNoZWNrSG9p
c3RpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMzkyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkRGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5oIgotCi0jaWYgRU5B
QkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdCYXNpY0Jsb2NrLmgiCi0jaW5jbHVkZSAiREZH
R3JhcGguaCIKLSNpbmNsdWRlICJERkdJbnNlcnRpb25TZXQuaCIKLSNpbmNsdWRlICJERkdQaGFz
ZS5oIgotI2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaCIKLSNpbmNsdWRlICJP
cGVyYXRpb25zLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLQotbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewotCi1lbnVtIENoZWNrQmFsbG90IHsgVm90ZU90aGVyLCBWb3RlU3Ry
dWN0dXJlQ2hlY2sgfTsKLQotY2xhc3MgU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlIDogcHVi
bGljIFBoYXNlIHsKLXB1YmxpYzoKLSAgICBTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UoR3Jh
cGgmIGdyYXBoKQotICAgICAgICA6IFBoYXNlKGdyYXBoLCAic3RydWN0dXJlIGNoZWNrIGhvaXN0
aW5nIikKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGJvb2wgcnVuKCkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRlZENQUyk7Ci0gICAgICAgIAotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fdmFyaWFibGVBY2Nlc3NEYXRhLnNpemUoKTsg
aS0tOykgewotICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9ICZtX2dy
YXBoLm1fdmFyaWFibGVBY2Nlc3NEYXRhW2ldOwotICAgICAgICAgICAgaWYgKCF2YXJpYWJsZS0+
aXNSb290KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB2YXJpYWJs
ZS0+Y2xlYXJWb3RlcygpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBJZGVudGlm
eSB0aGUgc2V0IG9mIHZhcmlhYmxlcyB0aGF0IGFyZSBhbHdheXMgc3ViamVjdCB0byB0aGUgc2Ft
ZSBzdHJ1Y3R1cmUKLSAgICAgICAgLy8gY2hlY2tzLiBGb3Igbm93LCBvbmx5IGNvbnNpZGVyIG1v
bm9tb3JwaGljIHN0cnVjdHVyZSBjaGVja3MgKG9uZSBzdHJ1Y3R1cmUpLgotICAgICAgICAKLSAg
ICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFw
aC5tX2Jsb2Nrcy5zaXplKCk7ICsrYmxvY2tJbmRleCkgewotICAgICAgICAgICAgQmFzaWNCbG9j
ayogYmxvY2sgPSBtX2dyYXBoLm1fYmxvY2tzW2Jsb2NrSW5kZXhdLmdldCgpOwotICAgICAgICAg
ICAgaWYgKCFibG9jaykKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaW5kZXhJbkJsb2NrID0gMDsgaW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUo
KTsgKytpbmRleEluQmxvY2spIHsKLSAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2st
PmF0KGluZGV4SW5CbG9jayk7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7
Ci0gICAgICAgICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICAgICAgICAgICAgICBj
YXNlIFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50OiB7Ci0gICAgICAgICAgICAgICAgICAg
IE5vZGUqIGNoaWxkID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoY2hpbGQtPm9wKCkgIT0gR2V0TG9jYWwpCi0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9
IGNoaWxkLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyaWFi
bGUtPnZvdGUoVm90ZVN0cnVjdHVyZUNoZWNrKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFz
aG91bGRDb25zaWRlckZvckhvaXN0aW5nKHZhcmlhYmxlKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBub3RpY2VTdHJ1Y3R1cmVDaGVjayh2YXJp
YWJsZSwgbm9kZS0+c3RydWN0dXJlU2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IGNhc2UgRm9yd2FyZENoZWNrU3RydWN0dXJlOgotICAgICAgICAgICAgICAgIGNhc2UgRm9yd2Fy
ZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50OgotICAgICAgICAgICAgICAgICAgICAvLyBX
ZSBjdXJyZW50bHkgcmVseSBvbiB0aGUgZmFjdCB0aGF0IHdlJ3JlIHRoZSBvbmx5IG9uZXMgd2hv
IHdvdWxkCi0gICAgICAgICAgICAgICAgICAgIC8vIGluc2VydCB0aGlzIG5vZGUuCi0gICAgICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjYXNl
IEdldEJ5T2Zmc2V0OgotICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlPZmZzZXQ6Ci0gICAgICAg
ICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6Ci0gICAgICAgICAgICAgICAgY2FzZSBBbGxvY2F0
ZVByb3BlcnR5U3RvcmFnZToKLSAgICAgICAgICAgICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0
eVN0b3JhZ2U6Ci0gICAgICAgICAgICAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6Ci0gICAgICAgICAg
ICAgICAgY2FzZSBHZXRCeVZhbDoKLSAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgotICAg
ICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKLSAgICAgICAgICAgICAgICBjYXNlIEdl
dEFycmF5TGVuZ3RoOgotICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tBcnJheToKLSAgICAgICAg
ICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6Ci0gICAgICAgICAgICAgICAg
Y2FzZSBQaGFudG9tOgotICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBjb3VudCB0aGVzZSB1
c2VzLgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgotICAgICAgICAgICAgICAg
IGNhc2UgQXJyYXlpZnk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUo
KS5jb252ZXJzaW9uKCkgPT0gQXJyYXk6OlJhZ2VDb252ZXJ0KSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyBSYWdlIGNvbnZlcnNpb24gY2hhbmdlcyBzdHJ1Y3R1cmVzLiBXZSBzaG91bGQg
YXZvaWQgdHlpbmcgdG8gZG8KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSBraW5kIG9m
IGhvaXN0aW5nIHdoZW4gcmFnZSBjb252ZXJzaW9uIGlzIGluIHBsYXkuCi0gICAgICAgICAgICAg
ICAgICAgICAgICBOb2RlKiBjaGlsZCA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChjaGlsZC0+b3AoKSAhPSBHZXRMb2NhbCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxl
QWNjZXNzRGF0YSogdmFyaWFibGUgPSBjaGlsZC0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+dm90ZShWb3RlT3RoZXIpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFzaG91bGRDb25zaWRlckZvckhvaXN0aW5nKHZhcmlhYmxlKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG5vdGljZVN0cnVjdHVyZUNoZWNrKHZhcmlhYmxlLCAwKTsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgY2FzZSBTZXRMb2NhbDogewotICAgICAgICAgICAgICAgICAgICAvLyBG
aW5kIGFsbCB1c2VzIG9mIHRoZSBzb3VyY2Ugb2YgdGhlIFNldExvY2FsLiBJZiBhbnkgb2YgdGhl
bSBhcmUgYQotICAgICAgICAgICAgICAgICAgICAvLyBraW5kIG9mIENoZWNrU3RydWN0dXJlLCB0
aGVuIHdlIHNob3VsZCBub3RpY2UgdGhlbSB0byBlbnN1cmUgdGhhdAotICAgICAgICAgICAgICAg
ICAgICAvLyB3ZSdyZSBub3QgaG9pc3RpbmcgYSBjaGVjayB0aGF0IHdvdWxkIGNvbnRyYXZlbmUg
Y2hlY2tzIHRoYXQgYXJlCi0gICAgICAgICAgICAgICAgICAgIC8vIGFscmVhZHkgYmVpbmcgcGVy
Zm9ybWVkLgotICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxl
ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgh
c2hvdWxkQ29uc2lkZXJGb3JIb2lzdGluZyh2YXJpYWJsZSkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogc291cmNlID0gbm9kZS0+Y2hp
bGQxKCkubm9kZSgpOwotICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHN1YkluZGV4
SW5CbG9jayA9IDA7IHN1YkluZGV4SW5CbG9jayA8IGJsb2NrLT5zaXplKCk7ICsrc3ViSW5kZXhJ
bkJsb2NrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiBzdWJOb2RlID0gYmxvY2st
PmF0KHN1YkluZGV4SW5CbG9jayk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHN1
Yk5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1
cmU6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3ViTm9kZS0+Y2hpbGQxKCkg
IT0gc291cmNlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3Rp
Y2VTdHJ1Y3R1cmVDaGVjayh2YXJpYWJsZSwgc3ViTm9kZS0+c3RydWN0dXJlU2V0KCkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hw
b2ludDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWJOb2RlLT5jaGlsZDEo
KSAhPSBzb3VyY2UpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5v
dGljZVN0cnVjdHVyZUNoZWNrKHZhcmlhYmxlLCBzdWJOb2RlLT5zdHJ1Y3R1cmUoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
LnZvdGVDaGlsZHJlbihub2RlLCBWb3RlT3RoZXIpOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY2FzZSBHYXJiYWdlVmFsdWU6
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnZvdGVDaGls
ZHJlbihub2RlLCBWb3RlT3RoZXIpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAg
IC8vIERpc2FibGUgc3RydWN0dXJlIGhvaXN0aW5nIG9uIHZhcmlhYmxlcyB0aGF0IGFwcGVhciB0
byBtb3N0bHkgYmUgdXNlZCBpbgotICAgICAgICAvLyBjb250ZXh0cyB3aGVyZSBpdCBkb2Vzbid0
IG1ha2Ugc2Vuc2UuCi0gICAgICAgIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBo
Lm1fdmFyaWFibGVBY2Nlc3NEYXRhLnNpemUoKTsgaS0tOykgewotICAgICAgICAgICAgVmFyaWFi
bGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9ICZtX2dyYXBoLm1fdmFyaWFibGVBY2Nlc3NEYXRhW2ld
OwotICAgICAgICAgICAgaWYgKCF2YXJpYWJsZS0+aXNSb290KCkpCi0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICBpZiAodmFyaWFibGUtPnZvdGVSYXRpbygpID49IE9wdGlv
bnM6OnN0cnVjdHVyZUNoZWNrVm90ZVJhdGlvRm9ySG9pc3RpbmcoKSkKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIEhhc2hNYXA8VmFyaWFibGVBY2Nlc3NEYXRhKiwgQ2hl
Y2tEYXRhPjo6aXRlcmF0b3IgaXRlciA9IG1fbWFwLmZpbmQodmFyaWFibGUpOwotICAgICAgICAg
ICAgaWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0j
aWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAgZGF0
YUxvZygKLSAgICAgICAgICAgICAgICAiWmVyb2luZyB0aGUgc3RydWN0dXJlIHRvIGhvaXN0IGZv
ciAiLCBWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wKG1fZ3JhcGgsIHZhcmlhYmxlKSwKLSAgICAgICAg
ICAgICAgICAiIGJlY2F1c2UgdGhlIHJhdGlvIGlzICIsIHZhcmlhYmxlLT52b3RlUmF0aW8oKSwg
Ii5cbiIpOwotI2VuZGlmCi0gICAgICAgICAgICBpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSA9IDA7
Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIERpc2FibGUgc3RydWN0dXJlIGNoZWNr
IGhvaXN0aW5nIGZvciB2YXJpYWJsZXMgdGhhdCBjcm9zcyB0aGUgT1NSIGVudHJ5IHRoYXQKLSAg
ICAgICAgLy8gd2UncmUgY3VycmVudGx5IHRha2luZywgYW5kIHdoZXJlIHRoZSB2YWx1ZSBjdXJy
ZW50bHkgZG9lcyBub3QgaGF2ZSB0aGUKLSAgICAgICAgLy8gc3RydWN0dXJlIHdlIHdhbnQuCi0g
ICAgICAgIAotICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDA7IGJsb2NrSW5k
ZXggPCBtX2dyYXBoLm1fYmxvY2tzLnNpemUoKTsgKytibG9ja0luZGV4KSB7Ci0gICAgICAgICAg
ICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGgubV9ibG9ja3NbYmxvY2tJbmRleF0uZ2V0KCk7
Ci0gICAgICAgICAgICBpZiAoIWJsb2NrKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgQVNTRVJUKGJsb2NrLT5pc1JlYWNoYWJsZSk7Ci0gICAgICAgICAgICBpZiAoIWJs
b2NrLT5pc09TUlRhcmdldCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IGlmIChibG9jay0+Ynl0ZWNvZGVCZWdpbiAhPSBtX2dyYXBoLm1fb3NyRW50cnlCeXRlY29kZUlu
ZGV4KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2dyYXBoLm1fbXVzdEhhbmRsZVZhbHVlcy5zaXplKCk7ICsraSkgewotICAg
ICAgICAgICAgICAgIGludCBvcGVyYW5kID0gbV9ncmFwaC5tX211c3RIYW5kbGVWYWx1ZXMub3Bl
cmFuZEZvckluZGV4KGkpOwotICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+dmFy
aWFibGVzQXRIZWFkLm9wZXJhbmQob3BlcmFuZCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFub2Rl
KQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBWYXJpYWJs
ZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7Ci0gICAg
ICAgICAgICAgICAgSGFzaE1hcDxWYXJpYWJsZUFjY2Vzc0RhdGEqLCBDaGVja0RhdGE+OjppdGVy
YXRvciBpdGVyID0gbV9tYXAuZmluZCh2YXJpYWJsZSk7Ci0gICAgICAgICAgICAgICAgaWYgKGl0
ZXIgPT0gbV9tYXAuZW5kKCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgICAgIGlmICghaXRlci0+dmFsdWUubV9zdHJ1Y3R1cmUpCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBtX2dyYXBoLm1f
bXVzdEhhbmRsZVZhbHVlc1tpXTsKLSAgICAgICAgICAgICAgICBpZiAoIXZhbHVlIHx8ICF2YWx1
ZS5pc0NlbGwoKSkgewotI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkK
LSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygKLSAgICAgICAgICAgICAgICAgICAgICAgICJa
ZXJvaW5nIHRoZSBzdHJ1Y3R1cmUgdG8gaG9pc3QgZm9yICIsIFZhcmlhYmxlQWNjZXNzRGF0YUR1
bXAobV9ncmFwaCwgdmFyaWFibGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgIiBiZWNhdXNl
IHRoZSBPU1IgZW50cnkgdmFsdWUgaXMgbm90IGEgY2VsbDogIiwgdmFsdWUsICIuXG4iKTsKLSNl
bmRpZgotICAgICAgICAgICAgICAgICAgICBpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSA9IDA7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBpZiAodmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgpICE9IGl0ZXItPnZhbHVlLm1f
c3RydWN0dXJlKSB7Ci0jaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQot
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgICAgICAgICAgICAgIlpl
cm9pbmcgdGhlIHN0cnVjdHVyZSB0byBob2lzdCBmb3IgIiwgVmFyaWFibGVBY2Nlc3NEYXRhRHVt
cChtX2dyYXBoLCB2YXJpYWJsZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAiIGJlY2F1c2Ug
dGhlIE9TUiBlbnRyeSB2YWx1ZSBoYXMgc3RydWN0dXJlICIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBSYXdQb2ludGVyKHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSksICIgYW5kIHdlIHdh
bnRlZCAiLAotICAgICAgICAgICAgICAgICAgICAgICAgUmF3UG9pbnRlcihpdGVyLT52YWx1ZS5t
X3N0cnVjdHVyZSksICIuXG4iKTsKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICBpdGVyLT52
YWx1ZS5tX3N0cnVjdHVyZSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wg
Y2hhbmdlZCA9IGZhbHNlOwotCi0jaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJC
T1NFKQotICAgICAgICBmb3IgKEhhc2hNYXA8VmFyaWFibGVBY2Nlc3NEYXRhKiwgQ2hlY2tEYXRh
Pjo6aXRlcmF0b3IgaXQgPSBtX21hcC5iZWdpbigpOwotICAgICAgICAgICAgIGl0ICE9IG1fbWFw
LmVuZCgpOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoIWl0LT52YWx1ZS5tX3N0cnVjdHVyZSkg
ewotICAgICAgICAgICAgICAgIGRhdGFMb2coCi0gICAgICAgICAgICAgICAgICAgICJOb3QgaG9p
c3RpbmcgY2hlY2tzIGZvciAiLCBWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wKG1fZ3JhcGgsIGl0LT5r
ZXkpLAotICAgICAgICAgICAgICAgICAgICAiIGJlY2F1c2Ugb2YgaGV1cmlzdGljcy5cbiIpOwot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZGF0
YUxvZygiSG9pc3RpbmcgY2hlY2tzIGZvciAiLCBWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wKG1fZ3Jh
cGgsIGl0LT5rZXkpLCAiXG4iKTsKLSAgICAgICAgfQotI2VuZGlmIC8vIERGR19FTkFCTEUoREVC
VUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgCi0gICAgICAgIC8vIFBsYWNlIENoZWNr
U3RydWN0dXJlJ3MgYXQgU2V0TG9jYWwgc2l0ZXMuCi0gICAgICAgIAotICAgICAgICBJbnNlcnRp
b25TZXQgaW5zZXJ0aW9uU2V0KG1fZ3JhcGgpOwotICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxv
Y2tJbmRleCA9IDA7IGJsb2NrSW5kZXggPCBtX2dyYXBoLm1fYmxvY2tzLnNpemUoKTsgKytibG9j
a0luZGV4KSB7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGgubV9ibG9j
a3NbYmxvY2tJbmRleF0uZ2V0KCk7Ci0gICAgICAgICAgICBpZiAoIWJsb2NrKQotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleEluQmxvY2sg
PSAwOyBpbmRleEluQmxvY2sgPCBibG9jay0+c2l6ZSgpOyArK2luZGV4SW5CbG9jaykgewotICAg
ICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaW5kZXhJbkJsb2NrKTsKLSAgICAg
ICAgICAgICAgICAvLyBCZSBjYXJlZnVsIG5vdCB0byB1c2UgJ25vZGUnIGFmdGVyIGFwcGVuZGlu
ZyB0byB0aGUgZ3JhcGguIEluIHRob3NlIHN3aXRjaAotICAgICAgICAgICAgICAgIC8vIGNhc2Vz
IHdoZXJlIHdlIG5lZWQgdG8gYXBwZW5kLCB3ZSBmaXJzdCBjYXJlZnVsbHkgZXh0cmFjdCBldmVy
eXRoaW5nIHdlIG5lZWQKLSAgICAgICAgICAgICAgICAvLyBmcm9tIHRoZSBub2RlLCBiZWZvcmUg
ZG9pbmcgYW55IGFwcGVuZGluZy4KLSAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkp
IHsKLSAgICAgICAgICAgICAgICBjYXNlIFNldEFyZ3VtZW50OiB7Ci0gICAgICAgICAgICAgICAg
ICAgIEFTU0VSVCghYmxvY2tJbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEluc2VydCBh
IEdldExvY2FsIGFuZCBhIENoZWNrU3RydWN0dXJlIGltbWVkaWF0ZWx5IGZvbGxvd2luZyB0aGlz
Ci0gICAgICAgICAgICAgICAgICAgIC8vIFNldEFyZ3VtZW50LCBpZiB0aGUgdmFyaWFibGUgd2Fz
IGEgY2FuZGlkYXRlIGZvciBzdHJ1Y3R1cmUgaG9pc3RpbmcuCi0gICAgICAgICAgICAgICAgICAg
IC8vIElmIHRoZSBiYXNpYyBibG9jayBwcmV2aW91c2x5IG9ubHkgaGFkIHRoZSBTZXRBcmd1bWVu
dCBhcyBpdHMKLSAgICAgICAgICAgICAgICAgICAgLy8gdmFyaWFibGUtYXQtdGFpbCwgdGhlbiBy
ZXBsYWNlIGl0IHdpdGggdGhpcyBHZXRMb2NhbC4KLSAgICAgICAgICAgICAgICAgICAgVmFyaWFi
bGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwotICAg
ICAgICAgICAgICAgICAgICBIYXNoTWFwPFZhcmlhYmxlQWNjZXNzRGF0YSosIENoZWNrRGF0YT46
Oml0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKHZhcmlhYmxlKTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+Y29kZU9yaWdpbjsK
LSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIE5vZGUqIGdldExvY2Fs
ID0gaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmRl
eEluQmxvY2sgKyAxLCB2YXJpYWJsZS0+cHJlZGljdGlvbigpLCBHZXRMb2NhbCwgY29kZU9yaWdp
biwKLSAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyh2YXJpYWJsZSksIEVkZ2Uobm9kZSkp
OwotICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jayArIDEsIFNwZWNOb25lLCBDaGVja1N0cnVjdHVy
ZSwgY29kZU9yaWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLmFk
ZFN0cnVjdHVyZVNldChpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSkpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgRWRnZShnZXRMb2NhbCwgQ2VsbFVzZSkpOwotCi0gICAgICAgICAgICAgICAgICAg
IGlmIChibG9jay0+dmFyaWFibGVzQXRUYWlsLm9wZXJhbmQodmFyaWFibGUtPmxvY2FsKCkpID09
IG5vZGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+dmFyaWFibGVzQXRUYWlsLm9w
ZXJhbmQodmFyaWFibGUtPmxvY2FsKCkpID0gZ2V0TG9jYWw7Ci0gICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnN1YnN0aXR1dGVHZXRMb2NhbCgqYmxvY2ss
IGluZGV4SW5CbG9jaywgdmFyaWFibGUsIGdldExvY2FsKTsKLSAgICAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIGNhc2UgU2V0TG9jYWw6IHsKLSAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVB
Y2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwotICAgICAg
ICAgICAgICAgICAgICBIYXNoTWFwPFZhcmlhYmxlQWNjZXNzRGF0YSosIENoZWNrRGF0YT46Oml0
ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKHZhcmlhYmxlKTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKCFpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIEZpcnN0
IGluc2VydCBhIGRlYWQgU2V0TG9jYWwgdG8gdGVsbCBPU1IgdGhhdCB0aGUgY2hpbGQncyB2YWx1
ZSBzaG91bGQKLSAgICAgICAgICAgICAgICAgICAgLy8gYmUgZHJvcHBlZCBpbnRvIHRoaXMgYnl0
ZWNvZGUgdmFyaWFibGUgaWYgdGhlIENoZWNrU3RydWN0dXJlIGRlY2lkZXMKLSAgICAgICAgICAg
ICAgICAgICAgLy8gdG8gZXhpdC4KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPmNvZGVPcmlnaW47Ci0gICAgICAg
ICAgICAgICAgICAgIEVkZ2UgY2hpbGQxID0gbm9kZS0+Y2hpbGQxKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFNldExvY2FsLCBj
b2RlT3JpZ2luLCBPcEluZm8odmFyaWFibGUpLCBjaGlsZDEpOwotCi0gICAgICAgICAgICAgICAg
ICAgIC8vIFVzZSBhIEZvcndhcmRDaGVja1N0cnVjdHVyZSB0byBpbmRpY2F0ZSB0aGF0IHdlIHNo
b3VsZCBleGl0IHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGJ5dGVjb2RlIGlu
c3RydWN0aW9uIHJhdGhlciB0aGFuIHJlZXhlY3V0aW5nIHRoZSBjdXJyZW50IG9uZS4KLSAgICAg
ICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAg
ICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBGb3J3YXJkQ2hlY2tTdHJ1Y3R1cmUsIGNv
ZGVPcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1
Y3R1cmVTZXQoaXRlci0+dmFsdWUubV9zdHJ1Y3R1cmUpKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEVkZ2UoY2hpbGQxLm5vZGUoKSwgQ2VsbFVzZSkpOwotICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7Ci0gICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIHJldHVybiBjaGFuZ2VkOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBi
b29sIHNob3VsZENvbnNpZGVyRm9ySG9pc3RpbmcoVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJs
ZSkKLSAgICB7Ci0gICAgICAgIGlmICghdmFyaWFibGUtPnNob3VsZFVuYm94SWZQb3NzaWJsZSgp
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAodmFyaWFibGUtPnN0cnVj
dHVyZUNoZWNrSG9pc3RpbmdGYWlsZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgaWYgKCFpc0NlbGxTcGVjdWxhdGlvbih2YXJpYWJsZS0+cHJlZGljdGlvbigpKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAg
IAotICAgIHZvaWQgbm90aWNlU3RydWN0dXJlQ2hlY2soVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJp
YWJsZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewotICAgICAgICBIYXNoTWFwPFZhcmlh
YmxlQWNjZXNzRGF0YSosIENoZWNrRGF0YT46OkFkZFJlc3VsdCByZXN1bHQgPQotICAgICAgICAg
ICAgbV9tYXAuYWRkKHZhcmlhYmxlLCBDaGVja0RhdGEoc3RydWN0dXJlKSk7Ci0gICAgICAgIGlm
IChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHJl
c3VsdC5pdGVyYXRvci0+dmFsdWUubV9zdHJ1Y3R1cmUgPT0gc3RydWN0dXJlKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLm1fc3RydWN0dXJlID0g
MDsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBub3RpY2VTdHJ1Y3R1cmVDaGVjayhWYXJpYWJsZUFj
Y2Vzc0RhdGEqIHZhcmlhYmxlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCkKLSAgICB7Ci0gICAg
ICAgIGlmIChzZXQuc2l6ZSgpICE9IDEpIHsKLSAgICAgICAgICAgIG5vdGljZVN0cnVjdHVyZUNo
ZWNrKHZhcmlhYmxlLCAwKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICBub3RpY2VTdHJ1Y3R1cmVDaGVjayh2YXJpYWJsZSwgc2V0LnNpbmdsZXRvblN0cnVjdHVyZSgp
KTsKLSAgICB9Ci0gICAgCi0gICAgc3RydWN0IENoZWNrRGF0YSB7Ci0gICAgICAgIFN0cnVjdHVy
ZSogbV9zdHJ1Y3R1cmU7Ci0gICAgICAgIAotICAgICAgICBDaGVja0RhdGEoKQotICAgICAgICAg
ICAgOiBtX3N0cnVjdHVyZSgwKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIENoZWNrRGF0YShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICAgICAgICAgIDogbV9zdHJ1
Y3R1cmUoc3RydWN0dXJlKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICB9OwotICAgIAotICAg
IEhhc2hNYXA8VmFyaWFibGVBY2Nlc3NEYXRhKiwgQ2hlY2tEYXRhPiBtX21hcDsKLX07Ci0KLWJv
b2wgcGVyZm9ybVN0cnVjdHVyZUNoZWNrSG9pc3RpbmcoR3JhcGgmIGdyYXBoKQotewotICAgIFNh
bXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgU3RydWN0dXJlIENoZWNrIEhvaXN0aW5n
IFBoYXNlIik7Ci0gICAgcmV0dXJuIHJ1blBoYXNlPFN0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFz
ZT4oZ3JhcGgpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRpZiAvLyBF
TkFCTEUoREZHX0pJVCkKLQotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0
cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmgJKHJldmlzaW9uIDE0
OTkwMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQ2hlY2tIb2lz
dGluZ1BoYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIERGR1N0cnVjdHVyZUNo
ZWNrSG9pc3RpbmdQaGFzZV9oCi0jZGVmaW5lIERGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFz
ZV9oCi0KLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KLQotI2lmIEVOQUJMRShERkdfSklUKQot
Ci1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLWNsYXNzIEdyYXBoOwotCi0vLyBI
b2lzdHMgQ2hlY2tTdHJ1Y3R1cmUgb24gdmFyaWFibGVzIHRvIGFzc2lnbm1lbnRzIHRvIHRob3Nl
IHZhcmlhYmxlcywgaWYgZWl0aGVyIG9mCi0vLyB0aGUgZm9sbG93aW5nIGlzIHRydWU6Ci0vLyBB
KSBUaGUgc3RydWN0dXJlJ3MgdHJhbnNpdGlvbiB3YXRjaHBvaW50IHNldCBpcyB2YWxpZC4KLS8v
IEIpIFRoZSBzcGFuIG9mIGNvZGUgd2l0aGluIHdoaWNoIHRoZSB2YXJpYWJsZSBpcyBsaXZlIGhh
cyBubyBlZmZlY3RzIHRoYXQgbWlnaHQKLS8vICAgIGNsb2JiZXIgdGhlIHN0cnVjdHVyZS4KLQot
Ym9vbCBwZXJmb3JtU3RydWN0dXJlQ2hlY2tIb2lzdGluZyhHcmFwaCYpOwotCi19IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQotI2VuZGlmIC8v
IERGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZV9oCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAko
cmV2aXNpb24gMTQ5OTAyKQkoZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVj
dHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHA6MTQ5OTAyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDM5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREZHU3RydWN0dXJlQ2hlY2tIb2lz
dGluZ1BoYXNlLmgiCisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworI2luY2x1ZGUgIkRGR0Jhc2lj
QmxvY2suaCIKKyNpbmNsdWRlICJERkdHcmFwaC5oIgorI2luY2x1ZGUgIkRGR0luc2VydGlvblNl
dC5oIgorI2luY2x1ZGUgIkRGR1BoYXNlLmgiCisjaW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NE
YXRhRHVtcC5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK2VudW0gQ2hlY2tCYWxs
b3QgeyBWb3RlT3RoZXIsIFZvdGVTdHJ1Y3R1cmVDaGVjayB9OworCitjbGFzcyBTdHJ1Y3R1cmVD
aGVja0hvaXN0aW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgeworcHVibGljOgorICAgIFN0cnVjdHVy
ZUNoZWNrSG9pc3RpbmdQaGFzZShHcmFwaCYgZ3JhcGgpCisgICAgICAgIDogUGhhc2UoZ3JhcGgs
ICJzdHJ1Y3R1cmUgY2hlY2sgaG9pc3RpbmciKQorICAgIHsKKyAgICB9CisgICAgCisgICAgYm9v
bCBydW4oKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVk
Q1BTKTsKKyAgICAgICAgCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV92YXJp
YWJsZUFjY2Vzc0RhdGEuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBWYXJpYWJsZUFjY2Vz
c0RhdGEqIHZhcmlhYmxlID0gJm1fZ3JhcGgubV92YXJpYWJsZUFjY2Vzc0RhdGFbaV07CisgICAg
ICAgICAgICBpZiAoIXZhcmlhYmxlLT5pc1Jvb3QoKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIHZhcmlhYmxlLT5jbGVhclZvdGVzKCk7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIC8vIElkZW50aWZ5IHRoZSBzZXQgb2YgdmFyaWFibGVzIHRoYXQgYXJlIGFs
d2F5cyBzdWJqZWN0IHRvIHRoZSBzYW1lIHN0cnVjdHVyZQorICAgICAgICAvLyBjaGVja3MuIEZv
ciBub3csIG9ubHkgY29uc2lkZXIgbW9ub21vcnBoaWMgc3RydWN0dXJlIGNoZWNrcyAob25lIHN0
cnVjdHVyZSkuCisgICAgICAgIAorICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9
IDA7IGJsb2NrSW5kZXggPCBtX2dyYXBoLm1fYmxvY2tzLnNpemUoKTsgKytibG9ja0luZGV4KSB7
CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGgubV9ibG9ja3NbYmxvY2tJ
bmRleF0uZ2V0KCk7CisgICAgICAgICAgICBpZiAoIWJsb2NrKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleEluQmxvY2sgPSAwOyBpbmRl
eEluQmxvY2sgPCBibG9jay0+c2l6ZSgpOyArK2luZGV4SW5CbG9jaykgeworICAgICAgICAgICAg
ICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaW5kZXhJbkJsb2NrKTsKKyAgICAgICAgICAgICAg
ICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIENoZWNrU3RydWN0
dXJlOgorICAgICAgICAgICAgICAgIGNhc2UgU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQ6
IHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogY2hpbGQgPSBub2RlLT5jaGlsZDEoKS5ub2Rl
KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC0+b3AoKSAhPSBHZXRMb2NhbCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBWYXJpYWJs
ZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gY2hpbGQtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOworICAg
ICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+dm90ZShWb3RlU3RydWN0dXJlQ2hlY2spOworICAg
ICAgICAgICAgICAgICAgICBpZiAoIXNob3VsZENvbnNpZGVyRm9ySG9pc3RpbmcodmFyaWFibGUp
KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIG5v
dGljZVN0cnVjdHVyZUNoZWNrKHZhcmlhYmxlLCBub2RlLT5zdHJ1Y3R1cmVTZXQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBGb3J3YXJkQ2hlY2tTdHJ1Y3R1cmU6CisgICAg
ICAgICAgICAgICAgY2FzZSBGb3J3YXJkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQ6Cisg
ICAgICAgICAgICAgICAgICAgIC8vIFdlIGN1cnJlbnRseSByZWx5IG9uIHRoZSBmYWN0IHRoYXQg
d2UncmUgdGhlIG9ubHkgb25lcyB3aG8gd291bGQKKyAgICAgICAgICAgICAgICAgICAgLy8gaW5z
ZXJ0IHRoaXMgbm9kZS4KKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIGNhc2UgR2V0QnlPZmZzZXQ6CisgICAgICAgICAgICAgICAgY2Fz
ZSBQdXRCeU9mZnNldDoKKyAgICAgICAgICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZToKKyAgICAg
ICAgICAgICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgorICAgICAgICAgICAgICAg
IGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKKyAgICAgICAgICAgICAgICBjYXNlIEdl
dEJ1dHRlcmZseToKKyAgICAgICAgICAgICAgICBjYXNlIEdldEJ5VmFsOgorICAgICAgICAgICAg
ICAgIGNhc2UgUHV0QnlWYWw6CisgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgor
ICAgICAgICAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAgICAgICAgICAgICAgY2Fz
ZSBDaGVja0FycmF5OgorICAgICAgICAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3Rv
cmFnZToKKyAgICAgICAgICAgICAgICBjYXNlIFBoYW50b206CisgICAgICAgICAgICAgICAgICAg
IC8vIERvbid0IGNvdW50IHRoZXNlIHVzZXMuCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1
Y3R1cmU6CisgICAgICAgICAgICAgICAgY2FzZSBBcnJheWlmeToKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmNvbnZlcnNpb24oKSA9PSBBcnJheTo6UmFnZUNvbnZl
cnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJhZ2UgY29udmVyc2lvbiBjaGFuZ2Vz
IHN0cnVjdHVyZXMuIFdlIHNob3VsZCBhdm9pZCB0eWluZyB0byBkbworICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gYW55IGtpbmQgb2YgaG9pc3Rpbmcgd2hlbiByYWdlIGNvbnZlcnNpb24gaXMg
aW4gcGxheS4KKyAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGNoaWxkID0gbm9kZS0+Y2hp
bGQxKCkubm9kZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLT5vcCgpICE9
IEdldExvY2FsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IGNoaWxkLT52YXJp
YWJsZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT52b3Rl
KFZvdGVPdGhlcik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNob3VsZENvbnNpZGVy
Rm9ySG9pc3RpbmcodmFyaWFibGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICAgICAgbm90aWNlU3RydWN0dXJlQ2hlY2sodmFyaWFibGUs
IDApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjYXNlIFNldExvY2FsOiB7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIEZpbmQgYWxsIHVzZXMgb2YgdGhlIHNvdXJjZSBvZiB0aGUg
U2V0TG9jYWwuIElmIGFueSBvZiB0aGVtIGFyZSBhCisgICAgICAgICAgICAgICAgICAgIC8vIGtp
bmQgb2YgQ2hlY2tTdHJ1Y3R1cmUsIHRoZW4gd2Ugc2hvdWxkIG5vdGljZSB0aGVtIHRvIGVuc3Vy
ZSB0aGF0CisgICAgICAgICAgICAgICAgICAgIC8vIHdlJ3JlIG5vdCBob2lzdGluZyBhIGNoZWNr
IHRoYXQgd291bGQgY29udHJhdmVuZSBjaGVja3MgdGhhdCBhcmUKKyAgICAgICAgICAgICAgICAg
ICAgLy8gYWxyZWFkeSBiZWluZyBwZXJmb3JtZWQuCisgICAgICAgICAgICAgICAgICAgIFZhcmlh
YmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRDb25zaWRlckZvckhvaXN0aW5nKHZhcmlhYmxl
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBO
b2RlKiBzb3VyY2UgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7CisgICAgICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgc3ViSW5kZXhJbkJsb2NrID0gMDsgc3ViSW5kZXhJbkJsb2NrIDwgYmxv
Y2stPnNpemUoKTsgKytzdWJJbmRleEluQmxvY2spIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IE5vZGUqIHN1Yk5vZGUgPSBibG9jay0+YXQoc3ViSW5kZXhJbkJsb2NrKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHN3aXRjaCAoc3ViTm9kZS0+b3AoKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZTogeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChzdWJOb2RlLT5jaGlsZDEoKSAhPSBzb3VyY2UpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5vdGljZVN0cnVjdHVyZUNoZWNrKHZhcmlhYmxlLCBzdWJOb2Rl
LT5zdHJ1Y3R1cmVTZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFN0
cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHN1Yk5vZGUtPmNoaWxkMSgpICE9IHNvdXJjZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbm90aWNlU3RydWN0dXJlQ2hlY2sodmFyaWFibGUsIHN1Yk5v
ZGUtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGgudm90ZUNoaWxkcmVuKG5vZGUsIFZvdGVPdGhlcik7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBjYXNlIEdhcmJhZ2VWYWx1ZToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGgudm90ZUNoaWxkcmVuKG5vZGUsIFZvdGVPdGhlcik7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgLy8gRGlzYWJsZSBzdHJ1Y3R1cmUgaG9pc3Rpbmcgb24g
dmFyaWFibGVzIHRoYXQgYXBwZWFyIHRvIG1vc3RseSBiZSB1c2VkIGluCisgICAgICAgIC8vIGNv
bnRleHRzIHdoZXJlIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZS4KKyAgICAgICAgCisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV92YXJpYWJsZUFjY2Vzc0RhdGEuc2l6ZSgpOyBpLS07
KSB7CisgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gJm1fZ3JhcGgu
bV92YXJpYWJsZUFjY2Vzc0RhdGFbaV07CisgICAgICAgICAgICBpZiAoIXZhcmlhYmxlLT5pc1Jv
b3QoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmICh2YXJpYWJs
ZS0+dm90ZVJhdGlvKCkgPj0gT3B0aW9uczo6c3RydWN0dXJlQ2hlY2tWb3RlUmF0aW9Gb3JIb2lz
dGluZygpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgSGFzaE1hcDxW
YXJpYWJsZUFjY2Vzc0RhdGEqLCBDaGVja0RhdGE+OjppdGVyYXRvciBpdGVyID0gbV9tYXAuZmlu
ZCh2YXJpYWJsZSk7CisgICAgICAgICAgICBpZiAoaXRlciA9PSBtX21hcC5lbmQoKSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZF
UkJPU0UpCisgICAgICAgICAgICBkYXRhTG9nKAorICAgICAgICAgICAgICAgICJaZXJvaW5nIHRo
ZSBzdHJ1Y3R1cmUgdG8gaG9pc3QgZm9yICIsIFZhcmlhYmxlQWNjZXNzRGF0YUR1bXAobV9ncmFw
aCwgdmFyaWFibGUpLAorICAgICAgICAgICAgICAgICIgYmVjYXVzZSB0aGUgcmF0aW8gaXMgIiwg
dmFyaWFibGUtPnZvdGVSYXRpbygpLCAiLlxuIik7CisjZW5kaWYKKyAgICAgICAgICAgIGl0ZXIt
PnZhbHVlLm1fc3RydWN0dXJlID0gMDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8g
RGlzYWJsZSBzdHJ1Y3R1cmUgY2hlY2sgaG9pc3RpbmcgZm9yIHZhcmlhYmxlcyB0aGF0IGNyb3Nz
IHRoZSBPU1IgZW50cnkgdGhhdAorICAgICAgICAvLyB3ZSdyZSBjdXJyZW50bHkgdGFraW5nLCBh
bmQgd2hlcmUgdGhlIHZhbHVlIGN1cnJlbnRseSBkb2VzIG5vdCBoYXZlIHRoZQorICAgICAgICAv
LyBzdHJ1Y3R1cmUgd2Ugd2FudC4KKyAgICAgICAgCisgICAgICAgIGZvciAoQmxvY2tJbmRleCBi
bG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubV9ibG9ja3Muc2l6ZSgpOyArK2Js
b2NrSW5kZXgpIHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5tX2Js
b2Nrc1tibG9ja0luZGV4XS5nZXQoKTsKKyAgICAgICAgICAgIGlmICghYmxvY2spCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBBU1NFUlQoYmxvY2stPmlzUmVhY2hhYmxl
KTsKKyAgICAgICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0KQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKGJsb2NrLT5ieXRlY29kZUJlZ2luICE9IG1fZ3Jh
cGgubV9vc3JFbnRyeUJ5dGVjb2RlSW5kZXgpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZ3JhcGgubV9tdXN0SGFuZGxlVmFs
dWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgaW50IG9wZXJhbmQgPSBtX2dyYXBo
Lm1fbXVzdEhhbmRsZVZhbHVlcy5vcGVyYW5kRm9ySW5kZXgoaSk7CisgICAgICAgICAgICAgICAg
Tm9kZSogbm9kZSA9IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZChvcGVyYW5kKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBub2RlLT52YXJp
YWJsZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgICAgICAgICBIYXNoTWFwPFZhcmlhYmxlQWNjZXNz
RGF0YSosIENoZWNrRGF0YT46Oml0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKHZhcmlhYmxlKTsK
KyAgICAgICAgICAgICAgICBpZiAoaXRlciA9PSBtX21hcC5lbmQoKSkKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgaWYgKCFpdGVyLT52YWx1ZS5tX3N0cnVj
dHVyZSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgSlNW
YWx1ZSB2YWx1ZSA9IG1fZ3JhcGgubV9tdXN0SGFuZGxlVmFsdWVzW2ldOworICAgICAgICAgICAg
ICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLmlzQ2VsbCgpKSB7CisjaWYgREZHX0VOQUJMRShERUJV
R19QUk9QQUdBVElPTl9WRVJCT1NFKQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAorICAg
ICAgICAgICAgICAgICAgICAgICAgIlplcm9pbmcgdGhlIHN0cnVjdHVyZSB0byBob2lzdCBmb3Ig
IiwgVmFyaWFibGVBY2Nlc3NEYXRhRHVtcChtX2dyYXBoLCB2YXJpYWJsZSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAiIGJlY2F1c2UgdGhlIE9TUiBlbnRyeSB2YWx1ZSBpcyBub3QgYSBjZWxs
OiAiLCB2YWx1ZSwgIi5cbiIpOworI2VuZGlmCisgICAgICAgICAgICAgICAgICAgIGl0ZXItPnZh
bHVlLm1fc3RydWN0dXJlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5hc0NlbGwoKS0+c3RydWN0
dXJlKCkgIT0gaXRlci0+dmFsdWUubV9zdHJ1Y3R1cmUpIHsKKyNpZiBERkdfRU5BQkxFKERFQlVH
X1BST1BBR0FUSU9OX1ZFUkJPU0UpCisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coCisgICAg
ICAgICAgICAgICAgICAgICAgICAiWmVyb2luZyB0aGUgc3RydWN0dXJlIHRvIGhvaXN0IGZvciAi
LCBWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wKG1fZ3JhcGgsIHZhcmlhYmxlKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICIgYmVjYXVzZSB0aGUgT1NSIGVudHJ5IHZhbHVlIGhhcyBzdHJ1Y3R1cmUg
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJhd1BvaW50ZXIodmFsdWUuYXNDZWxsKCktPnN0
cnVjdHVyZSgpKSwgIiBhbmQgd2Ugd2FudGVkICIsCisgICAgICAgICAgICAgICAgICAgICAgICBS
YXdQb2ludGVyKGl0ZXItPnZhbHVlLm1fc3RydWN0dXJlKSwgIi5cbiIpOworI2VuZGlmCisgICAg
ICAgICAgICAgICAgICAgIGl0ZXItPnZhbHVlLm1fc3RydWN0dXJlID0gMDsKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisKKyNpZiBERkdfRU5BQkxF
KERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCisgICAgICAgIGZvciAoSGFzaE1hcDxWYXJpYWJs
ZUFjY2Vzc0RhdGEqLCBDaGVja0RhdGE+OjppdGVyYXRvciBpdCA9IG1fbWFwLmJlZ2luKCk7Cisg
ICAgICAgICAgICAgaXQgIT0gbV9tYXAuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgIGlmICgh
aXQtPnZhbHVlLm1fc3RydWN0dXJlKSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZygKKyAgICAg
ICAgICAgICAgICAgICAgIk5vdCBob2lzdGluZyBjaGVja3MgZm9yICIsIFZhcmlhYmxlQWNjZXNz
RGF0YUR1bXAobV9ncmFwaCwgaXQtPmtleSksCisgICAgICAgICAgICAgICAgICAgICIgYmVjYXVz
ZSBvZiBoZXVyaXN0aWNzLlxuIik7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBkYXRhTG9nKCJIb2lzdGluZyBjaGVja3MgZm9yICIsIFZhcmlh
YmxlQWNjZXNzRGF0YUR1bXAobV9ncmFwaCwgaXQtPmtleSksICJcbiIpOworICAgICAgICB9Cisj
ZW5kaWYgLy8gREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQorICAgICAgICAK
KyAgICAgICAgLy8gUGxhY2UgQ2hlY2tTdHJ1Y3R1cmUncyBhdCBTZXRMb2NhbCBzaXRlcy4KKyAg
ICAgICAgCisgICAgICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQobV9ncmFwaCk7CisgICAg
ICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgu
bV9ibG9ja3Muc2l6ZSgpOyArK2Jsb2NrSW5kZXgpIHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sq
IGJsb2NrID0gbV9ncmFwaC5tX2Jsb2Nrc1tibG9ja0luZGV4XS5nZXQoKTsKKyAgICAgICAgICAg
IGlmICghYmxvY2spCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGluZGV4SW5CbG9jayA9IDA7IGluZGV4SW5CbG9jayA8IGJsb2NrLT5zaXplKCk7
ICsraW5kZXhJbkJsb2NrKSB7CisgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5h
dChpbmRleEluQmxvY2spOworICAgICAgICAgICAgICAgIC8vIEJlIGNhcmVmdWwgbm90IHRvIHVz
ZSAnbm9kZScgYWZ0ZXIgYXBwZW5kaW5nIHRvIHRoZSBncmFwaC4gSW4gdGhvc2Ugc3dpdGNoCisg
ICAgICAgICAgICAgICAgLy8gY2FzZXMgd2hlcmUgd2UgbmVlZCB0byBhcHBlbmQsIHdlIGZpcnN0
IGNhcmVmdWxseSBleHRyYWN0IGV2ZXJ5dGhpbmcgd2UgbmVlZAorICAgICAgICAgICAgICAgIC8v
IGZyb20gdGhlIG5vZGUsIGJlZm9yZSBkb2luZyBhbnkgYXBwZW5kaW5nLgorICAgICAgICAgICAg
ICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgU2V0QXJndW1l
bnQ6IHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFibG9ja0luZGV4KTsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gSW5zZXJ0IGEgR2V0TG9jYWwgYW5kIGEgQ2hlY2tTdHJ1Y3R1cmUgaW1t
ZWRpYXRlbHkgZm9sbG93aW5nIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgLy8gU2V0QXJndW1l
bnQsIGlmIHRoZSB2YXJpYWJsZSB3YXMgYSBjYW5kaWRhdGUgZm9yIHN0cnVjdHVyZSBob2lzdGlu
Zy4KKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGJhc2ljIGJsb2NrIHByZXZpb3VzbHkg
b25seSBoYWQgdGhlIFNldEFyZ3VtZW50IGFzIGl0cworICAgICAgICAgICAgICAgICAgICAvLyB2
YXJpYWJsZS1hdC10YWlsLCB0aGVuIHJlcGxhY2UgaXQgd2l0aCB0aGlzIEdldExvY2FsLgorICAg
ICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9kZS0+dmFy
aWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAgICAgICAgICAgICAgIEhhc2hNYXA8VmFyaWFibGVB
Y2Nlc3NEYXRhKiwgQ2hlY2tEYXRhPjo6aXRlcmF0b3IgaXRlciA9IG1fbWFwLmZpbmQodmFyaWFi
bGUpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciA9PSBtX21hcC5lbmQoKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBpZiAoIWl0ZXIt
PnZhbHVlLm1fc3RydWN0dXJlKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmln
aW4gPSBub2RlLT5jb2RlT3JpZ2luOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICAgICAgTm9kZSogZ2V0TG9jYWwgPSBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jayArIDEsIHZhcmlhYmxlLT5wcmVkaWN0aW9u
KCksIEdldExvY2FsLCBjb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZv
KHZhcmlhYmxlKSwgRWRnZShub2RlKSk7CisgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNl
dC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrICsgMSwg
U3BlY05vbmUsIENoZWNrU3RydWN0dXJlLCBjb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAg
ICAgICAgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGl0ZXItPnZhbHVlLm1fc3RydWN0
dXJlKSksCisgICAgICAgICAgICAgICAgICAgICAgICBFZGdlKGdldExvY2FsLCBDZWxsVXNlKSk7
CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2NrLT52YXJpYWJsZXNBdFRhaWwub3BlcmFu
ZCh2YXJpYWJsZS0+bG9jYWwoKSkgPT0gbm9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJs
b2NrLT52YXJpYWJsZXNBdFRhaWwub3BlcmFuZCh2YXJpYWJsZS0+bG9jYWwoKSkgPSBnZXRMb2Nh
bDsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguc3Vi
c3RpdHV0ZUdldExvY2FsKCpibG9jaywgaW5kZXhJbkJsb2NrLCB2YXJpYWJsZSwgZ2V0TG9jYWwp
OworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBTZXRMb2NhbDogeworICAgICAg
ICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9kZS0+dmFyaWFi
bGVBY2Nlc3NEYXRhKCk7CisgICAgICAgICAgICAgICAgICAgIEhhc2hNYXA8VmFyaWFibGVBY2Nl
c3NEYXRhKiwgQ2hlY2tEYXRhPjo6aXRlcmF0b3IgaXRlciA9IG1fbWFwLmZpbmQodmFyaWFibGUp
OworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciA9PSBtX21hcC5lbmQoKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBpZiAoIWl0ZXItPnZh
bHVlLm1fc3RydWN0dXJlKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgICAgICAgICAgLy8gRmlyc3QgaW5zZXJ0IGEgZGVhZCBTZXRMb2NhbCB0byB0ZWxsIE9T
UiB0aGF0IHRoZSBjaGlsZCdzIHZhbHVlIHNob3VsZAorICAgICAgICAgICAgICAgICAgICAvLyBi
ZSBkcm9wcGVkIGludG8gdGhpcyBieXRlY29kZSB2YXJpYWJsZSBpZiB0aGUgQ2hlY2tTdHJ1Y3R1
cmUgZGVjaWRlcworICAgICAgICAgICAgICAgICAgICAvLyB0byBleGl0LgorICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9k
ZS0+Y29kZU9yaWdpbjsKKyAgICAgICAgICAgICAgICAgICAgRWRnZSBjaGlsZDEgPSBub2RlLT5j
aGlsZDEoKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGluc2Vy
dGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2Nr
LCBTcGVjTm9uZSwgU2V0TG9jYWwsIGNvZGVPcmlnaW4sIE9wSW5mbyh2YXJpYWJsZSksIGNoaWxk
MSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gVXNlIGEgRm9yd2FyZENoZWNrU3RydWN0dXJl
IHRvIGluZGljYXRlIHRoYXQgd2Ugc2hvdWxkIGV4aXQgdG8gdGhlCisgICAgICAgICAgICAgICAg
ICAgIC8vIG5leHQgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb24gcmF0aGVyIHRoYW4gcmVleGVjdXRpbmcg
dGhlIGN1cnJlbnQgb25lLgorICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIEZv
cndhcmRDaGVja1N0cnVjdHVyZSwgY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
IE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSkp
LAorICAgICAgICAgICAgICAgICAgICAgICAgRWRnZShjaGlsZDEubm9kZSgpLCBDZWxsVXNlKSk7
CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRl
KGJsb2NrKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGNoYW5nZWQ7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIGJvb2wgc2hvdWxkQ29uc2lkZXJGb3JIb2lzdGluZyhWYXJp
YWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlKQorICAgIHsKKyAgICAgICAgaWYgKCF2YXJpYWJsZS0+
c2hvdWxkVW5ib3hJZlBvc3NpYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmICh2YXJpYWJsZS0+c3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWlzQ2VsbFNwZWN1bGF0aW9uKHZhcmlh
YmxlLT5wcmVkaWN0aW9uKCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgdm9pZCBub3RpY2VTdHJ1Y3R1cmVDaGVjayhW
YXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7
CisgICAgICAgIEhhc2hNYXA8VmFyaWFibGVBY2Nlc3NEYXRhKiwgQ2hlY2tEYXRhPjo6QWRkUmVz
dWx0IHJlc3VsdCA9CisgICAgICAgICAgICBtX21hcC5hZGQodmFyaWFibGUsIENoZWNrRGF0YShz
dHJ1Y3R1cmUpKTsKKyAgICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBpZiAocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5tX3N0cnVjdHVyZSA9
PSBzdHJ1Y3R1cmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUubV9zdHJ1Y3R1cmUgPSAwOworICAgIH0KKyAgICAKKyAgICB2b2lkIG5vdGljZVN0
cnVjdHVyZUNoZWNrKFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIGNvbnN0IFN0cnVjdHVy
ZVNldCYgc2V0KQorICAgIHsKKyAgICAgICAgaWYgKHNldC5zaXplKCkgIT0gMSkgeworICAgICAg
ICAgICAgbm90aWNlU3RydWN0dXJlQ2hlY2sodmFyaWFibGUsIDApOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIG5vdGljZVN0cnVjdHVyZUNoZWNrKHZhcmlhYmxlLCBz
ZXQuc2luZ2xldG9uU3RydWN0dXJlKCkpOworICAgIH0KKyAgICAKKyAgICBzdHJ1Y3QgQ2hlY2tE
YXRhIHsKKyAgICAgICAgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKKyAgICAgICAgCisgICAgICAg
IENoZWNrRGF0YSgpCisgICAgICAgICAgICA6IG1fc3RydWN0dXJlKDApCisgICAgICAgIHsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgQ2hlY2tEYXRhKFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgICAgICAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCisgICAgICAgIHsKKyAgICAg
ICAgfQorICAgIH07CisgICAgCisgICAgSGFzaE1hcDxWYXJpYWJsZUFjY2Vzc0RhdGEqLCBDaGVj
a0RhdGE+IG1fbWFwOworfTsKKworYm9vbCBwZXJmb3JtU3RydWN0dXJlQ2hlY2tIb2lzdGluZyhH
cmFwaCYgZ3JhcGgpCit7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBT
dHJ1Y3R1cmUgQ2hlY2sgSG9pc3RpbmcgUGhhc2UiKTsKKyAgICByZXR1cm4gcnVuUGhhc2U8U3Ry
dWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlPihncmFwaCk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNl
LmNwcAkod29ya2luZyBjb3B5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBl
Q2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJERkdTdHJ1Y3R1cmVDaGVja0hv
aXN0aW5nUGhhc2UuaCIKKyNpbmNsdWRlICJERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmgiCiAK
ICNpZiBFTkFCTEUoREZHX0pJVCkKIApAQCAtNDAsOSArNDAsOSBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAKIGVudW0gQ2hlY2tCYWxsb3QgeyBWb3RlT3RoZXIsIFZvdGVTdHJ1
Y3R1cmVDaGVjayB9OwogCi1jbGFzcyBTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UgOiBwdWJs
aWMgUGhhc2UgeworY2xhc3MgVHlwZUNoZWNrSG9pc3RpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CiBwdWJsaWM6Ci0gICAgU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlKEdyYXBoJiBncmFwaCkK
KyAgICBUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlKEdyYXBoJiBncmFwaCkKICAgICAgICAgOiBQaGFz
ZShncmFwaCwgInN0cnVjdHVyZSBjaGVjayBob2lzdGluZyIpCiAgICAgewogICAgIH0KQEAgLTM3
OSwxMCArMzc5LDEwIEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxWYXJpYWJsZUFjY2Vzc0RhdGEq
LCBDaGVja0RhdGE+IG1fbWFwOwogfTsKIAotYm9vbCBwZXJmb3JtU3RydWN0dXJlQ2hlY2tIb2lz
dGluZyhHcmFwaCYgZ3JhcGgpCitib29sIHBlcmZvcm1UeXBlQ2hlY2tIb2lzdGluZyhHcmFwaCYg
Z3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBTdHJ1Y3R1
cmUgQ2hlY2sgSG9pc3RpbmcgUGhhc2UiKTsKLSAgICByZXR1cm4gcnVuUGhhc2U8U3RydWN0dXJl
Q2hlY2tIb2lzdGluZ1BoYXNlPihncmFwaCk7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdS
ZWdpb24oIkRGRyBUeXBlIENoZWNrIEhvaXN0aW5nIFBoYXNlIik7CisgICAgcmV0dXJuIHJ1blBo
YXNlPFR5cGVDaGVja0hvaXN0aW5nUGhhc2U+KGdyYXBoKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tI
b2lzdGluZ1BoYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmgJKHJldmlzaW9uIDE0OTkwMikJKGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UuaDoxNDk5
MDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhh
c2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHU3RydWN0dXJlQ2hlY2tIb2lz
dGluZ1BoYXNlX2gKKyNkZWZpbmUgREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlX2gKKwor
I2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKK25hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3MgR3JhcGg7CisKKy8vIEhvaXN0cyBD
aGVja1N0cnVjdHVyZSBvbiB2YXJpYWJsZXMgdG8gYXNzaWdubWVudHMgdG8gdGhvc2UgdmFyaWFi
bGVzLCBpZiBlaXRoZXIgb2YKKy8vIHRoZSBmb2xsb3dpbmcgaXMgdHJ1ZToKKy8vIEEpIFRoZSBz
dHJ1Y3R1cmUncyB0cmFuc2l0aW9uIHdhdGNocG9pbnQgc2V0IGlzIHZhbGlkLgorLy8gQikgVGhl
IHNwYW4gb2YgY29kZSB3aXRoaW4gd2hpY2ggdGhlIHZhcmlhYmxlIGlzIGxpdmUgaGFzIG5vIGVm
ZmVjdHMgdGhhdCBtaWdodAorLy8gICAgY2xvYmJlciB0aGUgc3RydWN0dXJlLgorCitib29sIHBl
cmZvcm1TdHJ1Y3R1cmVDaGVja0hvaXN0aW5nKEdyYXBoJik7CisKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHU3Ry
dWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmgJKHdvcmtpbmcgY29w
eSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFz
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAq
LwogCi0jaWZuZGVmIERGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZV9oCi0jZGVmaW5lIERG
R1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZV9oCisjaWZuZGVmIERGR1R5cGVDaGVja0hvaXN0
aW5nUGhhc2VfaAorI2RlZmluZSBERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlX2gKIAogI2luY2x1
ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCkBAIC00MCwxMSArNDAsMTEgQEAgY2xhc3MgR3JhcGg7CiAv
LyBCKSBUaGUgc3BhbiBvZiBjb2RlIHdpdGhpbiB3aGljaCB0aGUgdmFyaWFibGUgaXMgbGl2ZSBo
YXMgbm8gZWZmZWN0cyB0aGF0IG1pZ2h0CiAvLyAgICBjbG9iYmVyIHRoZSBzdHJ1Y3R1cmUuCiAK
LWJvb2wgcGVyZm9ybVN0cnVjdHVyZUNoZWNrSG9pc3RpbmcoR3JhcGgmKTsKK2Jvb2wgcGVyZm9y
bVR5cGVDaGVja0hvaXN0aW5nKEdyYXBoJik7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcK
IAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQogCi0jZW5kaWYgLy8gREZHU3RydWN0dXJlQ2hl
Y2tIb2lzdGluZ1BoYXNlX2gKKyNlbmRpZiAvLyBERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlX2gK
IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>