<?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>78573</bug_id>
          
          <creation_ts>2012-02-13 21:12:41 -0800</creation_ts>
          <short_desc>Rename Bump* to Copy*</short_desc>
          <delta_ts>2012-02-17 12:09:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>78610</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>barraclough</cc>
    
    <cc>eric</cc>
    
    <cc>ggaren</cc>
    
    <cc>levin+threading</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>555926</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-02-13 21:12:41 -0800</bug_when>
    <thetext>In keeping with the naming theme of MarkedSpace et al, we should rename BumpSpace et al to CopySpace, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555941</commentid>
    <comment_count>1</comment_count>
      <attachid>126905</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-02-13 21:39:28 -0800</bug_when>
    <thetext>Created attachment 126905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555942</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-13 21:41:32 -0800</bug_when>
    <thetext>Attachment 126905 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;S...&quot; exit_code: 1

Source/JavaScriptCore/heap/Heap.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 19 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>555951</commentid>
    <comment_count>3</comment_count>
      <attachid>126907</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-02-13 22:15:37 -0800</bug_when>
    <thetext>Created attachment 126907
Fix qt build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555954</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-13 22:18:58 -0800</bug_when>
    <thetext>Attachment 126907 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;S...&quot; exit_code: 1

Source/JavaScriptCore/heap/Heap.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 20 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>558686</commentid>
    <comment_count>5</comment_count>
      <attachid>126907</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-02-16 16:53:45 -0800</bug_when>
    <thetext>Comment on attachment 126907
Fix qt build

I think the true analogue to &quot;MarkedSpace&quot; would actually be &quot;CopiedSpace&quot;. Maybe you can make that change before committing.

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559420</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-02-17 12:09:29 -0800</bug_when>
    <thetext>Committed r108107: &lt;http://trac.webkit.org/changeset/108107&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126905</attachid>
            <date>2012-02-13 21:39:28 -0800</date>
            <delta_ts>2012-02-13 22:15:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78573-20120213213927.patch</filename>
            <type>text/plain</type>
            <size>68434</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NjE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MGNhNDEzMDQxNWUxOGQyM2ExMGVlZTg4ZDA3NWJmYzE4YjkzMjY3Li5mOWY4NTFkYjc0NjMzNjU5
