<?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>120453</bug_id>
          
          <creation_ts>2013-08-28 22:34:24 -0700</creation_ts>
          <short_desc>CodeBlock::prepareForExecution() is silly</short_desc>
          <delta_ts>2013-08-29 12:28:29 -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>112838</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>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>922342</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-08-28 22:34:24 -0700</bug_when>
    <thetext>Why aren&apos;t we just calling into the appropriate execution engine to do the compilation?  Beats me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922343</commentid>
    <comment_count>1</comment_count>
      <attachid>209951</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-08-28 22:36:27 -0700</bug_when>
    <thetext>Created attachment 209951
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922344</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-28 22:38:24 -0700</bug_when>
    <thetext>Attachment 209951 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.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/Target.pri&apos;, u&apos;Source/JavaScriptCore/bytecode/CodeBlock.cpp&apos;, u&apos;Source/JavaScriptCore/bytecode/CodeBlock.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGDriver.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGDriver.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExitPreparation.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGWorklist.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGWorklist.h&apos;, u&apos;Source/JavaScriptCore/jit/JIT.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JIT.h&apos;, u&apos;Source/JavaScriptCore/jit/JITStubs.cpp&apos;, u&apos;Source/JavaScriptCore/llint/LLIntEntrypoint.cpp&apos;, u&apos;Source/JavaScriptCore/llint/LLIntEntrypoint.h&apos;, u&apos;Source/JavaScriptCore/llint/LLIntEntrypoints.cpp&apos;, u&apos;Source/JavaScriptCore/llint/LLIntEntrypoints.h&apos;, u&apos;Source/JavaScriptCore/llint/LLIntSlowPaths.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/Executable.cpp&apos;]&quot; exit_code: 1
Source/JavaScriptCore/llint/LLIntEntrypoint.h:26:  #ifndef header guard has wrong style, please use: LLIntEntrypoint_h  [build/header_guard] [5]
Total errors found: 1 in 18 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>922347</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-08-28 23:02:06 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 209951 [details] did not pass style-queue:
&gt; 
&gt; 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.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/Target.pri&apos;, u&apos;Source/JavaScriptCore/bytecode/CodeBlock.cpp&apos;, u&apos;Source/JavaScriptCore/bytecode/CodeBlock.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGDriver.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGDriver.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExitPreparation.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGWorklist.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGWorklist.h&apos;, u&apos;Source/JavaScriptCore/jit/JIT.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JIT.h&apos;, u&apos;Source/JavaScriptCore/jit/JITStubs.cpp&apos;, u&apos;Source/JavaScriptCore/llint/LLIntEntrypoint.cpp&apos;, u&apos;Source/JavaScriptCore/llint/LLIntEntrypoint.h&apos;, u&apos;Source/JavaScriptCore/llint/LLIntEntrypoints.cpp&apos;, u&apos;Source/JavaScriptCore/llint/LLIntEntrypoints.h&apos;, u&apos;Source/JavaScriptCore/llint/LLIntSlowPaths.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/Executable.cpp&apos;]&quot; exit_code: 1
&gt; Source/JavaScriptCore/llint/LLIntEntrypoint.h:26:  #ifndef header guard has wrong style, please use: LLIntEntrypoint_h  [build/header_guard] [5]

Fixed.

&gt; Total errors found: 1 in 18 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922566</commentid>
    <comment_count>4</comment_count>
      <attachid>210005</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-08-29 11:29:22 -0700</bug_when>
    <thetext>Created attachment 210005
rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922605</commentid>
    <comment_count>5</comment_count>
      <attachid>210005</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-29 12:22:27 -0700</bug_when>
    <thetext>Comment on attachment 210005
rebased

yay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922608</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-08-29 12:28:29 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/154833</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209951</attachid>
            <date>2013-08-28 22:36:27 -0700</date>
            <delta_ts>2013-08-29 11:29:22 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>50902</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0ODA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBA
CisyMDEzLTA4LTI4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Q29kZUJsb2NrOjpwcmVwYXJlRm9yRXhlY3V0aW9uKCkgaXMgc2lsbHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDQ1MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgSW5zdGVhZCBvZiBzYXlp
bmc6CisgICAgICAgIAorICAgICAgICAgICAgY29kZUJsb2NrLT5wcmVwYXJlRm9yRXhlY3V0aW9u
KHN0dWZmLCBCYXNlbGluZUpJVCwgbW9yZSBzdHVmZikKKyAgICAgICAgCisgICAgICAgIHdlIHNo
b3VsZCBzYXk6CisgICAgICAgIAorICAgICAgICAgICAgSklUOjpjb21waWxlKHN0dWZmLCBjb2Rl
QmxvY2ssIG1vcmUgc3R1ZmYpOworICAgICAgICAKKyAgICAgICAgTGlrZXdpc2UgZm9yIHRoZSBM
TEludCBhbmQgREZHLgorICAgICAgICAKKyAgICAgICAgVGhpcyBraWxscyBhIGJ1bmNoIG9mIGNv
ZGUsIHNpbmNlIENvZGVCbG9jazo6cHJlcGFyZUZvckV4ZWN1dGlvbigpIGlzIGp1c3QgYQorICAg
ICAgICB3cmFwcGVyIHRoYXQgdXNlcyB0aGUgSklUVHlwZSBhcmd1bWVudCB0byBjYWxsIGludG8g
dGhlIGFwcHJvcHJpYXRlIGV4ZWN1dGlvbgorICAgICAgICBlbmdpbmUsIHdoaWNoIGlzIHdoYXQg
dGhlIHVzZXIgd2FudGVkIHRvIGRvIGluIHRoZSBmaXJzdCBwbGFjZS4KKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGFy
Z2V0LnByaToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAqIGJ5
dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGRmZy9ERkdEcml2ZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OmNvbXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5Q29tcGls
ZSk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRQcmVwYXJhdGlvbi5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6cHJlcGFyZUNvZGVPcmlnaW5Gb3JPU1JFeGl0KToKKyAgICAgICAgKiBkZmcvREZH
V29ya2xpc3QuY3BwOgorICAgICAgICAoSlNDOjpERkc6Omdsb2JhbFdvcmtsaXN0KToKKyAgICAg
ICAgKiBkZmcvREZHV29ya2xpc3QuaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAg
ICAoSlNDOjpKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAg
ICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKiBsbGludC9MTEludEVu
dHJ5cG9pbnQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRFbnRyeXBvaW50cy5jcHAuCisgICAgICAgIChKU0M6OkxMSW50OjpzZXRGdW5jdGlvbkVudHJ5
cG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0RXZhbEVudHJ5cG9pbnQpOgorICAgICAg
ICAoSlNDOjpMTEludDo6c2V0UHJvZ3JhbUVudHJ5cG9pbnQpOgorICAgICAgICAoSlNDOjpMTElu
dDo6c2V0RW50cnlwb2ludCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50Lmg6IENv
cGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgu
CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOiBSZW1vdmVkLgorICAgICAgICAqIGxsaW50L0xM
SW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OmppdENvbXBpbGVBbmRTZXRI
ZXVyaXN0aWNzKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAo
SlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpwcmVwYXJlRm9yRXhlY3V0aW9uSW1wbCk6CisKIDIwMTMt
MDgtMjggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBDb2RlQmxv
Y2sgY29tcGlsYXRpb24gYW5kIGluc3RhbGxhdGlvbiBzaG91bGQgYmUgc2ltcGxpZmllZCBhbmQg
cmF0aW9uYWxpemVkCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZp
c2lvbiAxNTQ4MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTUyOCw3ICs1MjgsNyBAQCBpZiAoRU5BQkxFX0xMSU5UKQogICAgIGxp
c3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICAgICAgbGxpbnQvTExJbnRDTG9v
cC5jcHAKICAgICAgICAgbGxpbnQvTExJbnREYXRhLmNwcAotICAgICAgICBsbGludC9MTEludEVu
dHJ5cG9pbnRzLmNwcAorICAgICAgICBsbGludC9MTEludEVudHJ5cG9pbnQuY3BwCiAgICAgICAg
IGxsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAKICAgICAgICAgbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCiAgICAgICAgIGxsaW50L0xMSW50VGh1bmtzLmNwcApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE1NDgwNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC02NDYs
OCArNjQ2LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50Q0xvb3AuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
aCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwIFwK
LQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oIFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcCBcCisJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RXhjZXB0aW9ucy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1Rh
cmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJ
KHJldmlzaW9uIDE1NDgwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCSh3
b3JraW5nIGNvcHkpCkBAIC0yMjcsNyArMjI3LDcgQEAgU09VUkNFUyArPSBcCiAgICAgaml0L1Ro
dW5rR2VuZXJhdG9ycy5jcHAgXAogICAgIGxsaW50L0xMSW50Q0xvb3AuY3BwIFwKICAgICBsbGlu
dC9MTEludERhdGEuY3BwIFwKLSAgICBsbGludC9MTEludEVudHJ5cG9pbnRzLmNwcCBcCisgICAg
bGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcCBcCiAgICAgbGxpbnQvTExJbnRFeGNlcHRpb25zLmNw
cCBcCiAgICAgbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIFwKICAgICBsbGludC9MTEludFRodW5r
cy5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZp
c2lvbiAxNTQ4MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zODMsNyArMzgz
LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxUaHVua0dlbmVyYXRvcnMuY3Bw
IiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxsaW50XExMSW50Q0xvb3AuY3BwIiAv
Pg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxsaW50XExMSW50RGF0YS5jcHAiIC8+DQot
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbGxpbnRcTExJbnRFbnRyeXBvaW50cy5jcHAiIC8+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbGxpbnRcTExJbnRFbnRyeXBvaW50LmNwcCIg
Lz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxsbGludFxMTEludEV4Y2VwdGlvbnMuY3Bw
IiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxsaW50XExMSW50T2Zmc2V0c0V4dHJh
Y3Rvci5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbGxpbnRcTExJbnRTbG93
UGF0aHMuY3BwIiAvPg0KQEAgLTc2Myw3ICs3NjMsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cbGxpbnRcTExJbnRDTG9vcC5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGxsaW50XExMSW50Q29tbW9uLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cbGxp
bnRcTExJbnREYXRhLmgiIC8+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cbGxpbnRcTExJ
bnRFbnRyeXBvaW50cy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGxsaW50XExM
SW50RW50cnlwb2ludC5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGxsaW50XExM
SW50RXhjZXB0aW9ucy5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGxsaW50XExM
SW50T2ZmbGluZUFzbUNvbmZpZy5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGxs
aW50XExMSW50T3Bjb2RlLmgiIC8+DQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDE1NDgwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02MCw4ICs2MCw2
IEBACiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCQkwRjA1QzNCNDE2ODNDRjky
MDBCQUY0NUIgLyogREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwNUMzQjIxNjgzQ0Y4RjAwQkFGNDVC
IC8qIERGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjA3NzZCRjE0RkYwMDJCMDAxMDIzMzIgLyog
SklUQ29tcGlsYXRpb25FZmZvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMDc3NkJEMTRGRjAwMjgwMDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVm
Zm9ydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTBGMEI4MzlBMTRCQ0Y0NUQwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk1MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLzsgfTsKLQkJMEYwQjgzOUIxNEJDRjQ2
MDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVu
dHJ5cG9pbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk3MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi87IH07CiAJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4
NUI0RiAvKiBMTEludFRodW5rcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTcx
NEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTg5
LDYgKzE4Nyw4IEBACiAJCTBGMzRCMTQ5MTZENDIwMTAwMDFDREE1QSAvKiBERkdVc2VLaW5kLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzRCMTQ3
MTZENDIwMEUwMDFDREE1QSAvKiBERkdVc2VLaW5kLmNwcCAqLzsgfTsKIAkJMEYzNEIxNEExNkQ0
MjAxMzAwMUNEQTVBIC8qIERGR1VzZUtpbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzRCMTQ4MTZENDIwMEUwMDFDREE1QSAvKiBERkdVc2VLaW5k
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYz
NEIxNEMxNkQ0M0UwRDAwMUNEQTVBIC8qIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzNEIxNEIx
NkQ0M0UwQzAwMUNEQTVBIC8qIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMzhCMDExMTdD
RjA3ODAwMEIxNDREMyAvKiBMTEludEVudHJ5cG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzOEIwMEYxN0NGMDc3RjAwQjE0NEQzIC8qIExM
SW50RW50cnlwb2ludC5jcHAgKi87IH07CisJCTBGMzhCMDEyMTdDRjA3ODMwMEIxNDREMyAvKiBM
TEludEVudHJ5cG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMzhCMDEwMTdDRjA3N0YwMEIxNDREMyAvKiBMTEludEVudHJ5cG9pbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjNCM0ExQTE1
M0U2OEYyMDAzRUQwRkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMTcxNTNFNjhFRjAwM0VE
MEZGIC8qIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCAqLzsgfTsKIAkJMEYzQjNBMUIxNTNF
NjhGNDAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0ExODE1M0U2OEVGMDAzRUQwRkYg
LyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjNCM0EyNzE1NDRDOTk1MDAzRUQwRkYgLyogREZHQ0ZH
U2ltcGxpZmljYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjNCM0EyNDE1NDRDOTkxMDAzRUQwRkYgLyogREZHQ0ZHU2ltcGxpZmlj
YXRpb25QaGFzZS5jcHAgKi87IH07CkBAIC0xMjE4LDggKzEyMTgsNiBAQAogLyogQmVnaW4gUEJY
RmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAJCTBGMDVDM0IyMTY4M0NGOEYwMEJBRjQ1QiAvKiBE
RkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaDsgcGF0aCA9IGRmZy9ERkdBcnJh
eWlmeVNsb3dQYXRoR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
MDc3NkJEMTRGRjAwMjgwMDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVmZm9ydC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRDb21waWxhdGlvbkVmZm9ydC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRF
bnRyeXBvaW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTElu
dEVudHJ5cG9pbnRzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJ
bnRFbnRyeXBvaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEVu
dHJ5cG9pbnRzLmg7IHBhdGggPSBsbGludC9MTEludEVudHJ5cG9pbnRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5r
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludFRodW5rcy5j
cHA7IHBhdGggPSBsbGludC9MTEludFRodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludFRodW5rcy5oOyBwYXRoID0gbGxpbnQvTExJ
bnRUaHVua3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQTUxNEJDRjUw
NDAwODg1QjRGIC8qIENvZGVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvZGVUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzQ2LDYgKzEzNDQs
OCBAQAogCQkwRjM0QjE0NzE2RDQyMDBFMDAxQ0RBNUEgLyogREZHVXNlS2luZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdVc2VLaW5kLmNwcDsgcGF0aCA9IGRm
Zy9ERkdVc2VLaW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzNEIxNDgx
NkQ0MjAwRTAwMUNEQTVBIC8qIERGR1VzZUtpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHVXNlS2luZC5oOyBwYXRoID0gZGZnL0RGR1VzZUtpbmQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzNEIxNEIxNkQ0M0UwQzAwMUNEQTVBIC8qIFBvbHltb3Jw
aGljQWNjZXNzU3RydWN0dXJlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYzOEIwMEYxN0NGMDc3RjAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEVudHJ5cG9pbnQuY3BwOyBwYXRoID0gbGxpbnQvTExJ
bnRFbnRyeXBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzOEIwMTAx
N0NGMDc3RjAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTElu
dEVudHJ5cG9pbnQuaDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjNCM0ExNzE1M0U2OEVGMDAzRUQwRkYgLyogREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
REZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQjNBMTgxNTNFNjhF
RjAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmg7IHBhdGggPSBkZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYz
QjNBMjQxNTQ0Qzk5MTAwM0VEMEZGIC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQ0ZHU2ltcGxpZmljYXRpb25Q
aGFzZS5jcHA7IHBhdGggPSBkZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDU2LDggKzI0NTYsOCBAQAogCQkJCTBGNDY4MENF
MTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovLAogCQkJCTBGNDY4MENGMTRCQkIz
RDEwMEJGRTI3MiAvKiBMTEludERhdGEuaCAqLywKIAkJCQk1RERERjQ0NjE0RkVFNzIyMDBCNEZC
NEQgLyogTExJbnREZXNpcmVkT2Zmc2V0cy5oICovLAotCQkJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4
NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLywKLQkJCQkwRjBCODM5NjE0QkNGNDVBMDA4
ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovLAorCQkJCTBGMzhCMDBGMTdDRjA3N0YwMEIx
NDREMyAvKiBMTEludEVudHJ5cG9pbnQuY3BwICovLAorCQkJCTBGMzhCMDEwMTdDRjA3N0YwMEIx
NDREMyAvKiBMTEludEVudHJ5cG9pbnQuaCAqLywKIAkJCQkwRjQ2ODA5RDE0QkE3RjgyMDBCRkUy
NzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLywKIAkJCQkwRjQ2ODA5RTE0QkE3RjgyMDBCRkUy
NzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8sCiAJCQkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcy
IC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovLApAQCAtMzk0NCw2ICszOTQ0LDcgQEAKIAkJ
CQk4NkNBRkVFMzEwMzVEREU2MDAyOEE2MDkgLyogRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTc2NkI0NEYwRUU4RENEMTAwOTUxOENBIC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNTZBMUQzMTUwMDBGMzUwMDI5OTJCMSAvKiBFeGVjdXRpb25D
b3VudGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjM4QjAxMjE3Q0YwNzgzMDBCMTQ0RDMgLyog
TExJbnRFbnRyeXBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxMDU4NjE2NzU0ODEyMDBG
OEFCNkUgLyogRXhpdEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0FCMTRCQ0Y1QkIw
MDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4
QUYzODE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKQEAg
LTQxNTYsNyArNDE1Nyw2IEBACiAJCQkJRkUyMENFOUUxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50
Q0xvb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MENBMTRCQkIxNkMwMEJGRTI3MiAvKiBM
TEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcy
IC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1
QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MEEzMTRC
QTdGOEQwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NDY4MENCMTRCQkIxNzIwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZFRDI4N0IyMTVFQzlBNTcwMERBODE2MSAvKiBMTEludE9wY29kZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC00OTc2LDcgKzQ5NzYsNiBAQAogCQkJCUE3RTJFQTZDMEZCNDYwQ0Yw
MDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFMjBDRTlE
MTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
NDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9u
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJ
bnRTbG93UGF0aHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1
QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTAzNSw2ICs1MDM0LDcg
QEAKIAkJCQkwRjEzOTEyQjE2NzcxQzNBMDA5Q0NCMDcgLyogUHJvZmlsZXJQcm9maWxlZEJ5dGVj
b2Rlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0ZCNjBBNDEwM0Y3REMyMDAxN0EyODYgLyog
UHJvcGVydHlEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5REU3MTA3RUM3
RTcwMDY1MDQ0NiAvKiBQcm9wZXJ0eU5hbWVBcnJheS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
RjM4QjAxMTE3Q0YwNzgwMDBCMTQ0RDMgLyogTExJbnRFbnRyeXBvaW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0NDY5REU4MTA3RUM3RTcwMDY1MDQ0NiAvKiBQcm9wZXJ0eVNsb3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQURFMzlGRkYxNkREMTQ0QjAwMDNDRDRBIC8qIFByb3BlcnR5VGFi
bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3NEMzM0MxNkFBMkQ5QjAwNjJGMDFEIC8qIFBy
b3RvdHlwZU1hcC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNTQ4MDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDYsNyArNDYsNiBAQAogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKLSNpbmNsdWRlICJMTEludEVudHJ5cG9p
bnRzLmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIk9wZXJh
dGlvbnMuaCIKICNpbmNsdWRlICJQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmgiCkBAIC0yNjkzLDcz
ICsyNjkyLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmNvcHlQb3N0UGFyc2VEYXRhRnJvbUFsdAogICAg
IGNvcHlQb3N0UGFyc2VEYXRhRnJvbShtX2FsdGVybmF0aXZlLmdldCgpKTsKIH0KIAotQ29tcGls
YXRpb25SZXN1bHQgQ29kZUJsb2NrOjpwcmVwYXJlRm9yRXhlY3V0aW9uSW1wbCgKLSAgICBFeGVj
U3RhdGUqIGV4ZWMsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSwgSklUQ29tcGlsYXRpb25FZmZv
cnQgZWZmb3J0LAotICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFBhc3NSZWZQdHI8RGVmZXJy
ZWRDb21waWxhdGlvbkNhbGxiYWNrPiBjYWxsYmFjaykKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwotICAgIAotICAgIGlmIChqaXRUeXBlID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmsp
IHsKLSAgICAgICAgc3dpdGNoIChjb2RlVHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgR2xvYmFsQ29k
ZToKLSAgICAgICAgICAgIExMSW50OjpzZXRQcm9ncmFtRW50cnlwb2ludCh2bSwgc3RhdGljX2Nh
c3Q8UHJvZ3JhbUNvZGVCbG9jayo+KHRoaXMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEV2YWxDb2RlOgotICAgICAgICAgICAgTExJbnQ6OnNldEV2YWxFbnRyeXBvaW50KHZt
LCBzdGF0aWNfY2FzdDxFdmFsQ29kZUJsb2NrKj4odGhpcykpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgRnVuY3Rpb25Db2RlOgotICAgICAgICAgICAgTExJbnQ6OnNldEZ1bmN0
aW9uRW50cnlwb2ludCh2bSwgc3RhdGljX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPih0aGlzKSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gQ29tcGlsYXRp
b25TdWNjZXNzZnVsOwotICAgIH0KLSAgICAKLSNpZiBFTkFCTEUoSklUKQotICAgIGlmIChKSVRD
b2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSkpIHsKLSAgICAgICAgQVNTRVJUKGVmZm9ydCA9
PSBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwotICAgICAgICBib29sIGhhZENhbGxiYWNrID0gISFj
YWxsYmFjazsKLSAgICAgICAgQ29tcGlsYXRpb25SZXN1bHQgcmVzdWx0ID0gREZHOjp0cnlDb21w
aWxlKGV4ZWMsIHRoaXMsIGJ5dGVjb2RlSW5kZXgsIGNhbGxiYWNrKTsKLSAgICAgICAgQVNTRVJU
X1VOVVNFRChoYWRDYWxsYmFjaywgcmVzdWx0ICE9IENvbXBpbGF0aW9uRGVmZXJyZWQgfHwgaGFk
Q2FsbGJhY2spOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICAKLSAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgaml0Q29kZVdpdGhBcml0eUNoZWNrOwotICAgIFJlZlB0cjxKSVRD
b2RlPiBqaXRDb2RlID0gSklUOjpjb21waWxlKCZ2bSwgdGhpcywgZWZmb3J0LCAmaml0Q29kZVdp
dGhBcml0eUNoZWNrKTsKLSAgICBpZiAoIWppdENvZGUpCi0gICAgICAgIHJldHVybiBDb21waWxh
dGlvbkZhaWxlZDsKLSAgICBzZXRKSVRDb2RlKGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVj
ayk7Ci0gICAgcmV0dXJuIENvbXBpbGF0aW9uU3VjY2Vzc2Z1bDsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKGVmZm9ydCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwotICAgIFVO
VVNFRF9QQVJBTShjYWxsYmFjayk7Ci0gICAgcmV0dXJuIENvbXBpbGF0aW9uRmFpbGVkOwotI2Vu
ZGlmIC8vIEVOQUJMRShKSVQpCi19Ci0KLUNvbXBpbGF0aW9uUmVzdWx0IENvZGVCbG9jazo6cHJl
cGFyZUZvckV4ZWN1dGlvbigKLSAgICBFeGVjU3RhdGUqIGV4ZWMsIEpJVENvZGU6OkpJVFR5cGUg
aml0VHlwZSwKLSAgICBKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQsIHVuc2lnbmVkIGJ5dGVj
b2RlSW5kZXgpCi17Ci0gICAgQ29tcGlsYXRpb25SZXN1bHQgcmVzdWx0ID0KLSAgICAgICAgcHJl
cGFyZUZvckV4ZWN1dGlvbkltcGwoZXhlYywgaml0VHlwZSwgZWZmb3J0LCBieXRlY29kZUluZGV4
LCAwKTsKLSAgICBBU1NFUlQocmVzdWx0ICE9IENvbXBpbGF0aW9uRGVmZXJyZWQpOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLUNvbXBpbGF0aW9uUmVzdWx0IENvZGVCbG9jazo6cHJlcGFyZUZv
ckV4ZWN1dGlvbkFzeW5jaHJvbm91c2x5KAotICAgIEV4ZWNTdGF0ZSogZXhlYywgSklUQ29kZTo6
SklUVHlwZSBqaXRUeXBlLAotICAgIFBhc3NSZWZQdHI8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxi
YWNrPiBwYXNzZWRDYWxsYmFjaywKLSAgICBKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQsIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgpCi17Ci0gICAgUmVmUHRyPERlZmVycmVkQ29tcGlsYXRpb25D
YWxsYmFjaz4gY2FsbGJhY2sgPSBwYXNzZWRDYWxsYmFjazsKLSAgICBDb21waWxhdGlvblJlc3Vs
dCByZXN1bHQgPQotICAgICAgICBwcmVwYXJlRm9yRXhlY3V0aW9uSW1wbChleGVjLCBqaXRUeXBl
LCBlZmZvcnQsIGJ5dGVjb2RlSW5kZXgsIGNhbGxiYWNrKTsKLSAgICBpZiAocmVzdWx0ICE9IENv
bXBpbGF0aW9uRGVmZXJyZWQpCi0gICAgICAgIGNhbGxiYWNrLT5jb21waWxhdGlvbkRpZENvbXBs
ZXRlKHRoaXMsIHJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogdm9pZCBDb2RlQmxv
Y2s6Omluc3RhbGwoKQogewogICAgIG93bmVyRXhlY3V0YWJsZSgpLT5pbnN0YWxsQ29kZSh0aGlz
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJl
dmlzaW9uIDE1NDgwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtMjY1LDMyICsyNjUsNiBAQCBwdWJsaWM6CiAKICAgICBp
bnQgYXJndW1lbnRJbmRleEFmdGVyQ2FwdHVyZShzaXplX3QgYXJndW1lbnQpOwogCi0gICAgLy8g
UHJlcGFyZXMgdGhpcyBjb2RlIGJsb2NrIGZvciBleGVjdXRpb24uIFRoaXMgaXMgc3luY2hyb25v
dXMuIFRoaXMgY29tcGlsZQotICAgIC8vIG1heSBmYWlsLCBpZiB5b3UgcGFzc2VkIEpJVENvbXBp
bGF0aW9uQ2FuRmFpbC4KLSAgICBDb21waWxhdGlvblJlc3VsdCBwcmVwYXJlRm9yRXhlY3V0aW9u
KAotICAgICAgICBFeGVjU3RhdGUqLCBKSVRDb2RlOjpKSVRUeXBlLAotICAgICAgICBKSVRDb21w
aWxhdGlvbkVmZm9ydCA9IEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQsCi0gICAgICAgIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXggPSBVSU5UX01BWCk7Ci0gICAgCi0gICAgLy8gVXNlIHRoaXMgbWV0
aG9kIGZvciBhc3luY2hyb25vdXMgY29tcGlsZXMuIFRoaXMgd2lsbCBkbyBhIGNvbXBpbGUgYXQg
c29tZQotICAgIC8vIHBvaW50IGluIHRpbWUgYmV0d2VlbiB3aGVuIHlvdSBjYWxsZWQgaW50byB0
aGlzIG1ldGhvZCBhbmQgc29tZSBwb2ludCBpbiB0aGUKLSAgICAvLyBmdXR1cmUuIElmIHlvdSdy
ZSBsdWNreSB0aGVuIGl0IG1pZ2h0IGNvbXBsZXRlIGJlZm9yZSB0aGlzIG1ldGhvZCByZXR1cm5z
LgotICAgIC8vIE9uY2UgaXQgY29tcGxldGVzLCB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkIHdpdGgg
dGhlIHJlc3VsdC4gSWYgdGhlIGNvbXBpbGUKLSAgICAvLyBkaWQgaGFwcGVuIHRvIGNvbXBsZXRl
IGJlZm9yZSB0aGUgbWV0aG9kIHJldHVybnMsIHRoZSByZXN1bHQgb2YgdGhlIGNvbXBpbGUKLSAg
ICAvLyBtYXkgYmUgcmV0dXJuZWQuIElmIHRoZSBjb21waWxlIGRpZG4ndCBoYXBwZW4gdG8gY29t
cGxldGUgeWV0LCBvciBpZiB3ZQotICAgIC8vIGRpZG4ndCBoYXBwZW4gdG8gbm90aWNlIHRoYXQg
dGhlIGNvbXBpbGUgYWxyZWFkeSBjb21wbGV0ZWQsIHdlIHJldHVybgotICAgIC8vIENvbXBpbGF0
aW9uRGVmZXJyZWQuCi0gICAgLy8KLSAgICAvLyBOb3RlIHRoYXQgYXN5bmNocm9ub3VzIGNvbXBp
bGVzIGRvbid0IGFjdHVhbGx5IGNvbXBsZXRlIHVubGVzcyB5b3UgY2FsbCBpbnRvCi0gICAgLy8g
REZHOjpXb3JrbGlzdDo6Y29tcGxldGVBbGxSZWFkeVBsYW5zRm9yVk0oKS4gWW91IHVzdWFsbHkg
Zm9yY2UgYSBjYWxsIHRvCi0gICAgLy8gdGhpcyBvbiB0aGUgbWFpbiB0aHJlYWQgYnkgbGlzdGVu
aW5nIHRvIHRoZSBjYWxsYmFjaydzCi0gICAgLy8gY29tcGlsYXRpb25EaWRCZWNvbWVSZWFkeUFz
eW5jaHJvbm91c2x5KCkgbm90aWZpY2F0aW9uLiBOb3RlIHRoYXQgdGhpcyBjYWxsCi0gICAgLy8g
aGFwcGVucyBvbiBhbm90aGVyIHRocmVhZC4KLSAgICBDb21waWxhdGlvblJlc3VsdCBwcmVwYXJl
Rm9yRXhlY3V0aW9uQXN5bmNocm9ub3VzbHkoCi0gICAgICAgIEV4ZWNTdGF0ZSosIEpJVENvZGU6
OkpJVFR5cGUsIFBhc3NSZWZQdHI8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPiwKLSAgICAg
ICAgSklUQ29tcGlsYXRpb25FZmZvcnQgPSBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkLAotICAg
ICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gVUlOVF9NQVgpOwotICAgIAogICAgIC8vIEV4
YWN0bHkgZXF1aXZhbGVudCB0byBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pbnN0YWxs
Q29kZShjb2RlQmxvY2spOwogICAgIHZvaWQgaW5zdGFsbCgpOwogICAgIApAQCAtMTAwNCwxMCAr
OTc4LDYgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgREZHQ29kZUJs
b2NrczsKICAgICAKLSAgICBDb21waWxhdGlvblJlc3VsdCBwcmVwYXJlRm9yRXhlY3V0aW9uSW1w
bCgKLSAgICAgICAgRXhlY1N0YXRlKiwgSklUQ29kZTo6SklUVHlwZSwgSklUQ29tcGlsYXRpb25F
ZmZvcnQsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsCi0gICAgICAgIFBhc3NSZWZQdHI8RGVmZXJy
ZWRDb21waWxhdGlvbkNhbGxiYWNrPik7Ci0gICAgCiAgICAgdm9pZCBub3RpY2VJbmNvbWluZ0Nh
bGwoRXhlY1N0YXRlKiBjYWxsZXJGcmFtZSk7CiAgICAgCiAgICAgZG91YmxlIG9wdGltaXphdGlv
blRocmVzaG9sZFNjYWxpbmdGYWN0b3IoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRHJpdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RyaXZlci5jcHAJKHJldmlzaW9uIDE1NDgwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRHJpdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksNiBAQAogI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKIAotI2lmIEVOQUJMRShE
RkdfSklUKQotCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHSklUQ29kZS5o
IgogI2luY2x1ZGUgIkRGR1BsYW4uaCIKQEAgLTU1LDcgKzUzLDggQEAgdW5zaWduZWQgZ2V0TnVt
Q29tcGlsYXRpb25zKCkKICAgICByZXR1cm4gbnVtQ29tcGlsYXRpb25zOwogfQogCi1Db21waWxh
dGlvblJlc3VsdCB0cnlDb21waWxlKEV4ZWNTdGF0ZSogZXhlYywgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIHVuc2lnbmVkIG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgUGFzc1JlZlB0cjxEZWZlcnJlZENv
bXBpbGF0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrKQorI2lmIEVOQUJMRShERkdfSklUKQorc3RhdGlj
IENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKEV4ZWNTdGF0ZSogZXhlYywgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIHVuc2lnbmVkIG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgUGFzc1JlZlB0cjxE
ZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrLCBXb3JrbGlzdCogd29ya2xpc3Qp
CiB7CiAgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBDb21waWxhdGlvbiAo
RHJpdmVyKSIpOwogICAgIApAQCAtMTE1LDIxICsxMTQsMzEgQEAgQ29tcGlsYXRpb25SZXN1bHQg
dHJ5Q29tcGlsZShFeGVjU3RhdGUqIAogICAgICAgICAgICAgcGxhbi0+bXVzdEhhbmRsZVZhbHVl
c1tpXSA9IGV4ZWMtPnVuY2hlY2tlZFIob3BlcmFuZCkuanNWYWx1ZSgpOwogICAgIH0KICAgICAK
LSAgICBpZiAoZW5hYmxlQ29uY3VycmVudEpJVCgpICYmIGNhbGxiYWNrKSB7CisgICAgaWYgKHdv
cmtsaXN0KSB7CiAgICAgICAgIHBsYW4tPmNhbGxiYWNrID0gY2FsbGJhY2s7Ci0gICAgICAgIGlm
ICghdm0ud29ya2xpc3QpCi0gICAgICAgICAgICB2bS53b3JrbGlzdCA9IGdsb2JhbFdvcmtsaXN0
KCk7CiAgICAgICAgIGlmIChsb2dDb21waWxhdGlvbkNoYW5nZXMoKSkKLSAgICAgICAgICAgIGRh
dGFMb2coIkRlZmVycmluZyBERkcgY29tcGlsYXRpb24gb2YgIiwgKmNvZGVCbG9jaywgIiB3aXRo
IHF1ZXVlIGxlbmd0aCAiLCB2bS53b3JrbGlzdC0+cXVldWVMZW5ndGgoKSwgIi5cbiIpOwotICAg
ICAgICB2bS53b3JrbGlzdC0+ZW5xdWV1ZShwbGFuKTsKKyAgICAgICAgICAgIGRhdGFMb2coIkRl
ZmVycmluZyBERkcgY29tcGlsYXRpb24gb2YgIiwgKmNvZGVCbG9jaywgIiB3aXRoIHF1ZXVlIGxl
bmd0aCAiLCB3b3JrbGlzdC0+cXVldWVMZW5ndGgoKSwgIi5cbiIpOworICAgICAgICB3b3JrbGlz
dC0+ZW5xdWV1ZShwbGFuKTsKICAgICAgICAgcmV0dXJuIENvbXBpbGF0aW9uRGVmZXJyZWQ7CiAg
ICAgfQogICAgIAogICAgIHBsYW4tPmNvbXBpbGVJblRocmVhZCgqdm0uZGZnU3RhdGUpOwogICAg
IHJldHVybiBwbGFuLT5maW5hbGl6ZVdpdGhvdXROb3RpZnlpbmdDYWxsYmFjaygpOwogfQotCi19
IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KKyNlbHNlIC8vIEVOQUJMRShERkdfSklUKQorc3Rh
dGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKEV4ZWNTdGF0ZSosIENvZGVCbG9jayos
IHVuc2lnbmVkLCBQYXNzUmVmUHRyPERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4sIFdvcmts
aXN0KikKK3sKKyAgICByZXR1cm4gQ29tcGlsYXRpb25GYWlsZWQ7Cit9CiAjZW5kaWYgLy8gRU5B
QkxFKERGR19KSVQpCiAKK0NvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGUoRXhlY1N0YXRlKiBleGVj
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgb3NyRW50cnlCeXRlY29kZUluZGV4LCBQ
YXNzUmVmUHRyPERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4gcGFzc2VkQ2FsbGJhY2ssIFdv
cmtsaXN0KiB3b3JrbGlzdCkKK3sKKyAgICBSZWZQdHI8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxi
YWNrPiBjYWxsYmFjayA9IHBhc3NlZENhbGxiYWNrOworICAgIENvbXBpbGF0aW9uUmVzdWx0IHJl
c3VsdCA9IGNvbXBpbGVJbXBsKGV4ZWMsIGNvZGVCbG9jaywgb3NyRW50cnlCeXRlY29kZUluZGV4
LCBjYWxsYmFjaywgd29ya2xpc3QpOworICAgIGlmIChyZXN1bHQgIT0gQ29tcGlsYXRpb25EZWZl
cnJlZCkKKyAgICAgICAgY2FsbGJhY2stPmNvbXBpbGF0aW9uRGlkQ29tcGxldGUoY29kZUJsb2Nr
LCByZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlND
OjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuaAkocmV2aXNpb24g
MTU0ODA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsMTkgKzM0LDI1IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDb2Rl
QmxvY2s7CiBjbGFzcyBKSVRDb2RlOwotY2xhc3MgVk07CiBjbGFzcyBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI7CitjbGFzcyBWTTsKIAogbmFtZXNwYWNlIERGRyB7CiAKK2NsYXNzIFdvcmtsaXN0Owor
CiBKU19FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBnZXROdW1Db21waWxhdGlvbnMoKTsKIAogI2lm
IEVOQUJMRShERkdfSklUKQotQ29tcGlsYXRpb25SZXN1bHQgdHJ5Q29tcGlsZShFeGVjU3RhdGUq
LCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXgsIFBhc3NSZWZQdHI8
RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPik7CitDb21waWxhdGlvblJlc3VsdCB0cnlDb21w
aWxlKEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkIG9zckVudHJ5Qnl0ZWNvZGVJbmRl
eCwgUGFzc1JlZlB0cjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+LCBXb3JrbGlzdCopOwog
I2Vsc2UKLWlubGluZSBDb21waWxhdGlvblJlc3VsdCB0cnlDb21waWxlKEV4ZWNTdGF0ZSosIENv
ZGVCbG9jayosIHVuc2lnbmVkLCBQYXNzUmVmUHRyPERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFj
az4pIHsgcmV0dXJuIENvbXBpbGF0aW9uRmFpbGVkOyB9CitpbmxpbmUgQ29tcGlsYXRpb25SZXN1
bHQgdHJ5Q29tcGlsZShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCwgUGFzc1JlZlB0
cjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+LCBXb3JrbGlzdCopIHsgcmV0dXJuIENvbXBp
bGF0aW9uRmFpbGVkOyB9CiAjZW5kaWYKIAorLy8gSWYgdGhlIHdvcmtsaXN0IGlzIG5vbi1udWxs
LCB3ZSBkbyBhIGNvbmN1cnJlbnQgY29tcGlsZS4gT3RoZXJ3aXNlIHdlIGRvIGEgc3luY2hyb25v
dXMKKy8vIGNvbXBpbGUuIEV2ZW4gaWYgd2UgZG8gYSBzeW5jaHJvbm91cyBjb21waWxlLCB3ZSBj
YWxsIHRoZSBjYWxsYmFjayB3aXRoIHRoZSByZXN1bHQuCitDb21waWxhdGlvblJlc3VsdCBjb21w
aWxlKEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkIG9zckVudHJ5Qnl0ZWNvZGVJbmRl
eCwgUGFzc1JlZlB0cjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+LCBXb3JrbGlzdCopOwor
CiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0UHJlcGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdFByZXBhcmF0aW9uLmNwcAkocmV2aXNp
b24gMTU0ODA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0UHJlcGFy
YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSklULmgiCiAj
aW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIApAQCAtMzcsNyAr
MzgsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIHZvaWQgcHJlcGFyZUNv
ZGVPcmlnaW5Gb3JPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYywgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
KQogewotICAgIERlZmVyR0MgZGVmZXJHQyhleGVjLT52bSgpLmhlYXApOworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgIAogICAgIGZv
ciAoOyBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4u
aW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIpIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0KQEAgLTQ4LDkgKzUwLDcgQEAgdm9pZCBwcmVwYXJlQ29kZU9yaWdpbkZvck9T
UkV4aXQoRXhlY1N0YQogICAgICAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSlNDOjpK
SVRDb2RlOjpCYXNlbGluZUpJVCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBBU1NF
UlQoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSlNDOjpKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
KTsKLSAgICAgICAgQ29tcGlsYXRpb25SZXN1bHQgcmVzdWx0ID0gY29kZUJsb2NrLT5wcmVwYXJl
Rm9yRXhlY3V0aW9uKAotICAgICAgICAgICAgZXhlYywgSlNDOjpKSVRDb2RlOjpCYXNlbGluZUpJ
VCwgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQgPT0gQ29tcGlsYXRpb25TdWNjZXNzZnVsKTsKKyAgICAgICAgSklUOjpjb21w
aWxlKCZ2bSwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkKTsKICAgICAgICAg
Y29kZUJsb2NrLT5pbnN0YWxsKCk7CiAgICAgfQogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHJldmlzaW9uIDE1NDgwNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNiAr
Mjc3LDggQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUdsb2JhbFdvcmtsaXN0T25jZQogCiBXb3Jr
bGlzdCogZ2xvYmFsV29ya2xpc3QoKQogeworICAgIGlmICghZW5hYmxlQ29uY3VycmVudEpJVCgp
KQorICAgICAgICByZXR1cm4gMDsKICAgICBwdGhyZWFkX29uY2UoJmluaXRpYWxpemVHbG9iYWxX
b3JrbGlzdEtleU9uY2UsIGluaXRpYWxpemVHbG9iYWxXb3JrbGlzdE9uY2UpOwogICAgIHJldHVy
biB0aGVHbG9iYWxXb3JrbGlzdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHV29ya2xpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1dvcmtsaXN0LmgJKHJldmlzaW9uIDE1NDgwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHV29ya2xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsOCArOTcsMTAgQEAgcHJpdmF0
ZToKIAogLy8gRm9yIG5vdyB3ZSB1c2UgYSBzaW5nbGUgZ2xvYmFsIHdvcmtsaXN0LiBJdCdzIG5v
dCBjbGVhciB0aGF0IHRoaXMKIC8vIGlzIHRoZSByaWdodCB0aGluZyB0byBkbywgYnV0IGl0IGlz
IHdoYXQgd2UgZG8sIGZvciBub3cuIFRoaXMgZnVuY3Rpb24KLS8vIHdpbGwgbGF6aWx5IGNyZWF0
ZSBvbmUgd2hlbiBpdCdzIG5lZWRlZC4gQ3VycmVudGx5IHRoaXMgaXMgb25seSBjYWxsZWQKLS8v
IGZyb20gREZHRHJpdmVyLmNwcCwgd2hlbiBpdCBhY3R1YWxseSB3YW50cyB0byBlbnF1ZXVlIHNv
bWV0aGluZy4KKy8vIHdpbGwgbGF6aWx5IGNyZWF0ZSBvbmUgd2hlbiBpdCdzIG5lZWRlZC4KKy8v
CisvLyBUaGlzIHJldHVybnMgbnVsbCBpZiBmb3IgYW55IHJlYXNvbiB3ZSBzaG91bGRuJ3QgYmUg
ZG9pbmcgY29uY3VycmVudAorLy8gY29tcGlsYXRpb24uCiBXb3JrbGlzdCogZ2xvYmFsV29ya2xp
c3QoKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAkocmV2aXNpb24gMTU0ODA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjAsNyArNTIwLDcgQEAgQUxXQVlTX0lOTElO
RSB2b2lkIFByb3BlcnR5U3R1YkNvbXBpbGF0aQogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxKSVRD
b2RlPiBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bmN0aW9uRW50cnlBcml0eUNoZWNr
LCBKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCitDb21waWxhdGlvblJlc3VsdCBKSVQ6OnBy
aXZhdGVDb21waWxlKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKIHsKICNpZiBFTkFCTEUo
VkFMVUVfUFJPRklMRVIpCiAgICAgREZHOjpDYXBhYmlsaXR5TGV2ZWwgbGV2ZWwgPSBtX2NvZGVC
bG9jay0+Y2FwYWJpbGl0eUxldmVsKCk7CkBAIC02NjgsNyArNjY4LDcgQEAgUGFzc1JlZlB0cjxK
SVRDb2RlPiBKSVQ6OnByaXZhdGVDb21waWxlKAogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cigqbV92bSwgdGhpcywgbV9jb2RlQmxvY2ssIGVmZm9ydCk7CiAgICAgaWYgKHBhdGNoQnVmZmVy
LmRpZEZhaWxUb0FsbG9jYXRlKCkpCi0gICAgICAgIHJldHVybiBQYXNzUmVmUHRyPEpJVENvZGU+
KCk7CisgICAgICAgIHJldHVybiBDb21waWxhdGlvbkZhaWxlZDsKIAogICAgIC8vIFRyYW5zbGF0
ZSB2UEMgb2Zmc2V0cyBpbnRvIGFkZHJlc3NlcyBpbiBKSVQgZ2VuZXJhdGVkIGNvZGUsIGZvciBz
d2l0Y2ggdGFibGVzLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3N3aXRjaGVzLnNp
emUoKTsgKytpKSB7CkBAIC03NTUsOCArNzU1LDkgQEAgUGFzc1JlZlB0cjxKSVRDb2RlPiBKSVQ6
OnByaXZhdGVDb21waWxlKAogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKG1fY29kZUJsb2NrLT5j
b2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSAmJiBmdW5jdGlvbkVudHJ5QXJpdHlDaGVjaykKLSAg
ICAgICAgKmZ1bmN0aW9uRW50cnlBcml0eUNoZWNrID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZihh
cml0eUNoZWNrKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgd2l0aEFyaXR5Q2hlY2s7Cisg
ICAgaWYgKG1fY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSkKKyAgICAgICAg
d2l0aEFyaXR5Q2hlY2sgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKGFyaXR5Q2hlY2spOwogCiAg
ICAgaWYgKE9wdGlvbnM6OnNob3dEaXNhc3NlbWJseSgpKQogICAgICAgICBtX2Rpc2Fzc2VtYmxl
ci0+ZHVtcChwYXRjaEJ1ZmZlcik7CkBAIC03NzIsMTIgKzc3MywxNSBAQCBQYXNzUmVmUHRyPEpJ
VENvZGU+IEpJVDo6cHJpdmF0ZUNvbXBpbGUoCiAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4o
bV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSkpOwogICAgIAogICAgIG1fY29kZUJs
b2NrLT5zaHJpbmtUb0ZpdChDb2RlQmxvY2s6OkxhdGVTaHJpbmspOworICAgIG1fY29kZUJsb2Nr
LT5zZXRKSVRDb2RlKAorICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShyZXN1bHQs
IEpJVENvZGU6OkJhc2VsaW5lSklUKSksCisgICAgICAgIHdpdGhBcml0eUNoZWNrKTsKICAgICAK
ICNpZiBFTkFCTEUoSklUX1ZFUkJPU0UpCiAgICAgZGF0YUxvZ0YoIkpJVCBnZW5lcmF0ZWQgY29k
ZSBmb3IgJXAgYXQgWyVwLCAlcCkuXG4iLCBtX2NvZGVCbG9jaywgcmVzdWx0LmV4ZWN1dGFibGVN
ZW1vcnkoKS0+c3RhcnQoKSwgcmVzdWx0LmV4ZWN1dGFibGVNZW1vcnkoKS0+ZW5kKCkpOwogI2Vu
ZGlmCiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHJlc3VsdCwg
SklUQ29kZTo6QmFzZWxpbmVKSVQpKTsKKyAgICByZXR1cm4gQ29tcGlsYXRpb25TdWNjZXNzZnVs
OwogfQogCiB2b2lkIEpJVDo6bGlua0ZvcihFeGVjU3RhdGUqIGV4ZWMsIEpTRnVuY3Rpb24qIGNh
bGxlZSwgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2ssIENvZGVCbG9jayogY2FsbGVlQ29kZUJs
b2NrLCBKSVQ6OkNvZGVQdHIgY29kZSwgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8sIFZNKiB2
bSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCShyZXZpc2lvbiAxNTQ4MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTgsOSArMjk4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBpbnQgcGF0Y2hQdXRCeUlkRGVmYXVsdE9mZnNldCA9IDI1NjsKIAog
ICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SklUQ29kZT4gY29tcGlsZShW
TSogdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQs
IENvZGVQdHIqIGZ1bmN0aW9uRW50cnlBcml0eUNoZWNrID0gMCkKKyAgICAgICAgc3RhdGljIENv
bXBpbGF0aW9uUmVzdWx0IGNvbXBpbGUoVk0qIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklU
Q29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
SklUKHZtLCBjb2RlQmxvY2spLnByaXZhdGVDb21waWxlKGZ1bmN0aW9uRW50cnlBcml0eUNoZWNr
LCBlZmZvcnQpOworICAgICAgICAgICAgcmV0dXJuIEpJVCh2bSwgY29kZUJsb2NrKS5wcml2YXRl
Q29tcGlsZShlZmZvcnQpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgdm9p
ZCBjb21waWxlQ2xvc3VyZUNhbGwoVk0qIHZtLCBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbywg
Q29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2ssIENvZGVCbG9jayogY2FsbGVlQ29kZUJsb2NrLCBT
dHJ1Y3R1cmUqIGV4cGVjdGVkU3RydWN0dXJlLCBFeGVjdXRhYmxlQmFzZSogZXhwZWN0ZWRFeGVj
dXRhYmxlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cikKQEAgLTQwMyw3ICs0MDMsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZU1haW5QYXNzKCk7
CiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVMaW5rUGFzcygpOwogICAgICAgICB2b2lkIHBy
aXZhdGVDb21waWxlU2xvd0Nhc2VzKCk7Ci0gICAgICAgIFBhc3NSZWZQdHI8SklUQ29kZT4gcHJp
dmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2ssIEpJVENvbXBpbGF0
aW9uRWZmb3J0KTsKKyAgICAgICAgQ29tcGlsYXRpb25SZXN1bHQgcHJpdmF0ZUNvbXBpbGUoSklU
Q29tcGlsYXRpb25FZmZvcnQpOwogICAgICAgICAKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGls
ZUNsb3N1cmVDYWxsKENhbGxMaW5rSW5mbyosIENvZGVCbG9jayogY2FsbGVlQ29kZUJsb2NrLCBT
dHJ1Y3R1cmUqLCBFeGVjdXRhYmxlQmFzZSosIE1hY3JvQXNzZW1ibGVyQ29kZVB0cik7CiAgICAg
ICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9u
IDE1NDgwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSAiQ29kZVByb2ZpbGluZy5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2lu
Y2x1ZGUgIkRGR0RyaXZlci5oIgogI2luY2x1ZGUgIkRGR09TUkVudHJ5LmgiCiAjaW5jbHVkZSAi
REZHV29ya2xpc3QuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgpAQCAtOTA2LDYgKzkwNyw3IEBA
IERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplKQogICAgIAogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+
dm0oKTsKICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gc3RhY2tGcmFtZS5hcmdzWzBdLmlu
dDMyKCk7CiAKICAgICBpZiAoYnl0ZWNvZGVJbmRleCkgewpAQCAtOTQ1LDEyICs5NDcsMTIgQEAg
REVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemUpCiAgICAgLy8gV2UgY2Fubm90IGJl
IGluIHRoZSBwcm9jZXNzIG9mIGFzeW5jaHJvbm91cyBjb21waWxhdGlvbiBhbmQgYWxzbyBoYXZl
IGFuIG9wdGltaXplZAogICAgIC8vIHJlcGxhY2VtZW50LgogICAgIEFTU0VSVCgKLSAgICAgICAg
IXN0YWNrRnJhbWUudm0tPndvcmtsaXN0Ci0gICAgICAgIHx8ICEoc3RhY2tGcmFtZS52bS0+d29y
a2xpc3QtPmNvbXBpbGF0aW9uU3RhdGUoY29kZUJsb2NrKSAhPSBERkc6OldvcmtsaXN0OjpOb3RL
bm93bgorICAgICAgICAhdm0ud29ya2xpc3QKKyAgICAgICAgfHwgISh2bS53b3JrbGlzdC0+Y29t
cGlsYXRpb25TdGF0ZShjb2RlQmxvY2spICE9IERGRzo6V29ya2xpc3Q6Ok5vdEtub3duCiAgICAg
ICAgICAgICAgJiYgY29kZUJsb2NrLT5oYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpKSk7CiAgICAg
CiAgICAgREZHOjpXb3JrbGlzdDo6U3RhdGUgd29ya2xpc3RTdGF0ZTsKLSAgICBpZiAoc3RhY2tG
cmFtZS52bS0+d29ya2xpc3QpIHsKKyAgICBpZiAodm0ud29ya2xpc3QpIHsKICAgICAgICAgLy8g
VGhlIGNhbGwgdG8gREZHOjpXb3JrbGlzdDo6Y29tcGxldGVBbGxSZWFkeVBsYW5zRm9yVk0oKSB3
aWxsIGNvbXBsZXRlIGFsbCByZWFkeQogICAgICAgICAvLyAoaS5lLiBjb21waWxlZCkgY29kZSBi
bG9ja3MuIEJ1dCBpZiBpdCBjb21wbGV0ZXMgb3Vycywgd2UgYWxzbyBuZWVkIHRvIGtub3cKICAg
ICAgICAgLy8gd2hhdCB0aGUgcmVzdWx0IHdhcyBzbyB0aGF0IHdlIGRvbid0IHBsb3cgYWhlYWQg
YW5kIGF0dGVtcHQgT1NSIG9yIGltbWVkaWF0ZQpAQCAtOTcxLDcgKzk3Myw3IEBAIERFRklORV9T
VFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplKQogICAgICAgICAvLyBvcHRpbWl6ZWQgY29kZSBp
cyBhbHJlYWR5IGF2YWlsYWJsZS4KICAgICAgICAgCiAgICAgICAgIHdvcmtsaXN0U3RhdGUgPQot
ICAgICAgICAgICAgc3RhY2tGcmFtZS52bS0+d29ya2xpc3QtPmNvbXBsZXRlQWxsUmVhZHlQbGFu
c0ZvclZNKCpzdGFja0ZyYW1lLnZtLCBjb2RlQmxvY2spOworICAgICAgICAgICAgdm0ud29ya2xp
c3QtPmNvbXBsZXRlQWxsUmVhZHlQbGFuc0ZvclZNKHZtLCBjb2RlQmxvY2spOwogICAgIH0gZWxz
ZQogICAgICAgICB3b3JrbGlzdFN0YXRlID0gREZHOjpXb3JrbGlzdDo6Tm90S25vd247CiAgICAg
CkBAIC0xMDM2LDggKzEwMzgsMTIgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1p
emUpCiAgICAgICAgIFJlZlB0cjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+IGNhbGxiYWNr
ID0KICAgICAgICAgICAgIEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpjcmVh
dGUoKTsKICAgICAgICAgUmVmUHRyPENvZGVCbG9jaz4gbmV3Q29kZUJsb2NrID0gY29kZUJsb2Nr
LT5uZXdSZXBsYWNlbWVudCgpOwotICAgICAgICBDb21waWxhdGlvblJlc3VsdCByZXN1bHQgPSBu
ZXdDb2RlQmxvY2stPnByZXBhcmVGb3JFeGVjdXRpb25Bc3luY2hyb25vdXNseSgKLSAgICAgICAg
ICAgIGNhbGxGcmFtZSwgSklUQ29kZTo6REZHSklULCBjYWxsYmFjaywgSklUQ29tcGlsYXRpb25D
YW5GYWlsLCBieXRlY29kZUluZGV4KTsKKyAgICAgICAgCisgICAgICAgIGlmICghdm0ud29ya2xp
c3QpCisgICAgICAgICAgICB2bS53b3JrbGlzdCA9IERGRzo6Z2xvYmFsV29ya2xpc3QoKTsKKyAg
ICAgICAgCisgICAgICAgIENvbXBpbGF0aW9uUmVzdWx0IHJlc3VsdCA9IERGRzo6Y29tcGlsZSgK
KyAgICAgICAgICAgIGNhbGxGcmFtZSwgbmV3Q29kZUJsb2NrLmdldCgpLCBieXRlY29kZUluZGV4
LCBjYWxsYmFjaywgdm0ud29ya2xpc3QuZ2V0KCkpOwogICAgICAgICAKICAgICAgICAgaWYgKHJl
c3VsdCAhPSBDb21waWxhdGlvblN1Y2Nlc3NmdWwpCiAgICAgICAgICAgICByZXR1cm47CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAko
cmV2aXNpb24gMTU0ODA0KQkoZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRF
bnRyeXBvaW50cy5jcHA6MTU0ODA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RW50cnlwb2ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIKKworI2lmIEVOQUJMRShM
TElOVCkKKworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpJVENvZGUuaCIKKyNp
bmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisjaW5jbHVkZSAi
TG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIlZNLmgiCisKKworbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgc2V0RnVuY3Rpb25FbnRyeXBvaW50KFZNJiB2
bSwgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQgPSBjb2RlQmxvY2stPnNwZWNpYWxpemF0aW9uS2luZCgpOworICAgIAorICAg
IGlmICghdm0uY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwp
IHsKKyAgICAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKKyAgICAgICAgICAgICAgICBh
ZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxM
SW50Q29kZVJlZihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSksIEpJVENvZGU6Oklu
dGVycHJldGVyVGh1bmspKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6
OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaykp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKGtpbmQg
PT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKKyAg
ICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJl
Zjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9n
dWUpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSksCisgICAgICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3Ry
dWN0X2FyaXR5X2NoZWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisjaWYgRU5B
QkxFKEpJVCkKKyAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICBjb2RlQmxv
Y2stPnNldEpJVENvZGUoCisgICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSh2
bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2Rl
OjpJbnRlcnByZXRlclRodW5rKSksCisgICAgICAgICAgICB2bS5nZXRDVElTdHViKGZ1bmN0aW9u
Rm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIGNv
ZGVCbG9jay0+c2V0SklUQ29kZSgKKyAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUo
dm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBK
SVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSksCisgICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rp
b25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSk7CisjZW5kaWYg
Ly8gRU5BQkxFKEpJVCkKK30KKwordm9pZCBzZXRFdmFsRW50cnlwb2ludChWTSYgdm0sIEV2YWxD
b2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBpZiAoIXZtLmNhblVzZUpJVCgpKSB7CisgICAg
ICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKKyAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJl
Y3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50
X2V2YWxfcHJvbG9ndWUpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSksCisgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjaWYg
RU5BQkxFKEpJVCkKKyAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCisgICAgICAgIGFkb3B0UmVm
KG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3Ip
LCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSksCisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cigpKTsKKyNlbmRpZgorfQorCit2b2lkIHNldFByb2dyYW1FbnRyeXBvaW50KFZNJiB2bSwg
UHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrKQoreworICAgIGlmICghdm0uY2FuVXNlSklUKCkp
IHsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAorICAgICAgICAgICAgYWRvcHRSZWYo
bmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVS
ZWYobGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSwK
KyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyNpZiBFTkFCTEUoSklUKQorICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKKyAgICAg
ICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1Yihwcm9ncmFtRW50cnlU
aHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSwKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyKCkpOworI2VuZGlmCit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlND
OjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAJKHdvcmtpbmcgY29weSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5cG9pbnQuaCIK
IAogI2lmIEVOQUJMRShMTElOVCkKIApAQCAtMzgsNyArMzgsNyBAQAogCiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIExMSW50IHsKIAotdm9pZCBzZXRGdW5jdGlvbkVudHJ5cG9pbnQoVk0mIHZt
LCBGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrKQorc3RhdGljIHZvaWQgc2V0RnVuY3Rpb25F
bnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kID0gY29kZUJsb2NrLT5zcGVjaWFsaXphdGlvbktpbmQoKTsKICAg
ICAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBzZXRGdW5jdGlvbkVudHJ5cG9pbnQoVk0mIHZtLCBG
dW5jdAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiB9CiAKLXZvaWQgc2V0RXZhbEVudHJ5cG9pbnQo
Vk0mIHZtLCBFdmFsQ29kZUJsb2NrKiBjb2RlQmxvY2spCitzdGF0aWMgdm9pZCBzZXRFdmFsRW50
cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQogewogICAgIGlmICghdm0uY2Fu
VXNlSklUKCkpIHsKICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKApAQCAtODcsNyArODcs
NyBAQCB2b2lkIHNldEV2YWxFbnRyeXBvaW50KFZNJiB2bSwgRXZhbENvZGVCCiAjZW5kaWYKIH0K
IAotdm9pZCBzZXRQcm9ncmFtRW50cnlwb2ludChWTSYgdm0sIFByb2dyYW1Db2RlQmxvY2sqIGNv
ZGVCbG9jaykKK3N0YXRpYyB2b2lkIHNldFByb2dyYW1FbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJs
b2NrKiBjb2RlQmxvY2spCiB7CiAgICAgaWYgKCF2bS5jYW5Vc2VKSVQoKSkgewogICAgICAgICBj
b2RlQmxvY2stPnNldEpJVENvZGUoCkBAIC0xMDIsNiArMTAyLDIzIEBAIHZvaWQgc2V0UHJvZ3Jh
bUVudHJ5cG9pbnQoVk0mIHZtLCBQcm9ncmEKICNlbmRpZgogfQogCit2b2lkIHNldEVudHJ5cG9p
bnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBzd2l0Y2ggKGNvZGVCbG9j
ay0+Y29kZVR5cGUoKSkgeworICAgIGNhc2UgR2xvYmFsQ29kZToKKyAgICAgICAgc2V0UHJvZ3Jh
bUVudHJ5cG9pbnQodm0sIGNvZGVCbG9jayk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEV2
YWxDb2RlOgorICAgICAgICBzZXRFdmFsRW50cnlwb2ludCh2bSwgY29kZUJsb2NrKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgRnVuY3Rpb25Db2RlOgorICAgICAgICBzZXRGdW5jdGlvbkVu
dHJ5cG9pbnQodm0sIGNvZGVCbG9jayk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkxMSW50CiAKICNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5oCShyZXZpc2lvbiAxNTQ4MDQpCShm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmg6MTU0ODA0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEVudHJ5cG9pbnRzX2gKKyNkZWZp
bmUgTExJbnRFbnRyeXBvaW50c19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lm
IEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKKyNp
bmNsdWRlICJKSVRDb2RlLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgRXZhbENvZGVCbG9jazsKK2NsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOwor
Y2xhc3MgVk07CitjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVQdHI7CitjbGFzcyBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY7CitjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOworCituYW1lc3BhY2UgTExJbnQg
eworCit2b2lkIHNldEZ1bmN0aW9uRW50cnlwb2ludChWTSYsIEZ1bmN0aW9uQ29kZUJsb2NrKik7
Cit2b2lkIHNldEV2YWxFbnRyeXBvaW50KFZNJiwgRXZhbENvZGVCbG9jayopOwordm9pZCBzZXRQ
cm9ncmFtRW50cnlwb2ludChWTSYsIFByb2dyYW1Db2RlQmxvY2sqKTsKKworfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBM
TEludEVudHJ5cG9pbnRzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEVudHJ5cG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRFbnRyeXBvaW50LmgJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludEVudHJ5cG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMjMgKzMxLDE1
IEBACiAjaWYgRU5BQkxFKExMSU5UKQogCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZC5oIgotI2luY2x1ZGUgIkpJVENvZGUuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewogCi1jbGFzcyBFdmFsQ29kZUJsb2NrOwotY2xhc3MgRnVuY3Rpb25Db2Rl
QmxvY2s7CitjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBWTTsKLWNsYXNzIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjsKLWNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKLWNsYXNzIFByb2dyYW1Db2Rl
QmxvY2s7CiAKIG5hbWVzcGFjZSBMTEludCB7CiAKLXZvaWQgc2V0RnVuY3Rpb25FbnRyeXBvaW50
KFZNJiwgRnVuY3Rpb25Db2RlQmxvY2sqKTsKLXZvaWQgc2V0RXZhbEVudHJ5cG9pbnQoVk0mLCBF
dmFsQ29kZUJsb2NrKik7Ci12b2lkIHNldFByb2dyYW1FbnRyeXBvaW50KFZNJiwgUHJvZ3JhbUNv
ZGVCbG9jayopOwordm9pZCBzZXRFbnRyeXBvaW50KFZNJiwgQ29kZUJsb2NrKik7CiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpMTEludAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRFbnRyeXBvaW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCShyZXZpc2lvbiAxNTQ4MDQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTA3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkxMSW50RW50
cnlwb2ludHMuaCIKLQotI2lmIEVOQUJMRShMTElOVCkKLQotI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgotI2luY2x1ZGUgIkpJVENvZGUuaCIKLSNpbmNsdWRlICJKU09iamVjdC5oIgotI2luY2x1ZGUg
IkxMSW50VGh1bmtzLmgiCi0jaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgotI2luY2x1
ZGUgIlZNLmgiCi0KLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7Ci0KLXZvaWQg
c2V0RnVuY3Rpb25FbnRyeXBvaW50KFZNJiB2bSwgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9j
aykKLXsKLSAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBjb2RlQmxvY2stPnNwZWNp
YWxpemF0aW9uS2luZCgpOwotICAgIAotICAgIGlmICghdm0uY2FuVXNlSklUKCkpIHsKLSAgICAg
ICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKLSAgICAgICAgICAgIGNvZGVCbG9jay0+c2V0
SklUQ29kZSgKLSAgICAgICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNy
b0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9mdW5jdGlvbl9mb3Jf
Y2FsbF9wcm9sb2d1ZSksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSwKLSAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5j
dGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaykpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7Ci0gICAgICAg
IGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RK
SVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X2Z1
bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
KSksCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0
cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgCi0jaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoa2luZCA9PSBDb2Rl
Rm9yQ2FsbCkgewotICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgICAgICBh
ZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSh2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEVu
dHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSksCi0gICAgICAg
ICAgICB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRv
cikuY29kZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVChraW5kID09
IENvZGVGb3JDb25zdHJ1Y3QpOwotICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAg
YWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0
cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSksCi0g
ICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtH
ZW5lcmF0b3IpLmNvZGUoKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEpJVCkKLX0KLQotdm9pZCBzZXRF
dmFsRW50cnlwb2ludChWTSYgdm0sIEV2YWxDb2RlQmxvY2sqIGNvZGVCbG9jaykKLXsKLSAgICBp
ZiAoIXZtLmNhblVzZUpJVCgpKSB7Ci0gICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAg
ICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJl
Zjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X2V2YWxfcHJvbG9ndWUpLCBKSVRDb2RlOjpJbnRl
cnByZXRlclRodW5rKSksCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0jaWYgRU5BQkxFKEpJVCkKLSAgICBjb2RlQmxvY2stPnNl
dEpJVENvZGUoCi0gICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0
dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSks
Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpKTsKLSNlbmRpZgotfQotCi12b2lkIHNl
dFByb2dyYW1FbnRyeXBvaW50KFZNJiB2bSwgUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrKQot
ewotICAgIGlmICghdm0uY2FuVXNlSklUKCkpIHsKLSAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRD
b2RlKAotICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSksIEpJ
VENvZGU6OkludGVycHJldGVyVGh1bmspKSwKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBFTkFCTEUoSklUKQotICAgIGNv
ZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUo
dm0uZ2V0Q1RJU3R1Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVy
cHJldGVyVGh1bmspKSwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOwotI2VuZGlm
Ci19Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAotCi0jZW5kaWYgLy8gRU5BQkxFKExM
SU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBv
aW50cy5oCShyZXZpc2lvbiAxNTQ4MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRFbnRyeXBvaW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBM
TEludEVudHJ5cG9pbnRzX2gKLSNkZWZpbmUgTExJbnRFbnRyeXBvaW50c19oCi0KLSNpbmNsdWRl
IDx3dGYvUGxhdGZvcm0uaD4KLQotI2lmIEVOQUJMRShMTElOVCkKLQotI2luY2x1ZGUgIkNvZGVT
cGVjaWFsaXphdGlvbktpbmQuaCIKLSNpbmNsdWRlICJKSVRDb2RlLmgiCi0jaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgRXZhbENvZGVCbG9jazsKLWNs
YXNzIEZ1bmN0aW9uQ29kZUJsb2NrOwotY2xhc3MgVk07Ci1jbGFzcyBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI7Ci1jbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7Ci1jbGFzcyBQcm9ncmFtQ29kZUJs
b2NrOwotCi1uYW1lc3BhY2UgTExJbnQgewotCi12b2lkIHNldEZ1bmN0aW9uRW50cnlwb2ludChW
TSYsIEZ1bmN0aW9uQ29kZUJsb2NrKik7Ci12b2lkIHNldEV2YWxFbnRyeXBvaW50KFZNJiwgRXZh
bENvZGVCbG9jayopOwotdm9pZCBzZXRQcm9ncmFtRW50cnlwb2ludChWTSYsIFByb2dyYW1Db2Rl
QmxvY2sqKTsKLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoTExJTlQpCi0KLSNlbmRpZiAvLyBMTEludEVudHJ5cG9pbnRzX2gKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTU0
ODA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjc5LDcgKzI3OSw4IEBAIGlubGluZSBib29sIHNob3VsZEpJVChF
eGVjU3RhdGUqIGV4ZWMpCiAvLyBSZXR1cm5zIHRydWUgaWYgd2Ugc2hvdWxkIHRyeSB0byBPU1Iu
CiBpbmxpbmUgYm9vbCBqaXRDb21waWxlQW5kU2V0SGV1cmlzdGljcyhDb2RlQmxvY2sqIGNvZGVC
bG9jaywgRXhlY1N0YXRlKiBleGVjKQogewotICAgIERlZmVyR0MgZGVmZXJHQyhleGVjLT52bSgp
LmhlYXApOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgRGVmZXJHQyBkZWZlckdDKHZt
LmhlYXApOwogICAgIAogICAgIGNvZGVCbG9jay0+dXBkYXRlQWxsVmFsdWVQcm9maWxlUHJlZGlj
dGlvbnMoKTsKICAgICAKQEAgLTI5Nyw4ICsyOTgsNyBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxl
QW5kU2V0SGV1cmlzdGljcyhDCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBjYXNl
IEpJVENvZGU6OkludGVycHJldGVyVGh1bms6IHsKLSAgICAgICAgQ29tcGlsYXRpb25SZXN1bHQg
cmVzdWx0ID0gY29kZUJsb2NrLT5wcmVwYXJlRm9yRXhlY3V0aW9uKAotICAgICAgICAgICAgZXhl
YywgSklUQ29kZTo6QmFzZWxpbmVKSVQsIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgICAg
IENvbXBpbGF0aW9uUmVzdWx0IHJlc3VsdCA9IEpJVDo6Y29tcGlsZSgmdm0sIGNvZGVCbG9jaywg
SklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICAgICAgc3dpdGNoIChyZXN1bHQpIHsKICAgICAg
ICAgY2FzZSBDb21waWxhdGlvbkZhaWxlZDoKICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJi
b3NlT1NSKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcAkocmV2aXNpb24gMTU0ODA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdEcml2ZXIuaCIKICNpbmNsdWRlICJKSVQu
aCIKKyNpbmNsdWRlICJMTEludEVudHJ5cG9pbnQuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgi
CiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMjg0LDEz
ICsyODUsMTEgQEAgSlNPYmplY3QqIFNjcmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeAogICAg
ICAgICByZXR1cm4gZXhjZXB0aW9uOwogICAgIH0KICAgICAKLSAgICBKSVRDb2RlOjpKSVRUeXBl
IGppdFR5cGU7CiAjaWYgRU5BQkxFKExMSU5UKQotICAgIGppdFR5cGUgPSBKSVRDb2RlOjpJbnRl
cnByZXRlclRodW5rOworICAgIExMSW50OjpzZXRFbnRyeXBvaW50KHZtLCBjb2RlQmxvY2suZ2V0
KCkpOwogI2Vsc2UKLSAgICBqaXRUeXBlID0gSklUQ29kZTo6QmFzZWxpbmVKSVQ7CisgICAgSklU
Ojpjb21waWxlKCZ2bSwgY29kZUJsb2NrLmdldCgpLCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVk
KTsKICNlbmRpZgotICAgIGNvZGVCbG9jay0+cHJlcGFyZUZvckV4ZWN1dGlvbihleGVjLCBqaXRU
eXBlKTsKIAogICAgIGluc3RhbGxDb2RlKGNvZGVCbG9jay5nZXQoKSk7CiAgICAgcmV0dXJuIDA7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210005</attachid>
            <date>2013-08-29 11:29:22 -0700</date>
            <delta_ts>2013-08-29 12:22:27 -0700</delta_ts>
            <desc>rebased</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>51439</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0ODI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBA
CisyMDEzLTA4LTI5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Q29kZUJsb2NrOjpwcmVwYXJlRm9yRXhlY3V0aW9uKCkgaXMgc2lsbHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDQ1MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgSW5zdGVhZCBvZiBzYXlp
bmc6CisgICAgICAgIAorICAgICAgICAgICAgY29kZUJsb2NrLT5wcmVwYXJlRm9yRXhlY3V0aW9u
KHN0dWZmLCBCYXNlbGluZUpJVCwgbW9yZSBzdHVmZikKKyAgICAgICAgCisgICAgICAgIHdlIHNo
b3VsZCBqdXN0IHNheToKKyAgICAgICAgCisgICAgICAgICAgICBKSVQ6OmNvbXBpbGUoc3R1ZmYs
IGNvZGVCbG9jaywgbW9yZSBzdHVmZik7CisgICAgICAgIAorICAgICAgICBBbmQgc2ltaWxhcmx5
IGZvciB0aGUgTExJbnQgYW5kIERGRy4KKyAgICAgICAgCisgICAgICAgIFRoaXMga2lsbHMgYSBi
dW5jaCBvZiBjb2RlLCBzaW5jZSBDb2RlQmxvY2s6OnByZXBhcmVGb3JFeGVjdXRpb24oKSBpcyBq
dXN0IGEKKyAgICAgICAgd3JhcHBlciB0aGF0IHVzZXMgdGhlIEpJVFR5cGUgYXJndW1lbnQgdG8g
Y2FsbCBpbnRvIHRoZSBhcHByb3ByaWF0ZSBleGVjdXRpb24KKyAgICAgICAgZW5naW5lLCB3aGlj
aCBpcyB3aGF0IHRoZSB1c2VyIHdhbnRlZCB0byBkbyBpbiB0aGUgZmlyc3QgcGxhY2UuCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlSW1wbCk6CisgICAgICAgIChKU0M6OkRGRzo6
Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR0RyaXZlci5oOgorICAgICAgICAoSlNDOjpERkc6
OnRyeUNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0UHJlcGFyYXRpb24uY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OnByZXBhcmVDb2RlT3JpZ2luRm9yT1NSRXhpdCk6CisgICAgICAg
ICogZGZnL0RGR1dvcmtsaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpnbG9iYWxXb3JrbGlz
dCk6CisgICAgICAgICogZGZnL0RGR1dvcmtsaXN0Lmg6CisgICAgICAgICogaml0L0pJVC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVQu
aDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMu
Y3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogbGxp
bnQvTExJbnRFbnRyeXBvaW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwLgorICAgICAgICAoSlNDOjpMTEludDo6c2V0RnVu
Y3Rpb25FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldEV2YWxFbnRyeXBvaW50
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OnNldEVudHJ5cG9pbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlw
b2ludC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRy
eXBvaW50cy5oLgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludHMuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpqaXRDb21w
aWxlQW5kU2V0SGV1cmlzdGljcyk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6cHJlcGFyZUZvckV4ZWN1dGlvbkltcGwp
OgorCiAyMDEzLTA4LTI5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgQ29kZUJsb2NrIGNvbXBpbGF0aW9uIGFuZCBpbnN0YWxsYXRpb24gc2hvdWxkIGJlIHNpbXBs
aWZpZWQgYW5kIHJhdGlvbmFsaXplZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMTU0ODI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01MjgsNyArNTI4LDcgQEAgaWYgKEVOQUJMRV9MTElO
VCkKICAgICBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgICAgIGxsaW50
L0xMSW50Q0xvb3AuY3BwCiAgICAgICAgIGxsaW50L0xMSW50RGF0YS5jcHAKLSAgICAgICAgbGxp
bnQvTExJbnRFbnRyeXBvaW50cy5jcHAKKyAgICAgICAgbGxpbnQvTExJbnRFbnRyeXBvaW50LmNw
cAogICAgICAgICBsbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCiAgICAgICAgIGxsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAogICAgICAgICBsbGludC9MTEludFRodW5rcy5jcHAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNTQ4MjQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5
KQpAQCAtNjQ1LDggKzY0NSw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENMb29wLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludERhdGEuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnREYXRhLmggXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9p
bnRzLmNwcCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMu
aCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAgXAor
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAgXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9U
YXJnZXQucHJpCShyZXZpc2lvbiAxNTQ4MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFy
Z2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMjI3LDcgKzIyNyw3IEBAIFNPVVJDRVMgKz0gXAog
ICAgIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwIFwKICAgICBsbGludC9MTEludENMb29wLmNwcCBc
CiAgICAgbGxpbnQvTExJbnREYXRhLmNwcCBcCi0gICAgbGxpbnQvTExJbnRFbnRyeXBvaW50cy5j
cHAgXAorICAgIGxsaW50L0xMSW50RW50cnlwb2ludC5jcHAgXAogICAgIGxsaW50L0xMSW50RXhj
ZXB0aW9ucy5jcHAgXAogICAgIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBcCiAgICAgbGxpbnQv
TExJbnRUaHVua3MuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvagkocmV2aXNpb24gMTU0ODI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MzgzLDcgKzM4Myw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcVGh1bmtHZW5l
cmF0b3JzLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxsbGludFxMTEludENM
b29wLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxsbGludFxMTEludERhdGEu
Y3BwIiAvPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxsaW50XExMSW50RW50cnlwb2lu
dHMuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxsaW50XExMSW50RW50cnlw
b2ludC5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbGxpbnRcTExJbnRFeGNl
cHRpb25zLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxsbGludFxMTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxsaW50
XExMSW50U2xvd1BhdGhzLmNwcCIgLz4NCkBAIC03NjIsNyArNzYyLDcgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGxsaW50XExMSW50Q0xvb3AuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxsbGludFxMTEludENvbW1vbi5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGxsaW50XExMSW50RGF0YS5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGxsaW50XExMSW50RW50cnlwb2ludHMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxsbGludFxMTEludEVudHJ5cG9pbnQuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxsbGludFxMTEludEV4Y2VwdGlvbnMuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxsbGludFxMTEludE9mZmxpbmVBc21Db25maWcuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxsbGludFxMTEludE9wY29kZS5oIiAvPg0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxNTQ4MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
NjAsOCArNjAsNiBAQAogLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAkJMEYwNUMz
QjQxNjgzQ0Y5MjAwQkFGNDVCIC8qIERGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMDVDM0IyMTY4M0NG
OEYwMEJBRjQ1QiAvKiBERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwNzc2QkYxNEZGMDAyQjAw
MTAyMzMyIC8qIEpJVENvbXBpbGF0aW9uRWZmb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjA3NzZCRDE0RkYwMDI4MDAxMDIzMzIgLyogSklUQ29t
cGlsYXRpb25FZmZvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQkwRjBCODM5QTE0QkNGNDVEMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5
NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi87IH07Ci0JCTBGMEI4
MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYg
LyogTExJbnRFbnRyeXBvaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTEludFRodW5rcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5
NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovOyB9OwogCQkwRjBCODM5RDE0
QkNGNDY2MDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRo
dW5rcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTUxNEJDRjUwNDAwODg1QjRGIC8q
IENvZGVUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTE4OSw2ICsxODcsOCBAQAogCQkwRjM0QjE0OTE2RDQyMDEwMDAxQ0RBNUEgLyogREZH
VXNlS2luZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjM0QjE0NzE2RDQyMDBFMDAxQ0RBNUEgLyogREZHVXNlS2luZC5jcHAgKi87IH07CiAJCTBG
MzRCMTRBMTZENDIwMTMwMDFDREE1QSAvKiBERkdVc2VLaW5kLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM0QjE0ODE2RDQyMDBFMDAxQ0RBNUEgLyog
REZHVXNlS2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGMzRCMTRDMTZENDNFMEQwMDFDREE1QSAvKiBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVj
dHVyZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMzRCMTRCMTZENDNFMEMwMDFDREE1QSAvKiBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxp
c3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RjM4QjAxMTE3Q0YwNzgwMDBCMTQ0RDMgLyogTExJbnRFbnRyeXBvaW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzhCMDBGMTdDRjA3N0YwMEIx
NDREMyAvKiBMTEludEVudHJ5cG9pbnQuY3BwICovOyB9OworCQkwRjM4QjAxMjE3Q0YwNzgzMDBC
MTQ0RDMgLyogTExJbnRFbnRyeXBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjM4QjAxMDE3Q0YwNzdGMDBCMTQ0RDMgLyogTExJbnRFbnRyeXBv
aW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYzQjNBMUExNTNFNjhGMjAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0IzQTE3MTUz
RTY4RUYwMDNFRDBGRiAvKiBERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgKi87IH07CiAJCTBG
M0IzQTFCMTUzRTY4RjQwMDNFRDBGRiAvKiBERkdDb25zdGFudEZvbGRpbmdQaGFzZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMTgxNTNFNjhF
RjAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYzQjNBMjcxNTQ0Qzk5NTAwM0VEMEZG
IC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMjQxNTQ0Qzk5MTAwM0VEMEZGIC8qIERGR0NG
R1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwICovOyB9OwpAQCAtMTIxNyw4ICsxMjE3LDYgQEAKIC8q
IEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCQkwRjA1QzNCMjE2ODNDRjhGMDBC
QUY0NUIgLyogREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmg7IHBhdGggPSBk
ZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjA3NzZCRDE0RkYwMDI4MDAxMDIzMzIgLyogSklUQ29tcGlsYXRpb25FZmZvcnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUQ29tcGlsYXRpb25FZmZvcnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRG
IC8qIExMSW50RW50cnlwb2ludHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTExJbnRFbnRyeXBvaW50cy5jcHA7IHBhdGggPSBsbGludC9MTEludEVudHJ5cG9pbnRz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEYwQjgzOTYxNEJDRjQ1QTAwODg1
QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gTExJbnRFbnRyeXBvaW50cy5oOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyog
TExJbnRUaHVua3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJ
bnRUaHVua3MuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRUaHVua3MuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRUaHVua3MuaDsgcGF0aCA9
IGxsaW50L0xMSW50VGh1bmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4
M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb2RlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM0
NSw2ICsxMzQzLDggQEAKIAkJMEYzNEIxNDcxNkQ0MjAwRTAwMUNEQTVBIC8qIERGR1VzZUtpbmQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHVXNlS2luZC5jcHA7
IHBhdGggPSBkZmcvREZHVXNlS2luZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGMzRCMTQ4MTZENDIwMEUwMDFDREE1QSAvKiBERkdVc2VLaW5kLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERGR1VzZUtpbmQuaDsgcGF0aCA9IGRmZy9ERkdVc2VLaW5kLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMzRCMTRCMTZENDNFMEMwMDFDREE1QSAv
KiBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMzhCMDBGMTdDRjA3N0YwMEIxNDREMyAvKiBMTEludEVudHJ5
cG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRFbnRyeXBvaW50LmNwcDsgcGF0aCA9
IGxsaW50L0xMSW50RW50cnlwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGMzhCMDEwMTdDRjA3N0YwMEIxNDREMyAvKiBMTEludEVudHJ5cG9pbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gTExJbnRFbnRyeXBvaW50Lmg7IHBhdGggPSBsbGludC9MTEludEVudHJ5cG9pbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQjNBMTcxNTNFNjhFRjAwM0VEMEZGIC8q
IERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdDb25z
dGFudEZvbGRpbmdQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0Iz
QTE4MTUzRTY4RUYwMDNFRDBGRiAvKiBERkdDb25zdGFudEZvbGRpbmdQaGFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDb25zdGFudEZvbGRpbmdQaGFzZS5oOyBwYXRo
ID0gZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGM0IzQTI0MTU0NEM5OTEwMDNFRDBGRiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBo
YXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NGR1NpbXBs
aWZpY2F0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ1NCw4ICsyNDU0LDggQEAKIAkJ
CQkwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAqLywKIAkJCQkwRjQ2
ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmggKi8sCiAJCQkJNUREREY0NDYxNEZF
RTcyMjAwQjRGQjREIC8qIExMSW50RGVzaXJlZE9mZnNldHMuaCAqLywKLQkJCQkwRjBCODM5NTE0
QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi8sCi0JCQkJMEYwQjgzOTYx
NEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLywKKwkJCQkwRjM4QjAwRjE3
Q0YwNzdGMDBCMTQ0RDMgLyogTExJbnRFbnRyeXBvaW50LmNwcCAqLywKKwkJCQkwRjM4QjAxMDE3
Q0YwNzdGMDBCMTQ0RDMgLyogTExJbnRFbnRyeXBvaW50LmggKi8sCiAJCQkJMEY0NjgwOUQxNEJB
N0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi8sCiAJCQkJMEY0NjgwOUUxNEJB
N0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovLAogCQkJCTBGNDY4MEM2MTRCQkIx
NjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLywKQEAgLTM5NDEsNiArMzk0
MSw3IEBACiAJCQkJODZDQUZFRTMxMDM1RERFNjAwMjhBNjA5IC8qIEV4ZWN1dGFibGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3NjZCNDRGMEVFOERDRDEwMDk1MThDQSAvKiBFeGVjdXRhYmxlQWxs
b2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU2QTFEMzE1MDAwRjM1MDAyOTkyQjEgLyog
RXhlY3V0aW9uQ291bnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzOEIwMTIxN0NGMDc4MzAw
QjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTA1ODYx
Njc1NDgxMjAwRjhBQjZFIC8qIEV4aXRLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNB
QjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTdBOEFGMzgxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJheS5oIGluIEhlYWRl
cnMgKi8sCkBAIC00MTUzLDcgKzQxNTQsNiBAQAogCQkJCUZFMjBDRTlFMTVGMDRBOTUwMERGMzQz
MCAvKiBMTEludENMb29wLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODBDQTE0QkJCMTZDMDBC
RkUyNzIgLyogTExJbnRDb21tb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MEQzMTRCQkQx
NjcwMEJGRTI3MiAvKiBMTEludERhdGEuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGMEI4MzlCMTRC
Q0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmln
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUQyODdCMjE1RUM5QTU3MDBEQTgxNjEgLyogTExJbnRP
cGNvZGUuaCBpbiBIZWFkZXJzICovLApAQCAtNDk3Miw3ICs0OTcyLDYgQEAKIAkJCQlBN0UyRUE2
QzBGQjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGRTIwQ0U5RDE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTElu
dEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZF
MjcyIC8qIExMSW50U2xvd1BhdGhzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4MzlDMTRC
Q0Y0NjMwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTUwMzEs
NiArNTAzMCw3IEBACiAJCQkJMEYxMzkxMkIxNjc3MUMzQTAwOUNDQjA3IC8qIFByb2ZpbGVyUHJv
ZmlsZWRCeXRlY29kZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdGQjYwQTQxMDNGN0RDMjAw
MTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2
OURFNzEwN0VDN0U3MDA2NTA0NDYgLyogUHJvcGVydHlOYW1lQXJyYXkuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEYzOEIwMTExN0NGMDc4MDAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFODEwN0VDN0U3MDA2NTA0NDYgLyogUHJvcGVydHlT
bG90LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFERTM5RkZGMTZERDE0NEIwMDAzQ0Q0QSAvKiBQ
cm9wZXJ0eVRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NzRDMzNDMTZBQTJEOUIwMDYy
RjAxRCAvKiBQcm90b3R5cGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTU0ODI0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCi0jaW5jbHVkZSAiTExJ
bnRFbnRyeXBvaW50cy5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5oIgpA
QCAtMjY5Myw3NyArMjY5Miw2IEBAIHZvaWQgQ29kZUJsb2NrOjpjb3B5UG9zdFBhcnNlRGF0YUZy
b21BbHQKICAgICBjb3B5UG9zdFBhcnNlRGF0YUZyb20obV9hbHRlcm5hdGl2ZS5nZXQoKSk7CiB9
CiAKLUNvbXBpbGF0aW9uUmVzdWx0IENvZGVCbG9jazo6cHJlcGFyZUZvckV4ZWN1dGlvbkltcGwo
Ci0gICAgRXhlY1N0YXRlKiBleGVjLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUsIEpJVENvbXBp
bGF0aW9uRWZmb3J0IGVmZm9ydCwKLSAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBQYXNzUmVm
UHRyPERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4gY2FsbGJhY2spCi17Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKLSAgICAKLSAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpJbnRlcnBy
ZXRlclRodW5rKSB7Ci0jaWYgRU5BQkxFKExMSU5UKQotICAgICAgICBzd2l0Y2ggKGNvZGVUeXBl
KCkpIHsKLSAgICAgICAgY2FzZSBHbG9iYWxDb2RlOgotICAgICAgICAgICAgTExJbnQ6OnNldFBy
b2dyYW1FbnRyeXBvaW50KHZtLCBzdGF0aWNfY2FzdDxQcm9ncmFtQ29kZUJsb2NrKj4odGhpcykp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRXZhbENvZGU6Ci0gICAgICAgICAg
ICBMTEludDo6c2V0RXZhbEVudHJ5cG9pbnQodm0sIHN0YXRpY19jYXN0PEV2YWxDb2RlQmxvY2sq
Pih0aGlzKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGdW5jdGlvbkNvZGU6
Ci0gICAgICAgICAgICBMTEludDo6c2V0RnVuY3Rpb25FbnRyeXBvaW50KHZtLCBzdGF0aWNfY2Fz
dDxGdW5jdGlvbkNvZGVCbG9jayo+KHRoaXMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBDb21waWxhdGlvblN1Y2Nlc3NmdWw7Ci0jZWxzZSAvLyBFTkFC
TEUoTExJTlQpCi0gICAgICAgIHJldHVybiBDb21waWxhdGlvbkZhaWxlZDsKLSNlbmRpZiAvLyBF
TkFCTEUoTExJTlQpCi0gICAgfQotICAgIAotI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKEpJVENv
ZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKSkgewotICAgICAgICBBU1NFUlQoZWZmb3J0ID09
IEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7Ci0gICAgICAgIGJvb2wgaGFkQ2FsbGJhY2sgPSAhIWNh
bGxiYWNrOwotICAgICAgICBDb21waWxhdGlvblJlc3VsdCByZXN1bHQgPSBERkc6OnRyeUNvbXBp
bGUoZXhlYywgdGhpcywgYnl0ZWNvZGVJbmRleCwgY2FsbGJhY2spOwotICAgICAgICBBU1NFUlRf
VU5VU0VEKGhhZENhbGxiYWNrLCByZXN1bHQgIT0gQ29tcGlsYXRpb25EZWZlcnJlZCB8fCBoYWRD
YWxsYmFjayk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIAotICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciBqaXRDb2RlV2l0aEFyaXR5Q2hlY2s7Ci0gICAgUmVmUHRyPEpJVENv
ZGU+IGppdENvZGUgPSBKSVQ6OmNvbXBpbGUoJnZtLCB0aGlzLCBlZmZvcnQsICZqaXRDb2RlV2l0
aEFyaXR5Q2hlY2spOwotICAgIGlmICghaml0Q29kZSkKLSAgICAgICAgcmV0dXJuIENvbXBpbGF0
aW9uRmFpbGVkOwotICAgIHNldEpJVENvZGUoaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNr
KTsKLSAgICByZXR1cm4gQ29tcGlsYXRpb25TdWNjZXNzZnVsOwotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0oZWZmb3J0KTsKLSAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7Ci0gICAgVU5V
U0VEX1BBUkFNKGNhbGxiYWNrKTsKLSAgICByZXR1cm4gQ29tcGlsYXRpb25GYWlsZWQ7Ci0jZW5k
aWYgLy8gRU5BQkxFKEpJVCkKLX0KLQotQ29tcGlsYXRpb25SZXN1bHQgQ29kZUJsb2NrOjpwcmVw
YXJlRm9yRXhlY3V0aW9uKAotICAgIEV4ZWNTdGF0ZSogZXhlYywgSklUQ29kZTo6SklUVHlwZSBq
aXRUeXBlLAotICAgIEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCwgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCkKLXsKLSAgICBDb21waWxhdGlvblJlc3VsdCByZXN1bHQgPQotICAgICAgICBwcmVw
YXJlRm9yRXhlY3V0aW9uSW1wbChleGVjLCBqaXRUeXBlLCBlZmZvcnQsIGJ5dGVjb2RlSW5kZXgs
IDApOwotICAgIEFTU0VSVChyZXN1bHQgIT0gQ29tcGlsYXRpb25EZWZlcnJlZCk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotQ29tcGlsYXRpb25SZXN1bHQgQ29kZUJsb2NrOjpwcmVwYXJlRm9y
RXhlY3V0aW9uQXN5bmNocm9ub3VzbHkoCi0gICAgRXhlY1N0YXRlKiBleGVjLCBKSVRDb2RlOjpK
SVRUeXBlIGppdFR5cGUsCi0gICAgUGFzc1JlZlB0cjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJh
Y2s+IHBhc3NlZENhbGxiYWNrLAotICAgIEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCwgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleCkKLXsKLSAgICBSZWZQdHI8RGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrPiBjYWxsYmFjayA9IHBhc3NlZENhbGxiYWNrOwotICAgIENvbXBpbGF0aW9uUmVzdWx0
IHJlc3VsdCA9Ci0gICAgICAgIHByZXBhcmVGb3JFeGVjdXRpb25JbXBsKGV4ZWMsIGppdFR5cGUs
IGVmZm9ydCwgYnl0ZWNvZGVJbmRleCwgY2FsbGJhY2spOwotICAgIGlmIChyZXN1bHQgIT0gQ29t
cGlsYXRpb25EZWZlcnJlZCkKLSAgICAgICAgY2FsbGJhY2stPmNvbXBpbGF0aW9uRGlkQ29tcGxl
dGUodGhpcywgcmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiB2b2lkIENvZGVCbG9j
azo6aW5zdGFsbCgpCiB7CiAgICAgb3duZXJFeGVjdXRhYmxlKCktPmluc3RhbGxDb2RlKHRoaXMp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2
aXNpb24gMTU0ODI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUsMzIgKzI2NSw2IEBAIHB1YmxpYzoKIAogICAgIGlu
dCBhcmd1bWVudEluZGV4QWZ0ZXJDYXB0dXJlKHNpemVfdCBhcmd1bWVudCk7CiAKLSAgICAvLyBQ
cmVwYXJlcyB0aGlzIGNvZGUgYmxvY2sgZm9yIGV4ZWN1dGlvbi4gVGhpcyBpcyBzeW5jaHJvbm91
cy4gVGhpcyBjb21waWxlCi0gICAgLy8gbWF5IGZhaWwsIGlmIHlvdSBwYXNzZWQgSklUQ29tcGls
YXRpb25DYW5GYWlsLgotICAgIENvbXBpbGF0aW9uUmVzdWx0IHByZXBhcmVGb3JFeGVjdXRpb24o
Ci0gICAgICAgIEV4ZWNTdGF0ZSosIEpJVENvZGU6OkpJVFR5cGUsCi0gICAgICAgIEpJVENvbXBp
bGF0aW9uRWZmb3J0ID0gSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCwKLSAgICAgICAgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCA9IFVJTlRfTUFYKTsKLSAgICAKLSAgICAvLyBVc2UgdGhpcyBtZXRo
b2QgZm9yIGFzeW5jaHJvbm91cyBjb21waWxlcy4gVGhpcyB3aWxsIGRvIGEgY29tcGlsZSBhdCBz
b21lCi0gICAgLy8gcG9pbnQgaW4gdGltZSBiZXR3ZWVuIHdoZW4geW91IGNhbGxlZCBpbnRvIHRo
aXMgbWV0aG9kIGFuZCBzb21lIHBvaW50IGluIHRoZQotICAgIC8vIGZ1dHVyZS4gSWYgeW91J3Jl
IGx1Y2t5IHRoZW4gaXQgbWlnaHQgY29tcGxldGUgYmVmb3JlIHRoaXMgbWV0aG9kIHJldHVybnMu
Ci0gICAgLy8gT25jZSBpdCBjb21wbGV0ZXMsIHRoZSBjYWxsYmFjayBpcyBjYWxsZWQgd2l0aCB0
aGUgcmVzdWx0LiBJZiB0aGUgY29tcGlsZQotICAgIC8vIGRpZCBoYXBwZW4gdG8gY29tcGxldGUg
YmVmb3JlIHRoZSBtZXRob2QgcmV0dXJucywgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGlsZQotICAg
IC8vIG1heSBiZSByZXR1cm5lZC4gSWYgdGhlIGNvbXBpbGUgZGlkbid0IGhhcHBlbiB0byBjb21w
bGV0ZSB5ZXQsIG9yIGlmIHdlCi0gICAgLy8gZGlkbid0IGhhcHBlbiB0byBub3RpY2UgdGhhdCB0
aGUgY29tcGlsZSBhbHJlYWR5IGNvbXBsZXRlZCwgd2UgcmV0dXJuCi0gICAgLy8gQ29tcGlsYXRp
b25EZWZlcnJlZC4KLSAgICAvLwotICAgIC8vIE5vdGUgdGhhdCBhc3luY2hyb25vdXMgY29tcGls
ZXMgZG9uJ3QgYWN0dWFsbHkgY29tcGxldGUgdW5sZXNzIHlvdSBjYWxsIGludG8KLSAgICAvLyBE
Rkc6OldvcmtsaXN0Ojpjb21wbGV0ZUFsbFJlYWR5UGxhbnNGb3JWTSgpLiBZb3UgdXN1YWxseSBm
b3JjZSBhIGNhbGwgdG8KLSAgICAvLyB0aGlzIG9uIHRoZSBtYWluIHRocmVhZCBieSBsaXN0ZW5p
bmcgdG8gdGhlIGNhbGxiYWNrJ3MKLSAgICAvLyBjb21waWxhdGlvbkRpZEJlY29tZVJlYWR5QXN5
bmNocm9ub3VzbHkoKSBub3RpZmljYXRpb24uIE5vdGUgdGhhdCB0aGlzIGNhbGwKLSAgICAvLyBo
YXBwZW5zIG9uIGFub3RoZXIgdGhyZWFkLgotICAgIENvbXBpbGF0aW9uUmVzdWx0IHByZXBhcmVG
b3JFeGVjdXRpb25Bc3luY2hyb25vdXNseSgKLSAgICAgICAgRXhlY1N0YXRlKiwgSklUQ29kZTo6
SklUVHlwZSwgUGFzc1JlZlB0cjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+LAotICAgICAg
ICBKSVRDb21waWxhdGlvbkVmZm9ydCA9IEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQsCi0gICAg
ICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSBVSU5UX01BWCk7Ci0gICAgCiAgICAgLy8gRXhh
Y3RseSBlcXVpdmFsZW50IHRvIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmluc3RhbGxD
b2RlKGNvZGVCbG9jayk7CiAgICAgdm9pZCBpbnN0YWxsKCk7CiAgICAgCkBAIC0xMDA0LDEwICs5
NzgsNiBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBERkdDb2RlQmxv
Y2tzOwogICAgIAotICAgIENvbXBpbGF0aW9uUmVzdWx0IHByZXBhcmVGb3JFeGVjdXRpb25JbXBs
KAotICAgICAgICBFeGVjU3RhdGUqLCBKSVRDb2RlOjpKSVRUeXBlLCBKSVRDb21waWxhdGlvbkVm
Zm9ydCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwKLSAgICAgICAgUGFzc1JlZlB0cjxEZWZlcnJl
ZENvbXBpbGF0aW9uQ2FsbGJhY2s+KTsKLSAgICAKICAgICB2b2lkIG5vdGljZUluY29taW5nQ2Fs
bChFeGVjU3RhdGUqIGNhbGxlckZyYW1lKTsKICAgICAKICAgICBkb3VibGUgb3B0aW1pemF0aW9u
VGhyZXNob2xkU2NhbGluZ0ZhY3RvcigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEcml2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRHJpdmVyLmNwcAkocmV2aXNpb24gMTU0ODI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEcml2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw2IEBACiAjaW5j
bHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogCi0jaWYgRU5BQkxFKERG
R19KSVQpCi0KICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdKSVRDb2RlLmgi
CiAjaW5jbHVkZSAiREZHUGxhbi5oIgpAQCAtNTUsNyArNTMsOCBAQCB1bnNpZ25lZCBnZXROdW1D
b21waWxhdGlvbnMoKQogICAgIHJldHVybiBudW1Db21waWxhdGlvbnM7CiB9CiAKLUNvbXBpbGF0
aW9uUmVzdWx0IHRyeUNvbXBpbGUoRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgdW5zaWduZWQgb3NyRW50cnlCeXRlY29kZUluZGV4LCBQYXNzUmVmUHRyPERlZmVycmVkQ29t
cGlsYXRpb25DYWxsYmFjaz4gY2FsbGJhY2spCisjaWYgRU5BQkxFKERGR19KSVQpCitzdGF0aWMg
Q29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgdW5zaWduZWQgb3NyRW50cnlCeXRlY29kZUluZGV4LCBQYXNzUmVmUHRyPERl
ZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4gY2FsbGJhY2ssIFdvcmtsaXN0KiB3b3JrbGlzdCkK
IHsKICAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIENvbXBpbGF0aW9uIChE
cml2ZXIpIik7CiAgICAgCkBAIC0xMTUsMjEgKzExNCwzMSBAQCBDb21waWxhdGlvblJlc3VsdCB0
cnlDb21waWxlKEV4ZWNTdGF0ZSogCiAgICAgICAgICAgICBwbGFuLT5tdXN0SGFuZGxlVmFsdWVz
W2ldID0gZXhlYy0+dW5jaGVja2VkUihvcGVyYW5kKS5qc1ZhbHVlKCk7CiAgICAgfQogICAgIAot
ICAgIGlmIChlbmFibGVDb25jdXJyZW50SklUKCkgJiYgY2FsbGJhY2spIHsKKyAgICBpZiAod29y
a2xpc3QpIHsKICAgICAgICAgcGxhbi0+Y2FsbGJhY2sgPSBjYWxsYmFjazsKLSAgICAgICAgaWYg
KCF2bS53b3JrbGlzdCkKLSAgICAgICAgICAgIHZtLndvcmtsaXN0ID0gZ2xvYmFsV29ya2xpc3Qo
KTsKICAgICAgICAgaWYgKGxvZ0NvbXBpbGF0aW9uQ2hhbmdlcygpKQotICAgICAgICAgICAgZGF0
YUxvZygiRGVmZXJyaW5nIERGRyBjb21waWxhdGlvbiBvZiAiLCAqY29kZUJsb2NrLCAiIHdpdGgg
cXVldWUgbGVuZ3RoICIsIHZtLndvcmtsaXN0LT5xdWV1ZUxlbmd0aCgpLCAiLlxuIik7Ci0gICAg
ICAgIHZtLndvcmtsaXN0LT5lbnF1ZXVlKHBsYW4pOworICAgICAgICAgICAgZGF0YUxvZygiRGVm
ZXJyaW5nIERGRyBjb21waWxhdGlvbiBvZiAiLCAqY29kZUJsb2NrLCAiIHdpdGggcXVldWUgbGVu
Z3RoICIsIHdvcmtsaXN0LT5xdWV1ZUxlbmd0aCgpLCAiLlxuIik7CisgICAgICAgIHdvcmtsaXN0
LT5lbnF1ZXVlKHBsYW4pOwogICAgICAgICByZXR1cm4gQ29tcGlsYXRpb25EZWZlcnJlZDsKICAg
ICB9CiAgICAgCiAgICAgcGxhbi0+Y29tcGlsZUluVGhyZWFkKCp2bS5kZmdTdGF0ZSk7CiAgICAg
cmV0dXJuIHBsYW4tPmZpbmFsaXplV2l0aG91dE5vdGlmeWluZ0NhbGxiYWNrKCk7CiB9Ci0KLX0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQorI2Vsc2UgLy8gRU5BQkxFKERGR19KSVQpCitzdGF0
aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoRXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwg
dW5zaWduZWQsIFBhc3NSZWZQdHI8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPiwgV29ya2xp
c3QqKQoreworICAgIHJldHVybiBDb21waWxhdGlvbkZhaWxlZDsKK30KICNlbmRpZiAvLyBFTkFC
TEUoREZHX0pJVCkKIAorQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZShFeGVjU3RhdGUqIGV4ZWMs
IENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXgsIFBh
c3NSZWZQdHI8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPiBwYXNzZWRDYWxsYmFjaywgV29y
a2xpc3QqIHdvcmtsaXN0KQoreworICAgIFJlZlB0cjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJh
Y2s+IGNhbGxiYWNrID0gcGFzc2VkQ2FsbGJhY2s7CisgICAgQ29tcGlsYXRpb25SZXN1bHQgcmVz
dWx0ID0gY29tcGlsZUltcGwoZXhlYywgY29kZUJsb2NrLCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXgs
IGNhbGxiYWNrLCB3b3JrbGlzdCk7CisgICAgaWYgKHJlc3VsdCAhPSBDb21waWxhdGlvbkRlZmVy
cmVkKQorICAgICAgICBjYWxsYmFjay0+Y29tcGlsYXRpb25EaWRDb21wbGV0ZShjb2RlQmxvY2ss
IHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5oCShyZXZpc2lvbiAx
NTQ4MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCwxOSArMzQsMjUgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENvZGVC
bG9jazsKIGNsYXNzIEpJVENvZGU7Ci1jbGFzcyBWTTsKIGNsYXNzIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjsKK2NsYXNzIFZNOwogCiBuYW1lc3BhY2UgREZHIHsKIAorY2xhc3MgV29ya2xpc3Q7CisK
IEpTX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGdldE51bUNvbXBpbGF0aW9ucygpOwogCiAjaWYg
RU5BQkxFKERGR19KSVQpCi1Db21waWxhdGlvblJlc3VsdCB0cnlDb21waWxlKEV4ZWNTdGF0ZSos
IENvZGVCbG9jayosIHVuc2lnbmVkIG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgUGFzc1JlZlB0cjxE
ZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+KTsKK0NvbXBpbGF0aW9uUmVzdWx0IHRyeUNvbXBp
bGUoRXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQgb3NyRW50cnlCeXRlY29kZUluZGV4
LCBQYXNzUmVmUHRyPERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4sIFdvcmtsaXN0Kik7CiAj
ZWxzZQotaW5saW5lIENvbXBpbGF0aW9uUmVzdWx0IHRyeUNvbXBpbGUoRXhlY1N0YXRlKiwgQ29k
ZUJsb2NrKiwgdW5zaWduZWQsIFBhc3NSZWZQdHI8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
PikgeyByZXR1cm4gQ29tcGlsYXRpb25GYWlsZWQ7IH0KK2lubGluZSBDb21waWxhdGlvblJlc3Vs
dCB0cnlDb21waWxlKEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkLCBQYXNzUmVmUHRy
PERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4sIFdvcmtsaXN0KikgeyByZXR1cm4gQ29tcGls
YXRpb25GYWlsZWQ7IH0KICNlbmRpZgogCisvLyBJZiB0aGUgd29ya2xpc3QgaXMgbm9uLW51bGws
IHdlIGRvIGEgY29uY3VycmVudCBjb21waWxlLiBPdGhlcndpc2Ugd2UgZG8gYSBzeW5jaHJvbm91
cworLy8gY29tcGlsZS4gRXZlbiBpZiB3ZSBkbyBhIHN5bmNocm9ub3VzIGNvbXBpbGUsIHdlIGNh
bGwgdGhlIGNhbGxiYWNrIHdpdGggdGhlIHJlc3VsdC4KK0NvbXBpbGF0aW9uUmVzdWx0IGNvbXBp
bGUoRXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQgb3NyRW50cnlCeXRlY29kZUluZGV4
LCBQYXNzUmVmUHRyPERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4sIFdvcmtsaXN0Kik7CisK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRQcmVwYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0UHJlcGFyYXRpb24uY3BwCShyZXZpc2lv
biAxNTQ4MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRQcmVwYXJh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKSVQuaCIKICNp
bmNsdWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCkBAIC0zNyw3ICsz
OCw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogdm9pZCBwcmVwYXJlQ29k
ZU9yaWdpbkZvck9TUkV4aXQoRXhlY1N0YXRlKiBleGVjLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4p
CiB7Ci0gICAgRGVmZXJHQyBkZWZlckdDKGV4ZWMtPnZtKCkuaGVhcCk7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgCiAgICAgZm9y
ICg7IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lOyBjb2RlT3JpZ2luID0gY29kZU9yaWdpbi5p
bmxpbmVDYWxsRnJhbWUtPmNhbGxlcikgewogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPQpAQCAtNDgsOSArNTAsNyBAQCB2b2lkIHByZXBhcmVDb2RlT3JpZ2luRm9yT1NS
RXhpdChFeGVjU3RhCiAgICAgICAgIGlmIChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKU0M6OkpJ
VENvZGU6OkJhc2VsaW5lSklUKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIEFTU0VS
VChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKU0M6OkpJVENvZGU6OkludGVycHJldGVyVGh1bmsp
OwotICAgICAgICBDb21waWxhdGlvblJlc3VsdCByZXN1bHQgPSBjb2RlQmxvY2stPnByZXBhcmVG
b3JFeGVjdXRpb24oCi0gICAgICAgICAgICBleGVjLCBKU0M6OkpJVENvZGU6OkJhc2VsaW5lSklU
LCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdCA9PSBDb21waWxhdGlvblN1Y2Nlc3NmdWwpOworICAgICAgICBKSVQ6OmNvbXBp
bGUoJnZtLCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpOwogICAgICAgICBj
b2RlQmxvY2stPmluc3RhbGwoKTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1dvcmtsaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1dvcmtsaXN0LmNwcAkocmV2aXNpb24gMTU0ODI0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw2ICsy
NzcsOCBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplR2xvYmFsV29ya2xpc3RPbmNlCiAKIFdvcmts
aXN0KiBnbG9iYWxXb3JrbGlzdCgpCiB7CisgICAgaWYgKCFlbmFibGVDb25jdXJyZW50SklUKCkp
CisgICAgICAgIHJldHVybiAwOwogICAgIHB0aHJlYWRfb25jZSgmaW5pdGlhbGl6ZUdsb2JhbFdv
cmtsaXN0S2V5T25jZSwgaW5pdGlhbGl6ZUdsb2JhbFdvcmtsaXN0T25jZSk7CiAgICAgcmV0dXJu
IHRoZUdsb2JhbFdvcmtsaXN0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdXb3JrbGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
V29ya2xpc3QuaAkocmV2aXNpb24gMTU0ODI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdXb3JrbGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw4ICs5NywxMCBAQCBwcml2YXRl
OgogCiAvLyBGb3Igbm93IHdlIHVzZSBhIHNpbmdsZSBnbG9iYWwgd29ya2xpc3QuIEl0J3Mgbm90
IGNsZWFyIHRoYXQgdGhpcwogLy8gaXMgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLCBidXQgaXQgaXMg
d2hhdCB3ZSBkbywgZm9yIG5vdy4gVGhpcyBmdW5jdGlvbgotLy8gd2lsbCBsYXppbHkgY3JlYXRl
IG9uZSB3aGVuIGl0J3MgbmVlZGVkLiBDdXJyZW50bHkgdGhpcyBpcyBvbmx5IGNhbGxlZAotLy8g
ZnJvbSBERkdEcml2ZXIuY3BwLCB3aGVuIGl0IGFjdHVhbGx5IHdhbnRzIHRvIGVucXVldWUgc29t
ZXRoaW5nLgorLy8gd2lsbCBsYXppbHkgY3JlYXRlIG9uZSB3aGVuIGl0J3MgbmVlZGVkLgorLy8K
Ky8vIFRoaXMgcmV0dXJucyBudWxsIGlmIGZvciBhbnkgcmVhc29uIHdlIHNob3VsZG4ndCBiZSBk
b2luZyBjb25jdXJyZW50CisvLyBjb21waWxhdGlvbi4KIFdvcmtsaXN0KiBnbG9iYWxXb3JrbGlz
dCgpOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCShyZXZpc2lvbiAxNTQ4MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyMCw3ICs1MjAsNyBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQgUHJvcGVydHlTdHViQ29tcGlsYXRpCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEpJVENv
ZGU+IEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2ss
IEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKK0NvbXBpbGF0aW9uUmVzdWx0IEpJVDo6cHJp
dmF0ZUNvbXBpbGUoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogewogI2lmIEVOQUJMRShW
QUxVRV9QUk9GSUxFUikKICAgICBERkc6OkNhcGFiaWxpdHlMZXZlbCBsZXZlbCA9IG1fY29kZUJs
b2NrLT5jYXBhYmlsaXR5TGV2ZWwoKTsKQEAgLTY2OCw3ICs2NjgsNyBAQCBQYXNzUmVmUHRyPEpJ
VENvZGU+IEpJVDo6cHJpdmF0ZUNvbXBpbGUoCiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVy
KCptX3ZtLCB0aGlzLCBtX2NvZGVCbG9jaywgZWZmb3J0KTsKICAgICBpZiAocGF0Y2hCdWZmZXIu
ZGlkRmFpbFRvQWxsb2NhdGUoKSkKLSAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8SklUQ29kZT4o
KTsKKyAgICAgICAgcmV0dXJuIENvbXBpbGF0aW9uRmFpbGVkOwogCiAgICAgLy8gVHJhbnNsYXRl
IHZQQyBvZmZzZXRzIGludG8gYWRkcmVzc2VzIGluIEpJVCBnZW5lcmF0ZWQgY29kZSwgZm9yIHN3
aXRjaCB0YWJsZXMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc3dpdGNoZXMuc2l6
ZSgpOyArK2kpIHsKQEAgLTc1NSw4ICs3NTUsOSBAQCBQYXNzUmVmUHRyPEpJVENvZGU+IEpJVDo6
cHJpdmF0ZUNvbXBpbGUoCiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAobV9jb2RlQmxvY2stPmNv
ZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlICYmIGZ1bmN0aW9uRW50cnlBcml0eUNoZWNrKQotICAg
ICAgICAqZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2sgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKGFy
aXR5Q2hlY2spOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3aXRoQXJpdHlDaGVjazsKKyAg
ICBpZiAobV9jb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKQorICAgICAgICB3
aXRoQXJpdHlDaGVjayA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YoYXJpdHlDaGVjayk7CiAKICAg
ICBpZiAoT3B0aW9uczo6c2hvd0Rpc2Fzc2VtYmx5KCkpCiAgICAgICAgIG1fZGlzYXNzZW1ibGVy
LT5kdW1wKHBhdGNoQnVmZmVyKTsKQEAgLTc3MiwxMiArNzczLDE1IEBAIFBhc3NSZWZQdHI8SklU
Q29kZT4gSklUOjpwcml2YXRlQ29tcGlsZSgKICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPiht
X2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiAgICAgCiAgICAgbV9jb2RlQmxv
Y2stPnNocmlua1RvRml0KENvZGVCbG9jazo6TGF0ZVNocmluayk7CisgICAgbV9jb2RlQmxvY2st
PnNldEpJVENvZGUoCisgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHJlc3VsdCwg
SklUQ29kZTo6QmFzZWxpbmVKSVQpKSwKKyAgICAgICAgd2l0aEFyaXR5Q2hlY2spOwogICAgIAog
I2lmIEVOQUJMRShKSVRfVkVSQk9TRSkKICAgICBkYXRhTG9nRigiSklUIGdlbmVyYXRlZCBjb2Rl
IGZvciAlcCBhdCBbJXAsICVwKS5cbiIsIG1fY29kZUJsb2NrLCByZXN1bHQuZXhlY3V0YWJsZU1l
bW9yeSgpLT5zdGFydCgpLCByZXN1bHQuZXhlY3V0YWJsZU1lbW9yeSgpLT5lbmQoKSk7CiAjZW5k
aWYKICAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUocmVzdWx0LCBK
SVRDb2RlOjpCYXNlbGluZUpJVCkpOworICAgIHJldHVybiBDb21waWxhdGlvblN1Y2Nlc3NmdWw7
CiB9CiAKIHZvaWQgSklUOjpsaW5rRm9yKEV4ZWNTdGF0ZSogZXhlYywgSlNGdW5jdGlvbiogY2Fs
bGVlLCBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jaywgQ29kZUJsb2NrKiBjYWxsZWVDb2RlQmxv
Y2ssIEpJVDo6Q29kZVB0ciBjb2RlLCBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbywgVk0qIHZt
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgJKHJldmlzaW9uIDE1NDgyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5OCw5ICsyOTgsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIGNvbnN0IGludCBwYXRjaFB1dEJ5SWREZWZhdWx0T2Zmc2V0ID0gMjU2OwogCiAg
ICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKSVRDb2RlPiBjb21waWxlKFZN
KiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCwg
Q29kZVB0ciogZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2sgPSAwKQorICAgICAgICBzdGF0aWMgQ29t
cGlsYXRpb25SZXN1bHQgY29tcGlsZShWTSogdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRD
b21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBK
SVQodm0sIGNvZGVCbG9jaykucHJpdmF0ZUNvbXBpbGUoZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2ss
IGVmZm9ydCk7CisgICAgICAgICAgICByZXR1cm4gSklUKHZtLCBjb2RlQmxvY2spLnByaXZhdGVD
b21waWxlKGVmZm9ydCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHN0YXRpYyB2b2lk
IGNvbXBpbGVDbG9zdXJlQ2FsbChWTSogdm0sIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvLCBD
b2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jaywgQ29kZUJsb2NrKiBjYWxsZWVDb2RlQmxvY2ssIFN0
cnVjdHVyZSogZXhwZWN0ZWRTdHJ1Y3R1cmUsIEV4ZWN1dGFibGVCYXNlKiBleHBlY3RlZEV4ZWN1
dGFibGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyKQpAQCAtNDAzLDcgKzQwMyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlTWFpblBhc3MoKTsK
ICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUxpbmtQYXNzKCk7CiAgICAgICAgIHZvaWQgcHJp
dmF0ZUNvbXBpbGVTbG93Q2FzZXMoKTsKLSAgICAgICAgUGFzc1JlZlB0cjxKSVRDb2RlPiBwcml2
YXRlQ29tcGlsZShDb2RlUHRyKiBmdW5jdGlvbkVudHJ5QXJpdHlDaGVjaywgSklUQ29tcGlsYXRp
b25FZmZvcnQpOworICAgICAgICBDb21waWxhdGlvblJlc3VsdCBwcml2YXRlQ29tcGlsZShKSVRD
b21waWxhdGlvbkVmZm9ydCk7CiAgICAgICAgIAogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxl
Q2xvc3VyZUNhbGwoQ2FsbExpbmtJbmZvKiwgQ29kZUJsb2NrKiBjYWxsZWVDb2RlQmxvY2ssIFN0
cnVjdHVyZSosIEV4ZWN1dGFibGVCYXNlKiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKTsKICAgICAg
ICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24g
MTU0ODI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNs
dWRlICJDb2RlUHJvZmlsaW5nLmgiCiAjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgiCisjaW5j
bHVkZSAiREZHRHJpdmVyLmgiCiAjaW5jbHVkZSAiREZHT1NSRW50cnkuaCIKICNpbmNsdWRlICJE
RkdXb3JrbGlzdC5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCkBAIC05MDYsNiArOTA3LDcgQEAg
REVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemUpCiAgICAgCiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52
bSgpOwogICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSBzdGFja0ZyYW1lLmFyZ3NbMF0uaW50
MzIoKTsKIAogICAgIGlmIChieXRlY29kZUluZGV4KSB7CkBAIC05NDUsMTIgKzk0NywxMiBAQCBE
RUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZSkKICAgICAvLyBXZSBjYW5ub3QgYmUg
aW4gdGhlIHByb2Nlc3Mgb2YgYXN5bmNocm9ub3VzIGNvbXBpbGF0aW9uIGFuZCBhbHNvIGhhdmUg
YW4gb3B0aW1pemVkCiAgICAgLy8gcmVwbGFjZW1lbnQuCiAgICAgQVNTRVJUKAotICAgICAgICAh
c3RhY2tGcmFtZS52bS0+d29ya2xpc3QKLSAgICAgICAgfHwgIShzdGFja0ZyYW1lLnZtLT53b3Jr
bGlzdC0+Y29tcGlsYXRpb25TdGF0ZShjb2RlQmxvY2spICE9IERGRzo6V29ya2xpc3Q6Ok5vdEtu
b3duCisgICAgICAgICF2bS53b3JrbGlzdAorICAgICAgICB8fCAhKHZtLndvcmtsaXN0LT5jb21w
aWxhdGlvblN0YXRlKGNvZGVCbG9jaykgIT0gREZHOjpXb3JrbGlzdDo6Tm90S25vd24KICAgICAg
ICAgICAgICAmJiBjb2RlQmxvY2stPmhhc09wdGltaXplZFJlcGxhY2VtZW50KCkpKTsKICAgICAK
ICAgICBERkc6OldvcmtsaXN0OjpTdGF0ZSB3b3JrbGlzdFN0YXRlOwotICAgIGlmIChzdGFja0Zy
YW1lLnZtLT53b3JrbGlzdCkgeworICAgIGlmICh2bS53b3JrbGlzdCkgewogICAgICAgICAvLyBU
aGUgY2FsbCB0byBERkc6OldvcmtsaXN0Ojpjb21wbGV0ZUFsbFJlYWR5UGxhbnNGb3JWTSgpIHdp
bGwgY29tcGxldGUgYWxsIHJlYWR5CiAgICAgICAgIC8vIChpLmUuIGNvbXBpbGVkKSBjb2RlIGJs
b2Nrcy4gQnV0IGlmIGl0IGNvbXBsZXRlcyBvdXJzLCB3ZSBhbHNvIG5lZWQgdG8ga25vdwogICAg
ICAgICAvLyB3aGF0IHRoZSByZXN1bHQgd2FzIHNvIHRoYXQgd2UgZG9uJ3QgcGxvdyBhaGVhZCBh
bmQgYXR0ZW1wdCBPU1Igb3IgaW1tZWRpYXRlCkBAIC05NzEsNyArOTczLDcgQEAgREVGSU5FX1NU
VUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemUpCiAgICAgICAgIC8vIG9wdGltaXplZCBjb2RlIGlz
IGFscmVhZHkgYXZhaWxhYmxlLgogICAgICAgICAKICAgICAgICAgd29ya2xpc3RTdGF0ZSA9Ci0g
ICAgICAgICAgICBzdGFja0ZyYW1lLnZtLT53b3JrbGlzdC0+Y29tcGxldGVBbGxSZWFkeVBsYW5z
Rm9yVk0oKnN0YWNrRnJhbWUudm0sIGNvZGVCbG9jayk7CisgICAgICAgICAgICB2bS53b3JrbGlz
dC0+Y29tcGxldGVBbGxSZWFkeVBsYW5zRm9yVk0odm0sIGNvZGVCbG9jayk7CiAgICAgfSBlbHNl
CiAgICAgICAgIHdvcmtsaXN0U3RhdGUgPSBERkc6OldvcmtsaXN0OjpOb3RLbm93bjsKICAgICAK
QEAgLTEwMzYsOCArMTAzOCwxMiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6
ZSkKICAgICAgICAgUmVmUHRyPERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4gY2FsbGJhY2sg
PQogICAgICAgICAgICAgSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmNyZWF0
ZSgpOwogICAgICAgICBSZWZQdHI8Q29kZUJsb2NrPiBuZXdDb2RlQmxvY2sgPSBjb2RlQmxvY2st
Pm5ld1JlcGxhY2VtZW50KCk7Ci0gICAgICAgIENvbXBpbGF0aW9uUmVzdWx0IHJlc3VsdCA9IG5l
d0NvZGVCbG9jay0+cHJlcGFyZUZvckV4ZWN1dGlvbkFzeW5jaHJvbm91c2x5KAotICAgICAgICAg
ICAgY2FsbEZyYW1lLCBKSVRDb2RlOjpERkdKSVQsIGNhbGxiYWNrLCBKSVRDb21waWxhdGlvbkNh
bkZhaWwsIGJ5dGVjb2RlSW5kZXgpOworICAgICAgICAKKyAgICAgICAgaWYgKCF2bS53b3JrbGlz
dCkKKyAgICAgICAgICAgIHZtLndvcmtsaXN0ID0gREZHOjpnbG9iYWxXb3JrbGlzdCgpOworICAg
ICAgICAKKyAgICAgICAgQ29tcGlsYXRpb25SZXN1bHQgcmVzdWx0ID0gREZHOjpjb21waWxlKAor
ICAgICAgICAgICAgY2FsbEZyYW1lLCBuZXdDb2RlQmxvY2suZ2V0KCksIGJ5dGVjb2RlSW5kZXgs
IGNhbGxiYWNrLCB2bS53b3JrbGlzdC5nZXQoKSk7CiAgICAgICAgIAogICAgICAgICBpZiAocmVz
dWx0ICE9IENvbXBpbGF0aW9uU3VjY2Vzc2Z1bCkKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCShy
ZXZpc2lvbiAxNTQ4MDQpCShmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVu
dHJ5cG9pbnRzLmNwcDoxNTQ4MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRFbnRyeXBvaW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgorCisjaWYgRU5BQkxFKExM
SU5UKQorCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSklUQ29kZS5oIgorI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKKyNpbmNsdWRlICJM
b3dMZXZlbEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiVk0uaCIKKworCituYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBzZXRGdW5jdGlvbkVudHJ5cG9pbnQoVk0mIHZt
LCBGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrKQoreworICAgIENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCA9IGNvZGVCbG9jay0+c3BlY2lhbGl6YXRpb25LaW5kKCk7CisgICAgCisgICAg
aWYgKCF2bS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkg
eworICAgICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAorICAgICAgICAgICAgICAgIGFk
b3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJ
bnRDb2RlUmVmKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSwgSklUQ29kZTo6SW50
ZXJwcmV0ZXJUaHVuaykpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6
Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQoa2luZCA9
PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAorICAg
ICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
OjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1
ZSksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfYXJpdHlfY2hlY2spKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyNpZiBFTkFC
TEUoSklUKQorICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgIGNvZGVCbG9j
ay0+c2V0SklUQ29kZSgKKyAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZt
LmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6
OkludGVycHJldGVyVGh1bmspKSwKKyAgICAgICAgICAgIHZtLmdldENUSVN0dWIoZnVuY3Rpb25G
b3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgY29k
ZUJsb2NrLT5zZXRKSVRDb2RlKAorICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSh2
bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvciksIEpJ
VENvZGU6OkludGVycHJldGVyVGh1bmspKSwKKyAgICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlv
bkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpKTsKKyNlbmRpZiAv
LyBFTkFCTEUoSklUKQorfQorCit2b2lkIHNldEV2YWxFbnRyeXBvaW50KFZNJiB2bSwgRXZhbENv
ZGVCbG9jayogY29kZUJsb2NrKQoreworICAgIGlmICghdm0uY2FuVXNlSklUKCkpIHsKKyAgICAg
ICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAorICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVj
dEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRf
ZXZhbF9wcm9sb2d1ZSksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSwKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNpZiBF
TkFCTEUoSklUKQorICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKKyAgICAgICAgYWRvcHRSZWYo
bmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1YihldmFsRW50cnlUaHVua0dlbmVyYXRvciks
IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyKCkpOworI2VuZGlmCit9CisKK3ZvaWQgc2V0UHJvZ3JhbUVudHJ5cG9pbnQoVk0mIHZtLCBQ
cm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgaWYgKCF2bS5jYW5Vc2VKSVQoKSkg
eworICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCisgICAgICAgICAgICBhZG9wdFJlZihu
ZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJl
ZihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpLAor
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2lmIEVOQUJMRShKSVQpCisgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAorICAgICAg
ICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSh2bS5nZXRDVElTdHViKHByb2dyYW1FbnRyeVRo
dW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpLAorICAgICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIoKSk7CisjZW5kaWYKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAkod29ya2luZyBjb3B5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludC5oIgog
CiAjaWYgRU5BQkxFKExMSU5UKQogCkBAIC0zOCw3ICszOCw3IEBACiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgTExJbnQgewogCi12b2lkIHNldEZ1bmN0aW9uRW50cnlwb2ludChWTSYgdm0s
IEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2spCitzdGF0aWMgdm9pZCBzZXRGdW5jdGlvbkVu
dHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQgPSBjb2RlQmxvY2stPnNwZWNpYWxpemF0aW9uS2luZCgpOwogICAg
IApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIHNldEZ1bmN0aW9uRW50cnlwb2ludChWTSYgdm0sIEZ1
bmN0CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIH0KIAotdm9pZCBzZXRFdmFsRW50cnlwb2ludChW
TSYgdm0sIEV2YWxDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3N0YXRpYyB2b2lkIHNldEV2YWxFbnRy
eXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgaWYgKCF2bS5jYW5V
c2VKSVQoKSkgewogICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCkBAIC04Nyw3ICs4Nyw3
IEBAIHZvaWQgc2V0RXZhbEVudHJ5cG9pbnQoVk0mIHZtLCBFdmFsQ29kZUIKICNlbmRpZgogfQog
Ci12b2lkIHNldFByb2dyYW1FbnRyeXBvaW50KFZNJiB2bSwgUHJvZ3JhbUNvZGVCbG9jayogY29k
ZUJsb2NrKQorc3RhdGljIHZvaWQgc2V0UHJvZ3JhbUVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKIHsKICAgICBpZiAoIXZtLmNhblVzZUpJVCgpKSB7CiAgICAgICAgIGNv
ZGVCbG9jay0+c2V0SklUQ29kZSgKQEAgLTEwMiw2ICsxMDIsMjMgQEAgdm9pZCBzZXRQcm9ncmFt
RW50cnlwb2ludChWTSYgdm0sIFByb2dyYQogI2VuZGlmCiB9CiAKK3ZvaWQgc2V0RW50cnlwb2lu
dChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQoreworICAgIHN3aXRjaCAoY29kZUJsb2Nr
LT5jb2RlVHlwZSgpKSB7CisgICAgY2FzZSBHbG9iYWxDb2RlOgorICAgICAgICBzZXRQcm9ncmFt
RW50cnlwb2ludCh2bSwgY29kZUJsb2NrKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRXZh
bENvZGU6CisgICAgICAgIHNldEV2YWxFbnRyeXBvaW50KHZtLCBjb2RlQmxvY2spOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBGdW5jdGlvbkNvZGU6CisgICAgICAgIHNldEZ1bmN0aW9uRW50
cnlwb2ludCh2bSwgY29kZUJsb2NrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6TExJbnQKIAogI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmgJKHJldmlzaW9uIDE1NDgwNCkJKGZy
b20gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaDoxNTQ4MDQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RW50cnlwb2ludHNfaAorI2RlZmlu
ZSBMTEludEVudHJ5cG9pbnRzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYg
RU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgorI2lu
Y2x1ZGUgIkpJVENvZGUuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBFdmFsQ29kZUJsb2NrOworY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2s7Citj
bGFzcyBWTTsKK2NsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjsKK2NsYXNzIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjsKK2NsYXNzIFByb2dyYW1Db2RlQmxvY2s7CisKK25hbWVzcGFjZSBMTEludCB7
CisKK3ZvaWQgc2V0RnVuY3Rpb25FbnRyeXBvaW50KFZNJiwgRnVuY3Rpb25Db2RlQmxvY2sqKTsK
K3ZvaWQgc2V0RXZhbEVudHJ5cG9pbnQoVk0mLCBFdmFsQ29kZUJsb2NrKik7Cit2b2lkIHNldFBy
b2dyYW1FbnRyeXBvaW50KFZNJiwgUHJvZ3JhbUNvZGVCbG9jayopOworCit9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExM
SW50RW50cnlwb2ludHNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RW50cnlwb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludEVudHJ5cG9pbnQuaAkod29ya2luZyBjb3B5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RW50cnlwb2ludC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywzNCArMjMsMjYg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgTExJbnRFbnRyeXBvaW50c19oCi0j
ZGVmaW5lIExMSW50RW50cnlwb2ludHNfaAorI2lmbmRlZiBMTEludEVudHJ5cG9pbnRfaAorI2Rl
ZmluZSBMTEludEVudHJ5cG9pbnRfaAogCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKICNp
ZiBFTkFCTEUoTExJTlQpCiAKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCi0j
aW5jbHVkZSAiSklUQ29kZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CiAKLWNsYXNzIEV2YWxDb2RlQmxvY2s7Ci1jbGFzcyBGdW5jdGlvbkNvZGVCbG9jazsK
K2NsYXNzIENvZGVCbG9jazsKIGNsYXNzIFZNOwotY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
OwotY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOwotY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsK
IAogbmFtZXNwYWNlIExMSW50IHsKIAotdm9pZCBzZXRGdW5jdGlvbkVudHJ5cG9pbnQoVk0mLCBG
dW5jdGlvbkNvZGVCbG9jayopOwotdm9pZCBzZXRFdmFsRW50cnlwb2ludChWTSYsIEV2YWxDb2Rl
QmxvY2sqKTsKLXZvaWQgc2V0UHJvZ3JhbUVudHJ5cG9pbnQoVk0mLCBQcm9ncmFtQ29kZUJsb2Nr
Kik7Cit2b2lkIHNldEVudHJ5cG9pbnQoVk0mLCBDb2RlQmxvY2sqKTsKIAogfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkxMSW50CiAKICNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCiAKLSNlbmRpZiAvLyBM
TEludEVudHJ5cG9pbnRzX2gKKyNlbmRpZiAvLyBMTEludEVudHJ5cG9pbnRfaApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2
aXNpb24gMTU0ODI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlw
b2ludHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwNyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJMTEludEVudHJ5cG9pbnRzLmgiCi0KLSNpZiBFTkFCTEUoTExJTlQpCi0K
LSNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJKSVRDb2RlLmgiCi0jaW5jbHVkZSAi
SlNPYmplY3QuaCIKLSNpbmNsdWRlICJMTEludFRodW5rcy5oIgotI2luY2x1ZGUgIkxvd0xldmVs
SW50ZXJwcmV0ZXIuaCIKLSNpbmNsdWRlICJWTS5oIgotCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgTExJbnQgewotCi12b2lkIHNldEZ1bmN0aW9uRW50cnlwb2ludChWTSYgdm0sIEZ1bmN0
aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2spCi17Ci0gICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kID0gY29kZUJsb2NrLT5zcGVjaWFsaXphdGlvbktpbmQoKTsKLSAgICAKLSAgICBpZiAoIXZt
LmNhblVzZUpJVCgpKSB7Ci0gICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7Ci0gICAg
ICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgICAgICAgICAgYWRvcHRSZWYo
bmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVS
ZWYobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLCBKSVRDb2RlOjpJbnRlcnByZXRl
clRodW5rKSksCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVM
TEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVChraW5kID09IENvZGVG
b3JDb25zdHJ1Y3QpOwotICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgICAg
ICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0
ZUxMSW50Q29kZVJlZihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwgSklU
Q29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0
eV9jaGVjaykpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotI2lmIEVOQUJMRShKSVQp
Ci0gICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKLSAgICAgICAgY29kZUJsb2NrLT5zZXRK
SVRDb2RlKAotICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJ
U3R1YihmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJw
cmV0ZXJUaHVuaykpLAotICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxB
cml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKLSAgICBjb2RlQmxvY2st
PnNldEpJVENvZGUoCi0gICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENU
SVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6
SW50ZXJwcmV0ZXJUaHVuaykpLAotICAgICAgICB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29u
c3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCkpOwotI2VuZGlmIC8vIEVOQUJM
RShKSVQpCi19Ci0KLXZvaWQgc2V0RXZhbEVudHJ5cG9pbnQoVk0mIHZtLCBFdmFsQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCi17Ci0gICAgaWYgKCF2bS5jYW5Vc2VKSVQoKSkgewotICAgICAgICBjb2Rl
QmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29k
ZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9ldmFsX3By
b2xvZ3VlKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpLAotICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2lmIEVOQUJMRShK
SVQpCi0gICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICBhZG9wdFJlZihuZXcgRGly
ZWN0SklUQ29kZSh2bS5nZXRDVElTdHViKGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29k
ZTo6SW50ZXJwcmV0ZXJUaHVuaykpLAotICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7
Ci0jZW5kaWYKLX0KLQotdm9pZCBzZXRQcm9ncmFtRW50cnlwb2ludChWTSYgdm0sIFByb2dyYW1D
b2RlQmxvY2sqIGNvZGVCbG9jaykKLXsKLSAgICBpZiAoIXZtLmNhblVzZUpJVCgpKSB7Ci0gICAg
ICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJl
Y3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50
X3Byb2dyYW1fcHJvbG9ndWUpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSksCi0gICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0j
aWYgRU5BQkxFKEpJVCkKLSAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgIGFkb3B0
UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5l
cmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSksCi0gICAgICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cigpKTsKLSNlbmRpZgotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQK
LQotI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludEVudHJ5cG9pbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAkocmV2aXNpb24gMTU0ODI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpZm5kZWYgTExJbnRFbnRyeXBvaW50c19oCi0jZGVmaW5lIExMSW50RW50
cnlwb2ludHNfaAotCi0jaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+Ci0KLSNpZiBFTkFCTEUoTExJ
TlQpCi0KLSNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCi0jaW5jbHVkZSAiSklU
Q29kZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNs
YXNzIEV2YWxDb2RlQmxvY2s7Ci1jbGFzcyBGdW5jdGlvbkNvZGVCbG9jazsKLWNsYXNzIFZNOwot
Y2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOwotY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
OwotY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKLQotbmFtZXNwYWNlIExMSW50IHsKLQotdm9pZCBz
ZXRGdW5jdGlvbkVudHJ5cG9pbnQoVk0mLCBGdW5jdGlvbkNvZGVCbG9jayopOwotdm9pZCBzZXRF
dmFsRW50cnlwb2ludChWTSYsIEV2YWxDb2RlQmxvY2sqKTsKLXZvaWQgc2V0UHJvZ3JhbUVudHJ5
cG9pbnQoVk0mLCBQcm9ncmFtQ29kZUJsb2NrKik7Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpM
TEludAotCi0jZW5kaWYgLy8gRU5BQkxFKExMSU5UKQotCi0jZW5kaWYgLy8gTExJbnRFbnRyeXBv
aW50c19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAJKHJldmlzaW9uIDE1NDgyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3OSw3ICsyNzksOCBAQCBp
bmxpbmUgYm9vbCBzaG91bGRKSVQoRXhlY1N0YXRlKiBleGVjKQogLy8gUmV0dXJucyB0cnVlIGlm
IHdlIHNob3VsZCB0cnkgdG8gT1NSLgogaW5saW5lIGJvb2wgaml0Q29tcGlsZUFuZFNldEhldXJp
c3RpY3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBEZWZl
ckdDIGRlZmVyR0MoZXhlYy0+dm0oKS5oZWFwKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKICAgICAKICAgICBjb2RlQmxvY2stPnVwZGF0
ZUFsbFZhbHVlUHJvZmlsZVByZWRpY3Rpb25zKCk7CiAgICAgCkBAIC0yOTcsOCArMjk4LDcgQEAg
aW5saW5lIGJvb2wgaml0Q29tcGlsZUFuZFNldEhldXJpc3RpY3MoQwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAgICAgY2FzZSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rOiB7Ci0gICAg
ICAgIENvbXBpbGF0aW9uUmVzdWx0IHJlc3VsdCA9IGNvZGVCbG9jay0+cHJlcGFyZUZvckV4ZWN1
dGlvbigKLSAgICAgICAgICAgIGV4ZWMsIEpJVENvZGU6OkJhc2VsaW5lSklULCBKSVRDb21waWxh
dGlvbkNhbkZhaWwpOworICAgICAgICBDb21waWxhdGlvblJlc3VsdCByZXN1bHQgPSBKSVQ6OmNv
bXBpbGUoJnZtLCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgICAgIHN3
aXRjaCAocmVzdWx0KSB7CiAgICAgICAgIGNhc2UgQ29tcGlsYXRpb25GYWlsZWQ6CiAgICAgICAg
ICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDE1NDgyNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHRHJp
dmVyLmgiCiAjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50LmgiCiAj
aW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KQEAgLTI4NCwxNCArMjg1LDEyIEBAIEpTT2JqZWN0KiBTY3JpcHRFeGVjdXRh
YmxlOjpwcmVwYXJlRm9yRXgKICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbjsKICAgICB9CiAgICAg
Ci0gICAgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlOwogI2lmIEVOQUJMRShMTElOVCkKLSAgICBq
aXRUeXBlID0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuazsKKyAgICBMTEludDo6c2V0RW50cnlw
b2ludCh2bSwgY29kZUJsb2NrLmdldCgpKTsKICNlbHNlCi0gICAgaml0VHlwZSA9IEpJVENvZGU6
OkJhc2VsaW5lSklUOwotI2VuZGlmCi0gICAgQ29tcGlsYXRpb25SZXN1bHQgcmVzdWx0ID0gY29k
ZUJsb2NrLT5wcmVwYXJlRm9yRXhlY3V0aW9uKGV4ZWMsIGppdFR5cGUpOworICAgIENvbXBpbGF0
aW9uUmVzdWx0IHJlc3VsdCA9IEpJVDo6Y29tcGlsZSgmdm0sIGNvZGVCbG9jay5nZXQoKSwgSklU
Q29tcGlsYXRpb25NdXN0U3VjY2VlZCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0ID09IENv
bXBpbGF0aW9uU3VjY2Vzc2Z1bCk7CisjZW5kaWYKIAogICAgIGluc3RhbGxDb2RlKGNvZGVCbG9j
ay5nZXQoKSk7CiAgICAgcmV0dXJuIDA7Cg==
</data>
<flag name="review"
          id="232084"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>