NDNjZmQ1MjAzNmJlMWNiZDUyMmFjMmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NyBAQAorMjAxMi0wMi0xMyAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBw
bGUuY29tPgorCisgICAgICAgIFJlbmFtZSBCdW1wKiB0byBDb3B5KgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg1NzMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWVkIGFueXRoaW5nIHdpdGggQnVt
cCBpbiB0aGUgbmFtZSB0byBoYXZlIENvcHkgaW5zdGVhZC4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUuZ3lwaToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaGVhcC9Db25zZXJ2YXRpdmVSb290
cy5jcHA6CisgICAgICAgIChKU0M6OkNvbnNlcnZhdGl2ZVJvb3RzOjpDb25zZXJ2YXRpdmVSb290
cyk6CisgICAgICAgIChKU0M6OkNvbnNlcnZhdGl2ZVJvb3RzOjpnZW5lcmljQWRkUG9pbnRlcik6
CisgICAgICAgICogaGVhcC9Db25zZXJ2YXRpdmVSb290cy5oOgorICAgICAgICAoQ29uc2VydmF0
aXZlUm9vdHMpOgorICAgICAgICAqIGhlYXAvQ29weUJsb2NrLmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CdW1wQmxvY2suaC4KKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChDb3B5QmxvY2spOgorICAgICAgICAoSlNDOjpDb3B5QmxvY2s6OkNvcHlCbG9jayk6Cisg
ICAgICAgICogaGVhcC9Db3B5U3BhY2UuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQnVtcFNwYWNlLmNwcC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6
OkNvcHlTcGFjZTo6dHJ5QWxsb2NhdGVTbG93Q2FzZSk6CisgICAgICAgICogaGVhcC9Db3B5U3Bh
Y2UuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0J1bXBTcGFjZS5o
LgorICAgICAgICAoSlNDKToKKyAgICAgICAgKENvcHlTcGFjZSk6CisgICAgICAgIChKU0M6OkNv
cHlTcGFjZTo6aXNJbkNvcHlQaGFzZSk6CisgICAgICAgIChKU0M6OkNvcHlTcGFjZTo6dG90YWxN
ZW1vcnlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpDb3B5U3BhY2U6OnRvdGFsTWVtb3J5VXRp
bGl6ZWQpOgorICAgICAgICAqIGhlYXAvQ29weVNwYWNlSW5saW5lTWV0aG9kcy5oOiBSZW5hbWVk
IGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQnVtcFNwYWNlSW5saW5lTWV0aG9kcy5o
LgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Q29weVNwYWNlOjpDb3B5U3BhY2UpOgor
ICAgICAgICAoSlNDOjpDb3B5U3BhY2U6OmluaXQpOgorICAgICAgICAoSlNDOjpDb3B5U3BhY2U6
OmNvbnRhaW5zKToKKyAgICAgICAgKEpTQzo6Q29weVNwYWNlOjpwaW4pOgorICAgICAgICAoSlND
OjpDb3B5U3BhY2U6OnN0YXJ0ZWRDb3B5aW5nKToKKyAgICAgICAgKEpTQzo6Q29weVNwYWNlOjpk
b25lQ29weWluZyk6CisgICAgICAgIChKU0M6OkNvcHlTcGFjZTo6ZG9uZUZpbGxpbmdCbG9jayk6
CisgICAgICAgIChKU0M6OkNvcHlTcGFjZTo6cmVjeWNsZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
Q29weVNwYWNlOjpnZXRGcmVzaEJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29weVNwYWNlOjpib3Jy
b3dCbG9jayk6CisgICAgICAgIChKU0M6OkNvcHlTcGFjZTo6YWRkTmV3QmxvY2spOgorICAgICAg
ICAoSlNDOjpDb3B5U3BhY2U6OmFsbG9jYXRlTmV3QmxvY2spOgorICAgICAgICAoSlNDOjpDb3B5
U3BhY2U6OmZpdHNJbkJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29weVNwYWNlOjpmaXRzSW5DdXJy
ZW50QmxvY2spOgorICAgICAgICAoSlNDOjpDb3B5U3BhY2U6OnRyeUFsbG9jYXRlKToKKyAgICAg
ICAgKEpTQzo6Q29weVNwYWNlOjp0cnlBbGxvY2F0ZU92ZXJzaXplKToKKyAgICAgICAgKEpTQzo6
Q29weVNwYWNlOjphbGxvY2F0ZUZyb21CbG9jayk6CisgICAgICAgIChKU0M6OkNvcHlTcGFjZTo6
dHJ5UmVhbGxvY2F0ZSk6CisgICAgICAgIChKU0M6OkNvcHlTcGFjZTo6dHJ5UmVhbGxvY2F0ZU92
ZXJzaXplKToKKyAgICAgICAgKEpTQzo6Q29weVNwYWNlOjppc092ZXJzaXplKToKKyAgICAgICAg
KEpTQzo6Q29weVNwYWNlOjppc1Bpbm5lZCk6CisgICAgICAgIChKU0M6OkNvcHlTcGFjZTo6b3Zl
cnNpemVCbG9ja0Zvcik6CisgICAgICAgIChKU0M6OkNvcHlTcGFjZTo6YmxvY2tGb3IpOgorICAg
ICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgIChK
U0MpOgorICAgICAgICAoSGVhcCk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3BwOgorICAg
ICAgICAoSlNDOjpNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhOjpNYXJrU3RhY2tUaHJlYWRTaGFy
ZWREYXRhKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmRyYWluRnJvbVNoYXJlZCk6Cisg
ICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjpzdGFydENvcHlpbmcpOgorICAgICAgICAoSlNDOjpT
bG90VmlzaXRvcjo6YWxsb2NhdGVOZXdTcGFjZSk6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9y
Ojpkb25lQ29weWluZyk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suaDoKKyAgICAgICAgKE1h
cmtTdGFja1RocmVhZFNoYXJlZERhdGEpOgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3IuaDoK
KyAgICAgICAgKFNsb3RWaXNpdG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorCiAyMDEyLTAyLTEzICBTYW0gV2Vpbmln
ICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTW92ZSBKU0MgcmVsYXRlZCBhc3NlcnRpb25z
IG91dCBvZiBBc3NlcnRpb25zLmggYW5kIGludG8gdGhlaXIgb3duIGhlYWRlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDE0NzBiNTA0Mjk4YzdjZGQ1NjYzMjk2ODE0NTlk
NTgxOTZiYzA5YTQuLmVkODhkNWIzODczYTg1NWNmYzU5MTY4NTIzNDlkZDU4MzYzYmNlZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTc1LDcgKzc1LDcgQEAgU0VUKEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKICAg
ICBkZmcvREZHVGh1bmtzLmNwcAogCi0gICAgaGVhcC9CdW1wU3BhY2UuY3BwCisgICAgaGVhcC9D
b3B5U3BhY2UuY3BwCiAgICAgaGVhcC9ERkdDb2RlQmxvY2tzLmNwcAogICAgIGhlYXAvSGVhcC5j
cHAKICAgICBoZWFwL0hhbmRsZUhlYXAuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IDZmMWIzYWVkMDhhZTY0NmU2ZGExZGY0MzBkOWE2NjY1MWE0Zjhh
ODIuLjZkMTk2OWRjMWFlMTMxZWEzOGUyODhiMDllMTI0NTU4MjJjNjM5ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0xODMsMTAgKzE4MywxMCBAQCBq
YXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1RodW5rcy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmggXAotCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0J1bXBCbG9jay5oIFwKLQlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9CdW1wU3BhY2UuY3BwIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9C
dW1wU3BhY2UuaCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQnVtcFNwYWNlSW5saW5l
TWV0aG9kcy5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5QmxvY2suaCBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVNwYWNlLmNwcCBcCisJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29weVNwYWNlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvcHlTcGFjZUlubGluZU1ldGhvZHMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q2FyZFNldC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290
cy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQppbmRleCBmYTEzMDZk
NTQ1OTRkYzA2YzUyNWNmYTYyZTMyYTA4ZTkxY2Y3NDU2Li44NTdlZTg3NWQ3NDNmYTMzYTQ4ODY2
OTM2ZTY3ZmM4YmNhNWZiNmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZ3lwaQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZ3lwaQpAQCAtMjcsOSArMjcsOSBAQAogICAgICAgICAgICAgJ0FQSS9PcGFxdWVKU1N0cmlu
Zy5oJywKICAgICAgICAgICAgICdhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgnLAog
ICAgICAgICAgICAgJ2J5dGVjb2RlL09wY29kZS5oJywKLSAgICAgICAgICAgICdoZWFwL0J1bXBC
bG9jay5oJywKLSAgICAgICAgICAgICdoZWFwL0J1bXBTcGFjZS5oJywKLSAgICAgICAgICAgICdo
ZWFwL0J1bXBTcGFjZUlubGluZU1ldGhvZHMuaCcsCisgICAgICAgICAgICAnaGVhcC9Db3B5Qmxv
Y2suaCcsCisgICAgICAgICAgICAnaGVhcC9Db3B5U3BhY2UuaCcsCisgICAgICAgICAgICAnaGVh
cC9Db3B5U3BhY2VJbmxpbmVNZXRob2RzLmgnLAogICAgICAgICAgICAgJ2hlYXAvQ29uc2VydmF0
aXZlUm9vdHMuaCcsCiAgICAgICAgICAgICAnaGVhcC9HQ0Fzc2VydGlvbnMuaCcsCiAgICAgICAg
ICAgICAnaGVhcC9IYW5kbGUuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCmluZGV4IDQ5MzM0ZGE5MzAyYTNiZjJmY2RkY2Q4
NDY3MDE4ZmNmYTZhZWFlN2UuLmUzMWJkN2Q1YmM5M2MyM2QxYzQxY2E1ZmIwYzIwM2U4NDkwN2Jk
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qCkBAIC0yMDM4LDE5ICsyMDM4LDE5IEBACiAJCQlOYW1lPSJoZWFwIgogCQkJ
PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhlYXBcQnVtcEJsb2NrLmgiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhl
YXBcQ29weUJsb2NrLmgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWxlPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxGaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2
ZVBhdGg9Ii4uXC4uXGhlYXBcQnVtcFNwYWNlLmNwcCIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cLi5caGVhcFxDb3B5U3BhY2UuY3BwIgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDwvRmlsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmlsZQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXEJ1
bXBTcGFjZS5oIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQ
YXRoPSIuLlwuLlxoZWFwXENvcHlTcGFjZS5oIgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZT4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8RmlsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXEJ1bXBTcGFjZUlubGluZU1ldGhvZHMuaCIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cLi5c
aGVhcFxDb3B5U3BhY2VJbmxpbmVNZXRob2RzLmgiCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWxlPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxGaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGZiOTk4ZGY2OGQ1ZmFkNjg0MWI2MTM1OWNiZmU2ODZkYWQyNzQxODIuLmNkZTNkNDJlM2Q5
NjczZjBhNGM4MmQ1ZmE4MjE1ZTMxMGJhNWQ0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC03NDIsMTQgKzc0MiwxNCBAQAogCQlDMjJDNTMxMzEzRkFGNkVGMDBCN0RDMEQgLyog
c3RydG9kLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzIyQzUyQjkxM0ZBRjZFRjAwQjdEQzBEIC8qIHN0cnRvZC5jYyAqLzsgfTsKIAkJQzIyQzUzMTQx
M0ZBRjZFRjAwQjdEQzBEIC8qIHN0cnRvZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzIyQzUyQkExM0ZBRjZFRjAwQjdEQzBEIC8qIHN0cnRvZC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyMkM1MzE1
MTNGQUY2RUYwMEI3REMwRCAvKiB1dGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzIyQzUyQkIxM0ZBRjZFRjAwQjdEQzBEIC8qIHV0aWxzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQzI0MDMwNTUx
NEI0MDRFNjAwNzlFQjY0IC8qIEJ1bXBTcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQgLyogQnVtcFNw
YWNlLmNwcCAqLzsgfTsKKwkJQzI0MDMwNTUxNEI0MDRFNjAwNzlFQjY0IC8qIENvcHlTcGFjZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQwMzA1
MzE0QjQwNEM5MDA3OUVCNjQgLyogQ29weVNwYWNlLmNwcCAqLzsgfTsKIAkJQzJCOTE2QzIxNERB
MDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJCOTE2QzExNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtl
ZEFsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUMyQjkxNkM1MTREQTA0MEMwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJCOTE2QzQxNERB
MDQwQzAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5jcHAgKi87IH07Ci0JCUMyQzhEMDJEMTRB
M0M2RTAwMDU3OEU2NSAvKiBCdW1wU3BhY2VJbmxpbmVNZXRob2RzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkM4RDAyQjE0QTNDNkIyMDA1NzhFNjUg
LyogQnVtcFNwYWNlSW5saW5lTWV0aG9kcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCUMyQzhEMDMwMTRBM0NFRkMwMDU3OEU2NSAvKiBCdW1wQmxv
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQzhE
MDJFMTRBM0NFRkMwMDU3OEU2NSAvKiBCdW1wQmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMkM4RDAyRDE0QTNDNkUwMDA1NzhFNjUgLyog
Q29weVNwYWNlSW5saW5lTWV0aG9kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzJDOEQwMkIxNEEzQzZCMjAwNTc4RTY1IC8qIENvcHlTcGFjZUlubGlu
ZU1ldGhvZHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlDMkM4RDAzMDE0QTNDRUZDMDA1NzhFNjUgLyogQ29weUJsb2NrLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkM4RDAyRTE0QTNDRUZDMDA1NzhF
NjUgLyogQ29weUJsb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQzJDOEQwMzExNEEzQ0VGQzAwNTc4RTY1IC8qIEhlYXBCbG9jay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJDOEQwMkYxNEEzQ0VG
QzAwNTc4RTY1IC8qIEhlYXBCbG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUMyRDlDQTEzMTRCQ0MwNDYwMDMwNEI0NiAvKiBDaGVja2VkQm9v
bGVhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJE
OUNBMTIxNEJDQzA0NjAwMzA0QjQ2IC8qIENoZWNrZWRCb29sZWFuLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQzJFQUEzRkExNDlBODM1RTAwRkNF
MTEyIC8qIEJ1bXBTcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzJFQUEzRjgxNDlBODMwODAwRkNFMTEyIC8qIEJ1bXBTcGFjZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyRUFBM0ZBMTQ5QTgz
NUUwMEZDRTExMiAvKiBDb3B5U3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMyRUFBM0Y4MTQ5QTgzMDgwMEZDRTExMiAvKiBDb3B5U3BhY2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMkVFNTlB
MDEzRkM5NzNGMDA5Q0VBRkUgLyogRGVjaW1hbE51bWJlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJFRTU5OUUxM0ZDOTcyQTAwOUNFQUZFIC8qIERl
Y2ltYWxOdW1iZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDMkVFNTlBMTEzRkM5NzY4MDA5Q0VBRkUgLyogRGVjaW1hbE51bWJlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkVFNTk5RDEzRkM5
NzJBMDA5Q0VBRkUgLyogRGVjaW1hbE51bWJlci5jcHAgKi87IH07CiAJCUQ3QTQ2QTRGMTMzOEZG
RUEwMEVENjk1QyAvKiBEeW5hbWljQW5ub3RhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQ3NUFGNTk2MTJGOENCOTUwMEZDMEFERiAvKiBEeW5h
bWljQW5ub3RhdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTU0OCwxNCArMTU0OCwxNCBAQAogCQlDMjJDNTJCOTEzRkFGNkVGMDBCN0RD
MEQgLyogc3RydG9kLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gc3Ry
dG9kLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjJDNTJCQTEzRkFGNkVGMDBC
N0RDMEQgLyogc3RydG9kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHN0cnRv
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjJDNTJCQjEzRkFGNkVGMDBCN0RD
MEQgLyogdXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gdXRpbHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzI0MDMwNTMxNEI0MDRDOTAwNzlFQjY0IC8q
IEJ1bXBTcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdW1w
U3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjQwMzA1MzE0QjQwNEM5
MDA3OUVCNjQgLyogQ29weVNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENvcHlTcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQjkx
NkMxMTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWFya2VkQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMyQjkxNkM0MTREQTA0MEMwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFya2VkQWxsb2NhdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzJDOEQwMkIxNEEzQzZCMjAwNTc4RTY1
IC8qIEJ1bXBTcGFjZUlubGluZU1ldGhvZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQnVtcFNwYWNlSW5saW5lTWV0aG9kcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlDMkM4RDAyRTE0QTNDRUZDMDA1NzhFNjUgLyogQnVtcEJsb2NrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1bXBCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDMkM4RDAyQjE0QTNDNkIyMDA1NzhFNjUgLyogQ29weVNwYWNlSW5saW5lTWV0aG9k
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3B5U3BhY2VJbmxpbmVNZXRo
b2RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyQzhEMDJFMTRBM0NFRkMwMDU3
OEU2NSAvKiBDb3B5QmxvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29w
eUJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQzhEMDJGMTRBM0NFRkMw
MDU3OEU2NSAvKiBIZWFwQmxvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SGVhcEJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyRDlDQTEyMTRCQ0Mw
NDYwMDMwNEI0NiAvKiBDaGVja2VkQm9vbGVhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDaGVja2VkQm9vbGVhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
MkVBQTNGODE0OUE4MzA4MDBGQ0UxMTIgLyogQnVtcFNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEJ1bXBTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMkVBQTNGODE0OUE4MzA4MDBGQ0UxMTIgLyogQ29weVNwYWNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvcHlTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDMkVFNTk5RDEzRkM5NzJBMDA5Q0VBRkUgLyogRGVjaW1hbE51bWJlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWNpbWFsTnVtYmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJFRTU5OUUxM0ZDOTcyQTAwOUNFQUZFIC8qIERlY2lt
YWxOdW1iZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjaW1hbE51bWJl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjEyMDIyODBBRDQzMTBDMDBFRDc5
QjYgLyogRGF0ZUNvbnZlcnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERhdGVDb252ZXJzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE4MjIsMTAgKzE4MjIsMTAgQEAKIAkJMTQyRTMxMkExMzRGRjBBNjAwQUZBREI1IC8qIGhlYXAg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUMyQzhEMDJF
MTRBM0NFRkMwMDU3OEU2NSAvKiBCdW1wQmxvY2suaCAqLywKLQkJCQlDMjQwMzA1MzE0QjQwNEM5
MDA3OUVCNjQgLyogQnVtcFNwYWNlLmNwcCAqLywKLQkJCQlDMkVBQTNGODE0OUE4MzA4MDBGQ0Ux
MTIgLyogQnVtcFNwYWNlLmggKi8sCi0JCQkJQzJDOEQwMkIxNEEzQzZCMjAwNTc4RTY1IC8qIEJ1
bXBTcGFjZUlubGluZU1ldGhvZHMuaCAqLywKKwkJCQlDMkM4RDAyRTE0QTNDRUZDMDA1NzhFNjUg
LyogQ29weUJsb2NrLmggKi8sCisJCQkJQzI0MDMwNTMxNEI0MDRDOTAwNzlFQjY0IC8qIENvcHlT
cGFjZS5jcHAgKi8sCisJCQkJQzJFQUEzRjgxNDlBODMwODAwRkNFMTEyIC8qIENvcHlTcGFjZS5o
ICovLAorCQkJCUMyQzhEMDJCMTRBM0M2QjIwMDU3OEU2NSAvKiBDb3B5U3BhY2VJbmxpbmVNZXRo
b2RzLmggKi8sCiAJCQkJQTc1MjFFMTIxNDI5MTY5QTAwM0M4RDBDIC8qIENhcmRTZXQuaCAqLywK
IAkJCQkxNDZCMTREQjEyRUI1QjEyMDAxQkVDMUIgLyogQ29uc2VydmF0aXZlUm9vdHMuY3BwICov
LAogCQkJCTE0OURBQUYyMTJFQjU1OUQwMDgzQjEyQiAvKiBDb25zZXJ2YXRpdmVSb290cy5oICov
LApAQCAtMjc5NCwxMCArMjc5NCwxMCBAQAogCQkJCUU0RDhDRUZCMTJGQzQzOTYwMEJDOUY1QSAv
KiBCbG9vbUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRUMwRTE2RjVDRDAwQjM0
NDYwIC8qIEJvb2xlYW5PYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgyRTg1MTQxRjNG
RTMwMDE3OUM5NCAvKiBCb3VuZHNDaGVja2VkUG9pbnRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
QzJDOEQwMzAxNEEzQ0VGQzAwNTc4RTY1IC8qIEJ1bXBCbG9jay5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQzJDOEQwMzAxNEEzQ0VGQzAwNTc4RTY1IC8qIENvcHlCbG9jay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODY2NzZENTIxMUZFRDlCQzAwNEI2ODYzIC8qIEJ1bXBQb2ludGVyQWxsb2NhdG9yLmgg
aW4gSGVhZGVycyAqLywKLQkJCQlDMkVBQTNGQTE0OUE4MzVFMDBGQ0UxMTIgLyogQnVtcFNwYWNl
LmggaW4gSGVhZGVycyAqLywKLQkJCQlDMkM4RDAyRDE0QTNDNkUwMDA1NzhFNjUgLyogQnVtcFNw
YWNlSW5saW5lTWV0aG9kcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzJFQUEzRkExNDlBODM1RTAw
RkNFMTEyIC8qIENvcHlTcGFjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzJDOEQwMkQxNEEzQzZF
MDAwNTc4RTY1IC8qIENvcHlTcGFjZUlubGluZU1ldGhvZHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3QTFGN0FEMEYyNTJCM0MwMEUxODRFMiAvKiBCeXRlQXJyYXkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk2OUEwNzIzMEVEMUNFMzMwMEYxRjY4MSAvKiBCeXRlY29kZUdlbmVyYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQzIyQzUyRjYxM0ZBRjZFRjAwQjdEQzBEIC8qIGNhY2hlZC1wb3dlcnMu
aCBpbiBIZWFkZXJzICovLApAQCAtMzU1Miw3ICszNTUyLDcgQEAKIAkJCQkxNDI4MDg2MzEwN0VD
MTFBMDAxM0U3QjIgLyogQm9vbGVhbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0MjgwODY0MTA3RUMxMUEwMDEzRTdCMiAvKiBCb29sZWFuT2JqZWN0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0MjgwODY1MTA3RUMxMUEwMDEzRTdCMiAvKiBCb29sZWFuUHJvdG90eXBlLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCUMyNDAzMDU1MTRCNDA0RTYwMDc5RUI2NCAvKiBCdW1wU3Bh
Y2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzI0MDMwNTUxNEI0MDRFNjAwNzlFQjY0IC8qIENv
cHlTcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0ExRjdBQzBGMjUyQjNDMDBFMTg0RTIg
LyogQnl0ZUFycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0OEYyMUFBMTA3RUM1M0EwMDQy
RUMyQyAvKiBCeXRlY29kZUdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMjJDNTJG
NTEzRkFGNkVGMDBCN0RDMEQgLyogY2FjaGVkLXBvd2Vycy5jYyBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQnVtcEJsb2NrLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9CdW1wQmxvY2suaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYjlmMjcxY2E4NDNmMDMwMzMzNzUyZjBkZmM4Y2ZjZmQxY2NiYTc0ZC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9CdW1wQmxvY2suaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBCdW1wQmxv
Y2tfaAotI2RlZmluZSBCdW1wQmxvY2tfaAotCi0jaW5jbHVkZSAiSGVhcEJsb2NrLmgiCi0KLW5h
bWVzcGFjZSBKU0MgewotCi1jbGFzcyBCdW1wU3BhY2U7Ci0KLWNsYXNzIEJ1bXBCbG9jayA6IHB1
YmxpYyBIZWFwQmxvY2sgewotICAgIGZyaWVuZCBjbGFzcyBCdW1wU3BhY2U7Ci1wdWJsaWM6Ci0g
ICAgQnVtcEJsb2NrKFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYgYWxsb2NhdGlvbikKLSAgICAgICAg
OiBIZWFwQmxvY2soYWxsb2NhdGlvbikKLSAgICAgICAgLCBtX29mZnNldChtX3BheWxvYWQpCi0g
ICAgICAgICwgbV9pc1Bpbm5lZChmYWxzZSkKLSAgICB7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IHZvaWQqIG1fb2Zmc2V0OwotICAgIHVpbnRwdHJfdCBtX2lzUGlubmVkOwotICAgIGNoYXIgbV9w
YXlsb2FkWzFdOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQnVtcFNwYWNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0J1bXBTcGFjZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDRlYjAyODRkZGU4NTQ5ODBhNmE1NzU5MThiNjAxMTI2YzRmYjc4ZGYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQnVtcFNwYWNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkJ1bXBTcGFjZS5oIgotCi0jaW5jbHVkZSAiQnVtcFNwYWNlSW5saW5l
TWV0aG9kcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotQ2hlY2tlZEJvb2xlYW4gQnVtcFNwYWNl
Ojp0cnlBbGxvY2F0ZVNsb3dDYXNlKHNpemVfdCBieXRlcywgdm9pZCoqIG91dFB0cikKLXsKLSAg
ICBpZiAoaXNPdmVyc2l6ZShieXRlcykpCi0gICAgICAgIHJldHVybiB0cnlBbGxvY2F0ZU92ZXJz
aXplKGJ5dGVzLCBvdXRQdHIpOwotICAgIAotICAgIG1fdG90YWxNZW1vcnlVdGlsaXplZCArPSBz
dGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRpY19jYXN0PGNoYXIqPihtX2N1cnJlbnRCbG9jay0+bV9v
ZmZzZXQpIC0gbV9jdXJyZW50QmxvY2stPm1fcGF5bG9hZCk7Ci0gICAgaWYgKCFhZGROZXdCbG9j
aygpKSB7Ci0gICAgICAgICpvdXRQdHIgPSAwOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIG1fdG9TcGFjZUZpbHRlci5hZGQocmVpbnRlcnByZXRfY2FzdDxCaXRzPihtX2N1cnJl
bnRCbG9jaykpOwotICAgIG1fdG9TcGFjZVNldC5hZGQobV9jdXJyZW50QmxvY2spOwotICAgICpv
dXRQdHIgPSBhbGxvY2F0ZUZyb21CbG9jayhtX2N1cnJlbnRCbG9jaywgYnl0ZXMpOwotICAgIHJl
dHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0J1bXBTcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQnVtcFNwYWNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwZTZiNzRmZTg5
YmMzZDg5N2FmMTg4ZGYxZmE1Mjk2YWExMGVjZGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQnVtcFNwYWNl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEJ1bXBTcGFjZV9oCi0jZGVmaW5lIEJ1
bXBTcGFjZV9oCi0KLSNpbmNsdWRlICJIZWFwQmxvY2suaCIKLSNpbmNsdWRlICJUaW55Qmxvb21G
aWx0ZXIuaCIKLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9DaGVj
a2VkQm9vbGVhbi5oPgotI2luY2x1ZGUgPHd0Zi9Eb3VibHlMaW5rZWRMaXN0Lmg+Ci0jaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvT1NBbGxvY2F0b3IuaD4KLSNpbmNsdWRl
IDx3dGYvUGFnZUFsbG9jYXRpb25BbGlnbmVkLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+Ci0KLW5hbWVzcGFjZSBK
U0MgewotCi1jbGFzcyBIZWFwOwotY2xhc3MgQnVtcEJsb2NrOwotY2xhc3MgSGVhcEJsb2NrOwot
Ci1jbGFzcyBCdW1wU3BhY2UgewotICAgIGZyaWVuZCBjbGFzcyBTbG90VmlzaXRvcjsKLXB1Ymxp
YzoKLSAgICBCdW1wU3BhY2UoSGVhcCopOwotICAgIHZvaWQgaW5pdCgpOwotCi0gICAgQ2hlY2tl
ZEJvb2xlYW4gdHJ5QWxsb2NhdGUoc2l6ZV90LCB2b2lkKiopOwotICAgIENoZWNrZWRCb29sZWFu
IHRyeVJlYWxsb2NhdGUodm9pZCoqLCBzaXplX3QsIHNpemVfdCk7Ci0gICAgCi0gICAgdm9pZCBz
dGFydGVkQ29weWluZygpOwotICAgIHZvaWQgZG9uZUNvcHlpbmcoKTsKLSAgICBib29sIGlzSW5D
b3B5UGhhc2UoKSB7IHJldHVybiBtX2luQ29weWluZ1BoYXNlOyB9Ci0KLSAgICB2b2lkIHBpbihC
dW1wQmxvY2sqKTsKLSAgICBib29sIGlzUGlubmVkKHZvaWQqKTsKLQotICAgIGJvb2wgY29udGFp
bnModm9pZCosIEJ1bXBCbG9jayomKTsKLQotICAgIHNpemVfdCB0b3RhbE1lbW9yeUFsbG9jYXRl
ZCgpIHsgcmV0dXJuIG1fdG90YWxNZW1vcnlBbGxvY2F0ZWQ7IH0KLSAgICBzaXplX3QgdG90YWxN
ZW1vcnlVdGlsaXplZCgpIHsgcmV0dXJuIG1fdG90YWxNZW1vcnlVdGlsaXplZDsgfQotCi0gICAg
c3RhdGljIEJ1bXBCbG9jayogYmxvY2tGb3Iodm9pZCopOwotCi1wcml2YXRlOgotICAgIENoZWNr
ZWRCb29sZWFuIHRyeUFsbG9jYXRlU2xvd0Nhc2Uoc2l6ZV90LCB2b2lkKiopOwotICAgIENoZWNr
ZWRCb29sZWFuIGFkZE5ld0Jsb2NrKCk7Ci0gICAgQ2hlY2tlZEJvb2xlYW4gYWxsb2NhdGVOZXdC
bG9jayhCdW1wQmxvY2sqKik7Ci0gICAgYm9vbCBmaXRzSW5DdXJyZW50QmxvY2soc2l6ZV90KTsK
LSAgICAKLSAgICBzdGF0aWMgdm9pZCogYWxsb2NhdGVGcm9tQmxvY2soQnVtcEJsb2NrKiwgc2l6
ZV90KTsKLSAgICBDaGVja2VkQm9vbGVhbiB0cnlBbGxvY2F0ZU92ZXJzaXplKHNpemVfdCwgdm9p
ZCoqKTsKLSAgICBDaGVja2VkQm9vbGVhbiB0cnlSZWFsbG9jYXRlT3ZlcnNpemUodm9pZCoqLCBz
aXplX3QsIHNpemVfdCk7Ci0gICAgCi0gICAgc3RhdGljIGJvb2wgaXNPdmVyc2l6ZShzaXplX3Qp
OwotICAgIAotICAgIENoZWNrZWRCb29sZWFuIGJvcnJvd0Jsb2NrKEJ1bXBCbG9jayoqKTsKLSAg
ICBDaGVja2VkQm9vbGVhbiBnZXRGcmVzaEJsb2NrKEFsbG9jYXRpb25FZmZvcnQsIEJ1bXBCbG9j
ayoqKTsKLSAgICB2b2lkIGRvbmVGaWxsaW5nQmxvY2soQnVtcEJsb2NrKik7Ci0gICAgdm9pZCBy
ZWN5Y2xlQmxvY2soQnVtcEJsb2NrKik7Ci0gICAgc3RhdGljIGJvb2wgZml0c0luQmxvY2soQnVt
cEJsb2NrKiwgc2l6ZV90KTsKLSAgICBzdGF0aWMgQnVtcEJsb2NrKiBvdmVyc2l6ZUJsb2NrRm9y
KHZvaWQqIHB0cik7Ci0KLSAgICBIZWFwKiBtX2hlYXA7Ci0KLSAgICBCdW1wQmxvY2sqIG1fY3Vy
cmVudEJsb2NrOwotCi0gICAgVGlueUJsb29tRmlsdGVyIG1fdG9TcGFjZUZpbHRlcjsKLSAgICBU
aW55Qmxvb21GaWx0ZXIgbV9vdmVyc2l6ZUZpbHRlcjsKLSAgICBIYXNoU2V0PEJ1bXBCbG9jayo+
IG1fdG9TcGFjZVNldDsKLQotICAgIE11dGV4IG1fdG9TcGFjZUxvY2s7Ci0gICAgTXV0ZXggbV9t
ZW1vcnlTdGF0c0xvY2s7Ci0KLSAgICBEb3VibHlMaW5rZWRMaXN0PEhlYXBCbG9jaz4qIG1fdG9T
cGFjZTsKLSAgICBEb3VibHlMaW5rZWRMaXN0PEhlYXBCbG9jaz4qIG1fZnJvbVNwYWNlOwotICAg
IAotICAgIERvdWJseUxpbmtlZExpc3Q8SGVhcEJsb2NrPiBtX2Jsb2NrczE7Ci0gICAgRG91Ymx5
TGlua2VkTGlzdDxIZWFwQmxvY2s+IG1fYmxvY2tzMjsKLSAgICBEb3VibHlMaW5rZWRMaXN0PEhl
YXBCbG9jaz4gbV9vdmVyc2l6ZUJsb2NrczsKLSAgIAotICAgIHNpemVfdCBtX3RvdGFsTWVtb3J5
QWxsb2NhdGVkOwotICAgIHNpemVfdCBtX3RvdGFsTWVtb3J5VXRpbGl6ZWQ7Ci0KLSAgICBib29s
IG1faW5Db3B5aW5nUGhhc2U7Ci0KLSAgICBNdXRleCBtX2xvYW5lZEJsb2Nrc0xvY2s7IAotICAg
IFRocmVhZENvbmRpdGlvbiBtX2xvYW5lZEJsb2Nrc0NvbmRpdGlvbjsKLSAgICBzaXplX3QgbV9u
dW1iZXJPZkxvYW5lZEJsb2NrczsKLQotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc19ibG9ja1Np
emUgPSA2NCAqIEtCOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc19tYXhBbGxvY2F0aW9uU2l6
ZSA9IDMyICogS0I7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBzX3BhZ2VTaXplID0gNCAqIEtC
OwotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc19wYWdlTWFzayA9IH4oc19wYWdlU2l6ZSAtIDEp
OwotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc19pbml0aWFsQmxvY2tOdW0gPSAxNjsKLSAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IHNfYmxvY2tNYXNrID0gfihzX2Jsb2NrU2l6ZSAtIDEpOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQnVtcFNwYWNlSW5saW5lTWV0aG9kcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQnVtcFNwYWNlSW5saW5lTWV0aG9kcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzNDU0NjMxYjAzNzQ1OTk0ZDAxYmVjNTcyN2ZmMGJiOTIxMTcwNmJjLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0J1bXBTcGFjZUlubGluZU1ldGhvZHMuaAorKysgL2Rldi9udWxsCkBAIC0x
LDQwMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpZm5kZWYgQnVtcFNwYWNlSW5saW5lTWV0aG9kc19oCi0jZGVmaW5lIEJ1bXBTcGFjZUlu
bGluZU1ldGhvZHNfaAotCi0jaW5jbHVkZSAiQnVtcEJsb2NrLmgiCi0jaW5jbHVkZSAiQnVtcFNw
YWNlLmgiCi0jaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUgIkhlYXBCbG9jay5oIgotI2luY2x1
ZGUgIkpTR2xvYmFsRGF0YS5oIgotI2luY2x1ZGUgPHd0Zi9DaGVja2VkQm9vbGVhbi5oPgotCi1u
YW1lc3BhY2UgSlNDIHsKLQotaW5saW5lIEJ1bXBTcGFjZTo6QnVtcFNwYWNlKEhlYXAqIGhlYXAp
Ci0gICAgOiBtX2hlYXAoaGVhcCkKLSAgICAsIG1fY3VycmVudEJsb2NrKDApCi0gICAgLCBtX3Rv
U3BhY2UoMCkKLSAgICAsIG1fZnJvbVNwYWNlKDApCi0gICAgLCBtX3RvdGFsTWVtb3J5QWxsb2Nh
dGVkKDApCi0gICAgLCBtX3RvdGFsTWVtb3J5VXRpbGl6ZWQoMCkKLSAgICAsIG1faW5Db3B5aW5n
UGhhc2UoZmFsc2UpCi0gICAgLCBtX251bWJlck9mTG9hbmVkQmxvY2tzKDApCi17Ci19Ci0KLWlu
bGluZSB2b2lkIEJ1bXBTcGFjZTo6aW5pdCgpCi17Ci0gICAgbV90b1NwYWNlID0gJm1fYmxvY2tz
MTsKLSAgICBtX2Zyb21TcGFjZSA9ICZtX2Jsb2NrczI7Ci0gICAgCi0gICAgbV90b3RhbE1lbW9y
eUFsbG9jYXRlZCArPSBzX2Jsb2NrU2l6ZSAqIHNfaW5pdGlhbEJsb2NrTnVtOwotCi0gICAgaWYg
KCFhZGROZXdCbG9jaygpKQotICAgICAgICBDUkFTSCgpOwotfSAgIAotCi1pbmxpbmUgYm9vbCBC
dW1wU3BhY2U6OmNvbnRhaW5zKHZvaWQqIHB0ciwgQnVtcEJsb2NrKiYgcmVzdWx0KQotewotICAg
IEJ1bXBCbG9jayogYmxvY2sgPSBibG9ja0ZvcihwdHIpOwotICAgIHJlc3VsdCA9IGJsb2NrOwot
ICAgIHJldHVybiAhbV90b1NwYWNlRmlsdGVyLnJ1bGVPdXQocmVpbnRlcnByZXRfY2FzdDxCaXRz
PihibG9jaykpICYmIG1fdG9TcGFjZVNldC5jb250YWlucyhibG9jayk7Ci19Ci0KLWlubGluZSB2
b2lkIEJ1bXBTcGFjZTo6cGluKEJ1bXBCbG9jayogYmxvY2spCi17Ci0gICAgYmxvY2stPm1faXNQ
aW5uZWQgPSB0cnVlOwotfQotCi1pbmxpbmUgdm9pZCBCdW1wU3BhY2U6OnN0YXJ0ZWRDb3B5aW5n
KCkKLXsKLSAgICBEb3VibHlMaW5rZWRMaXN0PEhlYXBCbG9jaz4qIHRlbXAgPSBtX2Zyb21TcGFj
ZTsKLSAgICBtX2Zyb21TcGFjZSA9IG1fdG9TcGFjZTsKLSAgICBtX3RvU3BhY2UgPSB0ZW1wOwot
Ci0gICAgbV90b1NwYWNlRmlsdGVyLnJlc2V0KCk7Ci0KLSAgICBtX3RvdGFsTWVtb3J5VXRpbGl6
ZWQgPSAwOwotCi0gICAgQVNTRVJUKCFtX2luQ29weWluZ1BoYXNlKTsKLSAgICBBU1NFUlQoIW1f
bnVtYmVyT2ZMb2FuZWRCbG9ja3MpOwotICAgIG1faW5Db3B5aW5nUGhhc2UgPSB0cnVlOwotfQot
Ci1pbmxpbmUgdm9pZCBCdW1wU3BhY2U6OmRvbmVDb3B5aW5nKCkKLXsKLSAgICB7Ci0gICAgICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX2xvYW5lZEJsb2Nrc0xvY2spOwotICAgICAgICB3aGlsZSAo
bV9udW1iZXJPZkxvYW5lZEJsb2NrcyA+IDApCi0gICAgICAgICAgICBtX2xvYW5lZEJsb2Nrc0Nv
bmRpdGlvbi53YWl0KG1fbG9hbmVkQmxvY2tzTG9jayk7Ci0gICAgfQotCi0gICAgQVNTRVJUKG1f
aW5Db3B5aW5nUGhhc2UpOwotICAgIG1faW5Db3B5aW5nUGhhc2UgPSBmYWxzZTsKLSAgICB3aGls
ZSAoIW1fZnJvbVNwYWNlLT5pc0VtcHR5KCkpIHsKLSAgICAgICAgQnVtcEJsb2NrKiBibG9jayA9
IHN0YXRpY19jYXN0PEJ1bXBCbG9jayo+KG1fZnJvbVNwYWNlLT5yZW1vdmVIZWFkKCkpOwotICAg
ICAgICBpZiAoYmxvY2stPm1faXNQaW5uZWQpIHsKLSAgICAgICAgICAgIGJsb2NrLT5tX2lzUGlu
bmVkID0gZmFsc2U7Ci0gICAgICAgICAgICBtX3RvU3BhY2UtPnB1c2goYmxvY2spOwotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBtX3RvU3BhY2VTZXQucmVtb3Zl
KGJsb2NrKTsKLSAgICAgICAgewotICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1faGVh
cC0+bV9mcmVlQmxvY2tMb2NrKTsKLSAgICAgICAgICAgIG1faGVhcC0+bV9mcmVlQmxvY2tzLnB1
c2goYmxvY2spOwotICAgICAgICAgICAgbV9oZWFwLT5tX251bWJlck9mRnJlZUJsb2NrcysrOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgQnVtcEJsb2NrKiBjdXJyID0gc3RhdGljX2Nhc3Q8QnVt
cEJsb2NrKj4obV9vdmVyc2l6ZUJsb2Nrcy5oZWFkKCkpOwotICAgIHdoaWxlIChjdXJyKSB7Ci0g
ICAgICAgIEJ1bXBCbG9jayogbmV4dCA9IHN0YXRpY19jYXN0PEJ1bXBCbG9jayo+KGN1cnItPm5l
eHQoKSk7Ci0gICAgICAgIGlmICghY3Vyci0+bV9pc1Bpbm5lZCkgewotICAgICAgICAgICAgbV9v
dmVyc2l6ZUJsb2Nrcy5yZW1vdmUoY3Vycik7Ci0gICAgICAgICAgICBtX3RvdGFsTWVtb3J5QWxs
b2NhdGVkIC09IGN1cnItPm1fYWxsb2NhdGlvbi5zaXplKCk7Ci0gICAgICAgICAgICBtX3RvdGFs
TWVtb3J5VXRpbGl6ZWQgLT0gY3Vyci0+bV9hbGxvY2F0aW9uLnNpemUoKSAtIHNpemVvZihCdW1w
QmxvY2spOwotICAgICAgICAgICAgY3Vyci0+bV9hbGxvY2F0aW9uLmRlYWxsb2NhdGUoKTsKLSAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICBjdXJyLT5tX2lzUGlubmVkID0gZmFsc2U7Ci0gICAg
ICAgIGN1cnIgPSBuZXh0OwotICAgIH0KLQotICAgIGlmICghKG1fY3VycmVudEJsb2NrID0gc3Rh
dGljX2Nhc3Q8QnVtcEJsb2NrKj4obV90b1NwYWNlLT5oZWFkKCkpKSkKLSAgICAgICAgaWYgKCFh
ZGROZXdCbG9jaygpKQotICAgICAgICAgICAgQ1JBU0goKTsKLX0KLQotaW5saW5lIHZvaWQgQnVt
cFNwYWNlOjpkb25lRmlsbGluZ0Jsb2NrKEJ1bXBCbG9jayogYmxvY2spCi17Ci0gICAgQVNTRVJU
KGJsb2NrKTsKLSAgICBBU1NFUlQoYmxvY2stPm1fb2Zmc2V0IDwgcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oYmxvY2spICsgc19ibG9ja1NpemUpOwotICAgIEFTU0VSVChtX2luQ29weWluZ1BoYXNl
KTsKLQotICAgIGlmIChibG9jay0+bV9vZmZzZXQgPT0gYmxvY2stPm1fcGF5bG9hZCkgewotICAg
ICAgICByZWN5Y2xlQmxvY2soYmxvY2spOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
ewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV90b1NwYWNlTG9jayk7Ci0gICAgICAgIG1f
dG9TcGFjZS0+cHVzaChibG9jayk7Ci0gICAgICAgIG1fdG9TcGFjZVNldC5hZGQoYmxvY2spOwot
ICAgICAgICBtX3RvU3BhY2VGaWx0ZXIuYWRkKHJlaW50ZXJwcmV0X2Nhc3Q8Qml0cz4oYmxvY2sp
KTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX21lbW9yeVN0
YXRzTG9jayk7Ci0gICAgICAgIG1fdG90YWxNZW1vcnlVdGlsaXplZCArPSBzdGF0aWNfY2FzdDxz
aXplX3Q+KHN0YXRpY19jYXN0PGNoYXIqPihibG9jay0+bV9vZmZzZXQpIC0gYmxvY2stPm1fcGF5
bG9hZCk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2Fu
ZWRCbG9ja3NMb2NrKTsKLSAgICAgICAgQVNTRVJUKG1fbnVtYmVyT2ZMb2FuZWRCbG9ja3MgPiAw
KTsKLSAgICAgICAgbV9udW1iZXJPZkxvYW5lZEJsb2Nrcy0tOwotICAgICAgICBpZiAoIW1fbnVt
YmVyT2ZMb2FuZWRCbG9ja3MpCi0gICAgICAgICAgICBtX2xvYW5lZEJsb2Nrc0NvbmRpdGlvbi5z
aWduYWwoKTsKLSAgICB9Ci19Ci0KLWlubGluZSB2b2lkIEJ1bXBTcGFjZTo6cmVjeWNsZUJsb2Nr
KEJ1bXBCbG9jayogYmxvY2spCi17Ci0gICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9oZWFwLT5tX2ZyZWVCbG9ja0xvY2spOwotICAgICAgICBtX2hlYXAtPm1fZnJlZUJsb2Nrcy5w
dXNoKGJsb2NrKTsKLSAgICAgICAgbV9oZWFwLT5tX251bWJlck9mRnJlZUJsb2NrcysrOwotICAg
IH0KLQotICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9hbmVkQmxvY2tzTG9j
ayk7Ci0gICAgICAgIEFTU0VSVChtX251bWJlck9mTG9hbmVkQmxvY2tzID4gMCk7Ci0gICAgICAg
IG1fbnVtYmVyT2ZMb2FuZWRCbG9ja3MtLTsKLSAgICAgICAgaWYgKCFtX251bWJlck9mTG9hbmVk
QmxvY2tzKQotICAgICAgICAgICAgbV9sb2FuZWRCbG9ja3NDb25kaXRpb24uc2lnbmFsKCk7Ci0g
ICAgfQotfQotCi1pbmxpbmUgQ2hlY2tlZEJvb2xlYW4gQnVtcFNwYWNlOjpnZXRGcmVzaEJsb2Nr
KEFsbG9jYXRpb25FZmZvcnQgYWxsb2NhdGlvbkVmZm9ydCwgQnVtcEJsb2NrKiogb3V0QmxvY2sp
Ci17Ci0gICAgSGVhcEJsb2NrKiBoZWFwQmxvY2sgPSAwOwotICAgIEJ1bXBCbG9jayogYmxvY2sg
PSAwOwotICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1faGVhcC0+bV9mcmVlQmxv
Y2tMb2NrKTsKLSAgICAgICAgaWYgKCFtX2hlYXAtPm1fZnJlZUJsb2Nrcy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgIGhlYXBCbG9jayA9IG1faGVhcC0+bV9mcmVlQmxvY2tzLnJlbW92ZUhlYWQo
KTsKLSAgICAgICAgICAgIG1faGVhcC0+bV9udW1iZXJPZkZyZWVCbG9ja3MtLTsKLSAgICAgICAg
fQotICAgIH0KLSAgICBpZiAoaGVhcEJsb2NrKQotICAgICAgICBibG9jayA9IG5ldyAoTm90TnVs
bCwgaGVhcEJsb2NrKSBCdW1wQmxvY2soaGVhcEJsb2NrLT5tX2FsbG9jYXRpb24pOwotICAgIGVs
c2UgaWYgKGFsbG9jYXRpb25FZmZvcnQgPT0gQWxsb2NhdGlvbk11c3RTdWNjZWVkKSB7Ci0gICAg
ICAgIGlmICghYWxsb2NhdGVOZXdCbG9jaygmYmxvY2spKSB7Ci0gICAgICAgICAgICAqb3V0Qmxv
Y2sgPSAwOwotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQoYWxs
b2NhdGlvbkVmZm9ydCA9PSBBbGxvY2F0aW9uQ2FuRmFpbCk7Ci0gICAgICAgIGlmIChtX2hlYXAt
PndhdGVyTWFyaygpID49IG1faGVhcC0+aGlnaFdhdGVyTWFyaygpICYmIG1faGVhcC0+bV9pc1Nh
ZmVUb0NvbGxlY3QpCi0gICAgICAgICAgICBtX2hlYXAtPmNvbGxlY3QoSGVhcDo6RG9Ob3RTd2Vl
cCk7Ci0gICAgICAgIAotICAgICAgICBpZiAoIWdldEZyZXNoQmxvY2soQWxsb2NhdGlvbk11c3RT
dWNjZWVkLCAmYmxvY2spKSB7Ci0gICAgICAgICAgICAqb3V0QmxvY2sgPSAwOwotICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgQVNTRVJUKGJsb2NrKTsKLSAgICBBU1NFUlQoaXNQb2ludGVyQWxp
Z25lZChibG9jay0+bV9vZmZzZXQpKTsKLSAgICAqb3V0QmxvY2sgPSBibG9jazsKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotaW5saW5lIENoZWNrZWRCb29sZWFuIEJ1bXBTcGFjZTo6Ym9ycm93Qmxv
Y2soQnVtcEJsb2NrKiogb3V0QmxvY2spCi17Ci0gICAgQnVtcEJsb2NrKiBibG9jayA9IDA7Ci0g
ICAgaWYgKCFnZXRGcmVzaEJsb2NrKEFsbG9jYXRpb25NdXN0U3VjY2VlZCwgJmJsb2NrKSkgewot
ICAgICAgICAqb3V0QmxvY2sgPSAwOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgQVNTRVJUKG1faW5Db3B5aW5nUGhhc2UpOwotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xv
YW5lZEJsb2Nrc0xvY2spOwotICAgIG1fbnVtYmVyT2ZMb2FuZWRCbG9ja3MrKzsKLQotICAgIEFT
U0VSVChibG9jay0+bV9vZmZzZXQgPT0gYmxvY2stPm1fcGF5bG9hZCk7Ci0gICAgKm91dEJsb2Nr
ID0gYmxvY2s7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWlubGluZSBDaGVja2VkQm9vbGVhbiBC
dW1wU3BhY2U6OmFkZE5ld0Jsb2NrKCkKLXsKLSAgICBCdW1wQmxvY2sqIGJsb2NrID0gMDsKLSAg
ICBpZiAoIWdldEZyZXNoQmxvY2soQWxsb2NhdGlvbkNhbkZhaWwsICZibG9jaykpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgbV90b1NwYWNlLT5wdXNoKGJsb2NrKTsKLSAg
ICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrOwotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUg
Q2hlY2tlZEJvb2xlYW4gQnVtcFNwYWNlOjphbGxvY2F0ZU5ld0Jsb2NrKEJ1bXBCbG9jayoqIG91
dEJsb2NrKQotewotICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCBhbGxvY2F0aW9uID0gUGFnZUFs
bG9jYXRpb25BbGlnbmVkOjphbGxvY2F0ZShzX2Jsb2NrU2l6ZSwgc19ibG9ja1NpemUsIE9TQWxs
b2NhdG9yOjpKU0dDSGVhcFBhZ2VzKTsKLSAgICBpZiAoIXN0YXRpY19jYXN0PGJvb2w+KGFsbG9j
YXRpb24pKSB7Ci0gICAgICAgICpvdXRCbG9jayA9IDA7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX21lbW9yeVN0YXRz
TG9jayk7Ci0gICAgICAgIG1fdG90YWxNZW1vcnlBbGxvY2F0ZWQgKz0gc19ibG9ja1NpemU7Ci0g
ICAgfQotCi0gICAgKm91dEJsb2NrID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0aW9uLmJhc2UoKSkg
QnVtcEJsb2NrKGFsbG9jYXRpb24pOwotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgYm9v
bCBCdW1wU3BhY2U6OmZpdHNJbkJsb2NrKEJ1bXBCbG9jayogYmxvY2ssIHNpemVfdCBieXRlcykK
LXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KGJsb2NrLT5tX29mZnNldCkgKyBieXRl
cyA8IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJsb2NrKSArIHNfYmxvY2tTaXplICYmIHN0YXRp
Y19jYXN0PGNoYXIqPihibG9jay0+bV9vZmZzZXQpICsgYnl0ZXMgPiBibG9jay0+bV9vZmZzZXQ7
Ci19Ci0KLWlubGluZSBib29sIEJ1bXBTcGFjZTo6Zml0c0luQ3VycmVudEJsb2NrKHNpemVfdCBi
eXRlcykKLXsKLSAgICByZXR1cm4gZml0c0luQmxvY2sobV9jdXJyZW50QmxvY2ssIGJ5dGVzKTsK
LX0KLQotaW5saW5lIENoZWNrZWRCb29sZWFuIEJ1bXBTcGFjZTo6dHJ5QWxsb2NhdGUoc2l6ZV90
IGJ5dGVzLCB2b2lkKiogb3V0UHRyKQotewotICAgIEFTU0VSVCghbV9oZWFwLT5nbG9iYWxEYXRh
KCktPmlzSW5pdGlhbGl6aW5nT2JqZWN0KCkpOwotCi0gICAgaWYgKGlzT3ZlcnNpemUoYnl0ZXMp
IHx8ICFmaXRzSW5DdXJyZW50QmxvY2soYnl0ZXMpKQotICAgICAgICByZXR1cm4gdHJ5QWxsb2Nh
dGVTbG93Q2FzZShieXRlcywgb3V0UHRyKTsKLSAgICAKLSAgICAqb3V0UHRyID0gYWxsb2NhdGVG
cm9tQmxvY2sobV9jdXJyZW50QmxvY2ssIGJ5dGVzKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
aW5saW5lIENoZWNrZWRCb29sZWFuIEJ1bXBTcGFjZTo6dHJ5QWxsb2NhdGVPdmVyc2l6ZShzaXpl
X3QgYnl0ZXMsIHZvaWQqKiBvdXRQdHIpCi17Ci0gICAgQVNTRVJUKGlzT3ZlcnNpemUoYnl0ZXMp
KTsKLSAgICAKLSAgICBzaXplX3QgYmxvY2tTaXplID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9m
PHNfcGFnZVNpemU+KHNpemVvZihCdW1wQmxvY2spICsgYnl0ZXMpOwotICAgIFBhZ2VBbGxvY2F0
aW9uQWxpZ25lZCBhbGxvY2F0aW9uID0gUGFnZUFsbG9jYXRpb25BbGlnbmVkOjphbGxvY2F0ZShi
bG9ja1NpemUsIHNfcGFnZVNpemUsIE9TQWxsb2NhdG9yOjpKU0dDSGVhcFBhZ2VzKTsKLSAgICBp
ZiAoIXN0YXRpY19jYXN0PGJvb2w+KGFsbG9jYXRpb24pKSB7Ci0gICAgICAgICpvdXRQdHIgPSAw
OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIEJ1bXBCbG9jayogYmxvY2sgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRpb24uYmFzZSgpKSBCdW1wQmxvY2soYWxsb2NhdGlvbik7Ci0g
ICAgbV9vdmVyc2l6ZUJsb2Nrcy5wdXNoKGJsb2NrKTsKLSAgICBBU1NFUlQoaXNQb2ludGVyQWxp
Z25lZChibG9jay0+bV9vZmZzZXQpKTsKLQotICAgIG1fb3ZlcnNpemVGaWx0ZXIuYWRkKHJlaW50
ZXJwcmV0X2Nhc3Q8Qml0cz4oYmxvY2spKTsKLSAgICAKLSAgICBtX3RvdGFsTWVtb3J5QWxsb2Nh
dGVkICs9IGJsb2NrU2l6ZTsKLSAgICBtX3RvdGFsTWVtb3J5VXRpbGl6ZWQgKz0gYnl0ZXM7Ci0K
LSAgICAqb3V0UHRyID0gYmxvY2stPm1fb2Zmc2V0OwotICAgIHJldHVybiB0cnVlOwotfQotCi1p
bmxpbmUgdm9pZCogQnVtcFNwYWNlOjphbGxvY2F0ZUZyb21CbG9jayhCdW1wQmxvY2sqIGJsb2Nr
LCBzaXplX3QgYnl0ZXMpCi17Ci0gICAgQVNTRVJUKCFpc092ZXJzaXplKGJ5dGVzKSk7Ci0gICAg
QVNTRVJUKGZpdHNJbkJsb2NrKGJsb2NrLCBieXRlcykpOwotICAgIEFTU0VSVChpc1BvaW50ZXJB
bGlnbmVkKGJsb2NrLT5tX29mZnNldCkpOwotICAgIAotICAgIHZvaWQqIHB0ciA9IGJsb2NrLT5t
X29mZnNldDsKLSAgICBBU1NFUlQoYmxvY2stPm1fb2Zmc2V0ID49IGJsb2NrLT5tX3BheWxvYWQg
JiYgYmxvY2stPm1fb2Zmc2V0IDwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYmxvY2spICsgc19i
bG9ja1NpemUpOwotICAgIGJsb2NrLT5tX29mZnNldCA9IHN0YXRpY19jYXN0PHZvaWQqPigoc3Rh
dGljX2Nhc3Q8Y2hhcio+KHB0cikgKyBieXRlcykpOwotICAgIEFTU0VSVChibG9jay0+bV9vZmZz
ZXQgPj0gYmxvY2stPm1fcGF5bG9hZCAmJiBibG9jay0+bV9vZmZzZXQgPCByZWludGVycHJldF9j
YXN0PGNoYXIqPihibG9jaykgKyBzX2Jsb2NrU2l6ZSk7Ci0KLSAgICBBU1NFUlQoaXNQb2ludGVy
QWxpZ25lZChwdHIpKTsKLSAgICByZXR1cm4gcHRyOwotfQotCi1pbmxpbmUgQ2hlY2tlZEJvb2xl
YW4gQnVtcFNwYWNlOjp0cnlSZWFsbG9jYXRlKHZvaWQqKiBwdHIsIHNpemVfdCBvbGRTaXplLCBz
aXplX3QgbmV3U2l6ZSkKLXsKLSAgICBpZiAob2xkU2l6ZSA+PSBuZXdTaXplKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAKLSAgICB2b2lkKiBvbGRQdHIgPSAqcHRyOwotICAgIEFTU0VSVCgh
bV9oZWFwLT5nbG9iYWxEYXRhKCktPmlzSW5pdGlhbGl6aW5nT2JqZWN0KCkpOwotCi0gICAgaWYg
KGlzT3ZlcnNpemUob2xkU2l6ZSkgfHwgaXNPdmVyc2l6ZShuZXdTaXplKSkKLSAgICAgICAgcmV0
dXJuIHRyeVJlYWxsb2NhdGVPdmVyc2l6ZShwdHIsIG9sZFNpemUsIG5ld1NpemUpOwotCi0gICAg
aWYgKHN0YXRpY19jYXN0PGNoYXIqPihvbGRQdHIpICsgb2xkU2l6ZSA9PSBtX2N1cnJlbnRCbG9j
ay0+bV9vZmZzZXQgJiYgb2xkUHRyID4gbV9jdXJyZW50QmxvY2sgJiYgb2xkUHRyIDwgcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4obV9jdXJyZW50QmxvY2spICsgc19ibG9ja1NpemUpIHsKLSAgICAg
ICAgbV9jdXJyZW50QmxvY2stPm1fb2Zmc2V0ID0gb2xkUHRyOwotICAgICAgICBpZiAoZml0c0lu
Q3VycmVudEJsb2NrKG5ld1NpemUpKSB7Ci0gICAgICAgICAgICBtX3RvdGFsTWVtb3J5VXRpbGl6
ZWQgKz0gbmV3U2l6ZSAtIG9sZFNpemU7Ci0gICAgICAgICAgICByZXR1cm4gYWxsb2NhdGVGcm9t
QmxvY2sobV9jdXJyZW50QmxvY2ssIG5ld1NpemUpOwotICAgICAgICB9Ci0gICAgfQotICAgIG1f
dG90YWxNZW1vcnlVdGlsaXplZCAtPSBvbGRTaXplOwotCi0gICAgdm9pZCogcmVzdWx0ID0gMDsK
LSAgICBpZiAoIXRyeUFsbG9jYXRlKG5ld1NpemUsICZyZXN1bHQpKSB7Ci0gICAgICAgICpwdHIg
PSAwOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIG1lbWNweShyZXN1bHQsIG9s
ZFB0ciwgb2xkU2l6ZSk7Ci0gICAgKnB0ciA9IHJlc3VsdDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotaW5saW5lIENoZWNrZWRCb29sZWFuIEJ1bXBTcGFjZTo6dHJ5UmVhbGxvY2F0ZU92ZXJzaXpl
KHZvaWQqKiBwdHIsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSkKLXsKLSAgICBBU1NF
UlQoaXNPdmVyc2l6ZShvbGRTaXplKSB8fCBpc092ZXJzaXplKG5ld1NpemUpKTsKLSAgICBBU1NF
UlQobmV3U2l6ZSA+IG9sZFNpemUpOwotCi0gICAgdm9pZCogb2xkUHRyID0gKnB0cjsKLSAgICAK
LSAgICB2b2lkKiBuZXdQdHIgPSAwOwotICAgIGlmICghdHJ5QWxsb2NhdGVPdmVyc2l6ZShuZXdT
aXplLCAmbmV3UHRyKSkgewotICAgICAgICAqcHRyID0gMDsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICBtZW1jcHkobmV3UHRyLCBvbGRQdHIsIG9sZFNpemUpOwotCi0gICAgaWYg
KGlzT3ZlcnNpemUob2xkU2l6ZSkpIHsKLSAgICAgICAgQnVtcEJsb2NrKiBvbGRCbG9jayA9IG92
ZXJzaXplQmxvY2tGb3Iob2xkUHRyKTsKLSAgICAgICAgbV9vdmVyc2l6ZUJsb2Nrcy5yZW1vdmUo
b2xkQmxvY2spOwotICAgICAgICBvbGRCbG9jay0+bV9hbGxvY2F0aW9uLmRlYWxsb2NhdGUoKTsK
LSAgICAgICAgbV90b3RhbE1lbW9yeUFsbG9jYXRlZCAtPSBvbGRTaXplICsgc2l6ZW9mKEJ1bXBC
bG9jayk7Ci0gICAgfQotICAgIAotICAgIG1fdG90YWxNZW1vcnlVdGlsaXplZCAtPSBvbGRTaXpl
OwotCi0gICAgKnB0ciA9IG5ld1B0cjsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotaW5saW5lIGJv
b2wgQnVtcFNwYWNlOjppc092ZXJzaXplKHNpemVfdCBieXRlcykKLXsKLSAgICByZXR1cm4gYnl0
ZXMgPiBzX21heEFsbG9jYXRpb25TaXplOwotfQotCi1pbmxpbmUgYm9vbCBCdW1wU3BhY2U6Omlz
UGlubmVkKHZvaWQqIHB0cikKLXsKLSAgICByZXR1cm4gYmxvY2tGb3IocHRyKS0+bV9pc1Bpbm5l
ZDsKLX0KLQotaW5saW5lIEJ1bXBCbG9jayogQnVtcFNwYWNlOjpvdmVyc2l6ZUJsb2NrRm9yKHZv
aWQqIHB0cikKLXsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxCdW1wQmxvY2sqPihyZWlu
dGVycHJldF9jYXN0PHNpemVfdD4ocHRyKSAmIHNfcGFnZU1hc2spOwotfQotCi1pbmxpbmUgQnVt
cEJsb2NrKiBCdW1wU3BhY2U6OmJsb2NrRm9yKHZvaWQqIHB0cikKLXsKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxCdW1wQmxvY2sqPihyZWludGVycHJldF9jYXN0PHNpemVfdD4ocHRyKSAm
IHNfYmxvY2tNYXNrKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCmluZGV4IGE1
MDlmMDZlMTc4YjgwNWE2MDViMDdmNTZhMDk1ZGUyMjkzMmQ4NmUuLmJiYzQxMTUyNmUzZDc0M2U0
MDA2OWYzNmEzM2NhODk2ZjE5ZGI1NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJDb25zZXJ2YXRpdmVSb290cy5oIgogCi0jaW5jbHVkZSAiQnVt
cFNwYWNlLmgiCi0jaW5jbHVkZSAiQnVtcFNwYWNlSW5saW5lTWV0aG9kcy5oIgorI2luY2x1ZGUg
IkNvcHlTcGFjZS5oIgorI2luY2x1ZGUgIkNvcHlTcGFjZUlubGluZU1ldGhvZHMuaCIKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdDb2RlQmxvY2tzLmgiCiAjaW5jbHVkZSAi
SlNDZWxsLmgiCkBAIC0zNiwxMiArMzYsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUNvbnNl
cnZhdGl2ZVJvb3RzOjpDb25zZXJ2YXRpdmVSb290cyhjb25zdCBNYXJrZWRCbG9ja1NldCogYmxv
Y2tzLCBCdW1wU3BhY2UqIGJ1bXBTcGFjZSkKK0NvbnNlcnZhdGl2ZVJvb3RzOjpDb25zZXJ2YXRp
dmVSb290cyhjb25zdCBNYXJrZWRCbG9ja1NldCogYmxvY2tzLCBDb3B5U3BhY2UqIGNvcHlTcGFj
ZSkKICAgICA6IG1fcm9vdHMobV9pbmxpbmVSb290cykKICAgICAsIG1fc2l6ZSgwKQogICAgICwg
bV9jYXBhY2l0eShpbmxpbmVDYXBhY2l0eSkKICAgICAsIG1fYmxvY2tzKGJsb2NrcykKLSAgICAs
IG1fYnVtcFNwYWNlKGJ1bXBTcGFjZSkKKyAgICAsIG1fY29weVNwYWNlKGNvcHlTcGFjZSkKIHsK
IH0KIApAQCAtNzIsOSArNzIsOSBAQCBpbmxpbmUgdm9pZCBDb25zZXJ2YXRpdmVSb290czo6Z2Vu
ZXJpY0FkZFBvaW50ZXIodm9pZCogcCwgVGlueUJsb29tRmlsdGVyIGZpbHRlcgogewogICAgIG1h
cmtIb29rLm1hcmsocCk7CiAgICAgCi0gICAgQnVtcEJsb2NrKiBibG9jazsKLSAgICBpZiAobV9i
dW1wU3BhY2UtPmNvbnRhaW5zKHAsIGJsb2NrKSkKLSAgICAgICAgbV9idW1wU3BhY2UtPnBpbihi
bG9jayk7CisgICAgQ29weUJsb2NrKiBibG9jazsKKyAgICBpZiAobV9jb3B5U3BhY2UtPmNvbnRh
aW5zKHAsIGJsb2NrKSkKKyAgICAgICAgbV9jb3B5U3BhY2UtPnBpbihibG9jayk7CiAgICAgCiAg
ICAgTWFya2VkQmxvY2sqIGNhbmRpZGF0ZSA9IE1hcmtlZEJsb2NrOjpibG9ja0ZvcihwKTsKICAg
ICBpZiAoZmlsdGVyLnJ1bGVPdXQocmVpbnRlcnByZXRfY2FzdDxCaXRzPihjYW5kaWRhdGUpKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9v
dHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmgKaW5k
ZXggNDBiMDk5NmQwOWExMDE4ZGZkYTYwNDQxZGRmZWNjMDExMmQ5MGI5Zi4uOTY1NGQzYWRmZTlh
NWQyMDI3ODQ2Yjc0NDYyNzc3ZGM2ZmI4OTFjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIEhlYXA7
CiAKIGNsYXNzIENvbnNlcnZhdGl2ZVJvb3RzIHsKIHB1YmxpYzoKLSAgICBDb25zZXJ2YXRpdmVS
b290cyhjb25zdCBNYXJrZWRCbG9ja1NldCosIEJ1bXBTcGFjZSopOworICAgIENvbnNlcnZhdGl2
ZVJvb3RzKGNvbnN0IE1hcmtlZEJsb2NrU2V0KiwgQ29weVNwYWNlKik7CiAgICAgfkNvbnNlcnZh
dGl2ZVJvb3RzKCk7CiAKICAgICB2b2lkIGFkZCh2b2lkKiBiZWdpbiwgdm9pZCogZW5kKTsKQEAg
LTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9zaXplOwogICAgIHNpemVfdCBt
X2NhcGFjaXR5OwogICAgIGNvbnN0IE1hcmtlZEJsb2NrU2V0KiBtX2Jsb2NrczsKLSAgICBCdW1w
U3BhY2UqIG1fYnVtcFNwYWNlOworICAgIENvcHlTcGFjZSogbV9jb3B5U3BhY2U7CiAgICAgSlND
ZWxsKiBtX2lubGluZVJvb3RzW2lubGluZUNhcGFjaXR5XTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQ29weUJsb2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRjZDliOWVhMjcyZTExYTQ2ZmQ2ZGI1
OGMzOTk4MTlmOTJkYmVjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0NvcHlCbG9jay5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDb3B5QmxvY2tfaAorI2RlZmluZSBD
b3B5QmxvY2tfaAorCisjaW5jbHVkZSAiSGVhcEJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBDb3B5U3BhY2U7CisKK2NsYXNzIENvcHlCbG9jayA6IHB1YmxpYyBIZWFwQmxvY2sg
eworICAgIGZyaWVuZCBjbGFzcyBDb3B5U3BhY2U7CitwdWJsaWM6CisgICAgQ29weUJsb2NrKFBh
Z2VBbGxvY2F0aW9uQWxpZ25lZCYgYWxsb2NhdGlvbikKKyAgICAgICAgOiBIZWFwQmxvY2soYWxs
b2NhdGlvbikKKyAgICAgICAgLCBtX29mZnNldChtX3BheWxvYWQpCisgICAgICAgICwgbV9pc1Bp
bm5lZChmYWxzZSkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQqIG1fb2Zmc2V0
OworICAgIHVpbnRwdHJfdCBtX2lzUGlubmVkOworICAgIGNoYXIgbV9wYXlsb2FkWzFdOworfTsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29weVNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvcHlTcGFjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQwZmM2YTExNTBkOWRhYWI2N2E4ODkyNzNiMDVl
YmU1YTUwMDJkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvcHlTcGFjZS5jcHAKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29w
eVNwYWNlLmgiCisKKyNpbmNsdWRlICJDb3B5U3BhY2VJbmxpbmVNZXRob2RzLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitDaGVja2VkQm9vbGVhbiBDb3B5U3BhY2U6OnRyeUFsbG9jYXRlU2xvd0Nh
c2Uoc2l6ZV90IGJ5dGVzLCB2b2lkKiogb3V0UHRyKQoreworICAgIGlmIChpc092ZXJzaXplKGJ5
dGVzKSkKKyAgICAgICAgcmV0dXJuIHRyeUFsbG9jYXRlT3ZlcnNpemUoYnl0ZXMsIG91dFB0cik7
CisgICAgCisgICAgbV90b3RhbE1lbW9yeVV0aWxpemVkICs9IHN0YXRpY19jYXN0PHNpemVfdD4o
c3RhdGljX2Nhc3Q8Y2hhcio+KG1fY3VycmVudEJsb2NrLT5tX29mZnNldCkgLSBtX2N1cnJlbnRC
bG9jay0+bV9wYXlsb2FkKTsKKyAgICBpZiAoIWFkZE5ld0Jsb2NrKCkpIHsKKyAgICAgICAgKm91
dFB0ciA9IDA7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgbV90b1NwYWNlRmls
dGVyLmFkZChyZWludGVycHJldF9jYXN0PEJpdHM+KG1fY3VycmVudEJsb2NrKSk7CisgICAgbV90
b1NwYWNlU2V0LmFkZChtX2N1cnJlbnRCbG9jayk7CisgICAgKm91dFB0ciA9IGFsbG9jYXRlRnJv
bUJsb2NrKG1fY3VycmVudEJsb2NrLCBieXRlcyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q29weVNwYWNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5U3BhY2UuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iNjMzZTMzOTYwNWVkYzc3MTcyZTMwM2E2OWVlYWE1MDgwMzM1MWZjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVNwYWNlLmgKQEAgLTAs
MCArMSwxMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBDb3B5U3BhY2VfaAorI2RlZmluZSBDb3B5U3BhY2VfaAorCisjaW5jbHVkZSAi
SGVhcEJsb2NrLmgiCisjaW5jbHVkZSAiVGlueUJsb29tRmlsdGVyLmgiCisjaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEJvb2xlYW4uaD4KKyNpbmNsdWRl
IDx3dGYvRG91Ymx5TGlua2VkTGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5j
bHVkZSA8d3RmL09TQWxsb2NhdG9yLmg+CisjaW5jbHVkZSA8d3RmL1BhZ2VBbGxvY2F0aW9uQWxp
Z25lZC5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nUHJpbWl0aXZlcy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSGVhcDsKK2Ns
YXNzIENvcHlCbG9jazsKK2NsYXNzIEhlYXBCbG9jazsKKworY2xhc3MgQ29weVNwYWNlIHsKKyAg
ICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7CitwdWJsaWM6CisgICAgQ29weVNwYWNlKEhlYXAq
KTsKKyAgICB2b2lkIGluaXQoKTsKKworICAgIENoZWNrZWRCb29sZWFuIHRyeUFsbG9jYXRlKHNp
emVfdCwgdm9pZCoqKTsKKyAgICBDaGVja2VkQm9vbGVhbiB0cnlSZWFsbG9jYXRlKHZvaWQqKiwg
c2l6ZV90LCBzaXplX3QpOworICAgIAorICAgIHZvaWQgc3RhcnRlZENvcHlpbmcoKTsKKyAgICB2
b2lkIGRvbmVDb3B5aW5nKCk7CisgICAgYm9vbCBpc0luQ29weVBoYXNlKCkgeyByZXR1cm4gbV9p
bkNvcHlpbmdQaGFzZTsgfQorCisgICAgdm9pZCBwaW4oQ29weUJsb2NrKik7CisgICAgYm9vbCBp
c1Bpbm5lZCh2b2lkKik7CisKKyAgICBib29sIGNvbnRhaW5zKHZvaWQqLCBDb3B5QmxvY2sqJik7
CisKKyAgICBzaXplX3QgdG90YWxNZW1vcnlBbGxvY2F0ZWQoKSB7IHJldHVybiBtX3RvdGFsTWVt
b3J5QWxsb2NhdGVkOyB9CisgICAgc2l6ZV90IHRvdGFsTWVtb3J5VXRpbGl6ZWQoKSB7IHJldHVy
biBtX3RvdGFsTWVtb3J5VXRpbGl6ZWQ7IH0KKworICAgIHN0YXRpYyBDb3B5QmxvY2sqIGJsb2Nr
Rm9yKHZvaWQqKTsKKworcHJpdmF0ZToKKyAgICBDaGVja2VkQm9vbGVhbiB0cnlBbGxvY2F0ZVNs
b3dDYXNlKHNpemVfdCwgdm9pZCoqKTsKKyAgICBDaGVja2VkQm9vbGVhbiBhZGROZXdCbG9jaygp
OworICAgIENoZWNrZWRCb29sZWFuIGFsbG9jYXRlTmV3QmxvY2soQ29weUJsb2NrKiopOworICAg
IGJvb2wgZml0c0luQ3VycmVudEJsb2NrKHNpemVfdCk7CisgICAgCisgICAgc3RhdGljIHZvaWQq
IGFsbG9jYXRlRnJvbUJsb2NrKENvcHlCbG9jayosIHNpemVfdCk7CisgICAgQ2hlY2tlZEJvb2xl
YW4gdHJ5QWxsb2NhdGVPdmVyc2l6ZShzaXplX3QsIHZvaWQqKik7CisgICAgQ2hlY2tlZEJvb2xl
YW4gdHJ5UmVhbGxvY2F0ZU92ZXJzaXplKHZvaWQqKiwgc2l6ZV90LCBzaXplX3QpOworICAgIAor
ICAgIHN0YXRpYyBib29sIGlzT3ZlcnNpemUoc2l6ZV90KTsKKyAgICAKKyAgICBDaGVja2VkQm9v
bGVhbiBib3Jyb3dCbG9jayhDb3B5QmxvY2sqKik7CisgICAgQ2hlY2tlZEJvb2xlYW4gZ2V0RnJl
c2hCbG9jayhBbGxvY2F0aW9uRWZmb3J0LCBDb3B5QmxvY2sqKik7CisgICAgdm9pZCBkb25lRmls
bGluZ0Jsb2NrKENvcHlCbG9jayopOworICAgIHZvaWQgcmVjeWNsZUJsb2NrKENvcHlCbG9jayop
OworICAgIHN0YXRpYyBib29sIGZpdHNJbkJsb2NrKENvcHlCbG9jayosIHNpemVfdCk7CisgICAg
c3RhdGljIENvcHlCbG9jayogb3ZlcnNpemVCbG9ja0Zvcih2b2lkKiBwdHIpOworCisgICAgSGVh
cCogbV9oZWFwOworCisgICAgQ29weUJsb2NrKiBtX2N1cnJlbnRCbG9jazsKKworICAgIFRpbnlC
bG9vbUZpbHRlciBtX3RvU3BhY2VGaWx0ZXI7CisgICAgVGlueUJsb29tRmlsdGVyIG1fb3ZlcnNp
emVGaWx0ZXI7CisgICAgSGFzaFNldDxDb3B5QmxvY2sqPiBtX3RvU3BhY2VTZXQ7CisKKyAgICBN
dXRleCBtX3RvU3BhY2VMb2NrOworICAgIE11dGV4IG1fbWVtb3J5U3RhdHNMb2NrOworCisgICAg
RG91Ymx5TGlua2VkTGlzdDxIZWFwQmxvY2s+KiBtX3RvU3BhY2U7CisgICAgRG91Ymx5TGlua2Vk
TGlzdDxIZWFwQmxvY2s+KiBtX2Zyb21TcGFjZTsKKyAgICAKKyAgICBEb3VibHlMaW5rZWRMaXN0
PEhlYXBCbG9jaz4gbV9ibG9ja3MxOworICAgIERvdWJseUxpbmtlZExpc3Q8SGVhcEJsb2NrPiBt
X2Jsb2NrczI7CisgICAgRG91Ymx5TGlua2VkTGlzdDxIZWFwQmxvY2s+IG1fb3ZlcnNpemVCbG9j
a3M7CisgICAKKyAgICBzaXplX3QgbV90b3RhbE1lbW9yeUFsbG9jYXRlZDsKKyAgICBzaXplX3Qg
bV90b3RhbE1lbW9yeVV0aWxpemVkOworCisgICAgYm9vbCBtX2luQ29weWluZ1BoYXNlOworCisg
ICAgTXV0ZXggbV9sb2FuZWRCbG9ja3NMb2NrOyAKKyAgICBUaHJlYWRDb25kaXRpb24gbV9sb2Fu
ZWRCbG9ja3NDb25kaXRpb247CisgICAgc2l6ZV90IG1fbnVtYmVyT2ZMb2FuZWRCbG9ja3M7CisK
KyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNfYmxvY2tTaXplID0gNjQgKiBLQjsKKyAgICBzdGF0
aWMgY29uc3Qgc2l6ZV90IHNfbWF4QWxsb2NhdGlvblNpemUgPSAzMiAqIEtCOworICAgIHN0YXRp
YyBjb25zdCBzaXplX3Qgc19wYWdlU2l6ZSA9IDQgKiBLQjsKKyAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IHNfcGFnZU1hc2sgPSB+KHNfcGFnZVNpemUgLSAxKTsKKyAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IHNfaW5pdGlhbEJsb2NrTnVtID0gMTY7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzX2Js
b2NrTWFzayA9IH4oc19ibG9ja1NpemUgLSAxKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlTcGFj
ZUlubGluZU1ldGhvZHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlTcGFjZUlu
bGluZU1ldGhvZHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YmQ3ZmE5MjU4ZTgzNDE3Y2ZmYjFhMzQ0NjFmMjBh
OGFhMjRjMzU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q29weVNwYWNlSW5saW5lTWV0aG9kcy5oCkBAIC0wLDAgKzEsNDAwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29weVNwYWNlSW5saW5l
TWV0aG9kc19oCisjZGVmaW5lIENvcHlTcGFjZUlubGluZU1ldGhvZHNfaAorCisjaW5jbHVkZSAi
Q29weUJsb2NrLmgiCisjaW5jbHVkZSAiQ29weVNwYWNlLmgiCisjaW5jbHVkZSAiSGVhcC5oIgor
I2luY2x1ZGUgIkhlYXBCbG9jay5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1
ZGUgPHd0Zi9DaGVja2VkQm9vbGVhbi5oPgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5lIENv
cHlTcGFjZTo6Q29weVNwYWNlKEhlYXAqIGhlYXApCisgICAgOiBtX2hlYXAoaGVhcCkKKyAgICAs
IG1fY3VycmVudEJsb2NrKDApCisgICAgLCBtX3RvU3BhY2UoMCkKKyAgICAsIG1fZnJvbVNwYWNl
KDApCisgICAgLCBtX3RvdGFsTWVtb3J5QWxsb2NhdGVkKDApCisgICAgLCBtX3RvdGFsTWVtb3J5
VXRpbGl6ZWQoMCkKKyAgICAsIG1faW5Db3B5aW5nUGhhc2UoZmFsc2UpCisgICAgLCBtX251bWJl
ck9mTG9hbmVkQmxvY2tzKDApCit7Cit9CisKK2lubGluZSB2b2lkIENvcHlTcGFjZTo6aW5pdCgp
Cit7CisgICAgbV90b1NwYWNlID0gJm1fYmxvY2tzMTsKKyAgICBtX2Zyb21TcGFjZSA9ICZtX2Js
b2NrczI7CisgICAgCisgICAgbV90b3RhbE1lbW9yeUFsbG9jYXRlZCArPSBzX2Jsb2NrU2l6ZSAq
IHNfaW5pdGlhbEJsb2NrTnVtOworCisgICAgaWYgKCFhZGROZXdCbG9jaygpKQorICAgICAgICBD
UkFTSCgpOworfSAgIAorCitpbmxpbmUgYm9vbCBDb3B5U3BhY2U6OmNvbnRhaW5zKHZvaWQqIHB0
ciwgQ29weUJsb2NrKiYgcmVzdWx0KQoreworICAgIENvcHlCbG9jayogYmxvY2sgPSBibG9ja0Zv
cihwdHIpOworICAgIHJlc3VsdCA9IGJsb2NrOworICAgIHJldHVybiAhbV90b1NwYWNlRmlsdGVy
LnJ1bGVPdXQocmVpbnRlcnByZXRfY2FzdDxCaXRzPihibG9jaykpICYmIG1fdG9TcGFjZVNldC5j
b250YWlucyhibG9jayk7Cit9CisKK2lubGluZSB2b2lkIENvcHlTcGFjZTo6cGluKENvcHlCbG9j
ayogYmxvY2spCit7CisgICAgYmxvY2stPm1faXNQaW5uZWQgPSB0cnVlOworfQorCitpbmxpbmUg
dm9pZCBDb3B5U3BhY2U6OnN0YXJ0ZWRDb3B5aW5nKCkKK3sKKyAgICBEb3VibHlMaW5rZWRMaXN0
PEhlYXBCbG9jaz4qIHRlbXAgPSBtX2Zyb21TcGFjZTsKKyAgICBtX2Zyb21TcGFjZSA9IG1fdG9T
cGFjZTsKKyAgICBtX3RvU3BhY2UgPSB0ZW1wOworCisgICAgbV90b1NwYWNlRmlsdGVyLnJlc2V0
KCk7CisKKyAgICBtX3RvdGFsTWVtb3J5VXRpbGl6ZWQgPSAwOworCisgICAgQVNTRVJUKCFtX2lu
Q29weWluZ1BoYXNlKTsKKyAgICBBU1NFUlQoIW1fbnVtYmVyT2ZMb2FuZWRCbG9ja3MpOworICAg
IG1faW5Db3B5aW5nUGhhc2UgPSB0cnVlOworfQorCitpbmxpbmUgdm9pZCBDb3B5U3BhY2U6OmRv
bmVDb3B5aW5nKCkKK3sKKyAgICB7CisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvYW5l
ZEJsb2Nrc0xvY2spOworICAgICAgICB3aGlsZSAobV9udW1iZXJPZkxvYW5lZEJsb2NrcyA+IDAp
CisgICAgICAgICAgICBtX2xvYW5lZEJsb2Nrc0NvbmRpdGlvbi53YWl0KG1fbG9hbmVkQmxvY2tz
TG9jayk7CisgICAgfQorCisgICAgQVNTRVJUKG1faW5Db3B5aW5nUGhhc2UpOworICAgIG1faW5D
b3B5aW5nUGhhc2UgPSBmYWxzZTsKKyAgICB3aGlsZSAoIW1fZnJvbVNwYWNlLT5pc0VtcHR5KCkp
IHsKKyAgICAgICAgQ29weUJsb2NrKiBibG9jayA9IHN0YXRpY19jYXN0PENvcHlCbG9jayo+KG1f
ZnJvbVNwYWNlLT5yZW1vdmVIZWFkKCkpOworICAgICAgICBpZiAoYmxvY2stPm1faXNQaW5uZWQp
IHsKKyAgICAgICAgICAgIGJsb2NrLT5tX2lzUGlubmVkID0gZmFsc2U7CisgICAgICAgICAgICBt
X3RvU3BhY2UtPnB1c2goYmxvY2spOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KworICAgICAgICBtX3RvU3BhY2VTZXQucmVtb3ZlKGJsb2NrKTsKKyAgICAgICAgeworICAgICAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1faGVhcC0+bV9mcmVlQmxvY2tMb2NrKTsKKyAgICAg
ICAgICAgIG1faGVhcC0+bV9mcmVlQmxvY2tzLnB1c2goYmxvY2spOworICAgICAgICAgICAgbV9o
ZWFwLT5tX251bWJlck9mRnJlZUJsb2NrcysrOworICAgICAgICB9CisgICAgfQorCisgICAgQ29w
eUJsb2NrKiBjdXJyID0gc3RhdGljX2Nhc3Q8Q29weUJsb2NrKj4obV9vdmVyc2l6ZUJsb2Nrcy5o
ZWFkKCkpOworICAgIHdoaWxlIChjdXJyKSB7CisgICAgICAgIENvcHlCbG9jayogbmV4dCA9IHN0
YXRpY19jYXN0PENvcHlCbG9jayo+KGN1cnItPm5leHQoKSk7CisgICAgICAgIGlmICghY3Vyci0+
bV9pc1Bpbm5lZCkgeworICAgICAgICAgICAgbV9vdmVyc2l6ZUJsb2Nrcy5yZW1vdmUoY3Vycik7
CisgICAgICAgICAgICBtX3RvdGFsTWVtb3J5QWxsb2NhdGVkIC09IGN1cnItPm1fYWxsb2NhdGlv
bi5zaXplKCk7CisgICAgICAgICAgICBtX3RvdGFsTWVtb3J5VXRpbGl6ZWQgLT0gY3Vyci0+bV9h
bGxvY2F0aW9uLnNpemUoKSAtIHNpemVvZihDb3B5QmxvY2spOworICAgICAgICAgICAgY3Vyci0+
bV9hbGxvY2F0aW9uLmRlYWxsb2NhdGUoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBj
dXJyLT5tX2lzUGlubmVkID0gZmFsc2U7CisgICAgICAgIGN1cnIgPSBuZXh0OworICAgIH0KKwor
ICAgIGlmICghKG1fY3VycmVudEJsb2NrID0gc3RhdGljX2Nhc3Q8Q29weUJsb2NrKj4obV90b1Nw
YWNlLT5oZWFkKCkpKSkKKyAgICAgICAgaWYgKCFhZGROZXdCbG9jaygpKQorICAgICAgICAgICAg
Q1JBU0goKTsKK30KKworaW5saW5lIHZvaWQgQ29weVNwYWNlOjpkb25lRmlsbGluZ0Jsb2NrKENv
cHlCbG9jayogYmxvY2spCit7CisgICAgQVNTRVJUKGJsb2NrKTsKKyAgICBBU1NFUlQoYmxvY2st
Pm1fb2Zmc2V0IDwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYmxvY2spICsgc19ibG9ja1NpemUp
OworICAgIEFTU0VSVChtX2luQ29weWluZ1BoYXNlKTsKKworICAgIGlmIChibG9jay0+bV9vZmZz
ZXQgPT0gYmxvY2stPm1fcGF5bG9hZCkgeworICAgICAgICByZWN5Y2xlQmxvY2soYmxvY2spOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgeworICAgICAgICBNdXRleExvY2tlciBsb2Nr
ZXIobV90b1NwYWNlTG9jayk7CisgICAgICAgIG1fdG9TcGFjZS0+cHVzaChibG9jayk7CisgICAg
ICAgIG1fdG9TcGFjZVNldC5hZGQoYmxvY2spOworICAgICAgICBtX3RvU3BhY2VGaWx0ZXIuYWRk
KHJlaW50ZXJwcmV0X2Nhc3Q8Qml0cz4oYmxvY2spKTsKKyAgICB9CisKKyAgICB7CisgICAgICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX21lbW9yeVN0YXRzTG9jayk7CisgICAgICAgIG1fdG90YWxN
ZW1vcnlVdGlsaXplZCArPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRpY19jYXN0PGNoYXIqPihi
bG9jay0+bV9vZmZzZXQpIC0gYmxvY2stPm1fcGF5bG9hZCk7CisgICAgfQorCisgICAgeworICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2FuZWRCbG9ja3NMb2NrKTsKKyAgICAgICAgQVNT
RVJUKG1fbnVtYmVyT2ZMb2FuZWRCbG9ja3MgPiAwKTsKKyAgICAgICAgbV9udW1iZXJPZkxvYW5l
ZEJsb2Nrcy0tOworICAgICAgICBpZiAoIW1fbnVtYmVyT2ZMb2FuZWRCbG9ja3MpCisgICAgICAg
ICAgICBtX2xvYW5lZEJsb2Nrc0NvbmRpdGlvbi5zaWduYWwoKTsKKyAgICB9Cit9CisKK2lubGlu
ZSB2b2lkIENvcHlTcGFjZTo6cmVjeWNsZUJsb2NrKENvcHlCbG9jayogYmxvY2spCit7CisgICAg
eworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9oZWFwLT5tX2ZyZWVCbG9ja0xvY2spOwor
ICAgICAgICBtX2hlYXAtPm1fZnJlZUJsb2Nrcy5wdXNoKGJsb2NrKTsKKyAgICAgICAgbV9oZWFw
LT5tX251bWJlck9mRnJlZUJsb2NrcysrOworICAgIH0KKworICAgIHsKKyAgICAgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fbG9hbmVkQmxvY2tzTG9jayk7CisgICAgICAgIEFTU0VSVChtX251bWJl
ck9mTG9hbmVkQmxvY2tzID4gMCk7CisgICAgICAgIG1fbnVtYmVyT2ZMb2FuZWRCbG9ja3MtLTsK
KyAgICAgICAgaWYgKCFtX251bWJlck9mTG9hbmVkQmxvY2tzKQorICAgICAgICAgICAgbV9sb2Fu
ZWRCbG9ja3NDb25kaXRpb24uc2lnbmFsKCk7CisgICAgfQorfQorCitpbmxpbmUgQ2hlY2tlZEJv
b2xlYW4gQ29weVNwYWNlOjpnZXRGcmVzaEJsb2NrKEFsbG9jYXRpb25FZmZvcnQgYWxsb2NhdGlv
bkVmZm9ydCwgQ29weUJsb2NrKiogb3V0QmxvY2spCit7CisgICAgSGVhcEJsb2NrKiBoZWFwQmxv
Y2sgPSAwOworICAgIENvcHlCbG9jayogYmxvY2sgPSAwOworICAgIHsKKyAgICAgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1faGVhcC0+bV9mcmVlQmxvY2tMb2NrKTsKKyAgICAgICAgaWYgKCFtX2hl
YXAtPm1fZnJlZUJsb2Nrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGhlYXBCbG9jayA9IG1f
aGVhcC0+bV9mcmVlQmxvY2tzLnJlbW92ZUhlYWQoKTsKKyAgICAgICAgICAgIG1faGVhcC0+bV9u
dW1iZXJPZkZyZWVCbG9ja3MtLTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoaGVhcEJsb2Nr
KQorICAgICAgICBibG9jayA9IG5ldyAoTm90TnVsbCwgaGVhcEJsb2NrKSBDb3B5QmxvY2soaGVh
cEJsb2NrLT5tX2FsbG9jYXRpb24pOworICAgIGVsc2UgaWYgKGFsbG9jYXRpb25FZmZvcnQgPT0g
QWxsb2NhdGlvbk11c3RTdWNjZWVkKSB7CisgICAgICAgIGlmICghYWxsb2NhdGVOZXdCbG9jaygm
YmxvY2spKSB7CisgICAgICAgICAgICAqb3V0QmxvY2sgPSAwOworICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoYWxsb2NhdGlvbkVmZm9ydCA9PSBBbGxvY2F0aW9u
Q2FuRmFpbCk7CisgICAgICAgIGlmIChtX2hlYXAtPndhdGVyTWFyaygpID49IG1faGVhcC0+aGln
aFdhdGVyTWFyaygpICYmIG1faGVhcC0+bV9pc1NhZmVUb0NvbGxlY3QpCisgICAgICAgICAgICBt
X2hlYXAtPmNvbGxlY3QoSGVhcDo6RG9Ob3RTd2VlcCk7CisgICAgICAgIAorICAgICAgICBpZiAo
IWdldEZyZXNoQmxvY2soQWxsb2NhdGlvbk11c3RTdWNjZWVkLCAmYmxvY2spKSB7CisgICAgICAg
ICAgICAqb3V0QmxvY2sgPSAwOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgQVNTRVJUKGJs
b2NrKTsKKyAgICBBU1NFUlQoaXNQb2ludGVyQWxpZ25lZChibG9jay0+bV9vZmZzZXQpKTsKKyAg
ICAqb3V0QmxvY2sgPSBibG9jazsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5saW5lIENoZWNr
ZWRCb29sZWFuIENvcHlTcGFjZTo6Ym9ycm93QmxvY2soQ29weUJsb2NrKiogb3V0QmxvY2spCit7
CisgICAgQ29weUJsb2NrKiBibG9jayA9IDA7CisgICAgaWYgKCFnZXRGcmVzaEJsb2NrKEFsbG9j
YXRpb25NdXN0U3VjY2VlZCwgJmJsb2NrKSkgeworICAgICAgICAqb3V0QmxvY2sgPSAwOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgQVNTRVJUKG1faW5Db3B5aW5nUGhhc2Up
OworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvYW5lZEJsb2Nrc0xvY2spOworICAgIG1fbnVt
YmVyT2ZMb2FuZWRCbG9ja3MrKzsKKworICAgIEFTU0VSVChibG9jay0+bV9vZmZzZXQgPT0gYmxv
Y2stPm1fcGF5bG9hZCk7CisgICAgKm91dEJsb2NrID0gYmxvY2s7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2lubGluZSBDaGVja2VkQm9vbGVhbiBDb3B5U3BhY2U6OmFkZE5ld0Jsb2NrKCkKK3sK
KyAgICBDb3B5QmxvY2sqIGJsb2NrID0gMDsKKyAgICBpZiAoIWdldEZyZXNoQmxvY2soQWxsb2Nh
dGlvbkNhbkZhaWwsICZibG9jaykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisg
ICAgbV90b1NwYWNlLT5wdXNoKGJsb2NrKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrOwor
ICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgQ2hlY2tlZEJvb2xlYW4gQ29weVNwYWNlOjph
bGxvY2F0ZU5ld0Jsb2NrKENvcHlCbG9jayoqIG91dEJsb2NrKQoreworICAgIFBhZ2VBbGxvY2F0
aW9uQWxpZ25lZCBhbGxvY2F0aW9uID0gUGFnZUFsbG9jYXRpb25BbGlnbmVkOjphbGxvY2F0ZShz
X2Jsb2NrU2l6ZSwgc19ibG9ja1NpemUsIE9TQWxsb2NhdG9yOjpKU0dDSGVhcFBhZ2VzKTsKKyAg
ICBpZiAoIXN0YXRpY19jYXN0PGJvb2w+KGFsbG9jYXRpb24pKSB7CisgICAgICAgICpvdXRCbG9j
ayA9IDA7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIE11
dGV4TG9ja2VyIGxvY2tlcihtX21lbW9yeVN0YXRzTG9jayk7CisgICAgICAgIG1fdG90YWxNZW1v
cnlBbGxvY2F0ZWQgKz0gc19ibG9ja1NpemU7CisgICAgfQorCisgICAgKm91dEJsb2NrID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0aW9uLmJhc2UoKSkgQ29weUJsb2NrKGFsbG9jYXRpb24pOworICAg
IHJldHVybiB0cnVlOworfQorCitpbmxpbmUgYm9vbCBDb3B5U3BhY2U6OmZpdHNJbkJsb2NrKENv
cHlCbG9jayogYmxvY2ssIHNpemVfdCBieXRlcykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y2hhcio+KGJsb2NrLT5tX29mZnNldCkgKyBieXRlcyA8IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KGJsb2NrKSArIHNfYmxvY2tTaXplICYmIHN0YXRpY19jYXN0PGNoYXIqPihibG9jay0+bV9vZmZz
ZXQpICsgYnl0ZXMgPiBibG9jay0+bV9vZmZzZXQ7Cit9CisKK2lubGluZSBib29sIENvcHlTcGFj
ZTo6Zml0c0luQ3VycmVudEJsb2NrKHNpemVfdCBieXRlcykKK3sKKyAgICByZXR1cm4gZml0c0lu
QmxvY2sobV9jdXJyZW50QmxvY2ssIGJ5dGVzKTsKK30KKworaW5saW5lIENoZWNrZWRCb29sZWFu
IENvcHlTcGFjZTo6dHJ5QWxsb2NhdGUoc2l6ZV90IGJ5dGVzLCB2b2lkKiogb3V0UHRyKQorewor
ICAgIEFTU0VSVCghbV9oZWFwLT5nbG9iYWxEYXRhKCktPmlzSW5pdGlhbGl6aW5nT2JqZWN0KCkp
OworCisgICAgaWYgKGlzT3ZlcnNpemUoYnl0ZXMpIHx8ICFmaXRzSW5DdXJyZW50QmxvY2soYnl0
ZXMpKQorICAgICAgICByZXR1cm4gdHJ5QWxsb2NhdGVTbG93Q2FzZShieXRlcywgb3V0UHRyKTsK
KyAgICAKKyAgICAqb3V0UHRyID0gYWxsb2NhdGVGcm9tQmxvY2sobV9jdXJyZW50QmxvY2ssIGJ5
dGVzKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5saW5lIENoZWNrZWRCb29sZWFuIENvcHlT
cGFjZTo6dHJ5QWxsb2NhdGVPdmVyc2l6ZShzaXplX3QgYnl0ZXMsIHZvaWQqKiBvdXRQdHIpCit7
CisgICAgQVNTRVJUKGlzT3ZlcnNpemUoYnl0ZXMpKTsKKyAgICAKKyAgICBzaXplX3QgYmxvY2tT
aXplID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNfcGFnZVNpemU+KHNpemVvZihDb3B5Qmxv
Y2spICsgYnl0ZXMpOworICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCBhbGxvY2F0aW9uID0gUGFn
ZUFsbG9jYXRpb25BbGlnbmVkOjphbGxvY2F0ZShibG9ja1NpemUsIHNfcGFnZVNpemUsIE9TQWxs
b2NhdG9yOjpKU0dDSGVhcFBhZ2VzKTsKKyAgICBpZiAoIXN0YXRpY19jYXN0PGJvb2w+KGFsbG9j
YXRpb24pKSB7CisgICAgICAgICpvdXRQdHIgPSAwOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIENvcHlCbG9jayogYmxvY2sgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRpb24uYmFz
ZSgpKSBDb3B5QmxvY2soYWxsb2NhdGlvbik7CisgICAgbV9vdmVyc2l6ZUJsb2Nrcy5wdXNoKGJs
b2NrKTsKKyAgICBBU1NFUlQoaXNQb2ludGVyQWxpZ25lZChibG9jay0+bV9vZmZzZXQpKTsKKwor
ICAgIG1fb3ZlcnNpemVGaWx0ZXIuYWRkKHJlaW50ZXJwcmV0X2Nhc3Q8Qml0cz4oYmxvY2spKTsK
KyAgICAKKyAgICBtX3RvdGFsTWVtb3J5QWxsb2NhdGVkICs9IGJsb2NrU2l6ZTsKKyAgICBtX3Rv
dGFsTWVtb3J5VXRpbGl6ZWQgKz0gYnl0ZXM7CisKKyAgICAqb3V0UHRyID0gYmxvY2stPm1fb2Zm
c2V0OworICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgdm9pZCogQ29weVNwYWNlOjphbGxv
Y2F0ZUZyb21CbG9jayhDb3B5QmxvY2sqIGJsb2NrLCBzaXplX3QgYnl0ZXMpCit7CisgICAgQVNT
RVJUKCFpc092ZXJzaXplKGJ5dGVzKSk7CisgICAgQVNTRVJUKGZpdHNJbkJsb2NrKGJsb2NrLCBi
eXRlcykpOworICAgIEFTU0VSVChpc1BvaW50ZXJBbGlnbmVkKGJsb2NrLT5tX29mZnNldCkpOwor
ICAgIAorICAgIHZvaWQqIHB0ciA9IGJsb2NrLT5tX29mZnNldDsKKyAgICBBU1NFUlQoYmxvY2st
Pm1fb2Zmc2V0ID49IGJsb2NrLT5tX3BheWxvYWQgJiYgYmxvY2stPm1fb2Zmc2V0IDwgcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oYmxvY2spICsgc19ibG9ja1NpemUpOworICAgIGJsb2NrLT5tX29m
ZnNldCA9IHN0YXRpY19jYXN0PHZvaWQqPigoc3RhdGljX2Nhc3Q8Y2hhcio+KHB0cikgKyBieXRl
cykpOworICAgIEFTU0VSVChibG9jay0+bV9vZmZzZXQgPj0gYmxvY2stPm1fcGF5bG9hZCAmJiBi
bG9jay0+bV9vZmZzZXQgPCByZWludGVycHJldF9jYXN0PGNoYXIqPihibG9jaykgKyBzX2Jsb2Nr
U2l6ZSk7CisKKyAgICBBU1NFUlQoaXNQb2ludGVyQWxpZ25lZChwdHIpKTsKKyAgICByZXR1cm4g
cHRyOworfQorCitpbmxpbmUgQ2hlY2tlZEJvb2xlYW4gQ29weVNwYWNlOjp0cnlSZWFsbG9jYXRl
KHZvaWQqKiBwdHIsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSkKK3sKKyAgICBpZiAo
b2xkU2l6ZSA+PSBuZXdTaXplKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICB2b2lk
KiBvbGRQdHIgPSAqcHRyOworICAgIEFTU0VSVCghbV9oZWFwLT5nbG9iYWxEYXRhKCktPmlzSW5p
dGlhbGl6aW5nT2JqZWN0KCkpOworCisgICAgaWYgKGlzT3ZlcnNpemUob2xkU2l6ZSkgfHwgaXNP
dmVyc2l6ZShuZXdTaXplKSkKKyAgICAgICAgcmV0dXJuIHRyeVJlYWxsb2NhdGVPdmVyc2l6ZShw
dHIsIG9sZFNpemUsIG5ld1NpemUpOworCisgICAgaWYgKHN0YXRpY19jYXN0PGNoYXIqPihvbGRQ
dHIpICsgb2xkU2l6ZSA9PSBtX2N1cnJlbnRCbG9jay0+bV9vZmZzZXQgJiYgb2xkUHRyID4gbV9j
dXJyZW50QmxvY2sgJiYgb2xkUHRyIDwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9jdXJyZW50
QmxvY2spICsgc19ibG9ja1NpemUpIHsKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPm1fb2Zmc2V0
ID0gb2xkUHRyOworICAgICAgICBpZiAoZml0c0luQ3VycmVudEJsb2NrKG5ld1NpemUpKSB7Cisg
ICAgICAgICAgICBtX3RvdGFsTWVtb3J5VXRpbGl6ZWQgKz0gbmV3U2l6ZSAtIG9sZFNpemU7Cisg
ICAgICAgICAgICByZXR1cm4gYWxsb2NhdGVGcm9tQmxvY2sobV9jdXJyZW50QmxvY2ssIG5ld1Np
emUpOworICAgICAgICB9CisgICAgfQorICAgIG1fdG90YWxNZW1vcnlVdGlsaXplZCAtPSBvbGRT
aXplOworCisgICAgdm9pZCogcmVzdWx0ID0gMDsKKyAgICBpZiAoIXRyeUFsbG9jYXRlKG5ld1Np
emUsICZyZXN1bHQpKSB7CisgICAgICAgICpwdHIgPSAwOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIG1lbWNweShyZXN1bHQsIG9sZFB0ciwgb2xkU2l6ZSk7CisgICAgKnB0ciA9
IHJlc3VsdDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5saW5lIENoZWNrZWRCb29sZWFuIENv
cHlTcGFjZTo6dHJ5UmVhbGxvY2F0ZU92ZXJzaXplKHZvaWQqKiBwdHIsIHNpemVfdCBvbGRTaXpl
LCBzaXplX3QgbmV3U2l6ZSkKK3sKKyAgICBBU1NFUlQoaXNPdmVyc2l6ZShvbGRTaXplKSB8fCBp
c092ZXJzaXplKG5ld1NpemUpKTsKKyAgICBBU1NFUlQobmV3U2l6ZSA+IG9sZFNpemUpOworCisg
ICAgdm9pZCogb2xkUHRyID0gKnB0cjsKKyAgICAKKyAgICB2b2lkKiBuZXdQdHIgPSAwOworICAg
IGlmICghdHJ5QWxsb2NhdGVPdmVyc2l6ZShuZXdTaXplLCAmbmV3UHRyKSkgeworICAgICAgICAq
cHRyID0gMDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBtZW1jcHkobmV3UHRy
LCBvbGRQdHIsIG9sZFNpemUpOworCisgICAgaWYgKGlzT3ZlcnNpemUob2xkU2l6ZSkpIHsKKyAg
ICAgICAgQ29weUJsb2NrKiBvbGRCbG9jayA9IG92ZXJzaXplQmxvY2tGb3Iob2xkUHRyKTsKKyAg
ICAgICAgbV9vdmVyc2l6ZUJsb2Nrcy5yZW1vdmUob2xkQmxvY2spOworICAgICAgICBvbGRCbG9j
ay0+bV9hbGxvY2F0aW9uLmRlYWxsb2NhdGUoKTsKKyAgICAgICAgbV90b3RhbE1lbW9yeUFsbG9j
YXRlZCAtPSBvbGRTaXplICsgc2l6ZW9mKENvcHlCbG9jayk7CisgICAgfQorICAgIAorICAgIG1f
dG90YWxNZW1vcnlVdGlsaXplZCAtPSBvbGRTaXplOworCisgICAgKnB0ciA9IG5ld1B0cjsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworaW5saW5lIGJvb2wgQ29weVNwYWNlOjppc092ZXJzaXplKHNp
emVfdCBieXRlcykKK3sKKyAgICByZXR1cm4gYnl0ZXMgPiBzX21heEFsbG9jYXRpb25TaXplOwor
fQorCitpbmxpbmUgYm9vbCBDb3B5U3BhY2U6OmlzUGlubmVkKHZvaWQqIHB0cikKK3sKKyAgICBy
ZXR1cm4gYmxvY2tGb3IocHRyKS0+bV9pc1Bpbm5lZDsKK30KKworaW5saW5lIENvcHlCbG9jayog
Q29weVNwYWNlOjpvdmVyc2l6ZUJsb2NrRm9yKHZvaWQqIHB0cikKK3sKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxDb3B5QmxvY2sqPihyZWludGVycHJldF9jYXN0PHNpemVfdD4ocHRyKSAm
IHNfcGFnZU1hc2spOworfQorCitpbmxpbmUgQ29weUJsb2NrKiBDb3B5U3BhY2U6OmJsb2NrRm9y
KHZvaWQqIHB0cikKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDb3B5QmxvY2sqPihy
ZWludGVycHJldF9jYXN0PHNpemVfdD4ocHRyKSAmIHNfYmxvY2tNYXNrKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRl
eCA4ZTEwYmQ1ZGExZDdmNGVhZDUyYTI3YzM0NmIwMmNjYzQwMWFiYjlhLi4wMTIxYWNhMDhlYjY1
OGY5OGNmMjc3NDEyMTQzZGVkMTI3MWRjYjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcApAQCAtMjEsOCArMjEsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhl
YXAuaCIKIAotI2luY2x1ZGUgIkJ1bXBTcGFjZS5oIgotI2luY2x1ZGUgIkJ1bXBTcGFjZUlubGlu
ZU1ldGhvZHMuaCIKKyNpbmNsdWRlICJDb3B5U3BhY2UuaCIKKyNpbmNsdWRlICJDb3B5U3BhY2VJ
bmxpbmVNZXRob2RzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29uc2Vy
dmF0aXZlUm9vdHMuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuaAppbmRleCA4N2EyMGEwODViMDg1MDg3NDE0OTAzYmJmOTU2MjI2ZDll
YzUxYzUwLi43YjEwM2MzZjQxMTA2YzQ1ZDYxODBjMmRjMDY4YjAxMjEzNmE1Mzc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi0gICAgY2xhc3MgQnVtcFNwYWNlOworICAgIGNsYXNzIENvcHlTcGFjZTsKICAgICBjbGFz
cyBDb2RlQmxvY2s7CiAgICAgY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNrOwogICAgIGNsYXNzIEds
b2JhbENvZGVCbG9jazsKQEAgLTEzOSw3ICsxMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIE1hcmtlZFNwYWNlOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2Vk
QWxsb2NhdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7Ci0gICAgICAgIGZy
aWVuZCBjbGFzcyBCdW1wU3BhY2U7CisgICAgICAgIGZyaWVuZCBjbGFzcyBDb3B5U3BhY2U7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBTbG90VmlzaXRvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIENv
ZGVCbG9jazsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gZnJpZW5kIHZvaWQqIGFsbG9j
YXRlQ2VsbChIZWFwJik7CkBAIC0xOTcsNyArMTk3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIAogICAgICAgICBPcGVyYXRpb25JblByb2dyZXNzIG1fb3BlcmF0aW9uSW5Qcm9ncmVzczsK
ICAgICAgICAgTWFya2VkU3BhY2UgbV9vYmplY3RTcGFjZTsKLSAgICAgICAgQnVtcFNwYWNlIG1f
c3RvcmFnZVNwYWNlOworICAgICAgICBDb3B5U3BhY2UgbV9zdG9yYWdlU3BhY2U7CiAKICAgICAg
ICAgRG91Ymx5TGlua2VkTGlzdDxIZWFwQmxvY2s+IG1fZnJlZUJsb2NrczsKICAgICAgICAgc2l6
ZV90IG1fbnVtYmVyT2ZGcmVlQmxvY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya1N0YWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtT
dGFjay5jcHAKaW5kZXggOWEzMDkyMzk2ODk3MDhiMDI5OThkYjI3MjVkYzNkNTE1MzBjYWJkMS4u
MDE5NTgzYWFhZjYwYWRmODQ5YTMzNTkwMTkyZDVjYTY5MDViNTI5NiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCkBAIC0yNiw4ICsyNiw4IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiTWFya1N0YWNrLmgiCiAKLSNpbmNsdWRlICJCdW1wU3BhY2Uu
aCIKLSNpbmNsdWRlICJCdW1wU3BhY2VJbmxpbmVNZXRob2RzLmgiCisjaW5jbHVkZSAiQ29weVNw
YWNlLmgiCisjaW5jbHVkZSAiQ29weVNwYWNlSW5saW5lTWV0aG9kcy5oIgogI2luY2x1ZGUgIkNv
bnNlcnZhdGl2ZVJvb3RzLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIk9wdGlvbnMu
aCIKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkKiBNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhOjpt
YXJraW5nVGhyZWFkU3RhcnRGdW5jKHZvaWQqIHNoYXJlZCkKIAogTWFya1N0YWNrVGhyZWFkU2hh
cmVkRGF0YTo6TWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEpCiAgICAgOiBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0YSkKLSAgICAsIG1fYnVtcFNwYWNlKCZn
bG9iYWxEYXRhLT5oZWFwLm1fc3RvcmFnZVNwYWNlKQorICAgICwgbV9jb3B5U3BhY2UoJmdsb2Jh
bERhdGEtPmhlYXAubV9zdG9yYWdlU3BhY2UpCiAgICAgLCBtX3NoYXJlZE1hcmtTdGFjayhtX3Nl
Z21lbnRBbGxvY2F0b3IpCiAgICAgLCBtX251bWJlck9mQWN0aXZlUGFyYWxsZWxNYXJrZXJzKDAp
CiAgICAgLCBtX3BhcmFsbGVsTWFya2Vyc1Nob3VsZEV4aXQoZmFsc2UpCkBAIC00MDIsNyArNDAy
LDcgQEAgdm9pZCBTbG90VmlzaXRvcjo6ZHJhaW5Gcm9tU2hhcmVkKFNoYXJlZERyYWluTW9kZSBz
aGFyZWREcmFpbk1vZGUpCiAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAg
ICAgICAgICAgICAgLy8gRGlkIHdlIHJlYWNoIHRlcm1pbmF0aW9uPwogICAgICAgICAgICAgICAg
ICAgICBpZiAoIW1fc2hhcmVkLm1fbnVtYmVyT2ZBY3RpdmVQYXJhbGxlbE1hcmtlcnMgJiYgbV9z
aGFyZWQubV9zaGFyZWRNYXJrU3RhY2suaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAvLyBMZXQgYW55IHNsZWVwaW5nIHNsYXZlcyBrbm93IGl0J3MgdGltZSBmb3IgdGhlbSB0
byBnaXZlIHRoZWlyIHByaXZhdGUgQnVtcEJsb2NrcyBiYWNrCisgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBMZXQgYW55IHNsZWVwaW5nIHNsYXZlcyBrbm93IGl0J3MgdGltZSBmb3IgdGhlbSB0
byBnaXZlIHRoZWlyIHByaXZhdGUgQ29weUJsb2NrcyBiYWNrCiAgICAgICAgICAgICAgICAgICAg
ICAgICBtX3NoYXJlZC5tX21hcmtpbmdDb25kaXRpb24uYnJvYWRjYXN0KCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTQ1OSwzMiAr
NDU5LDMyIEBAIHZvaWQgTWFya1N0YWNrOjptZXJnZU9wYXF1ZVJvb3RzKCkKIHZvaWQgU2xvdFZp
c2l0b3I6OnN0YXJ0Q29weWluZygpCiB7CiAgICAgQVNTRVJUKCFtX2NvcHlCbG9jayk7Ci0gICAg
aWYgKCFtX3NoYXJlZC5tX2J1bXBTcGFjZS0+Ym9ycm93QmxvY2soJm1fY29weUJsb2NrKSkKKyAg
ICBpZiAoIW1fc2hhcmVkLm1fY29weVNwYWNlLT5ib3Jyb3dCbG9jaygmbV9jb3B5QmxvY2spKQog
ICAgICAgICBDUkFTSCgpOwogfSAgICAKIAogdm9pZCogU2xvdFZpc2l0b3I6OmFsbG9jYXRlTmV3
U3BhY2Uodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpCiB7Ci0gICAgaWYgKEJ1bXBTcGFjZTo6aXNP
dmVyc2l6ZShieXRlcykpIHsKLSAgICAgICAgbV9zaGFyZWQubV9idW1wU3BhY2UtPnBpbihCdW1w
U3BhY2U6Om92ZXJzaXplQmxvY2tGb3IocHRyKSk7CisgICAgaWYgKENvcHlTcGFjZTo6aXNPdmVy
c2l6ZShieXRlcykpIHsKKyAgICAgICAgbV9zaGFyZWQubV9jb3B5U3BhY2UtPnBpbihDb3B5U3Bh
Y2U6Om92ZXJzaXplQmxvY2tGb3IocHRyKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAot
ICAgIGlmIChtX3NoYXJlZC5tX2J1bXBTcGFjZS0+aXNQaW5uZWQocHRyKSkKKyAgICBpZiAobV9z
aGFyZWQubV9jb3B5U3BhY2UtPmlzUGlubmVkKHB0cikpCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgLy8gVGhlIG9ubHkgdGltZSBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgYSBudWxsIGNvcHkgYmxv
Y2sgaXMgaWYgd2UgaGF2ZSBqdXN0IHN0YXJ0ZWQgY29weWluZy4KICAgICBpZiAoIW1fY29weUJs
b2NrKQogICAgICAgICBzdGFydENvcHlpbmcoKTsKIAotICAgIGlmICghQnVtcFNwYWNlOjpmaXRz
SW5CbG9jayhtX2NvcHlCbG9jaywgYnl0ZXMpKSB7CisgICAgaWYgKCFDb3B5U3BhY2U6OmZpdHNJ
bkJsb2NrKG1fY29weUJsb2NrLCBieXRlcykpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0
byBsb2NrIGFjcm9zcyB0aGVzZSB0d28gY2FsbHMgYmVjYXVzZSB0aGUgbWFzdGVyIHRocmVhZCB3
b24ndCAKICAgICAgICAgLy8gY2FsbCBkb25lQ29weWluZygpIGJlY2F1c2UgdGhpcyB0aHJlYWQg
aXMgY29uc2lkZXJlZCBhY3RpdmUuCi0gICAgICAgIG1fc2hhcmVkLm1fYnVtcFNwYWNlLT5kb25l
RmlsbGluZ0Jsb2NrKG1fY29weUJsb2NrKTsKLSAgICAgICAgaWYgKCFtX3NoYXJlZC5tX2J1bXBT
cGFjZS0+Ym9ycm93QmxvY2soJm1fY29weUJsb2NrKSkKKyAgICAgICAgbV9zaGFyZWQubV9jb3B5
U3BhY2UtPmRvbmVGaWxsaW5nQmxvY2sobV9jb3B5QmxvY2spOworICAgICAgICBpZiAoIW1fc2hh
cmVkLm1fY29weVNwYWNlLT5ib3Jyb3dCbG9jaygmbV9jb3B5QmxvY2spKQogICAgICAgICAgICAg
Q1JBU0goKTsKICAgICB9Ci0gICAgcmV0dXJuIEJ1bXBTcGFjZTo6YWxsb2NhdGVGcm9tQmxvY2so
bV9jb3B5QmxvY2ssIGJ5dGVzKTsKKyAgICByZXR1cm4gQ29weVNwYWNlOjphbGxvY2F0ZUZyb21C
bG9jayhtX2NvcHlCbG9jaywgYnl0ZXMpOwogfQogCiB2b2lkIFNsb3RWaXNpdG9yOjpjb3B5KHZv
aWQqKiBwdHIsIHNpemVfdCBieXRlcykKQEAgLTUyNCw3ICs1MjQsNyBAQCB2b2lkIFNsb3RWaXNp
dG9yOjpkb25lQ29weWluZygpCiAgICAgaWYgKCFtX2NvcHlCbG9jaykKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9zaGFyZWQubV9idW1wU3BhY2UtPmRvbmVGaWxsaW5nQmxvY2sobV9jb3B5Qmxv
Y2spOworICAgIG1fc2hhcmVkLm1fY29weVNwYWNlLT5kb25lRmlsbGluZ0Jsb2NrKG1fY29weUJs
b2NrKTsKIAogICAgIG1fY29weUJsb2NrID0gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya1N0YWNrLmgKaW5kZXggNjkyM2NkZDhhZTRmM2EyYjRkZjc2YWIwYjA0OTYzNWNjY2Y2ZTI1
MC4uYzQyNGRjN2E5NDI1MTlmNTk0MjY4NWE3Mzc3ODRjMTY3MzdhOGVkZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgTWFy
a1N0YWNrX2gKICNkZWZpbmUgTWFya1N0YWNrX2gKIAotI2luY2x1ZGUgIkJ1bXBTcGFjZS5oIgor
I2luY2x1ZGUgIkNvcHlTcGFjZS5oIgogI2luY2x1ZGUgIkhhbmRsZVR5cGVzLmgiCiAjaW5jbHVk
ZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKQEAgLTE4Miw3ICsxODIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAgICAgICAgIEpTR2xvYmFsRGF0YSogbV9nbG9iYWxE
YXRhOwotICAgICAgICBCdW1wU3BhY2UqIG1fYnVtcFNwYWNlOworICAgICAgICBDb3B5U3BhY2Uq
IG1fY29weVNwYWNlOwogICAgICAgICAKICAgICAgICAgTWFya1N0YWNrU2VnbWVudEFsbG9jYXRv
ciBtX3NlZ21lbnRBbGxvY2F0b3I7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1Nsb3RWaXNpdG9yLmgKaW5kZXggZTQ5YTlhNjM3N2MxYWEwMDk4MWY5MGZmZDJiYmVlYjJkNTZi
ZTk4OC4uNjg4NjhlMWViNmEyZjkxN2ZiM2JhMTc5MDcyYzcxMzBjNmUzMDBkZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZu
ZGVmIFNsb3RWaXNpdG9yX2gKICNkZWZpbmUgU2xvdFZpc2l0b3JfaAogCi0jaW5jbHVkZSAiQnVt
cFNwYWNlLmgiCisjaW5jbHVkZSAiQ29weVNwYWNlLmgiCiAjaW5jbHVkZSAiTWFya1N0YWNrLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgogICAgICAgICBk
b25hdGVTbG93KCk7CiAgICAgfQogICAgIAotICAgIEJ1bXBCbG9jayogbV9jb3B5QmxvY2s7Cisg
ICAgQ29weUJsb2NrKiBtX2NvcHlCbG9jazsKIH07CiAKIGlubGluZSBTbG90VmlzaXRvcjo6U2xv
dFZpc2l0b3IoTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSYgc2hhcmVkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCA3MWQ2NzhlMmNkOGJlYjRjMDlmMmIy
MmMwYzk3NDk1MWU2M2QzZDllLi43ZGRlYzViZWY4YjlhNDNlNDUwMzI1YjRiNzVmZWQ2YWUwZTQ2
OTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMjQs
OCArMjQsOCBAQAogI2luY2x1ZGUgIkpTQXJyYXkuaCIKIAogI2luY2x1ZGUgIkFycmF5UHJvdG90
eXBlLmgiCi0jaW5jbHVkZSAiQnVtcFNwYWNlLmgiCi0jaW5jbHVkZSAiQnVtcFNwYWNlSW5saW5l
TWV0aG9kcy5oIgorI2luY2x1ZGUgIkNvcHlTcGFjZS5oIgorI2luY2x1ZGUgIkNvcHlTcGFjZUlu
bGluZU1ldGhvZHMuaCIKICNpbmNsdWRlICJDYWNoZWRDYWxsLmgiCiAjaW5jbHVkZSAiRXJyb3Iu
aCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAKaW5kZXggNGQ5MGY1YTkxMzcyZWM4MTA1YTY5MjhkZjdhOGMyYmUzNjZk
ZjZhMy4uYzc2NzA5ZDdjOWI4NjMxMDEzNzNiYjY1YWIyOTZjZWJhYmEwYjVkNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMjQsNyArMjQsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAKLSNpbmNsdWRlICJC
dW1wU3BhY2VJbmxpbmVNZXRob2RzLmgiCisjaW5jbHVkZSAiQ29weVNwYWNlSW5saW5lTWV0aG9k
cy5oIgogI2luY2x1ZGUgIkRhdGVQcm90b3R5cGUuaCIKICNpbmNsdWRlICJFcnJvckNvbnN0cnVj
dG9yLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126907</attachid>
            <date>2012-02-13 22:15:37 -0800</date>
            <delta_ts>2012-02-16 16:53:45 -0800</delta_ts>
            <desc>Fix qt build</desc>
            <filename>bug-78573-20120213221535.patch</filename>
            <type>text/plain</type>
            <size>68998</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NjE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MGNhNDEzMDQxNWUxOGQyM2ExMGVlZTg4ZDA3NWJmYzE4YjkzMjY3Li4yNzNlNzcwZmVkMDNjMDM4
MTM1NjEyZTk2ZTdhNDYzNWVkYTViMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OCBAQAorMjAxMi0wMi0xMyAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBw
bGUuY29tPgorCisgICAgICAgIFJlbmFtZSBCdW1wKiB0byBDb3B5KgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg1NzMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWVkIGFueXRoaW5nIHdpdGggQnVt
cCBpbiB0aGUgbmFtZSB0byBoYXZlIENvcHkgaW5zdGVhZC4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUuZ3lwaToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAg
KiBoZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcDoKKyAgICAgICAgKEpTQzo6Q29uc2VydmF0aXZl
Um9vdHM6OkNvbnNlcnZhdGl2ZVJvb3RzKToKKyAgICAgICAgKEpTQzo6Q29uc2VydmF0aXZlUm9v
dHM6OmdlbmVyaWNBZGRQb2ludGVyKToKKyAgICAgICAgKiBoZWFwL0NvbnNlcnZhdGl2ZVJvb3Rz
Lmg6CisgICAgICAgIChDb25zZXJ2YXRpdmVSb290cyk6CisgICAgICAgICogaGVhcC9Db3B5Qmxv
Y2suaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0J1bXBCbG9jay5o
LgorICAgICAgICAoSlNDKToKKyAgICAgICAgKENvcHlCbG9jayk6CisgICAgICAgIChKU0M6OkNv
cHlCbG9jazo6Q29weUJsb2NrKToKKyAgICAgICAgKiBoZWFwL0NvcHlTcGFjZS5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CdW1wU3BhY2UuY3BwLgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKEpTQzo6Q29weVNwYWNlOjp0cnlBbGxvY2F0ZVNsb3dDYXNlKToK
KyAgICAgICAgKiBoZWFwL0NvcHlTcGFjZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQnVtcFNwYWNlLmguCisgICAgICAgIChKU0MpOgorICAgICAgICAoQ29weVNw
YWNlKToKKyAgICAgICAgKEpTQzo6Q29weVNwYWNlOjppc0luQ29weVBoYXNlKToKKyAgICAgICAg
KEpTQzo6Q29weVNwYWNlOjp0b3RhbE1lbW9yeUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6OkNv
cHlTcGFjZTo6dG90YWxNZW1vcnlVdGlsaXplZCk6CisgICAgICAgICogaGVhcC9Db3B5U3BhY2VJ
bmxpbmVNZXRob2RzLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9C
dW1wU3BhY2VJbmxpbmVNZXRob2RzLmguCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpD
b3B5U3BhY2U6OkNvcHlTcGFjZSk6CisgICAgICAgIChKU0M6OkNvcHlTcGFjZTo6aW5pdCk6Cisg
ICAgICAgIChKU0M6OkNvcHlTcGFjZTo6Y29udGFpbnMpOgorICAgICAgICAoSlNDOjpDb3B5U3Bh
Y2U6OnBpbik6CisgICAgICAgIChKU0M6OkNvcHlTcGFjZTo6c3RhcnRlZENvcHlpbmcpOgorICAg
ICAgICAoSlNDOjpDb3B5U3BhY2U6OmRvbmVDb3B5aW5nKToKKyAgICAgICAgKEpTQzo6Q29weVNw
YWNlOjpkb25lRmlsbGluZ0Jsb2NrKToKKyAgICAgICAgKEpTQzo6Q29weVNwYWNlOjpyZWN5Y2xl
QmxvY2spOgorICAgICAgICAoSlNDOjpDb3B5U3BhY2U6OmdldEZyZXNoQmxvY2spOgorICAgICAg
ICAoSlNDOjpDb3B5U3BhY2U6OmJvcnJvd0Jsb2NrKToKKyAgICAgICAgKEpTQzo6Q29weVNwYWNl
OjphZGROZXdCbG9jayk6CisgICAgICAgIChKU0M6OkNvcHlTcGFjZTo6YWxsb2NhdGVOZXdCbG9j
ayk6CisgICAgICAgIChKU0M6OkNvcHlTcGFjZTo6Zml0c0luQmxvY2spOgorICAgICAgICAoSlND
OjpDb3B5U3BhY2U6OmZpdHNJbkN1cnJlbnRCbG9jayk6CisgICAgICAgIChKU0M6OkNvcHlTcGFj
ZTo6dHJ5QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpDb3B5U3BhY2U6OnRyeUFsbG9jYXRlT3Zl
cnNpemUpOgorICAgICAgICAoSlNDOjpDb3B5U3BhY2U6OmFsbG9jYXRlRnJvbUJsb2NrKToKKyAg
ICAgICAgKEpTQzo6Q29weVNwYWNlOjp0cnlSZWFsbG9jYXRlKToKKyAgICAgICAgKEpTQzo6Q29w
eVNwYWNlOjp0cnlSZWFsbG9jYXRlT3ZlcnNpemUpOgorICAgICAgICAoSlNDOjpDb3B5U3BhY2U6
OmlzT3ZlcnNpemUpOgorICAgICAgICAoSlNDOjpDb3B5U3BhY2U6OmlzUGlubmVkKToKKyAgICAg
ICAgKEpTQzo6Q29weVNwYWNlOjpvdmVyc2l6ZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6Q29w
eVNwYWNlOjpibG9ja0Zvcik6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKiBo
ZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChIZWFwKToKKyAgICAgICAgKiBo
ZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtTdGFja1RocmVhZFNoYXJlZERh
dGE6Ok1hcmtTdGFja1RocmVhZFNoYXJlZERhdGEpOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRv
cjo6ZHJhaW5Gcm9tU2hhcmVkKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OnN0YXJ0Q29w
eWluZyk6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjphbGxvY2F0ZU5ld1NwYWNlKToKKyAg
ICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmRvbmVDb3B5aW5nKToKKyAgICAgICAgKiBoZWFwL01h
cmtTdGFjay5oOgorICAgICAgICAoTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSk6CisgICAgICAg
ICogaGVhcC9TbG90VmlzaXRvci5oOgorICAgICAgICAoU2xvdFZpc2l0b3IpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisK
IDIwMTItMDItMTMgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNb3Zl
IEpTQyByZWxhdGVkIGFzc2VydGlvbnMgb3V0IG9mIEFzc2VydGlvbnMuaCBhbmQgaW50byB0aGVp
ciBvd24gaGVhZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMTQ3MGI1
MDQyOThjN2NkZDU2NjMyOTY4MTQ1OWQ1ODE5NmJjMDlhNC4uZWQ4OGQ1YjM4NzNhODU1Y2ZjNTkx
Njg1MjM0OWRkNTgzNjNiY2VlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNzUsNyArNzUsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAogICAgIGRmZy9ERkdUaHVua3MuY3BwCiAKLSAgICBoZWFwL0J1
bXBTcGFjZS5jcHAKKyAgICBoZWFwL0NvcHlTcGFjZS5jcHAKICAgICBoZWFwL0RGR0NvZGVCbG9j
a3MuY3BwCiAgICAgaGVhcC9IZWFwLmNwcAogICAgIGhlYXAvSGFuZGxlSGVhcC5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNmYxYjNhZWQwOGFlNjQ2
ZTZkYTFkZjQzMGQ5YTY2NjUxYTRmOGE4Mi4uNmQxOTY5ZGMxYWUxMzFlYTM4ZTI4OGIwOWUxMjQ1
NTgyMmM2MzlkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
QEAgLTE4MywxMCArMTgzLDEwIEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdUaHVua3MuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJp
YWJsZUFjY2Vzc0RhdGEuaCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQnVtcEJsb2Nr
LmggXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0J1bXBTcGFjZS5jcHAgXAotCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0J1bXBTcGFjZS5oIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9CdW1wU3BhY2VJbmxpbmVNZXRob2RzLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0NvcHlCbG9jay5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5U3Bh
Y2UuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5U3BhY2UuaCBcCisJU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVNwYWNlSW5saW5lTWV0aG9kcy5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9DYXJkU2V0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29uc2VydmF0aXZlUm9vdHMuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZ3lwaSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5neXBpCmluZGV4IGZhMTMwNmQ1NDU5NGRjMDZjNTI1Y2ZhNjJlMzJhMDhlOTFjZjc0NTYu
Ljg1N2VlODc1ZDc0M2ZhMzNhNDg4NjY5MzZlNjdmYzhiY2E1ZmI2ZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCkBAIC0yNyw5ICsyNyw5IEBACiAgICAgICAg
ICAgICAnQVBJL09wYXF1ZUpTU3RyaW5nLmgnLAogICAgICAgICAgICAgJ2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckNvZGVSZWYuaCcsCiAgICAgICAgICAgICAnYnl0ZWNvZGUvT3Bjb2RlLmgnLAot
ICAgICAgICAgICAgJ2hlYXAvQnVtcEJsb2NrLmgnLAotICAgICAgICAgICAgJ2hlYXAvQnVtcFNw
YWNlLmgnLAotICAgICAgICAgICAgJ2hlYXAvQnVtcFNwYWNlSW5saW5lTWV0aG9kcy5oJywKKyAg
ICAgICAgICAgICdoZWFwL0NvcHlCbG9jay5oJywKKyAgICAgICAgICAgICdoZWFwL0NvcHlTcGFj
ZS5oJywKKyAgICAgICAgICAgICdoZWFwL0NvcHlTcGFjZUlubGluZU1ldGhvZHMuaCcsCiAgICAg
ICAgICAgICAnaGVhcC9Db25zZXJ2YXRpdmVSb290cy5oJywKICAgICAgICAgICAgICdoZWFwL0dD
QXNzZXJ0aW9ucy5oJywKICAgICAgICAgICAgICdoZWFwL0hhbmRsZS5oJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKaW5kZXgg
NDkzMzRkYTkzMDJhM2JmMmZjZGRjZDg0NjcwMThmY2ZhNmFlYWU3ZS4uZTMxYmQ3ZDViYzkzYzIz
ZDFjNDFjYTVmYjBjMjAzZTg0OTA3YmQxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKQEAgLTIwMzgsMTkgKzIwMzgsMTkg
QEAKIAkJCU5hbWU9ImhlYXAiCiAJCQk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZp
bGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5c
Li5caGVhcFxCdW1wQmxvY2suaCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlbGF0aXZlUGF0aD0iLi5cLi5caGVhcFxDb3B5QmxvY2suaCIKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGU+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGUKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cLi5caGVhcFxCdW1wU3BhY2UuY3BwIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxo
ZWFwXENvcHlTcGFjZS5jcHAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWxlPgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxGaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxh
dGl2ZVBhdGg9Ii4uXC4uXGhlYXBcQnVtcFNwYWNlLmgiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhlYXBcQ29weVNwYWNlLmgiCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPC9GaWxlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhlYXBcQnVt
cFNwYWNlSW5saW5lTWV0aG9kcy5oIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXENvcHlTcGFjZUlubGluZU1ldGhvZHMuaCIKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8L0ZpbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmI5OThkZjY4ZDVmYWQ2ODQxYjYxMzU5Y2JmZTY4
NmRhZDI3NDE4Mi4uY2RlM2Q0MmUzZDk2NzNmMGE0YzgyZDVmYTgyMTVlMzEwYmE1ZDRkMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc0MiwxNCArNzQyLDE0IEBACiAJCUMyMkM1
MzEzMTNGQUY2RUYwMEI3REMwRCAvKiBzdHJ0b2QuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjJDNTJCOTEzRkFGNkVGMDBCN0RDMEQgLyogc3RydG9k
LmNjICovOyB9OwogCQlDMjJDNTMxNDEzRkFGNkVGMDBCN0RDMEQgLyogc3RydG9kLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjJDNTJCQTEzRkFGNkVG
MDBCN0RDMEQgLyogc3RydG9kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQzIyQzUzMTUxM0ZBRjZFRjAwQjdEQzBEIC8qIHV0aWxzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjJDNTJCQjEzRkFGNkVG
MDBCN0RDMEQgLyogdXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQlDMjQwMzA1NTE0QjQwNEU2MDA3OUVCNjQgLyogQnVtcFNwYWNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNDAzMDUzMTRC
NDA0QzkwMDc5RUI2NCAvKiBCdW1wU3BhY2UuY3BwICovOyB9OworCQlDMjQwMzA1NTE0QjQwNEU2
MDA3OUVCNjQgLyogQ29weVNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBDb3B5U3BhY2UuY3Bw
ICovOyB9OwogCQlDMkI5MTZDMjE0REEwMTRFMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkI5MTZDMTE0
REEwMTRFMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzJCOTE2QzUxNERBMDQwQzAwQ0JBQzg2IC8q
IE1hcmtlZEFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMkI5MTZDNDE0REEwNDBDMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmNw
cCAqLzsgfTsKLQkJQzJDOEQwMkQxNEEzQzZFMDAwNTc4RTY1IC8qIEJ1bXBTcGFjZUlubGluZU1l
dGhvZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
QzhEMDJCMTRBM0M2QjIwMDU3OEU2NSAvKiBCdW1wU3BhY2VJbmxpbmVNZXRob2RzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQzJDOEQwMzAxNEEz
Q0VGQzAwNTc4RTY1IC8qIEJ1bXBCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzJDOEQwMkUxNEEzQ0VGQzAwNTc4RTY1IC8qIEJ1bXBCbG9jay5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyQzhE
MDJEMTRBM0M2RTAwMDU3OEU2NSAvKiBDb3B5U3BhY2VJbmxpbmVNZXRob2RzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkM4RDAyQjE0QTNDNkIyMDA1
NzhFNjUgLyogQ29weVNwYWNlSW5saW5lTWV0aG9kcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyQzhEMDMwMTRBM0NFRkMwMDU3OEU2NSAvKiBD
b3B5QmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMyQzhEMDJFMTRBM0NFRkMwMDU3OEU2NSAvKiBDb3B5QmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMkM4RDAzMTE0QTNDRUZDMDA1NzhF
NjUgLyogSGVhcEJsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMkM4RDAyRjE0QTNDRUZDMDA1NzhFNjUgLyogSGVhcEJsb2NrLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzJEOUNBMTMxNEJDQzA0
NjAwMzA0QjQ2IC8qIENoZWNrZWRCb29sZWFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMkQ5Q0ExMjE0QkNDMDQ2MDAzMDRCNDYgLyogQ2hlY2tlZEJv
b2xlYW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQlDMkVBQTNGQTE0OUE4MzVFMDBGQ0UxMTIgLyogQnVtcFNwYWNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkVBQTNGODE0OUE4MzA4MDBGQ0UxMTIg
LyogQnVtcFNwYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQzJFQUEzRkExNDlBODM1RTAwRkNFMTEyIC8qIENvcHlTcGFjZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJFQUEzRjgxNDlBODMwODAw
RkNFMTEyIC8qIENvcHlTcGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUMyRUU1OUEwMTNGQzk3M0YwMDlDRUFGRSAvKiBEZWNpbWFsTnVtYmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkVFNTk5
RTEzRkM5NzJBMDA5Q0VBRkUgLyogRGVjaW1hbE51bWJlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyRUU1OUExMTNGQzk3NjgwMDlDRUFGRSAv
KiBEZWNpbWFsTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMyRUU1OTlEMTNGQzk3MkEwMDlDRUFGRSAvKiBEZWNpbWFsTnVtYmVyLmNwcCAq
LzsgfTsKIAkJRDdBNDZBNEYxMzM4RkZFQTAwRUQ2OTVDIC8qIER5bmFtaWNBbm5vdGF0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDc1QUY1OTYx
MkY4Q0I5NTAwRkMwQURGIC8qIER5bmFtaWNBbm5vdGF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNTQ4LDE0ICsxNTQ4LDE0IEBACiAJ
CUMyMkM1MkI5MTNGQUY2RUYwMEI3REMwRCAvKiBzdHJ0b2QuY2MgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBzdHJ0b2QuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMyMkM1MkJBMTNGQUY2RUYwMEI3REMwRCAvKiBzdHJ0b2QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gc3RydG9kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMyMkM1MkJCMTNGQUY2RUYwMEI3REMwRCAvKiB1dGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSB1dGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjQw
MzA1MzE0QjQwNEM5MDA3OUVCNjQgLyogQnVtcFNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEJ1bXBTcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBDb3B5U3BhY2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29weVNwYWNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzJCOTE2QzExNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9j
YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJrZWRBbGxvY2F0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJCOTE2QzQxNERBMDQwQzAwQ0JBQzg2
IC8qIE1hcmtlZEFsbG9jYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNYXJrZWRBbGxvY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
MkM4RDAyQjE0QTNDNkIyMDA1NzhFNjUgLyogQnVtcFNwYWNlSW5saW5lTWV0aG9kcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdW1wU3BhY2VJbmxpbmVNZXRob2RzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyQzhEMDJFMTRBM0NFRkMwMDU3OEU2NSAvKiBC
dW1wQmxvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVtcEJsb2NrLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyQzhEMDJCMTRBM0M2QjIwMDU3OEU2NSAv
KiBDb3B5U3BhY2VJbmxpbmVNZXRob2RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvcHlTcGFjZUlubGluZU1ldGhvZHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzJDOEQwMkUxNEEzQ0VGQzAwNTc4RTY1IC8qIENvcHlCbG9jay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb3B5QmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzJDOEQwMkYxNEEzQ0VGQzAwNTc4RTY1IC8qIEhlYXBCbG9jay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzJEOUNBMTIxNEJDQzA0NjAwMzA0QjQ2IC8qIENoZWNrZWRCb29sZWFuLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENoZWNrZWRCb29sZWFuLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyRUFBM0Y4MTQ5QTgzMDgwMEZDRTExMiAvKiBCdW1wU3Bh
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVtcFNwYWNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyRUFBM0Y4MTQ5QTgzMDgwMEZDRTExMiAvKiBDb3B5
U3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29weVNwYWNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyRUU1OTlEMTNGQzk3MkEwMDlDRUFGRSAvKiBE
ZWNpbWFsTnVtYmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERl
Y2ltYWxOdW1iZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkVFNTk5RTEz
RkM5NzJBMDA5Q0VBRkUgLyogRGVjaW1hbE51bWJlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEZWNpbWFsTnVtYmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUQyMTIwMjI4MEFENDMxMEMwMEVENzlCNiAvKiBEYXRlQ29udmVyc2lvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZUNvbnZlcnNpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgyMiwxMCArMTgyMiwxMCBAQAogCQkxNDJFMzEyQTEz
NEZGMEE2MDBBRkFEQjUgLyogaGVhcCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCi0JCQkJQzJDOEQwMkUxNEEzQ0VGQzAwNTc4RTY1IC8qIEJ1bXBCbG9jay5oICov
LAotCQkJCUMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBCdW1wU3BhY2UuY3BwICovLAotCQkJ
CUMyRUFBM0Y4MTQ5QTgzMDgwMEZDRTExMiAvKiBCdW1wU3BhY2UuaCAqLywKLQkJCQlDMkM4RDAy
QjE0QTNDNkIyMDA1NzhFNjUgLyogQnVtcFNwYWNlSW5saW5lTWV0aG9kcy5oICovLAorCQkJCUMy
QzhEMDJFMTRBM0NFRkMwMDU3OEU2NSAvKiBDb3B5QmxvY2suaCAqLywKKwkJCQlDMjQwMzA1MzE0
QjQwNEM5MDA3OUVCNjQgLyogQ29weVNwYWNlLmNwcCAqLywKKwkJCQlDMkVBQTNGODE0OUE4MzA4
MDBGQ0UxMTIgLyogQ29weVNwYWNlLmggKi8sCisJCQkJQzJDOEQwMkIxNEEzQzZCMjAwNTc4RTY1
IC8qIENvcHlTcGFjZUlubGluZU1ldGhvZHMuaCAqLywKIAkJCQlBNzUyMUUxMjE0MjkxNjlBMDAz
QzhEMEMgLyogQ2FyZFNldC5oICovLAogCQkJCTE0NkIxNERCMTJFQjVCMTIwMDFCRUMxQiAvKiBD
b25zZXJ2YXRpdmVSb290cy5jcHAgKi8sCiAJCQkJMTQ5REFBRjIxMkVCNTU5RDAwODNCMTJCIC8q
IENvbnNlcnZhdGl2ZVJvb3RzLmggKi8sCkBAIC0yNzk0LDEwICsyNzk0LDEwIEBACiAJCQkJRTRE
OENFRkIxMkZDNDM5NjAwQkM5RjVBIC8qIEJsb29tRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzNFQzBFMTZGNUNEMDBCMzQ0NjAgLyogQm9vbGVhbk9iamVjdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZEODJFODUxNDFGM0ZFMzAwMTc5Qzk0IC8qIEJvdW5kc0NoZWNrZWRQb2ludGVy
LmggaW4gSGVhZGVycyAqLywKLQkJCQlDMkM4RDAzMDE0QTNDRUZDMDA1NzhFNjUgLyogQnVtcEJs
b2NrLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMkM4RDAzMDE0QTNDRUZDMDA1NzhFNjUgLyogQ29w
eUJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjY3NkQ1MjExRkVEOUJDMDA0QjY4NjMgLyog
QnVtcFBvaW50ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCUMyRUFBM0ZBMTQ5QTgz
NUUwMEZDRTExMiAvKiBCdW1wU3BhY2UuaCBpbiBIZWFkZXJzICovLAotCQkJCUMyQzhEMDJEMTRB
M0M2RTAwMDU3OEU2NSAvKiBCdW1wU3BhY2VJbmxpbmVNZXRob2RzLmggaW4gSGVhZGVycyAqLywK
KwkJCQlDMkVBQTNGQTE0OUE4MzVFMDBGQ0UxMTIgLyogQ29weVNwYWNlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlDMkM4RDAyRDE0QTNDNkUwMDA1NzhFNjUgLyogQ29weVNwYWNlSW5saW5lTWV0aG9k
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBMUY3QUQwRjI1MkIzQzAwRTE4NEUyIC8qIEJ5dGVB
cnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3MjMwRUQxQ0UzMzAwRjFGNjgxIC8qIEJ5
dGVjb2RlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjJDNTJGNjEzRkFGNkVGMDBC
N0RDMEQgLyogY2FjaGVkLXBvd2Vycy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNTUyLDcgKzM1NTIs
NyBAQAogCQkJCTE0MjgwODYzMTA3RUMxMUEwMDEzRTdCMiAvKiBCb29sZWFuQ29uc3RydWN0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NjQxMDdFQzExQTAwMTNFN0IyIC8qIEJvb2xl
YW5PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NjUxMDdFQzExQTAwMTNFN0Iy
IC8qIEJvb2xlYW5Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQzI0MDMwNTUxNEI0
MDRFNjAwNzlFQjY0IC8qIEJ1bXBTcGFjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMjQwMzA1
NTE0QjQwNEU2MDA3OUVCNjQgLyogQ29weVNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3
QTFGN0FDMEYyNTJCM0MwMEUxODRFMiAvKiBCeXRlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMTQ4RjIxQUExMDdFQzUzQTAwNDJFQzJDIC8qIEJ5dGVjb2RlR2VuZXJhdG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUMyMkM1MkY1MTNGQUY2RUYwMEI3REMwRCAvKiBjYWNoZWQtcG93ZXJz
LmNjIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFy
Z2V0LnByaSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCmluZGV4IGI0M2NjNWVi
ZjdlNmJkMjAyNjhkZjA5OGEyMzVkMmI3MTc3ZThmZGUuLmIxMDQ0OGM4MmU3ZGJiNmE1YWIwZTQ2
OGQ5MmQ1MzNmNTBjMjVjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJn
ZXQucHJpCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCkBAIC02Niw3ICs2
Niw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGJ5dGVjb2RlL1ZhbHVlUHJvZmlsZS5jcHAgXAogICAg
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgXAogICAgIGJ5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwIFwKLSAgICBoZWFwL0J1bXBTcGFjZS5jcHAgXAorICAgIGhlYXAvQ29w
eVNwYWNlLmNwcCBcCiAgICAgaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAgXAogICAgIGhlYXAv
REZHQ29kZUJsb2Nrcy5jcHAgXAogICAgIGhlYXAvSGFuZGxlSGVhcC5jcHAgXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQnVtcEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9CdW1wQmxvY2suaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YjlmMjcxY2E4NDNmMDMwMzMzNzUyZjBkZmM4Y2ZjZmQxY2NiYTc0ZC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9CdW1wQmxvY2suaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBCdW1wQmxvY2tfaAot
I2RlZmluZSBCdW1wQmxvY2tfaAotCi0jaW5jbHVkZSAiSGVhcEJsb2NrLmgiCi0KLW5hbWVzcGFj
ZSBKU0MgewotCi1jbGFzcyBCdW1wU3BhY2U7Ci0KLWNsYXNzIEJ1bXBCbG9jayA6IHB1YmxpYyBI
ZWFwQmxvY2sgewotICAgIGZyaWVuZCBjbGFzcyBCdW1wU3BhY2U7Ci1wdWJsaWM6Ci0gICAgQnVt
cEJsb2NrKFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYgYWxsb2NhdGlvbikKLSAgICAgICAgOiBIZWFw
QmxvY2soYWxsb2NhdGlvbikKLSAgICAgICAgLCBtX29mZnNldChtX3BheWxvYWQpCi0gICAgICAg
ICwgbV9pc1Bpbm5lZChmYWxzZSkKLSAgICB7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHZvaWQq
IG1fb2Zmc2V0OwotICAgIHVpbnRwdHJfdCBtX2lzUGlubmVkOwotICAgIGNoYXIgbV9wYXlsb2Fk
WzFdOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQnVtcFNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0J1bXBTcGFjZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRl
YjAyODRkZGU4NTQ5ODBhNmE1NzU5MThiNjAxMTI2YzRmYjc4ZGYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
QnVtcFNwYWNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkJ1bXBTcGFjZS5oIgotCi0jaW5jbHVkZSAiQnVtcFNwYWNlSW5saW5lTWV0aG9k
cy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotQ2hlY2tlZEJvb2xlYW4gQnVtcFNwYWNlOjp0cnlB
bGxvY2F0ZVNsb3dDYXNlKHNpemVfdCBieXRlcywgdm9pZCoqIG91dFB0cikKLXsKLSAgICBpZiAo
aXNPdmVyc2l6ZShieXRlcykpCi0gICAgICAgIHJldHVybiB0cnlBbGxvY2F0ZU92ZXJzaXplKGJ5
dGVzLCBvdXRQdHIpOwotICAgIAotICAgIG1fdG90YWxNZW1vcnlVdGlsaXplZCArPSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHN0YXRpY19jYXN0PGNoYXIqPihtX2N1cnJlbnRCbG9jay0+bV9vZmZzZXQp
IC0gbV9jdXJyZW50QmxvY2stPm1fcGF5bG9hZCk7Ci0gICAgaWYgKCFhZGROZXdCbG9jaygpKSB7
Ci0gICAgICAgICpvdXRQdHIgPSAwOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAg
IG1fdG9TcGFjZUZpbHRlci5hZGQocmVpbnRlcnByZXRfY2FzdDxCaXRzPihtX2N1cnJlbnRCbG9j
aykpOwotICAgIG1fdG9TcGFjZVNldC5hZGQobV9jdXJyZW50QmxvY2spOwotICAgICpvdXRQdHIg
PSBhbGxvY2F0ZUZyb21CbG9jayhtX2N1cnJlbnRCbG9jaywgYnl0ZXMpOwotICAgIHJldHVybiB0
cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0J1bXBTcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQnVt
cFNwYWNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwZTZiNzRmZTg5YmMzZDg5
N2FmMTg4ZGYxZmE1Mjk2YWExMGVjZGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQnVtcFNwYWNlLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEJ1bXBTcGFjZV9oCi0jZGVmaW5lIEJ1bXBTcGFj
ZV9oCi0KLSNpbmNsdWRlICJIZWFwQmxvY2suaCIKLSNpbmNsdWRlICJUaW55Qmxvb21GaWx0ZXIu
aCIKLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9DaGVja2VkQm9v
bGVhbi5oPgotI2luY2x1ZGUgPHd0Zi9Eb3VibHlMaW5rZWRMaXN0Lmg+Ci0jaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvT1NBbGxvY2F0b3IuaD4KLSNpbmNsdWRlIDx3dGYv
UGFnZUFsbG9jYXRpb25BbGlnbmVkLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgot
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+Ci0KLW5hbWVzcGFjZSBKU0Mgewot
Ci1jbGFzcyBIZWFwOwotY2xhc3MgQnVtcEJsb2NrOwotY2xhc3MgSGVhcEJsb2NrOwotCi1jbGFz
cyBCdW1wU3BhY2UgewotICAgIGZyaWVuZCBjbGFzcyBTbG90VmlzaXRvcjsKLXB1YmxpYzoKLSAg
ICBCdW1wU3BhY2UoSGVhcCopOwotICAgIHZvaWQgaW5pdCgpOwotCi0gICAgQ2hlY2tlZEJvb2xl
YW4gdHJ5QWxsb2NhdGUoc2l6ZV90LCB2b2lkKiopOwotICAgIENoZWNrZWRCb29sZWFuIHRyeVJl
YWxsb2NhdGUodm9pZCoqLCBzaXplX3QsIHNpemVfdCk7Ci0gICAgCi0gICAgdm9pZCBzdGFydGVk
Q29weWluZygpOwotICAgIHZvaWQgZG9uZUNvcHlpbmcoKTsKLSAgICBib29sIGlzSW5Db3B5UGhh
c2UoKSB7IHJldHVybiBtX2luQ29weWluZ1BoYXNlOyB9Ci0KLSAgICB2b2lkIHBpbihCdW1wQmxv
Y2sqKTsKLSAgICBib29sIGlzUGlubmVkKHZvaWQqKTsKLQotICAgIGJvb2wgY29udGFpbnModm9p
ZCosIEJ1bXBCbG9jayomKTsKLQotICAgIHNpemVfdCB0b3RhbE1lbW9yeUFsbG9jYXRlZCgpIHsg
cmV0dXJuIG1fdG90YWxNZW1vcnlBbGxvY2F0ZWQ7IH0KLSAgICBzaXplX3QgdG90YWxNZW1vcnlV
dGlsaXplZCgpIHsgcmV0dXJuIG1fdG90YWxNZW1vcnlVdGlsaXplZDsgfQotCi0gICAgc3RhdGlj
IEJ1bXBCbG9jayogYmxvY2tGb3Iodm9pZCopOwotCi1wcml2YXRlOgotICAgIENoZWNrZWRCb29s
ZWFuIHRyeUFsbG9jYXRlU2xvd0Nhc2Uoc2l6ZV90LCB2b2lkKiopOwotICAgIENoZWNrZWRCb29s
ZWFuIGFkZE5ld0Jsb2NrKCk7Ci0gICAgQ2hlY2tlZEJvb2xlYW4gYWxsb2NhdGVOZXdCbG9jayhC
dW1wQmxvY2sqKik7Ci0gICAgYm9vbCBmaXRzSW5DdXJyZW50QmxvY2soc2l6ZV90KTsKLSAgICAK
LSAgICBzdGF0aWMgdm9pZCogYWxsb2NhdGVGcm9tQmxvY2soQnVtcEJsb2NrKiwgc2l6ZV90KTsK
LSAgICBDaGVja2VkQm9vbGVhbiB0cnlBbGxvY2F0ZU92ZXJzaXplKHNpemVfdCwgdm9pZCoqKTsK
LSAgICBDaGVja2VkQm9vbGVhbiB0cnlSZWFsbG9jYXRlT3ZlcnNpemUodm9pZCoqLCBzaXplX3Qs
IHNpemVfdCk7Ci0gICAgCi0gICAgc3RhdGljIGJvb2wgaXNPdmVyc2l6ZShzaXplX3QpOwotICAg
IAotICAgIENoZWNrZWRCb29sZWFuIGJvcnJvd0Jsb2NrKEJ1bXBCbG9jayoqKTsKLSAgICBDaGVj
a2VkQm9vbGVhbiBnZXRGcmVzaEJsb2NrKEFsbG9jYXRpb25FZmZvcnQsIEJ1bXBCbG9jayoqKTsK
LSAgICB2b2lkIGRvbmVGaWxsaW5nQmxvY2soQnVtcEJsb2NrKik7Ci0gICAgdm9pZCByZWN5Y2xl
QmxvY2soQnVtcEJsb2NrKik7Ci0gICAgc3RhdGljIGJvb2wgZml0c0luQmxvY2soQnVtcEJsb2Nr
Kiwgc2l6ZV90KTsKLSAgICBzdGF0aWMgQnVtcEJsb2NrKiBvdmVyc2l6ZUJsb2NrRm9yKHZvaWQq
IHB0cik7Ci0KLSAgICBIZWFwKiBtX2hlYXA7Ci0KLSAgICBCdW1wQmxvY2sqIG1fY3VycmVudEJs
b2NrOwotCi0gICAgVGlueUJsb29tRmlsdGVyIG1fdG9TcGFjZUZpbHRlcjsKLSAgICBUaW55Qmxv
b21GaWx0ZXIgbV9vdmVyc2l6ZUZpbHRlcjsKLSAgICBIYXNoU2V0PEJ1bXBCbG9jayo+IG1fdG9T
cGFjZVNldDsKLQotICAgIE11dGV4IG1fdG9TcGFjZUxvY2s7Ci0gICAgTXV0ZXggbV9tZW1vcnlT
dGF0c0xvY2s7Ci0KLSAgICBEb3VibHlMaW5rZWRMaXN0PEhlYXBCbG9jaz4qIG1fdG9TcGFjZTsK
LSAgICBEb3VibHlMaW5rZWRMaXN0PEhlYXBCbG9jaz4qIG1fZnJvbVNwYWNlOwotICAgIAotICAg
IERvdWJseUxpbmtlZExpc3Q8SGVhcEJsb2NrPiBtX2Jsb2NrczE7Ci0gICAgRG91Ymx5TGlua2Vk
TGlzdDxIZWFwQmxvY2s+IG1fYmxvY2tzMjsKLSAgICBEb3VibHlMaW5rZWRMaXN0PEhlYXBCbG9j
az4gbV9vdmVyc2l6ZUJsb2NrczsKLSAgIAotICAgIHNpemVfdCBtX3RvdGFsTWVtb3J5QWxsb2Nh
dGVkOwotICAgIHNpemVfdCBtX3RvdGFsTWVtb3J5VXRpbGl6ZWQ7Ci0KLSAgICBib29sIG1faW5D
b3B5aW5nUGhhc2U7Ci0KLSAgICBNdXRleCBtX2xvYW5lZEJsb2Nrc0xvY2s7IAotICAgIFRocmVh
ZENvbmRpdGlvbiBtX2xvYW5lZEJsb2Nrc0NvbmRpdGlvbjsKLSAgICBzaXplX3QgbV9udW1iZXJP
ZkxvYW5lZEJsb2NrczsKLQotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc19ibG9ja1NpemUgPSA2
NCAqIEtCOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc19tYXhBbGxvY2F0aW9uU2l6ZSA9IDMy
ICogS0I7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBzX3BhZ2VTaXplID0gNCAqIEtCOwotICAg
IHN0YXRpYyBjb25zdCBzaXplX3Qgc19wYWdlTWFzayA9IH4oc19wYWdlU2l6ZSAtIDEpOwotICAg
IHN0YXRpYyBjb25zdCBzaXplX3Qgc19pbml0aWFsQmxvY2tOdW0gPSAxNjsKLSAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IHNfYmxvY2tNYXNrID0gfihzX2Jsb2NrU2l6ZSAtIDEpOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQnVtcFNwYWNlSW5saW5lTWV0aG9kcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQnVtcFNwYWNlSW5saW5lTWV0aG9kcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAzNDU0NjMxYjAzNzQ1OTk0ZDAxYmVjNTcyN2ZmMGJiOTIxMTcwNmJjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0J1bXBTcGFjZUlubGluZU1ldGhvZHMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQwMCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
Zm5kZWYgQnVtcFNwYWNlSW5saW5lTWV0aG9kc19oCi0jZGVmaW5lIEJ1bXBTcGFjZUlubGluZU1l
dGhvZHNfaAotCi0jaW5jbHVkZSAiQnVtcEJsb2NrLmgiCi0jaW5jbHVkZSAiQnVtcFNwYWNlLmgi
Ci0jaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUgIkhlYXBCbG9jay5oIgotI2luY2x1ZGUgIkpT
R2xvYmFsRGF0YS5oIgotI2luY2x1ZGUgPHd0Zi9DaGVja2VkQm9vbGVhbi5oPgotCi1uYW1lc3Bh
Y2UgSlNDIHsKLQotaW5saW5lIEJ1bXBTcGFjZTo6QnVtcFNwYWNlKEhlYXAqIGhlYXApCi0gICAg
OiBtX2hlYXAoaGVhcCkKLSAgICAsIG1fY3VycmVudEJsb2NrKDApCi0gICAgLCBtX3RvU3BhY2Uo
MCkKLSAgICAsIG1fZnJvbVNwYWNlKDApCi0gICAgLCBtX3RvdGFsTWVtb3J5QWxsb2NhdGVkKDAp
Ci0gICAgLCBtX3RvdGFsTWVtb3J5VXRpbGl6ZWQoMCkKLSAgICAsIG1faW5Db3B5aW5nUGhhc2Uo
ZmFsc2UpCi0gICAgLCBtX251bWJlck9mTG9hbmVkQmxvY2tzKDApCi17Ci19Ci0KLWlubGluZSB2
b2lkIEJ1bXBTcGFjZTo6aW5pdCgpCi17Ci0gICAgbV90b1NwYWNlID0gJm1fYmxvY2tzMTsKLSAg
ICBtX2Zyb21TcGFjZSA9ICZtX2Jsb2NrczI7Ci0gICAgCi0gICAgbV90b3RhbE1lbW9yeUFsbG9j
YXRlZCArPSBzX2Jsb2NrU2l6ZSAqIHNfaW5pdGlhbEJsb2NrTnVtOwotCi0gICAgaWYgKCFhZGRO
ZXdCbG9jaygpKQotICAgICAgICBDUkFTSCgpOwotfSAgIAotCi1pbmxpbmUgYm9vbCBCdW1wU3Bh
Y2U6OmNvbnRhaW5zKHZvaWQqIHB0ciwgQnVtcEJsb2NrKiYgcmVzdWx0KQotewotICAgIEJ1bXBC
bG9jayogYmxvY2sgPSBibG9ja0ZvcihwdHIpOwotICAgIHJlc3VsdCA9IGJsb2NrOwotICAgIHJl
dHVybiAhbV90b1NwYWNlRmlsdGVyLnJ1bGVPdXQocmVpbnRlcnByZXRfY2FzdDxCaXRzPihibG9j
aykpICYmIG1fdG9TcGFjZVNldC5jb250YWlucyhibG9jayk7Ci19Ci0KLWlubGluZSB2b2lkIEJ1
bXBTcGFjZTo6cGluKEJ1bXBCbG9jayogYmxvY2spCi17Ci0gICAgYmxvY2stPm1faXNQaW5uZWQg
PSB0cnVlOwotfQotCi1pbmxpbmUgdm9pZCBCdW1wU3BhY2U6OnN0YXJ0ZWRDb3B5aW5nKCkKLXsK
LSAgICBEb3VibHlMaW5rZWRMaXN0PEhlYXBCbG9jaz4qIHRlbXAgPSBtX2Zyb21TcGFjZTsKLSAg
ICBtX2Zyb21TcGFjZSA9IG1fdG9TcGFjZTsKLSAgICBtX3RvU3BhY2UgPSB0ZW1wOwotCi0gICAg
bV90b1NwYWNlRmlsdGVyLnJlc2V0KCk7Ci0KLSAgICBtX3RvdGFsTWVtb3J5VXRpbGl6ZWQgPSAw
OwotCi0gICAgQVNTRVJUKCFtX2luQ29weWluZ1BoYXNlKTsKLSAgICBBU1NFUlQoIW1fbnVtYmVy
T2ZMb2FuZWRCbG9ja3MpOwotICAgIG1faW5Db3B5aW5nUGhhc2UgPSB0cnVlOwotfQotCi1pbmxp
bmUgdm9pZCBCdW1wU3BhY2U6OmRvbmVDb3B5aW5nKCkKLXsKLSAgICB7Ci0gICAgICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX2xvYW5lZEJsb2Nrc0xvY2spOwotICAgICAgICB3aGlsZSAobV9udW1i
ZXJPZkxvYW5lZEJsb2NrcyA+IDApCi0gICAgICAgICAgICBtX2xvYW5lZEJsb2Nrc0NvbmRpdGlv
bi53YWl0KG1fbG9hbmVkQmxvY2tzTG9jayk7Ci0gICAgfQotCi0gICAgQVNTRVJUKG1faW5Db3B5
aW5nUGhhc2UpOwotICAgIG1faW5Db3B5aW5nUGhhc2UgPSBmYWxzZTsKLSAgICB3aGlsZSAoIW1f
ZnJvbVNwYWNlLT5pc0VtcHR5KCkpIHsKLSAgICAgICAgQnVtcEJsb2NrKiBibG9jayA9IHN0YXRp
Y19jYXN0PEJ1bXBCbG9jayo+KG1fZnJvbVNwYWNlLT5yZW1vdmVIZWFkKCkpOwotICAgICAgICBp
ZiAoYmxvY2stPm1faXNQaW5uZWQpIHsKLSAgICAgICAgICAgIGJsb2NrLT5tX2lzUGlubmVkID0g
ZmFsc2U7Ci0gICAgICAgICAgICBtX3RvU3BhY2UtPnB1c2goYmxvY2spOwotICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBtX3RvU3BhY2VTZXQucmVtb3ZlKGJsb2Nr
KTsKLSAgICAgICAgewotICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1faGVhcC0+bV9m
cmVlQmxvY2tMb2NrKTsKLSAgICAgICAgICAgIG1faGVhcC0+bV9mcmVlQmxvY2tzLnB1c2goYmxv
Y2spOwotICAgICAgICAgICAgbV9oZWFwLT5tX251bWJlck9mRnJlZUJsb2NrcysrOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgQnVtcEJsb2NrKiBjdXJyID0gc3RhdGljX2Nhc3Q8QnVtcEJsb2Nr
Kj4obV9vdmVyc2l6ZUJsb2Nrcy5oZWFkKCkpOwotICAgIHdoaWxlIChjdXJyKSB7Ci0gICAgICAg
IEJ1bXBCbG9jayogbmV4dCA9IHN0YXRpY19jYXN0PEJ1bXBCbG9jayo+KGN1cnItPm5leHQoKSk7
Ci0gICAgICAgIGlmICghY3Vyci0+bV9pc1Bpbm5lZCkgewotICAgICAgICAgICAgbV9vdmVyc2l6
ZUJsb2Nrcy5yZW1vdmUoY3Vycik7Ci0gICAgICAgICAgICBtX3RvdGFsTWVtb3J5QWxsb2NhdGVk
IC09IGN1cnItPm1fYWxsb2NhdGlvbi5zaXplKCk7Ci0gICAgICAgICAgICBtX3RvdGFsTWVtb3J5
VXRpbGl6ZWQgLT0gY3Vyci0+bV9hbGxvY2F0aW9uLnNpemUoKSAtIHNpemVvZihCdW1wQmxvY2sp
OwotICAgICAgICAgICAgY3Vyci0+bV9hbGxvY2F0aW9uLmRlYWxsb2NhdGUoKTsKLSAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBjdXJyLT5tX2lzUGlubmVkID0gZmFsc2U7Ci0gICAgICAgIGN1
cnIgPSBuZXh0OwotICAgIH0KLQotICAgIGlmICghKG1fY3VycmVudEJsb2NrID0gc3RhdGljX2Nh
c3Q8QnVtcEJsb2NrKj4obV90b1NwYWNlLT5oZWFkKCkpKSkKLSAgICAgICAgaWYgKCFhZGROZXdC
bG9jaygpKQotICAgICAgICAgICAgQ1JBU0goKTsKLX0KLQotaW5saW5lIHZvaWQgQnVtcFNwYWNl
Ojpkb25lRmlsbGluZ0Jsb2NrKEJ1bXBCbG9jayogYmxvY2spCi17Ci0gICAgQVNTRVJUKGJsb2Nr
KTsKLSAgICBBU1NFUlQoYmxvY2stPm1fb2Zmc2V0IDwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
YmxvY2spICsgc19ibG9ja1NpemUpOwotICAgIEFTU0VSVChtX2luQ29weWluZ1BoYXNlKTsKLQot
ICAgIGlmIChibG9jay0+bV9vZmZzZXQgPT0gYmxvY2stPm1fcGF5bG9hZCkgewotICAgICAgICBy
ZWN5Y2xlQmxvY2soYmxvY2spOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgewotICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIobV90b1NwYWNlTG9jayk7Ci0gICAgICAgIG1fdG9TcGFj
ZS0+cHVzaChibG9jayk7Ci0gICAgICAgIG1fdG9TcGFjZVNldC5hZGQoYmxvY2spOwotICAgICAg
ICBtX3RvU3BhY2VGaWx0ZXIuYWRkKHJlaW50ZXJwcmV0X2Nhc3Q8Qml0cz4oYmxvY2spKTsKLSAg
ICB9Ci0KLSAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX21lbW9yeVN0YXRzTG9j
ayk7Ci0gICAgICAgIG1fdG90YWxNZW1vcnlVdGlsaXplZCArPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KHN0YXRpY19jYXN0PGNoYXIqPihibG9jay0+bV9vZmZzZXQpIC0gYmxvY2stPm1fcGF5bG9hZCk7
Ci0gICAgfQotCi0gICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2FuZWRCbG9j
a3NMb2NrKTsKLSAgICAgICAgQVNTRVJUKG1fbnVtYmVyT2ZMb2FuZWRCbG9ja3MgPiAwKTsKLSAg
ICAgICAgbV9udW1iZXJPZkxvYW5lZEJsb2Nrcy0tOwotICAgICAgICBpZiAoIW1fbnVtYmVyT2ZM
b2FuZWRCbG9ja3MpCi0gICAgICAgICAgICBtX2xvYW5lZEJsb2Nrc0NvbmRpdGlvbi5zaWduYWwo
KTsKLSAgICB9Ci19Ci0KLWlubGluZSB2b2lkIEJ1bXBTcGFjZTo6cmVjeWNsZUJsb2NrKEJ1bXBC
bG9jayogYmxvY2spCi17Ci0gICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9oZWFw
LT5tX2ZyZWVCbG9ja0xvY2spOwotICAgICAgICBtX2hlYXAtPm1fZnJlZUJsb2Nrcy5wdXNoKGJs
b2NrKTsKLSAgICAgICAgbV9oZWFwLT5tX251bWJlck9mRnJlZUJsb2NrcysrOwotICAgIH0KLQot
ICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9hbmVkQmxvY2tzTG9jayk7Ci0g
ICAgICAgIEFTU0VSVChtX251bWJlck9mTG9hbmVkQmxvY2tzID4gMCk7Ci0gICAgICAgIG1fbnVt
YmVyT2ZMb2FuZWRCbG9ja3MtLTsKLSAgICAgICAgaWYgKCFtX251bWJlck9mTG9hbmVkQmxvY2tz
KQotICAgICAgICAgICAgbV9sb2FuZWRCbG9ja3NDb25kaXRpb24uc2lnbmFsKCk7Ci0gICAgfQot
fQotCi1pbmxpbmUgQ2hlY2tlZEJvb2xlYW4gQnVtcFNwYWNlOjpnZXRGcmVzaEJsb2NrKEFsbG9j
YXRpb25FZmZvcnQgYWxsb2NhdGlvbkVmZm9ydCwgQnVtcEJsb2NrKiogb3V0QmxvY2spCi17Ci0g
ICAgSGVhcEJsb2NrKiBoZWFwQmxvY2sgPSAwOwotICAgIEJ1bXBCbG9jayogYmxvY2sgPSAwOwot
ICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1faGVhcC0+bV9mcmVlQmxvY2tMb2Nr
KTsKLSAgICAgICAgaWYgKCFtX2hlYXAtPm1fZnJlZUJsb2Nrcy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgIGhlYXBCbG9jayA9IG1faGVhcC0+bV9mcmVlQmxvY2tzLnJlbW92ZUhlYWQoKTsKLSAg
ICAgICAgICAgIG1faGVhcC0+bV9udW1iZXJPZkZyZWVCbG9ja3MtLTsKLSAgICAgICAgfQotICAg
IH0KLSAgICBpZiAoaGVhcEJsb2NrKQotICAgICAgICBibG9jayA9IG5ldyAoTm90TnVsbCwgaGVh
cEJsb2NrKSBCdW1wQmxvY2soaGVhcEJsb2NrLT5tX2FsbG9jYXRpb24pOwotICAgIGVsc2UgaWYg
KGFsbG9jYXRpb25FZmZvcnQgPT0gQWxsb2NhdGlvbk11c3RTdWNjZWVkKSB7Ci0gICAgICAgIGlm
ICghYWxsb2NhdGVOZXdCbG9jaygmYmxvY2spKSB7Ci0gICAgICAgICAgICAqb3V0QmxvY2sgPSAw
OwotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQoYWxsb2NhdGlv
bkVmZm9ydCA9PSBBbGxvY2F0aW9uQ2FuRmFpbCk7Ci0gICAgICAgIGlmIChtX2hlYXAtPndhdGVy
TWFyaygpID49IG1faGVhcC0+aGlnaFdhdGVyTWFyaygpICYmIG1faGVhcC0+bV9pc1NhZmVUb0Nv
bGxlY3QpCi0gICAgICAgICAgICBtX2hlYXAtPmNvbGxlY3QoSGVhcDo6RG9Ob3RTd2VlcCk7Ci0g
ICAgICAgIAotICAgICAgICBpZiAoIWdldEZyZXNoQmxvY2soQWxsb2NhdGlvbk11c3RTdWNjZWVk
LCAmYmxvY2spKSB7Ci0gICAgICAgICAgICAqb3V0QmxvY2sgPSAwOwotICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgQVNTRVJUKGJsb2NrKTsKLSAgICBBU1NFUlQoaXNQb2ludGVyQWxpZ25lZChi
bG9jay0+bV9vZmZzZXQpKTsKLSAgICAqb3V0QmxvY2sgPSBibG9jazsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotaW5saW5lIENoZWNrZWRCb29sZWFuIEJ1bXBTcGFjZTo6Ym9ycm93QmxvY2soQnVt
cEJsb2NrKiogb3V0QmxvY2spCi17Ci0gICAgQnVtcEJsb2NrKiBibG9jayA9IDA7Ci0gICAgaWYg
KCFnZXRGcmVzaEJsb2NrKEFsbG9jYXRpb25NdXN0U3VjY2VlZCwgJmJsb2NrKSkgewotICAgICAg
ICAqb3V0QmxvY2sgPSAwOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgQVNT
RVJUKG1faW5Db3B5aW5nUGhhc2UpOwotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvYW5lZEJs
b2Nrc0xvY2spOwotICAgIG1fbnVtYmVyT2ZMb2FuZWRCbG9ja3MrKzsKLQotICAgIEFTU0VSVChi
bG9jay0+bV9vZmZzZXQgPT0gYmxvY2stPm1fcGF5bG9hZCk7Ci0gICAgKm91dEJsb2NrID0gYmxv
Y2s7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWlubGluZSBDaGVja2VkQm9vbGVhbiBCdW1wU3Bh
Y2U6OmFkZE5ld0Jsb2NrKCkKLXsKLSAgICBCdW1wQmxvY2sqIGJsb2NrID0gMDsKLSAgICBpZiAo
IWdldEZyZXNoQmxvY2soQWxsb2NhdGlvbkNhbkZhaWwsICZibG9jaykpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgCi0gICAgbV90b1NwYWNlLT5wdXNoKGJsb2NrKTsKLSAgICBtX2N1
cnJlbnRCbG9jayA9IGJsb2NrOwotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgQ2hlY2tl
ZEJvb2xlYW4gQnVtcFNwYWNlOjphbGxvY2F0ZU5ld0Jsb2NrKEJ1bXBCbG9jayoqIG91dEJsb2Nr
KQotewotICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCBhbGxvY2F0aW9uID0gUGFnZUFsbG9jYXRp
b25BbGlnbmVkOjphbGxvY2F0ZShzX2Jsb2NrU2l6ZSwgc19ibG9ja1NpemUsIE9TQWxsb2NhdG9y
OjpKU0dDSGVhcFBhZ2VzKTsKLSAgICBpZiAoIXN0YXRpY19jYXN0PGJvb2w+KGFsbG9jYXRpb24p
KSB7Ci0gICAgICAgICpvdXRCbG9jayA9IDA7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX21lbW9yeVN0YXRzTG9jayk7
Ci0gICAgICAgIG1fdG90YWxNZW1vcnlBbGxvY2F0ZWQgKz0gc19ibG9ja1NpemU7Ci0gICAgfQot
Ci0gICAgKm91dEJsb2NrID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0aW9uLmJhc2UoKSkgQnVtcEJs
b2NrKGFsbG9jYXRpb24pOwotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgYm9vbCBCdW1w
U3BhY2U6OmZpdHNJbkJsb2NrKEJ1bXBCbG9jayogYmxvY2ssIHNpemVfdCBieXRlcykKLXsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KGJsb2NrLT5tX29mZnNldCkgKyBieXRlcyA8IHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJsb2NrKSArIHNfYmxvY2tTaXplICYmIHN0YXRpY19jYXN0
PGNoYXIqPihibG9jay0+bV9vZmZzZXQpICsgYnl0ZXMgPiBibG9jay0+bV9vZmZzZXQ7Ci19Ci0K
LWlubGluZSBib29sIEJ1bXBTcGFjZTo6Zml0c0luQ3VycmVudEJsb2NrKHNpemVfdCBieXRlcykK
LXsKLSAgICByZXR1cm4gZml0c0luQmxvY2sobV9jdXJyZW50QmxvY2ssIGJ5dGVzKTsKLX0KLQot
aW5saW5lIENoZWNrZWRCb29sZWFuIEJ1bXBTcGFjZTo6dHJ5QWxsb2NhdGUoc2l6ZV90IGJ5dGVz
LCB2b2lkKiogb3V0UHRyKQotewotICAgIEFTU0VSVCghbV9oZWFwLT5nbG9iYWxEYXRhKCktPmlz
SW5pdGlhbGl6aW5nT2JqZWN0KCkpOwotCi0gICAgaWYgKGlzT3ZlcnNpemUoYnl0ZXMpIHx8ICFm
aXRzSW5DdXJyZW50QmxvY2soYnl0ZXMpKQotICAgICAgICByZXR1cm4gdHJ5QWxsb2NhdGVTbG93
Q2FzZShieXRlcywgb3V0UHRyKTsKLSAgICAKLSAgICAqb3V0UHRyID0gYWxsb2NhdGVGcm9tQmxv
Y2sobV9jdXJyZW50QmxvY2ssIGJ5dGVzKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotaW5saW5l
IENoZWNrZWRCb29sZWFuIEJ1bXBTcGFjZTo6dHJ5QWxsb2NhdGVPdmVyc2l6ZShzaXplX3QgYnl0
ZXMsIHZvaWQqKiBvdXRQdHIpCi17Ci0gICAgQVNTRVJUKGlzT3ZlcnNpemUoYnl0ZXMpKTsKLSAg
ICAKLSAgICBzaXplX3QgYmxvY2tTaXplID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNfcGFn
ZVNpemU+KHNpemVvZihCdW1wQmxvY2spICsgYnl0ZXMpOwotICAgIFBhZ2VBbGxvY2F0aW9uQWxp
Z25lZCBhbGxvY2F0aW9uID0gUGFnZUFsbG9jYXRpb25BbGlnbmVkOjphbGxvY2F0ZShibG9ja1Np
emUsIHNfcGFnZVNpemUsIE9TQWxsb2NhdG9yOjpKU0dDSGVhcFBhZ2VzKTsKLSAgICBpZiAoIXN0
YXRpY19jYXN0PGJvb2w+KGFsbG9jYXRpb24pKSB7Ci0gICAgICAgICpvdXRQdHIgPSAwOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIEJ1bXBCbG9jayogYmxvY2sgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRpb24uYmFzZSgpKSBCdW1wQmxvY2soYWxsb2NhdGlvbik7Ci0gICAgbV9v
dmVyc2l6ZUJsb2Nrcy5wdXNoKGJsb2NrKTsKLSAgICBBU1NFUlQoaXNQb2ludGVyQWxpZ25lZChi
bG9jay0+bV9vZmZzZXQpKTsKLQotICAgIG1fb3ZlcnNpemVGaWx0ZXIuYWRkKHJlaW50ZXJwcmV0
X2Nhc3Q8Qml0cz4oYmxvY2spKTsKLSAgICAKLSAgICBtX3RvdGFsTWVtb3J5QWxsb2NhdGVkICs9
IGJsb2NrU2l6ZTsKLSAgICBtX3RvdGFsTWVtb3J5VXRpbGl6ZWQgKz0gYnl0ZXM7Ci0KLSAgICAq
b3V0UHRyID0gYmxvY2stPm1fb2Zmc2V0OwotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUg
dm9pZCogQnVtcFNwYWNlOjphbGxvY2F0ZUZyb21CbG9jayhCdW1wQmxvY2sqIGJsb2NrLCBzaXpl
X3QgYnl0ZXMpCi17Ci0gICAgQVNTRVJUKCFpc092ZXJzaXplKGJ5dGVzKSk7Ci0gICAgQVNTRVJU
KGZpdHNJbkJsb2NrKGJsb2NrLCBieXRlcykpOwotICAgIEFTU0VSVChpc1BvaW50ZXJBbGlnbmVk
KGJsb2NrLT5tX29mZnNldCkpOwotICAgIAotICAgIHZvaWQqIHB0ciA9IGJsb2NrLT5tX29mZnNl
dDsKLSAgICBBU1NFUlQoYmxvY2stPm1fb2Zmc2V0ID49IGJsb2NrLT5tX3BheWxvYWQgJiYgYmxv
Y2stPm1fb2Zmc2V0IDwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYmxvY2spICsgc19ibG9ja1Np
emUpOwotICAgIGJsb2NrLT5tX29mZnNldCA9IHN0YXRpY19jYXN0PHZvaWQqPigoc3RhdGljX2Nh
c3Q8Y2hhcio+KHB0cikgKyBieXRlcykpOwotICAgIEFTU0VSVChibG9jay0+bV9vZmZzZXQgPj0g
YmxvY2stPm1fcGF5bG9hZCAmJiBibG9jay0+bV9vZmZzZXQgPCByZWludGVycHJldF9jYXN0PGNo
YXIqPihibG9jaykgKyBzX2Jsb2NrU2l6ZSk7Ci0KLSAgICBBU1NFUlQoaXNQb2ludGVyQWxpZ25l
ZChwdHIpKTsKLSAgICByZXR1cm4gcHRyOwotfQotCi1pbmxpbmUgQ2hlY2tlZEJvb2xlYW4gQnVt
cFNwYWNlOjp0cnlSZWFsbG9jYXRlKHZvaWQqKiBwdHIsIHNpemVfdCBvbGRTaXplLCBzaXplX3Qg
bmV3U2l6ZSkKLXsKLSAgICBpZiAob2xkU2l6ZSA+PSBuZXdTaXplKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAKLSAgICB2b2lkKiBvbGRQdHIgPSAqcHRyOwotICAgIEFTU0VSVCghbV9oZWFw
LT5nbG9iYWxEYXRhKCktPmlzSW5pdGlhbGl6aW5nT2JqZWN0KCkpOwotCi0gICAgaWYgKGlzT3Zl
cnNpemUob2xkU2l6ZSkgfHwgaXNPdmVyc2l6ZShuZXdTaXplKSkKLSAgICAgICAgcmV0dXJuIHRy
eVJlYWxsb2NhdGVPdmVyc2l6ZShwdHIsIG9sZFNpemUsIG5ld1NpemUpOwotCi0gICAgaWYgKHN0
YXRpY19jYXN0PGNoYXIqPihvbGRQdHIpICsgb2xkU2l6ZSA9PSBtX2N1cnJlbnRCbG9jay0+bV9v
ZmZzZXQgJiYgb2xkUHRyID4gbV9jdXJyZW50QmxvY2sgJiYgb2xkUHRyIDwgcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4obV9jdXJyZW50QmxvY2spICsgc19ibG9ja1NpemUpIHsKLSAgICAgICAgbV9j
dXJyZW50QmxvY2stPm1fb2Zmc2V0ID0gb2xkUHRyOwotICAgICAgICBpZiAoZml0c0luQ3VycmVu
dEJsb2NrKG5ld1NpemUpKSB7Ci0gICAgICAgICAgICBtX3RvdGFsTWVtb3J5VXRpbGl6ZWQgKz0g
bmV3U2l6ZSAtIG9sZFNpemU7Ci0gICAgICAgICAgICByZXR1cm4gYWxsb2NhdGVGcm9tQmxvY2so
bV9jdXJyZW50QmxvY2ssIG5ld1NpemUpOwotICAgICAgICB9Ci0gICAgfQotICAgIG1fdG90YWxN
ZW1vcnlVdGlsaXplZCAtPSBvbGRTaXplOwotCi0gICAgdm9pZCogcmVzdWx0ID0gMDsKLSAgICBp
ZiAoIXRyeUFsbG9jYXRlKG5ld1NpemUsICZyZXN1bHQpKSB7Ci0gICAgICAgICpwdHIgPSAwOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIG1lbWNweShyZXN1bHQsIG9sZFB0ciwg
b2xkU2l6ZSk7Ci0gICAgKnB0ciA9IHJlc3VsdDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotaW5s
aW5lIENoZWNrZWRCb29sZWFuIEJ1bXBTcGFjZTo6dHJ5UmVhbGxvY2F0ZU92ZXJzaXplKHZvaWQq
KiBwdHIsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSkKLXsKLSAgICBBU1NFUlQoaXNP
dmVyc2l6ZShvbGRTaXplKSB8fCBpc092ZXJzaXplKG5ld1NpemUpKTsKLSAgICBBU1NFUlQobmV3
U2l6ZSA+IG9sZFNpemUpOwotCi0gICAgdm9pZCogb2xkUHRyID0gKnB0cjsKLSAgICAKLSAgICB2
b2lkKiBuZXdQdHIgPSAwOwotICAgIGlmICghdHJ5QWxsb2NhdGVPdmVyc2l6ZShuZXdTaXplLCAm
bmV3UHRyKSkgewotICAgICAgICAqcHRyID0gMDsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLSAgICBtZW1jcHkobmV3UHRyLCBvbGRQdHIsIG9sZFNpemUpOwotCi0gICAgaWYgKGlzT3Zl
cnNpemUob2xkU2l6ZSkpIHsKLSAgICAgICAgQnVtcEJsb2NrKiBvbGRCbG9jayA9IG92ZXJzaXpl
QmxvY2tGb3Iob2xkUHRyKTsKLSAgICAgICAgbV9vdmVyc2l6ZUJsb2Nrcy5yZW1vdmUob2xkQmxv
Y2spOwotICAgICAgICBvbGRCbG9jay0+bV9hbGxvY2F0aW9uLmRlYWxsb2NhdGUoKTsKLSAgICAg
ICAgbV90b3RhbE1lbW9yeUFsbG9jYXRlZCAtPSBvbGRTaXplICsgc2l6ZW9mKEJ1bXBCbG9jayk7
Ci0gICAgfQotICAgIAotICAgIG1fdG90YWxNZW1vcnlVdGlsaXplZCAtPSBvbGRTaXplOwotCi0g
ICAgKnB0ciA9IG5ld1B0cjsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotaW5saW5lIGJvb2wgQnVt
cFNwYWNlOjppc092ZXJzaXplKHNpemVfdCBieXRlcykKLXsKLSAgICByZXR1cm4gYnl0ZXMgPiBz
X21heEFsbG9jYXRpb25TaXplOwotfQotCi1pbmxpbmUgYm9vbCBCdW1wU3BhY2U6OmlzUGlubmVk
KHZvaWQqIHB0cikKLXsKLSAgICByZXR1cm4gYmxvY2tGb3IocHRyKS0+bV9pc1Bpbm5lZDsKLX0K
LQotaW5saW5lIEJ1bXBCbG9jayogQnVtcFNwYWNlOjpvdmVyc2l6ZUJsb2NrRm9yKHZvaWQqIHB0
cikKLXsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxCdW1wQmxvY2sqPihyZWludGVycHJl
dF9jYXN0PHNpemVfdD4ocHRyKSAmIHNfcGFnZU1hc2spOwotfQotCi1pbmxpbmUgQnVtcEJsb2Nr
KiBCdW1wU3BhY2U6OmJsb2NrRm9yKHZvaWQqIHB0cikKLXsKLSAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxCdW1wQmxvY2sqPihyZWludGVycHJldF9jYXN0PHNpemVfdD4ocHRyKSAmIHNfYmxv
Y2tNYXNrKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCmluZGV4IGE1MDlmMDZl
MTc4YjgwNWE2MDViMDdmNTZhMDk1ZGUyMjkzMmQ4NmUuLmJiYzQxMTUyNmUzZDc0M2U0MDA2OWYz
NmEzM2NhODk2ZjE5ZGI1NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9D
b25zZXJ2YXRpdmVSb290cy5jcHAKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJDb25zZXJ2YXRpdmVSb290cy5oIgogCi0jaW5jbHVkZSAiQnVtcFNwYWNl
LmgiCi0jaW5jbHVkZSAiQnVtcFNwYWNlSW5saW5lTWV0aG9kcy5oIgorI2luY2x1ZGUgIkNvcHlT
cGFjZS5oIgorI2luY2x1ZGUgIkNvcHlTcGFjZUlubGluZU1ldGhvZHMuaCIKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdDb2RlQmxvY2tzLmgiCiAjaW5jbHVkZSAiSlNDZWxs
LmgiCkBAIC0zNiwxMiArMzYsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUNvbnNlcnZhdGl2
ZVJvb3RzOjpDb25zZXJ2YXRpdmVSb290cyhjb25zdCBNYXJrZWRCbG9ja1NldCogYmxvY2tzLCBC
dW1wU3BhY2UqIGJ1bXBTcGFjZSkKK0NvbnNlcnZhdGl2ZVJvb3RzOjpDb25zZXJ2YXRpdmVSb290
cyhjb25zdCBNYXJrZWRCbG9ja1NldCogYmxvY2tzLCBDb3B5U3BhY2UqIGNvcHlTcGFjZSkKICAg
ICA6IG1fcm9vdHMobV9pbmxpbmVSb290cykKICAgICAsIG1fc2l6ZSgwKQogICAgICwgbV9jYXBh
Y2l0eShpbmxpbmVDYXBhY2l0eSkKICAgICAsIG1fYmxvY2tzKGJsb2NrcykKLSAgICAsIG1fYnVt
cFNwYWNlKGJ1bXBTcGFjZSkKKyAgICAsIG1fY29weVNwYWNlKGNvcHlTcGFjZSkKIHsKIH0KIApA
QCAtNzIsOSArNzIsOSBAQCBpbmxpbmUgdm9pZCBDb25zZXJ2YXRpdmVSb290czo6Z2VuZXJpY0Fk
ZFBvaW50ZXIodm9pZCogcCwgVGlueUJsb29tRmlsdGVyIGZpbHRlcgogewogICAgIG1hcmtIb29r
Lm1hcmsocCk7CiAgICAgCi0gICAgQnVtcEJsb2NrKiBibG9jazsKLSAgICBpZiAobV9idW1wU3Bh
Y2UtPmNvbnRhaW5zKHAsIGJsb2NrKSkKLSAgICAgICAgbV9idW1wU3BhY2UtPnBpbihibG9jayk7
CisgICAgQ29weUJsb2NrKiBibG9jazsKKyAgICBpZiAobV9jb3B5U3BhY2UtPmNvbnRhaW5zKHAs
IGJsb2NrKSkKKyAgICAgICAgbV9jb3B5U3BhY2UtPnBpbihibG9jayk7CiAgICAgCiAgICAgTWFy
a2VkQmxvY2sqIGNhbmRpZGF0ZSA9IE1hcmtlZEJsb2NrOjpibG9ja0ZvcihwKTsKICAgICBpZiAo
ZmlsdGVyLnJ1bGVPdXQocmVpbnRlcnByZXRfY2FzdDxCaXRzPihjYW5kaWRhdGUpKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmgKaW5kZXggNDBi
MDk5NmQwOWExMDE4ZGZkYTYwNDQxZGRmZWNjMDExMmQ5MGI5Zi4uOTY1NGQzYWRmZTlhNWQyMDI3
ODQ2Yjc0NDYyNzc3ZGM2ZmI4OTFjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Db25zZXJ2YXRpdmVSb290cy5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIEhlYXA7CiAKIGNs
YXNzIENvbnNlcnZhdGl2ZVJvb3RzIHsKIHB1YmxpYzoKLSAgICBDb25zZXJ2YXRpdmVSb290cyhj
b25zdCBNYXJrZWRCbG9ja1NldCosIEJ1bXBTcGFjZSopOworICAgIENvbnNlcnZhdGl2ZVJvb3Rz
KGNvbnN0IE1hcmtlZEJsb2NrU2V0KiwgQ29weVNwYWNlKik7CiAgICAgfkNvbnNlcnZhdGl2ZVJv
b3RzKCk7CiAKICAgICB2b2lkIGFkZCh2b2lkKiBiZWdpbiwgdm9pZCogZW5kKTsKQEAgLTYzLDcg
KzYzLDcgQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9zaXplOwogICAgIHNpemVfdCBtX2NhcGFj
aXR5OwogICAgIGNvbnN0IE1hcmtlZEJsb2NrU2V0KiBtX2Jsb2NrczsKLSAgICBCdW1wU3BhY2Uq
IG1fYnVtcFNwYWNlOworICAgIENvcHlTcGFjZSogbV9jb3B5U3BhY2U7CiAgICAgSlNDZWxsKiBt
X2lubGluZVJvb3RzW2lubGluZUNhcGFjaXR5XTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29weUJsb2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRjZDliOWVhMjcyZTExYTQ2ZmQ2ZGI1OGMzOTk4
MTlmOTJkYmVjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvcHlCbG9jay5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDb3B5QmxvY2tfaAorI2RlZmluZSBDb3B5Qmxv
Y2tfaAorCisjaW5jbHVkZSAiSGVhcEJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBDb3B5U3BhY2U7CisKK2NsYXNzIENvcHlCbG9jayA6IHB1YmxpYyBIZWFwQmxvY2sgeworICAg
IGZyaWVuZCBjbGFzcyBDb3B5U3BhY2U7CitwdWJsaWM6CisgICAgQ29weUJsb2NrKFBhZ2VBbGxv
Y2F0aW9uQWxpZ25lZCYgYWxsb2NhdGlvbikKKyAgICAgICAgOiBIZWFwQmxvY2soYWxsb2NhdGlv
bikKKyAgICAgICAgLCBtX29mZnNldChtX3BheWxvYWQpCisgICAgICAgICwgbV9pc1Bpbm5lZChm
YWxzZSkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQqIG1fb2Zmc2V0OworICAg
IHVpbnRwdHJfdCBtX2lzUGlubmVkOworICAgIGNoYXIgbV9wYXlsb2FkWzFdOworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQ29weVNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlT
cGFjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQwZmM2YTExNTBkOWRhYWI2N2E4ODkyNzNiMDVlYmU1YTUw
MDJkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlT
cGFjZS5jcHAKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29weVNwYWNl
LmgiCisKKyNpbmNsdWRlICJDb3B5U3BhY2VJbmxpbmVNZXRob2RzLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitDaGVja2VkQm9vbGVhbiBDb3B5U3BhY2U6OnRyeUFsbG9jYXRlU2xvd0Nhc2Uoc2l6
ZV90IGJ5dGVzLCB2b2lkKiogb3V0UHRyKQoreworICAgIGlmIChpc092ZXJzaXplKGJ5dGVzKSkK
KyAgICAgICAgcmV0dXJuIHRyeUFsbG9jYXRlT3ZlcnNpemUoYnl0ZXMsIG91dFB0cik7CisgICAg
CisgICAgbV90b3RhbE1lbW9yeVV0aWxpemVkICs9IHN0YXRpY19jYXN0PHNpemVfdD4oc3RhdGlj
X2Nhc3Q8Y2hhcio+KG1fY3VycmVudEJsb2NrLT5tX29mZnNldCkgLSBtX2N1cnJlbnRCbG9jay0+
bV9wYXlsb2FkKTsKKyAgICBpZiAoIWFkZE5ld0Jsb2NrKCkpIHsKKyAgICAgICAgKm91dFB0ciA9
IDA7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgbV90b1NwYWNlRmlsdGVyLmFk
ZChyZWludGVycHJldF9jYXN0PEJpdHM+KG1fY3VycmVudEJsb2NrKSk7CisgICAgbV90b1NwYWNl
U2V0LmFkZChtX2N1cnJlbnRCbG9jayk7CisgICAgKm91dFB0ciA9IGFsbG9jYXRlRnJvbUJsb2Nr
KG1fY3VycmVudEJsb2NrLCBieXRlcyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVNw
YWNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5U3BhY2UuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iNjMzZTMzOTYwNWVkYzc3MTcyZTMwM2E2OWVlYWE1MDgwMzM1MWZjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVNwYWNlLmgKQEAgLTAsMCArMSwx
MjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBDb3B5U3BhY2VfaAorI2RlZmluZSBDb3B5U3BhY2VfaAorCisjaW5jbHVkZSAiSGVhcEJs
b2NrLmgiCisjaW5jbHVkZSAiVGlueUJsb29tRmlsdGVyLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEJvb2xlYW4uaD4KKyNpbmNsdWRlIDx3dGYv
RG91Ymx5TGlua2VkTGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8
d3RmL09TQWxsb2NhdG9yLmg+CisjaW5jbHVkZSA8d3RmL1BhZ2VBbGxvY2F0aW9uQWxpZ25lZC5o
PgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
UHJpbWl0aXZlcy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSGVhcDsKK2NsYXNzIENv
cHlCbG9jazsKK2NsYXNzIEhlYXBCbG9jazsKKworY2xhc3MgQ29weVNwYWNlIHsKKyAgICBmcmll
bmQgY2xhc3MgU2xvdFZpc2l0b3I7CitwdWJsaWM6CisgICAgQ29weVNwYWNlKEhlYXAqKTsKKyAg
ICB2b2lkIGluaXQoKTsKKworICAgIENoZWNrZWRCb29sZWFuIHRyeUFsbG9jYXRlKHNpemVfdCwg
dm9pZCoqKTsKKyAgICBDaGVja2VkQm9vbGVhbiB0cnlSZWFsbG9jYXRlKHZvaWQqKiwgc2l6ZV90
LCBzaXplX3QpOworICAgIAorICAgIHZvaWQgc3RhcnRlZENvcHlpbmcoKTsKKyAgICB2b2lkIGRv
bmVDb3B5aW5nKCk7CisgICAgYm9vbCBpc0luQ29weVBoYXNlKCkgeyByZXR1cm4gbV9pbkNvcHlp
bmdQaGFzZTsgfQorCisgICAgdm9pZCBwaW4oQ29weUJsb2NrKik7CisgICAgYm9vbCBpc1Bpbm5l
ZCh2b2lkKik7CisKKyAgICBib29sIGNvbnRhaW5zKHZvaWQqLCBDb3B5QmxvY2sqJik7CisKKyAg
ICBzaXplX3QgdG90YWxNZW1vcnlBbGxvY2F0ZWQoKSB7IHJldHVybiBtX3RvdGFsTWVtb3J5QWxs
b2NhdGVkOyB9CisgICAgc2l6ZV90IHRvdGFsTWVtb3J5VXRpbGl6ZWQoKSB7IHJldHVybiBtX3Rv
dGFsTWVtb3J5VXRpbGl6ZWQ7IH0KKworICAgIHN0YXRpYyBDb3B5QmxvY2sqIGJsb2NrRm9yKHZv
aWQqKTsKKworcHJpdmF0ZToKKyAgICBDaGVja2VkQm9vbGVhbiB0cnlBbGxvY2F0ZVNsb3dDYXNl
KHNpemVfdCwgdm9pZCoqKTsKKyAgICBDaGVja2VkQm9vbGVhbiBhZGROZXdCbG9jaygpOworICAg
IENoZWNrZWRCb29sZWFuIGFsbG9jYXRlTmV3QmxvY2soQ29weUJsb2NrKiopOworICAgIGJvb2wg
Zml0c0luQ3VycmVudEJsb2NrKHNpemVfdCk7CisgICAgCisgICAgc3RhdGljIHZvaWQqIGFsbG9j
YXRlRnJvbUJsb2NrKENvcHlCbG9jayosIHNpemVfdCk7CisgICAgQ2hlY2tlZEJvb2xlYW4gdHJ5
QWxsb2NhdGVPdmVyc2l6ZShzaXplX3QsIHZvaWQqKik7CisgICAgQ2hlY2tlZEJvb2xlYW4gdHJ5
UmVhbGxvY2F0ZU92ZXJzaXplKHZvaWQqKiwgc2l6ZV90LCBzaXplX3QpOworICAgIAorICAgIHN0
YXRpYyBib29sIGlzT3ZlcnNpemUoc2l6ZV90KTsKKyAgICAKKyAgICBDaGVja2VkQm9vbGVhbiBi
b3Jyb3dCbG9jayhDb3B5QmxvY2sqKik7CisgICAgQ2hlY2tlZEJvb2xlYW4gZ2V0RnJlc2hCbG9j
ayhBbGxvY2F0aW9uRWZmb3J0LCBDb3B5QmxvY2sqKik7CisgICAgdm9pZCBkb25lRmlsbGluZ0Js
b2NrKENvcHlCbG9jayopOworICAgIHZvaWQgcmVjeWNsZUJsb2NrKENvcHlCbG9jayopOworICAg
IHN0YXRpYyBib29sIGZpdHNJbkJsb2NrKENvcHlCbG9jayosIHNpemVfdCk7CisgICAgc3RhdGlj
IENvcHlCbG9jayogb3ZlcnNpemVCbG9ja0Zvcih2b2lkKiBwdHIpOworCisgICAgSGVhcCogbV9o
ZWFwOworCisgICAgQ29weUJsb2NrKiBtX2N1cnJlbnRCbG9jazsKKworICAgIFRpbnlCbG9vbUZp
bHRlciBtX3RvU3BhY2VGaWx0ZXI7CisgICAgVGlueUJsb29tRmlsdGVyIG1fb3ZlcnNpemVGaWx0
ZXI7CisgICAgSGFzaFNldDxDb3B5QmxvY2sqPiBtX3RvU3BhY2VTZXQ7CisKKyAgICBNdXRleCBt
X3RvU3BhY2VMb2NrOworICAgIE11dGV4IG1fbWVtb3J5U3RhdHNMb2NrOworCisgICAgRG91Ymx5
TGlua2VkTGlzdDxIZWFwQmxvY2s+KiBtX3RvU3BhY2U7CisgICAgRG91Ymx5TGlua2VkTGlzdDxI
ZWFwQmxvY2s+KiBtX2Zyb21TcGFjZTsKKyAgICAKKyAgICBEb3VibHlMaW5rZWRMaXN0PEhlYXBC
bG9jaz4gbV9ibG9ja3MxOworICAgIERvdWJseUxpbmtlZExpc3Q8SGVhcEJsb2NrPiBtX2Jsb2Nr
czI7CisgICAgRG91Ymx5TGlua2VkTGlzdDxIZWFwQmxvY2s+IG1fb3ZlcnNpemVCbG9ja3M7Cisg
ICAKKyAgICBzaXplX3QgbV90b3RhbE1lbW9yeUFsbG9jYXRlZDsKKyAgICBzaXplX3QgbV90b3Rh
bE1lbW9yeVV0aWxpemVkOworCisgICAgYm9vbCBtX2luQ29weWluZ1BoYXNlOworCisgICAgTXV0
ZXggbV9sb2FuZWRCbG9ja3NMb2NrOyAKKyAgICBUaHJlYWRDb25kaXRpb24gbV9sb2FuZWRCbG9j
a3NDb25kaXRpb247CisgICAgc2l6ZV90IG1fbnVtYmVyT2ZMb2FuZWRCbG9ja3M7CisKKyAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IHNfYmxvY2tTaXplID0gNjQgKiBLQjsKKyAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90IHNfbWF4QWxsb2NhdGlvblNpemUgPSAzMiAqIEtCOworICAgIHN0YXRpYyBjb25z
dCBzaXplX3Qgc19wYWdlU2l6ZSA9IDQgKiBLQjsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNf
cGFnZU1hc2sgPSB+KHNfcGFnZVNpemUgLSAxKTsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNf
aW5pdGlhbEJsb2NrTnVtID0gMTY7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzX2Jsb2NrTWFz
ayA9IH4oc19ibG9ja1NpemUgLSAxKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlTcGFjZUlubGlu
ZU1ldGhvZHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlTcGFjZUlubGluZU1l
dGhvZHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44YmQ3ZmE5MjU4ZTgzNDE3Y2ZmYjFhMzQ0NjFmMjBhOGFhMjRj
MzU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVNw
YWNlSW5saW5lTWV0aG9kcy5oCkBAIC0wLDAgKzEsNDAwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29weVNwYWNlSW5saW5lTWV0aG9k
c19oCisjZGVmaW5lIENvcHlTcGFjZUlubGluZU1ldGhvZHNfaAorCisjaW5jbHVkZSAiQ29weUJs
b2NrLmgiCisjaW5jbHVkZSAiQ29weVNwYWNlLmgiCisjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1
ZGUgIkhlYXBCbG9jay5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgPHd0
Zi9DaGVja2VkQm9vbGVhbi5oPgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5lIENvcHlTcGFj
ZTo6Q29weVNwYWNlKEhlYXAqIGhlYXApCisgICAgOiBtX2hlYXAoaGVhcCkKKyAgICAsIG1fY3Vy
cmVudEJsb2NrKDApCisgICAgLCBtX3RvU3BhY2UoMCkKKyAgICAsIG1fZnJvbVNwYWNlKDApCisg
ICAgLCBtX3RvdGFsTWVtb3J5QWxsb2NhdGVkKDApCisgICAgLCBtX3RvdGFsTWVtb3J5VXRpbGl6
ZWQoMCkKKyAgICAsIG1faW5Db3B5aW5nUGhhc2UoZmFsc2UpCisgICAgLCBtX251bWJlck9mTG9h
bmVkQmxvY2tzKDApCit7Cit9CisKK2lubGluZSB2b2lkIENvcHlTcGFjZTo6aW5pdCgpCit7Cisg
ICAgbV90b1NwYWNlID0gJm1fYmxvY2tzMTsKKyAgICBtX2Zyb21TcGFjZSA9ICZtX2Jsb2NrczI7
CisgICAgCisgICAgbV90b3RhbE1lbW9yeUFsbG9jYXRlZCArPSBzX2Jsb2NrU2l6ZSAqIHNfaW5p
dGlhbEJsb2NrTnVtOworCisgICAgaWYgKCFhZGROZXdCbG9jaygpKQorICAgICAgICBDUkFTSCgp
OworfSAgIAorCitpbmxpbmUgYm9vbCBDb3B5U3BhY2U6OmNvbnRhaW5zKHZvaWQqIHB0ciwgQ29w
eUJsb2NrKiYgcmVzdWx0KQoreworICAgIENvcHlCbG9jayogYmxvY2sgPSBibG9ja0ZvcihwdHIp
OworICAgIHJlc3VsdCA9IGJsb2NrOworICAgIHJldHVybiAhbV90b1NwYWNlRmlsdGVyLnJ1bGVP
dXQocmVpbnRlcnByZXRfY2FzdDxCaXRzPihibG9jaykpICYmIG1fdG9TcGFjZVNldC5jb250YWlu
cyhibG9jayk7Cit9CisKK2lubGluZSB2b2lkIENvcHlTcGFjZTo6cGluKENvcHlCbG9jayogYmxv
Y2spCit7CisgICAgYmxvY2stPm1faXNQaW5uZWQgPSB0cnVlOworfQorCitpbmxpbmUgdm9pZCBD
b3B5U3BhY2U6OnN0YXJ0ZWRDb3B5aW5nKCkKK3sKKyAgICBEb3VibHlMaW5rZWRMaXN0PEhlYXBC
bG9jaz4qIHRlbXAgPSBtX2Zyb21TcGFjZTsKKyAgICBtX2Zyb21TcGFjZSA9IG1fdG9TcGFjZTsK
KyAgICBtX3RvU3BhY2UgPSB0ZW1wOworCisgICAgbV90b1NwYWNlRmlsdGVyLnJlc2V0KCk7CisK
KyAgICBtX3RvdGFsTWVtb3J5VXRpbGl6ZWQgPSAwOworCisgICAgQVNTRVJUKCFtX2luQ29weWlu
Z1BoYXNlKTsKKyAgICBBU1NFUlQoIW1fbnVtYmVyT2ZMb2FuZWRCbG9ja3MpOworICAgIG1faW5D
b3B5aW5nUGhhc2UgPSB0cnVlOworfQorCitpbmxpbmUgdm9pZCBDb3B5U3BhY2U6OmRvbmVDb3B5
aW5nKCkKK3sKKyAgICB7CisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvYW5lZEJsb2Nr
c0xvY2spOworICAgICAgICB3aGlsZSAobV9udW1iZXJPZkxvYW5lZEJsb2NrcyA+IDApCisgICAg
ICAgICAgICBtX2xvYW5lZEJsb2Nrc0NvbmRpdGlvbi53YWl0KG1fbG9hbmVkQmxvY2tzTG9jayk7
CisgICAgfQorCisgICAgQVNTRVJUKG1faW5Db3B5aW5nUGhhc2UpOworICAgIG1faW5Db3B5aW5n
UGhhc2UgPSBmYWxzZTsKKyAgICB3aGlsZSAoIW1fZnJvbVNwYWNlLT5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgQ29weUJsb2NrKiBibG9jayA9IHN0YXRpY19jYXN0PENvcHlCbG9jayo+KG1fZnJvbVNw
YWNlLT5yZW1vdmVIZWFkKCkpOworICAgICAgICBpZiAoYmxvY2stPm1faXNQaW5uZWQpIHsKKyAg
ICAgICAgICAgIGJsb2NrLT5tX2lzUGlubmVkID0gZmFsc2U7CisgICAgICAgICAgICBtX3RvU3Bh
Y2UtPnB1c2goYmxvY2spOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAg
ICAgICBtX3RvU3BhY2VTZXQucmVtb3ZlKGJsb2NrKTsKKyAgICAgICAgeworICAgICAgICAgICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1faGVhcC0+bV9mcmVlQmxvY2tMb2NrKTsKKyAgICAgICAgICAg
IG1faGVhcC0+bV9mcmVlQmxvY2tzLnB1c2goYmxvY2spOworICAgICAgICAgICAgbV9oZWFwLT5t
X251bWJlck9mRnJlZUJsb2NrcysrOworICAgICAgICB9CisgICAgfQorCisgICAgQ29weUJsb2Nr
KiBjdXJyID0gc3RhdGljX2Nhc3Q8Q29weUJsb2NrKj4obV9vdmVyc2l6ZUJsb2Nrcy5oZWFkKCkp
OworICAgIHdoaWxlIChjdXJyKSB7CisgICAgICAgIENvcHlCbG9jayogbmV4dCA9IHN0YXRpY19j
YXN0PENvcHlCbG9jayo+KGN1cnItPm5leHQoKSk7CisgICAgICAgIGlmICghY3Vyci0+bV9pc1Bp
bm5lZCkgeworICAgICAgICAgICAgbV9vdmVyc2l6ZUJsb2Nrcy5yZW1vdmUoY3Vycik7CisgICAg
ICAgICAgICBtX3RvdGFsTWVtb3J5QWxsb2NhdGVkIC09IGN1cnItPm1fYWxsb2NhdGlvbi5zaXpl
KCk7CisgICAgICAgICAgICBtX3RvdGFsTWVtb3J5VXRpbGl6ZWQgLT0gY3Vyci0+bV9hbGxvY2F0
aW9uLnNpemUoKSAtIHNpemVvZihDb3B5QmxvY2spOworICAgICAgICAgICAgY3Vyci0+bV9hbGxv
Y2F0aW9uLmRlYWxsb2NhdGUoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBjdXJyLT5t
X2lzUGlubmVkID0gZmFsc2U7CisgICAgICAgIGN1cnIgPSBuZXh0OworICAgIH0KKworICAgIGlm
ICghKG1fY3VycmVudEJsb2NrID0gc3RhdGljX2Nhc3Q8Q29weUJsb2NrKj4obV90b1NwYWNlLT5o
ZWFkKCkpKSkKKyAgICAgICAgaWYgKCFhZGROZXdCbG9jaygpKQorICAgICAgICAgICAgQ1JBU0go
KTsKK30KKworaW5saW5lIHZvaWQgQ29weVNwYWNlOjpkb25lRmlsbGluZ0Jsb2NrKENvcHlCbG9j
ayogYmxvY2spCit7CisgICAgQVNTRVJUKGJsb2NrKTsKKyAgICBBU1NFUlQoYmxvY2stPm1fb2Zm
c2V0IDwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYmxvY2spICsgc19ibG9ja1NpemUpOworICAg
IEFTU0VSVChtX2luQ29weWluZ1BoYXNlKTsKKworICAgIGlmIChibG9jay0+bV9vZmZzZXQgPT0g
YmxvY2stPm1fcGF5bG9hZCkgeworICAgICAgICByZWN5Y2xlQmxvY2soYmxvY2spOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgeworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV90
b1NwYWNlTG9jayk7CisgICAgICAgIG1fdG9TcGFjZS0+cHVzaChibG9jayk7CisgICAgICAgIG1f
dG9TcGFjZVNldC5hZGQoYmxvY2spOworICAgICAgICBtX3RvU3BhY2VGaWx0ZXIuYWRkKHJlaW50
ZXJwcmV0X2Nhc3Q8Qml0cz4oYmxvY2spKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX21lbW9yeVN0YXRzTG9jayk7CisgICAgICAgIG1fdG90YWxNZW1vcnlV
dGlsaXplZCArPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRpY19jYXN0PGNoYXIqPihibG9jay0+
bV9vZmZzZXQpIC0gYmxvY2stPm1fcGF5bG9hZCk7CisgICAgfQorCisgICAgeworICAgICAgICBN
dXRleExvY2tlciBsb2NrZXIobV9sb2FuZWRCbG9ja3NMb2NrKTsKKyAgICAgICAgQVNTRVJUKG1f
bnVtYmVyT2ZMb2FuZWRCbG9ja3MgPiAwKTsKKyAgICAgICAgbV9udW1iZXJPZkxvYW5lZEJsb2Nr
cy0tOworICAgICAgICBpZiAoIW1fbnVtYmVyT2ZMb2FuZWRCbG9ja3MpCisgICAgICAgICAgICBt
X2xvYW5lZEJsb2Nrc0NvbmRpdGlvbi5zaWduYWwoKTsKKyAgICB9Cit9CisKK2lubGluZSB2b2lk
IENvcHlTcGFjZTo6cmVjeWNsZUJsb2NrKENvcHlCbG9jayogYmxvY2spCit7CisgICAgeworICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIobV9oZWFwLT5tX2ZyZWVCbG9ja0xvY2spOworICAgICAg
ICBtX2hlYXAtPm1fZnJlZUJsb2Nrcy5wdXNoKGJsb2NrKTsKKyAgICAgICAgbV9oZWFwLT5tX251
bWJlck9mRnJlZUJsb2NrcysrOworICAgIH0KKworICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fbG9hbmVkQmxvY2tzTG9jayk7CisgICAgICAgIEFTU0VSVChtX251bWJlck9mTG9h
bmVkQmxvY2tzID4gMCk7CisgICAgICAgIG1fbnVtYmVyT2ZMb2FuZWRCbG9ja3MtLTsKKyAgICAg
ICAgaWYgKCFtX251bWJlck9mTG9hbmVkQmxvY2tzKQorICAgICAgICAgICAgbV9sb2FuZWRCbG9j
a3NDb25kaXRpb24uc2lnbmFsKCk7CisgICAgfQorfQorCitpbmxpbmUgQ2hlY2tlZEJvb2xlYW4g
Q29weVNwYWNlOjpnZXRGcmVzaEJsb2NrKEFsbG9jYXRpb25FZmZvcnQgYWxsb2NhdGlvbkVmZm9y
dCwgQ29weUJsb2NrKiogb3V0QmxvY2spCit7CisgICAgSGVhcEJsb2NrKiBoZWFwQmxvY2sgPSAw
OworICAgIENvcHlCbG9jayogYmxvY2sgPSAwOworICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1faGVhcC0+bV9mcmVlQmxvY2tMb2NrKTsKKyAgICAgICAgaWYgKCFtX2hlYXAtPm1f
ZnJlZUJsb2Nrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGhlYXBCbG9jayA9IG1faGVhcC0+
bV9mcmVlQmxvY2tzLnJlbW92ZUhlYWQoKTsKKyAgICAgICAgICAgIG1faGVhcC0+bV9udW1iZXJP
ZkZyZWVCbG9ja3MtLTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoaGVhcEJsb2NrKQorICAg
ICAgICBibG9jayA9IG5ldyAoTm90TnVsbCwgaGVhcEJsb2NrKSBDb3B5QmxvY2soaGVhcEJsb2Nr
LT5tX2FsbG9jYXRpb24pOworICAgIGVsc2UgaWYgKGFsbG9jYXRpb25FZmZvcnQgPT0gQWxsb2Nh
dGlvbk11c3RTdWNjZWVkKSB7CisgICAgICAgIGlmICghYWxsb2NhdGVOZXdCbG9jaygmYmxvY2sp
KSB7CisgICAgICAgICAgICAqb3V0QmxvY2sgPSAwOworICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9IGVs
c2UgeworICAgICAgICBBU1NFUlQoYWxsb2NhdGlvbkVmZm9ydCA9PSBBbGxvY2F0aW9uQ2FuRmFp
bCk7CisgICAgICAgIGlmIChtX2hlYXAtPndhdGVyTWFyaygpID49IG1faGVhcC0+aGlnaFdhdGVy
TWFyaygpICYmIG1faGVhcC0+bV9pc1NhZmVUb0NvbGxlY3QpCisgICAgICAgICAgICBtX2hlYXAt
PmNvbGxlY3QoSGVhcDo6RG9Ob3RTd2VlcCk7CisgICAgICAgIAorICAgICAgICBpZiAoIWdldEZy
ZXNoQmxvY2soQWxsb2NhdGlvbk11c3RTdWNjZWVkLCAmYmxvY2spKSB7CisgICAgICAgICAgICAq
b3V0QmxvY2sgPSAwOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgQVNTRVJUKGJsb2NrKTsK
KyAgICBBU1NFUlQoaXNQb2ludGVyQWxpZ25lZChibG9jay0+bV9vZmZzZXQpKTsKKyAgICAqb3V0
QmxvY2sgPSBibG9jazsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5saW5lIENoZWNrZWRCb29s
ZWFuIENvcHlTcGFjZTo6Ym9ycm93QmxvY2soQ29weUJsb2NrKiogb3V0QmxvY2spCit7CisgICAg
Q29weUJsb2NrKiBibG9jayA9IDA7CisgICAgaWYgKCFnZXRGcmVzaEJsb2NrKEFsbG9jYXRpb25N
dXN0U3VjY2VlZCwgJmJsb2NrKSkgeworICAgICAgICAqb3V0QmxvY2sgPSAwOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgQVNTRVJUKG1faW5Db3B5aW5nUGhhc2UpOworICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX2xvYW5lZEJsb2Nrc0xvY2spOworICAgIG1fbnVtYmVyT2ZM
b2FuZWRCbG9ja3MrKzsKKworICAgIEFTU0VSVChibG9jay0+bV9vZmZzZXQgPT0gYmxvY2stPm1f
cGF5bG9hZCk7CisgICAgKm91dEJsb2NrID0gYmxvY2s7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2lubGluZSBDaGVja2VkQm9vbGVhbiBDb3B5U3BhY2U6OmFkZE5ld0Jsb2NrKCkKK3sKKyAgICBD
b3B5QmxvY2sqIGJsb2NrID0gMDsKKyAgICBpZiAoIWdldEZyZXNoQmxvY2soQWxsb2NhdGlvbkNh
bkZhaWwsICZibG9jaykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgbV90
b1NwYWNlLT5wdXNoKGJsb2NrKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrOworICAgIHJl
dHVybiB0cnVlOworfQorCitpbmxpbmUgQ2hlY2tlZEJvb2xlYW4gQ29weVNwYWNlOjphbGxvY2F0
ZU5ld0Jsb2NrKENvcHlCbG9jayoqIG91dEJsb2NrKQoreworICAgIFBhZ2VBbGxvY2F0aW9uQWxp
Z25lZCBhbGxvY2F0aW9uID0gUGFnZUFsbG9jYXRpb25BbGlnbmVkOjphbGxvY2F0ZShzX2Jsb2Nr
U2l6ZSwgc19ibG9ja1NpemUsIE9TQWxsb2NhdG9yOjpKU0dDSGVhcFBhZ2VzKTsKKyAgICBpZiAo
IXN0YXRpY19jYXN0PGJvb2w+KGFsbG9jYXRpb24pKSB7CisgICAgICAgICpvdXRCbG9jayA9IDA7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX21lbW9yeVN0YXRzTG9jayk7CisgICAgICAgIG1fdG90YWxNZW1vcnlBbGxv
Y2F0ZWQgKz0gc19ibG9ja1NpemU7CisgICAgfQorCisgICAgKm91dEJsb2NrID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0aW9uLmJhc2UoKSkgQ29weUJsb2NrKGFsbG9jYXRpb24pOworICAgIHJldHVy
biB0cnVlOworfQorCitpbmxpbmUgYm9vbCBDb3B5U3BhY2U6OmZpdHNJbkJsb2NrKENvcHlCbG9j
ayogYmxvY2ssIHNpemVfdCBieXRlcykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+
KGJsb2NrLT5tX29mZnNldCkgKyBieXRlcyA8IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJsb2Nr
KSArIHNfYmxvY2tTaXplICYmIHN0YXRpY19jYXN0PGNoYXIqPihibG9jay0+bV9vZmZzZXQpICsg
Ynl0ZXMgPiBibG9jay0+bV9vZmZzZXQ7Cit9CisKK2lubGluZSBib29sIENvcHlTcGFjZTo6Zml0
c0luQ3VycmVudEJsb2NrKHNpemVfdCBieXRlcykKK3sKKyAgICByZXR1cm4gZml0c0luQmxvY2so
bV9jdXJyZW50QmxvY2ssIGJ5dGVzKTsKK30KKworaW5saW5lIENoZWNrZWRCb29sZWFuIENvcHlT
cGFjZTo6dHJ5QWxsb2NhdGUoc2l6ZV90IGJ5dGVzLCB2b2lkKiogb3V0UHRyKQoreworICAgIEFT
U0VSVCghbV9oZWFwLT5nbG9iYWxEYXRhKCktPmlzSW5pdGlhbGl6aW5nT2JqZWN0KCkpOworCisg
ICAgaWYgKGlzT3ZlcnNpemUoYnl0ZXMpIHx8ICFmaXRzSW5DdXJyZW50QmxvY2soYnl0ZXMpKQor
ICAgICAgICByZXR1cm4gdHJ5QWxsb2NhdGVTbG93Q2FzZShieXRlcywgb3V0UHRyKTsKKyAgICAK
KyAgICAqb3V0UHRyID0gYWxsb2NhdGVGcm9tQmxvY2sobV9jdXJyZW50QmxvY2ssIGJ5dGVzKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5saW5lIENoZWNrZWRCb29sZWFuIENvcHlTcGFjZTo6
dHJ5QWxsb2NhdGVPdmVyc2l6ZShzaXplX3QgYnl0ZXMsIHZvaWQqKiBvdXRQdHIpCit7CisgICAg
QVNTRVJUKGlzT3ZlcnNpemUoYnl0ZXMpKTsKKyAgICAKKyAgICBzaXplX3QgYmxvY2tTaXplID0g
V1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNfcGFnZVNpemU+KHNpemVvZihDb3B5QmxvY2spICsg
Ynl0ZXMpOworICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCBhbGxvY2F0aW9uID0gUGFnZUFsbG9j
YXRpb25BbGlnbmVkOjphbGxvY2F0ZShibG9ja1NpemUsIHNfcGFnZVNpemUsIE9TQWxsb2NhdG9y
OjpKU0dDSGVhcFBhZ2VzKTsKKyAgICBpZiAoIXN0YXRpY19jYXN0PGJvb2w+KGFsbG9jYXRpb24p
KSB7CisgICAgICAgICpvdXRQdHIgPSAwOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIENvcHlCbG9jayogYmxvY2sgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRpb24uYmFzZSgpKSBD
b3B5QmxvY2soYWxsb2NhdGlvbik7CisgICAgbV9vdmVyc2l6ZUJsb2Nrcy5wdXNoKGJsb2NrKTsK
KyAgICBBU1NFUlQoaXNQb2ludGVyQWxpZ25lZChibG9jay0+bV9vZmZzZXQpKTsKKworICAgIG1f
b3ZlcnNpemVGaWx0ZXIuYWRkKHJlaW50ZXJwcmV0X2Nhc3Q8Qml0cz4oYmxvY2spKTsKKyAgICAK
KyAgICBtX3RvdGFsTWVtb3J5QWxsb2NhdGVkICs9IGJsb2NrU2l6ZTsKKyAgICBtX3RvdGFsTWVt
b3J5VXRpbGl6ZWQgKz0gYnl0ZXM7CisKKyAgICAqb3V0UHRyID0gYmxvY2stPm1fb2Zmc2V0Owor
ICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgdm9pZCogQ29weVNwYWNlOjphbGxvY2F0ZUZy
b21CbG9jayhDb3B5QmxvY2sqIGJsb2NrLCBzaXplX3QgYnl0ZXMpCit7CisgICAgQVNTRVJUKCFp
c092ZXJzaXplKGJ5dGVzKSk7CisgICAgQVNTRVJUKGZpdHNJbkJsb2NrKGJsb2NrLCBieXRlcykp
OworICAgIEFTU0VSVChpc1BvaW50ZXJBbGlnbmVkKGJsb2NrLT5tX29mZnNldCkpOworICAgIAor
ICAgIHZvaWQqIHB0ciA9IGJsb2NrLT5tX29mZnNldDsKKyAgICBBU1NFUlQoYmxvY2stPm1fb2Zm
c2V0ID49IGJsb2NrLT5tX3BheWxvYWQgJiYgYmxvY2stPm1fb2Zmc2V0IDwgcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oYmxvY2spICsgc19ibG9ja1NpemUpOworICAgIGJsb2NrLT5tX29mZnNldCA9
IHN0YXRpY19jYXN0PHZvaWQqPigoc3RhdGljX2Nhc3Q8Y2hhcio+KHB0cikgKyBieXRlcykpOwor
ICAgIEFTU0VSVChibG9jay0+bV9vZmZzZXQgPj0gYmxvY2stPm1fcGF5bG9hZCAmJiBibG9jay0+
bV9vZmZzZXQgPCByZWludGVycHJldF9jYXN0PGNoYXIqPihibG9jaykgKyBzX2Jsb2NrU2l6ZSk7
CisKKyAgICBBU1NFUlQoaXNQb2ludGVyQWxpZ25lZChwdHIpKTsKKyAgICByZXR1cm4gcHRyOwor
fQorCitpbmxpbmUgQ2hlY2tlZEJvb2xlYW4gQ29weVNwYWNlOjp0cnlSZWFsbG9jYXRlKHZvaWQq
KiBwdHIsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSkKK3sKKyAgICBpZiAob2xkU2l6
ZSA+PSBuZXdTaXplKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICB2b2lkKiBvbGRQ
dHIgPSAqcHRyOworICAgIEFTU0VSVCghbV9oZWFwLT5nbG9iYWxEYXRhKCktPmlzSW5pdGlhbGl6
aW5nT2JqZWN0KCkpOworCisgICAgaWYgKGlzT3ZlcnNpemUob2xkU2l6ZSkgfHwgaXNPdmVyc2l6
ZShuZXdTaXplKSkKKyAgICAgICAgcmV0dXJuIHRyeVJlYWxsb2NhdGVPdmVyc2l6ZShwdHIsIG9s
ZFNpemUsIG5ld1NpemUpOworCisgICAgaWYgKHN0YXRpY19jYXN0PGNoYXIqPihvbGRQdHIpICsg
b2xkU2l6ZSA9PSBtX2N1cnJlbnRCbG9jay0+bV9vZmZzZXQgJiYgb2xkUHRyID4gbV9jdXJyZW50
QmxvY2sgJiYgb2xkUHRyIDwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9jdXJyZW50QmxvY2sp
ICsgc19ibG9ja1NpemUpIHsKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPm1fb2Zmc2V0ID0gb2xk
UHRyOworICAgICAgICBpZiAoZml0c0luQ3VycmVudEJsb2NrKG5ld1NpemUpKSB7CisgICAgICAg
ICAgICBtX3RvdGFsTWVtb3J5VXRpbGl6ZWQgKz0gbmV3U2l6ZSAtIG9sZFNpemU7CisgICAgICAg
ICAgICByZXR1cm4gYWxsb2NhdGVGcm9tQmxvY2sobV9jdXJyZW50QmxvY2ssIG5ld1NpemUpOwor
ICAgICAgICB9CisgICAgfQorICAgIG1fdG90YWxNZW1vcnlVdGlsaXplZCAtPSBvbGRTaXplOwor
CisgICAgdm9pZCogcmVzdWx0ID0gMDsKKyAgICBpZiAoIXRyeUFsbG9jYXRlKG5ld1NpemUsICZy
ZXN1bHQpKSB7CisgICAgICAgICpwdHIgPSAwOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIG1lbWNweShyZXN1bHQsIG9sZFB0ciwgb2xkU2l6ZSk7CisgICAgKnB0ciA9IHJlc3Vs
dDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5saW5lIENoZWNrZWRCb29sZWFuIENvcHlTcGFj
ZTo6dHJ5UmVhbGxvY2F0ZU92ZXJzaXplKHZvaWQqKiBwdHIsIHNpemVfdCBvbGRTaXplLCBzaXpl
X3QgbmV3U2l6ZSkKK3sKKyAgICBBU1NFUlQoaXNPdmVyc2l6ZShvbGRTaXplKSB8fCBpc092ZXJz
aXplKG5ld1NpemUpKTsKKyAgICBBU1NFUlQobmV3U2l6ZSA+IG9sZFNpemUpOworCisgICAgdm9p
ZCogb2xkUHRyID0gKnB0cjsKKyAgICAKKyAgICB2b2lkKiBuZXdQdHIgPSAwOworICAgIGlmICgh
dHJ5QWxsb2NhdGVPdmVyc2l6ZShuZXdTaXplLCAmbmV3UHRyKSkgeworICAgICAgICAqcHRyID0g
MDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBtZW1jcHkobmV3UHRyLCBvbGRQ
dHIsIG9sZFNpemUpOworCisgICAgaWYgKGlzT3ZlcnNpemUob2xkU2l6ZSkpIHsKKyAgICAgICAg
Q29weUJsb2NrKiBvbGRCbG9jayA9IG92ZXJzaXplQmxvY2tGb3Iob2xkUHRyKTsKKyAgICAgICAg
bV9vdmVyc2l6ZUJsb2Nrcy5yZW1vdmUob2xkQmxvY2spOworICAgICAgICBvbGRCbG9jay0+bV9h
bGxvY2F0aW9uLmRlYWxsb2NhdGUoKTsKKyAgICAgICAgbV90b3RhbE1lbW9yeUFsbG9jYXRlZCAt
PSBvbGRTaXplICsgc2l6ZW9mKENvcHlCbG9jayk7CisgICAgfQorICAgIAorICAgIG1fdG90YWxN
ZW1vcnlVdGlsaXplZCAtPSBvbGRTaXplOworCisgICAgKnB0ciA9IG5ld1B0cjsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworaW5saW5lIGJvb2wgQ29weVNwYWNlOjppc092ZXJzaXplKHNpemVfdCBi
eXRlcykKK3sKKyAgICByZXR1cm4gYnl0ZXMgPiBzX21heEFsbG9jYXRpb25TaXplOworfQorCitp
bmxpbmUgYm9vbCBDb3B5U3BhY2U6OmlzUGlubmVkKHZvaWQqIHB0cikKK3sKKyAgICByZXR1cm4g
YmxvY2tGb3IocHRyKS0+bV9pc1Bpbm5lZDsKK30KKworaW5saW5lIENvcHlCbG9jayogQ29weVNw
YWNlOjpvdmVyc2l6ZUJsb2NrRm9yKHZvaWQqIHB0cikKK3sKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxDb3B5QmxvY2sqPihyZWludGVycHJldF9jYXN0PHNpemVfdD4ocHRyKSAmIHNfcGFn
ZU1hc2spOworfQorCitpbmxpbmUgQ29weUJsb2NrKiBDb3B5U3BhY2U6OmJsb2NrRm9yKHZvaWQq
IHB0cikKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDb3B5QmxvY2sqPihyZWludGVy
cHJldF9jYXN0PHNpemVfdD4ocHRyKSAmIHNfYmxvY2tNYXNrKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCA4ZTEw
YmQ1ZGExZDdmNGVhZDUyYTI3YzM0NmIwMmNjYzQwMWFiYjlhLi4wMTIxYWNhMDhlYjY1OGY5OGNm
Mjc3NDEyMTQzZGVkMTI3MWRjYjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApA
QCAtMjEsOCArMjEsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhlYXAuaCIK
IAotI2luY2x1ZGUgIkJ1bXBTcGFjZS5oIgotI2luY2x1ZGUgIkJ1bXBTcGFjZUlubGluZU1ldGhv
ZHMuaCIKKyNpbmNsdWRlICJDb3B5U3BhY2UuaCIKKyNpbmNsdWRlICJDb3B5U3BhY2VJbmxpbmVN
ZXRob2RzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29uc2VydmF0aXZl
Um9vdHMuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuaAppbmRleCA4N2EyMGEwODViMDg1MDg3NDE0OTAzYmJmOTU2MjI2ZDllYzUxYzUw
Li43YjEwM2MzZjQxMTA2YzQ1ZDYxODBjMmRjMDY4YjAxMjEzNmE1Mzc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCkBAIC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0g
ICAgY2xhc3MgQnVtcFNwYWNlOworICAgIGNsYXNzIENvcHlTcGFjZTsKICAgICBjbGFzcyBDb2Rl
QmxvY2s7CiAgICAgY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNrOwogICAgIGNsYXNzIEdsb2JhbENv
ZGVCbG9jazsKQEAgLTEzOSw3ICsxMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIE1hcmtlZFNwYWNlOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQWxsb2Nh
dG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7Ci0gICAgICAgIGZyaWVuZCBj
bGFzcyBCdW1wU3BhY2U7CisgICAgICAgIGZyaWVuZCBjbGFzcyBDb3B5U3BhY2U7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBTbG90VmlzaXRvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9j
azsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gZnJpZW5kIHZvaWQqIGFsbG9jYXRlQ2Vs
bChIZWFwJik7CkBAIC0xOTcsNyArMTk3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAog
ICAgICAgICBPcGVyYXRpb25JblByb2dyZXNzIG1fb3BlcmF0aW9uSW5Qcm9ncmVzczsKICAgICAg
ICAgTWFya2VkU3BhY2UgbV9vYmplY3RTcGFjZTsKLSAgICAgICAgQnVtcFNwYWNlIG1fc3RvcmFn
ZVNwYWNlOworICAgICAgICBDb3B5U3BhY2UgbV9zdG9yYWdlU3BhY2U7CiAKICAgICAgICAgRG91
Ymx5TGlua2VkTGlzdDxIZWFwQmxvY2s+IG1fZnJlZUJsb2NrczsKICAgICAgICAgc2l6ZV90IG1f
bnVtYmVyT2ZGcmVlQmxvY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya1N0YWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5j
cHAKaW5kZXggOWEzMDkyMzk2ODk3MDhiMDI5OThkYjI3MjVkYzNkNTE1MzBjYWJkMS4uMDE5NTgz
YWFhZjYwYWRmODQ5YTMzNTkwMTkyZDVjYTY5MDViNTI5NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrU3RhY2suY3BwCkBAIC0yNiw4ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiTWFya1N0YWNrLmgiCiAKLSNpbmNsdWRlICJCdW1wU3BhY2UuaCIKLSNp
bmNsdWRlICJCdW1wU3BhY2VJbmxpbmVNZXRob2RzLmgiCisjaW5jbHVkZSAiQ29weVNwYWNlLmgi
CisjaW5jbHVkZSAiQ29weVNwYWNlSW5saW5lTWV0aG9kcy5oIgogI2luY2x1ZGUgIkNvbnNlcnZh
dGl2ZVJvb3RzLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKQEAg
LTIzNSw3ICsyMzUsNyBAQCB2b2lkKiBNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhOjptYXJraW5n
VGhyZWFkU3RhcnRGdW5jKHZvaWQqIHNoYXJlZCkKIAogTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0
YTo6TWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiAg
ICAgOiBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0YSkKLSAgICAsIG1fYnVtcFNwYWNlKCZnbG9iYWxE
YXRhLT5oZWFwLm1fc3RvcmFnZVNwYWNlKQorICAgICwgbV9jb3B5U3BhY2UoJmdsb2JhbERhdGEt
PmhlYXAubV9zdG9yYWdlU3BhY2UpCiAgICAgLCBtX3NoYXJlZE1hcmtTdGFjayhtX3NlZ21lbnRB
bGxvY2F0b3IpCiAgICAgLCBtX251bWJlck9mQWN0aXZlUGFyYWxsZWxNYXJrZXJzKDApCiAgICAg
LCBtX3BhcmFsbGVsTWFya2Vyc1Nob3VsZEV4aXQoZmFsc2UpCkBAIC00MDIsNyArNDAyLDcgQEAg
dm9pZCBTbG90VmlzaXRvcjo6ZHJhaW5Gcm9tU2hhcmVkKFNoYXJlZERyYWluTW9kZSBzaGFyZWRE
cmFpbk1vZGUpCiAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgICAg
ICAgICAgLy8gRGlkIHdlIHJlYWNoIHRlcm1pbmF0aW9uPwogICAgICAgICAgICAgICAgICAgICBp
ZiAoIW1fc2hhcmVkLm1fbnVtYmVyT2ZBY3RpdmVQYXJhbGxlbE1hcmtlcnMgJiYgbV9zaGFyZWQu
bV9zaGFyZWRNYXJrU3RhY2suaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAv
LyBMZXQgYW55IHNsZWVwaW5nIHNsYXZlcyBrbm93IGl0J3MgdGltZSBmb3IgdGhlbSB0byBnaXZl
IHRoZWlyIHByaXZhdGUgQnVtcEJsb2NrcyBiYWNrCisgICAgICAgICAgICAgICAgICAgICAgICAv
LyBMZXQgYW55IHNsZWVwaW5nIHNsYXZlcyBrbm93IGl0J3MgdGltZSBmb3IgdGhlbSB0byBnaXZl
IHRoZWlyIHByaXZhdGUgQ29weUJsb2NrcyBiYWNrCiAgICAgICAgICAgICAgICAgICAgICAgICBt
X3NoYXJlZC5tX21hcmtpbmdDb25kaXRpb24uYnJvYWRjYXN0KCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTQ1OSwzMiArNDU5LDMy
IEBAIHZvaWQgTWFya1N0YWNrOjptZXJnZU9wYXF1ZVJvb3RzKCkKIHZvaWQgU2xvdFZpc2l0b3I6
OnN0YXJ0Q29weWluZygpCiB7CiAgICAgQVNTRVJUKCFtX2NvcHlCbG9jayk7Ci0gICAgaWYgKCFt
X3NoYXJlZC5tX2J1bXBTcGFjZS0+Ym9ycm93QmxvY2soJm1fY29weUJsb2NrKSkKKyAgICBpZiAo
IW1fc2hhcmVkLm1fY29weVNwYWNlLT5ib3Jyb3dCbG9jaygmbV9jb3B5QmxvY2spKQogICAgICAg
ICBDUkFTSCgpOwogfSAgICAKIAogdm9pZCogU2xvdFZpc2l0b3I6OmFsbG9jYXRlTmV3U3BhY2Uo
dm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpCiB7Ci0gICAgaWYgKEJ1bXBTcGFjZTo6aXNPdmVyc2l6
ZShieXRlcykpIHsKLSAgICAgICAgbV9zaGFyZWQubV9idW1wU3BhY2UtPnBpbihCdW1wU3BhY2U6
Om92ZXJzaXplQmxvY2tGb3IocHRyKSk7CisgICAgaWYgKENvcHlTcGFjZTo6aXNPdmVyc2l6ZShi
eXRlcykpIHsKKyAgICAgICAgbV9zaGFyZWQubV9jb3B5U3BhY2UtPnBpbihDb3B5U3BhY2U6Om92
ZXJzaXplQmxvY2tGb3IocHRyKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlm
IChtX3NoYXJlZC5tX2J1bXBTcGFjZS0+aXNQaW5uZWQocHRyKSkKKyAgICBpZiAobV9zaGFyZWQu
bV9jb3B5U3BhY2UtPmlzUGlubmVkKHB0cikpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8g
VGhlIG9ubHkgdGltZSBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgYSBudWxsIGNvcHkgYmxvY2sgaXMg
aWYgd2UgaGF2ZSBqdXN0IHN0YXJ0ZWQgY29weWluZy4KICAgICBpZiAoIW1fY29weUJsb2NrKQog
ICAgICAgICBzdGFydENvcHlpbmcoKTsKIAotICAgIGlmICghQnVtcFNwYWNlOjpmaXRzSW5CbG9j
ayhtX2NvcHlCbG9jaywgYnl0ZXMpKSB7CisgICAgaWYgKCFDb3B5U3BhY2U6OmZpdHNJbkJsb2Nr
KG1fY29weUJsb2NrLCBieXRlcykpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBsb2Nr
IGFjcm9zcyB0aGVzZSB0d28gY2FsbHMgYmVjYXVzZSB0aGUgbWFzdGVyIHRocmVhZCB3b24ndCAK
ICAgICAgICAgLy8gY2FsbCBkb25lQ29weWluZygpIGJlY2F1c2UgdGhpcyB0aHJlYWQgaXMgY29u
c2lkZXJlZCBhY3RpdmUuCi0gICAgICAgIG1fc2hhcmVkLm1fYnVtcFNwYWNlLT5kb25lRmlsbGlu
Z0Jsb2NrKG1fY29weUJsb2NrKTsKLSAgICAgICAgaWYgKCFtX3NoYXJlZC5tX2J1bXBTcGFjZS0+
Ym9ycm93QmxvY2soJm1fY29weUJsb2NrKSkKKyAgICAgICAgbV9zaGFyZWQubV9jb3B5U3BhY2Ut
PmRvbmVGaWxsaW5nQmxvY2sobV9jb3B5QmxvY2spOworICAgICAgICBpZiAoIW1fc2hhcmVkLm1f
Y29weVNwYWNlLT5ib3Jyb3dCbG9jaygmbV9jb3B5QmxvY2spKQogICAgICAgICAgICAgQ1JBU0go
KTsKICAgICB9Ci0gICAgcmV0dXJuIEJ1bXBTcGFjZTo6YWxsb2NhdGVGcm9tQmxvY2sobV9jb3B5
QmxvY2ssIGJ5dGVzKTsKKyAgICByZXR1cm4gQ29weVNwYWNlOjphbGxvY2F0ZUZyb21CbG9jayht
X2NvcHlCbG9jaywgYnl0ZXMpOwogfQogCiB2b2lkIFNsb3RWaXNpdG9yOjpjb3B5KHZvaWQqKiBw
dHIsIHNpemVfdCBieXRlcykKQEAgLTUyNCw3ICs1MjQsNyBAQCB2b2lkIFNsb3RWaXNpdG9yOjpk
b25lQ29weWluZygpCiAgICAgaWYgKCFtX2NvcHlCbG9jaykKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9zaGFyZWQubV9idW1wU3BhY2UtPmRvbmVGaWxsaW5nQmxvY2sobV9jb3B5QmxvY2spOwor
ICAgIG1fc2hhcmVkLm1fY29weVNwYWNlLT5kb25lRmlsbGluZ0Jsb2NrKG1fY29weUJsb2NrKTsK
IAogICAgIG1fY29weUJsb2NrID0gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtTdGFjay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0
YWNrLmgKaW5kZXggNjkyM2NkZDhhZTRmM2EyYjRkZjc2YWIwYjA0OTYzNWNjY2Y2ZTI1MC4uYzQy
NGRjN2E5NDI1MTlmNTk0MjY4NWE3Mzc3ODRjMTY3MzdhOGVkZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya1N0YWNrLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgTWFya1N0YWNr
X2gKICNkZWZpbmUgTWFya1N0YWNrX2gKIAotI2luY2x1ZGUgIkJ1bXBTcGFjZS5oIgorI2luY2x1
ZGUgIkNvcHlTcGFjZS5oIgogI2luY2x1ZGUgIkhhbmRsZVR5cGVzLmgiCiAjaW5jbHVkZSAiT3B0
aW9ucy5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKQEAgLTE4Miw3ICsxODIsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICNlbmRpZgogCiAgICAgICAgIEpTR2xvYmFsRGF0YSogbV9nbG9iYWxEYXRhOwot
ICAgICAgICBCdW1wU3BhY2UqIG1fYnVtcFNwYWNlOworICAgICAgICBDb3B5U3BhY2UqIG1fY29w
eVNwYWNlOwogICAgICAgICAKICAgICAgICAgTWFya1N0YWNrU2VnbWVudEFsbG9jYXRvciBtX3Nl
Z21lbnRBbGxvY2F0b3I7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvU2xvdFZpc2l0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RW
aXNpdG9yLmgKaW5kZXggZTQ5YTlhNjM3N2MxYWEwMDk4MWY5MGZmZDJiYmVlYjJkNTZiZTk4OC4u
Njg4NjhlMWViNmEyZjkxN2ZiM2JhMTc5MDcyYzcxMzBjNmUzMDBkZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFNs
b3RWaXNpdG9yX2gKICNkZWZpbmUgU2xvdFZpc2l0b3JfaAogCi0jaW5jbHVkZSAiQnVtcFNwYWNl
LmgiCisjaW5jbHVkZSAiQ29weVNwYWNlLmgiCiAjaW5jbHVkZSAiTWFya1N0YWNrLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewpAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgogICAgICAgICBkb25hdGVT
bG93KCk7CiAgICAgfQogICAgIAotICAgIEJ1bXBCbG9jayogbV9jb3B5QmxvY2s7CisgICAgQ29w
eUJsb2NrKiBtX2NvcHlCbG9jazsKIH07CiAKIGlubGluZSBTbG90VmlzaXRvcjo6U2xvdFZpc2l0
b3IoTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSYgc2hhcmVkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCA3MWQ2NzhlMmNkOGJlYjRjMDlmMmIyMmMwYzk3
NDk1MWU2M2QzZDllLi43ZGRlYzViZWY4YjlhNDNlNDUwMzI1YjRiNzVmZWQ2YWUwZTQ2OTFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMjQsOCArMjQs
OCBAQAogI2luY2x1ZGUgIkpTQXJyYXkuaCIKIAogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgi
Ci0jaW5jbHVkZSAiQnVtcFNwYWNlLmgiCi0jaW5jbHVkZSAiQnVtcFNwYWNlSW5saW5lTWV0aG9k
cy5oIgorI2luY2x1ZGUgIkNvcHlTcGFjZS5oIgorI2luY2x1ZGUgIkNvcHlTcGFjZUlubGluZU1l
dGhvZHMuaCIKICNpbmNsdWRlICJDYWNoZWRDYWxsLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNp
bmNsdWRlICJFeGVjdXRhYmxlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAKaW5kZXggNGQ5MGY1YTkxMzcyZWM4MTA1YTY5MjhkZjdhOGMyYmUzNjZkZjZhMy4u
Yzc2NzA5ZDdjOWI4NjMxMDEzNzNiYjY1YWIyOTZjZWJhYmEwYjVkNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAKLSNpbmNsdWRlICJCdW1wU3Bh
Y2VJbmxpbmVNZXRob2RzLmgiCisjaW5jbHVkZSAiQ29weVNwYWNlSW5saW5lTWV0aG9kcy5oIgog
I2luY2x1ZGUgIkRhdGVQcm90b3R5cGUuaCIKICNpbmNsdWRlICJFcnJvckNvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCg==
</data>
<flag name="review"
          id="128868"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>