<?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>105237</bug_id>
          
          <creation_ts>2012-12-17 18:11:32 -0800</creation_ts>
          <short_desc>DFG: Refactor DFGCorrectableJumpPoint to reduce size of OSRExit data</short_desc>
          <delta_ts>2012-12-18 02:34:27 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>105270</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>ossy</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>793218</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-12-17 18:11:32 -0800</bug_when>
    <thetext>The DFGCorrectableJumpPoint class contains information used during DFG compilation (the failure case Jump) phase as well as during code execution (offset to the patchable jump).  These objects are part of the code block, one per OSRExit, therefore it makes sense to eliminate the information needed during compilation.

DFGCorrectableJumpPoint should be refactored and effectively split.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793226</commentid>
    <comment_count>1</comment_count>
      <attachid>179845</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-12-17 18:20:57 -0800</bug_when>
    <thetext>Created attachment 179845
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793236</commentid>
    <comment_count>2</comment_count>
      <attachid>179848</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-12-17 18:29:16 -0800</bug_when>
    <thetext>Created attachment 179848
Patch with change in CMakeLists.txt missed in first patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793251</commentid>
    <comment_count>3</comment_count>
      <attachid>179848</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-17 18:42:07 -0800</bug_when>
    <thetext>Comment on attachment 179848
Patch with change in CMakeLists.txt missed in first patch

Rejecting attachment 179848 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

/mnt/git/webkit-commit-queue/Source/JavaScriptCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/15355987</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793257</commentid>
    <comment_count>4</comment_count>
      <attachid>179856</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-12-17 18:54:02 -0800</bug_when>
    <thetext>Created attachment 179856
Added reviewer information.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793288</commentid>
    <comment_count>5</comment_count>
      <attachid>179856</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-17 19:52:12 -0800</bug_when>
    <thetext>Comment on attachment 179856
Added reviewer information.

Clearing flags on attachment: 179856

Committed r137976: &lt;http://trac.webkit.org/changeset/137976&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793289</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-17 19:52:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793492</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-12-18 02:34:27 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 179856 [details])
&gt; Clearing flags on attachment: 179856
&gt; 
&gt; Committed r137976: &lt;http://trac.webkit.org/changeset/137976&gt;

It broke the ARMv7 build - see https://bugs.webkit.org/show_bug.cgi?id=105270 for details.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179845</attachid>
            <date>2012-12-17 18:20:57 -0800</date>
            <delta_ts>2012-12-17 18:29:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>105237.patch</filename>
            <type>text/plain</type>
            <size>31948</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3OTY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBA
CisyMDEyLTEyLTE3ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIERGRzogUmVmYWN0b3IgREZHQ29ycmVjdGFibGVKdW1wUG9pbnQgdG8gcmVkdWNlIHNpemUg
b2YgT1NSRXhpdCBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDUyMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZXBsYWNlZCBERkdDb3JyZWN0YWJsZUp1bXBQb2ludCB3aXRoIE9TUkV4aXRDb21w
aWxhdGlvbkluZm8gd2hpY2ggaXMgdXNlZCBhbmQga2VwdCBhbGl2ZSBvbmx5IHdoaWxlIHdlIGFy
ZQorICAgICAgICBjb21waWxpbmcgaW4gdGhlIERGRy4gIE1vdmVkIHRoZSBwYXRjaGFibGUgYnJh
bmNoIG9mZnNldCBkaXJlY3RseSBpbnRvIE9TUkV4aXQuCisKKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAqIGRmZy9ERkdDb3JyZWN0YWJsZUp1bXBQb2lu
dC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50Lmg6
IFJlbW92ZWQuCisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpKSVRDb21waWxlcjo6bGlua09TUkV4aXRzKToKKyAgICAgICAgKEpTQzo6REZHOjpK
SVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFwcGVuZEV4aXRKdW1wKToKKyAgICAgICAgKEpJ
VENvbXBpbGVyKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6T1NSRXhpdDo6T1NSRXhpdCk6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6c2V0
UGF0Y2hhYmxlQ29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Z2V0UGF0
Y2hhYmxlQ29kZU9mZnNldEFzSnVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Y29k
ZUxvY2F0aW9uRm9yUmVwYXRjaCk6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Y29ycmVj
dEp1bXApOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Lmg6CisgICAgICAgICogZGZnL0RGR09T
UkV4aXRDb21waWxhdGlvbkluZm8uaDogQWRkZWQuCisgICAgICAgIChPU1JFeGl0Q29tcGlsYXRp
b25JbmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsYXRpb25JbmZvOjpPU1JF
eGl0Q29tcGlsYXRpb25JbmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsYXRp
b25JbmZvOjpmYWlsdXJlSnVtcCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlci5j
cHA6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25DaGVjayk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uV2F0Y2hwb2ludCk6CisKIDIwMTItMTItMTcg
IEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgaXMgdG9vIGFn
Z3Jlc3NpdmUgd2l0aCBlbGlkaW5nIG92ZXJmbG93IGNoZWNrcyBpbiBsb29wcwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEzNzk1MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNv
cHkpCkBAIC0xODYsOCArMTg2LDYgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb21tb24uaCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb3JyZWN0YWJsZUp1
bXBQb2ludC5jcHAgXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVK
dW1wUG9pbnQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAg
XApAQCAtMjI4LDYgKzIyNiw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXQuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRD
b21waWxhdGlvbkluZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFzZS5j
cHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhc2UuaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgXApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEzNzk1MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDYg
QEAgU09VUkNFUyArPSBcCiAgICAgZGZnL0RGR0NGQVBoYXNlLmNwcCBcCiAgICAgZGZnL0RGR0NG
R1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwIFwKICAgICBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwIFwKLSAgICBkZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuY3BwIFwKICAgICBkZmcv
REZHQ1NFUGhhc2UuY3BwIFwKICAgICBkZmcvREZHRGlzYXNzZW1ibGVyLmNwcCBcCiAgICAgZGZn
L0RGR0RvbWluYXRvcnMuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxMzc5NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjM2LDggKzIzNiw2
IEBACiAJCTBGQzA5Nzc2MTQ2OTQzQjAwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIzMl82
NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMw
OTc3NTE0Njk0M0FEMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwICovOyB9
OwogCQkwRkMwOTc5MTE0NkE2RjcxMDBDRjI0NDIgLyogREZHT1NSRXhpdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc4RTE0NkE2RjYzMDBD
RjI0NDIgLyogREZHT1NSRXhpdC5jcHAgKi87IH07CiAJCTBGQzA5NzkyMTQ2QTZGNzMwMENGMjQ0
MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3OEYxNDZBNkY2MzAwQ0YyNDQyIC8qIERGR09TUkV4aXRD
b21waWxlci5jcHAgKi87IH07Ci0JCTBGQzA5NzlDMTQ2QTc3MjUwMENGMjQ0MiAvKiBERkdDb3Jy
ZWN0YWJsZUp1bXBQb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZDMDk3OUExNDZBNzcyMDAwQ0YyNDQyIC8qIERGR0NvcnJlY3RhYmxlSnVtcFBv
aW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
MEZDMDk3OUUxNDZCMjcyMTAwQ0YyNDQyIC8qIERGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzlEMTQ2
QjI3MUUwMENGMjQ0MiAvKiBERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5jcHAgKi87IH07CiAJCTBG
QzA5N0ExMTQ2QjI4Q0EwMENGMjQ0MiAvKiBERkdUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3OUYxNDZCMjhDNzAwQ0YyNDQyIC8q
IERGR1RodW5rcy5jcHAgKi87IH07CiAJCTBGQzA5N0EyMTQ2QjI4Q0MwMENGMjQ0MiAvKiBERkdU
aHVua3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
QzA5N0EwMTQ2QjI4QzcwMENGMjQ0MiAvKiBERkdUaHVua3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkM4MTUwQTE0MDQzQkY1MDBDRkE2MDMg
LyogV3JpdGVCYXJyaWVyU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZDODE1MDkxNDA0M0JEMjAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1
cHBvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTA3MSw4ICsxMDY5LDYgQEAKIAkJMEZDMDk3N0UxNDY5RUJDNDAwQ0YyNDQyIC8qIERGR0Nv
bW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDb21tb24uaDsgcGF0
aCA9IGRmZy9ERkdDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMDk3
OEUxNDZBNkY2MzAwQ0YyNDQyIC8qIERGR09TUkV4aXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHT1NSRXhpdC5jcHA7IHBhdGggPSBkZmcvREZHT1NSRXhpdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzA5NzhGMTQ2QTZGNjMwMENGMjQ0
MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gREZHT1NSRXhpdENvbXBpbGVyLmNwcDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0Q29t
cGlsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkMwOTc5QTE0NkE3NzIw
MDBDRjI0NDIgLyogREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaDsgcGF0aCA9IGRmZy9ERkdD
b3JyZWN0YWJsZUp1bXBQb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkMw
OTc5RDE0NkIyNzFFMDBDRjI0NDIgLyogREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQ29ycmVjdGFibGVKdW1wUG9pbnQu
Y3BwOyBwYXRoID0gZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMDk3OUYxNDZCMjhDNzAwQ0YyNDQyIC8qIERGR1RodW5rcy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdUaHVua3MuY3BwOyBw
YXRoID0gZGZnL0RGR1RodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
QzA5N0EwMTQ2QjI4QzcwMENGMjQ0MiAvKiBERkdUaHVua3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHVGh1bmtzLmg7IHBhdGggPSBkZmcvREZHVGh1bmtzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzgxNTA4MTQwNDNCQ0EwMENGQTYwMyAvKiBXcml0
ZUJhcnJpZXJTdXBwb3J0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdyaXRlQmFycmllclN1cHBvcnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTI5Miw2ICsxMjg4LDcgQEAKIAkJNjU2MEE0Q0YwNEIzQjNFNzAwOEFFOTUyIC8qIENvcmVGb3Vu
ZGF0aW9uLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29yZUZvdW5kYXRpb24uZnJhbWV3
b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJh
bWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQk2NTYyMUU2QjA4OUU4NTk3
MDA3NjBGMzUgLyogUHJvcGVydHlTbG90LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3BlcnR5U2xvdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJNjU2MjFFNkMwODlFODU5NzAwNzYwRjM1
IC8qIFByb3BlcnR5U2xvdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQcm9wZXJ0eVNsb3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFi
V2lkdGggPSA4OyB9OworCQk2NTk4N0YyQzE2N0ZFODRCMDAzQzJGOEQgLyogREZHT1NSRXhpdENv
bXBpbGF0aW9uSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPU1JF
eGl0Q29tcGlsYXRpb25JbmZvLmg7IHBhdGggPSBkZmcvREZHT1NSRXhpdENvbXBpbGF0aW9uSW5m
by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUMwMkZCQjA2Mzc0NjJBMDAzRTdF
RTYgLyogUHJvdGVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQcm90ZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgfTsKIAkJNjVDN0ExNzEwQThFQUFDQjAwRkEzN0VBIC8qIEpTV3JhcHBlck9iamVjdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXcmFwcGVyT2JqZWN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVDN0ExNzIwQThFQUFDQjAwRkEzN0VB
IC8qIEpTV3JhcHBlck9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNXcmFwcGVyT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDU1LDYg
KzI0NTIsNyBAQAogCQk4NkVDOURCMzEzMjhERjQ0MDAyQjJBRDcgLyogZGZnICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk2NTk4N0YyQzE2N0ZFODRCMDAz
QzJGOEQgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oICovLAogCQkJCTBGNjIwMTZEMTQz
RkNEMkYwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFN0YXRlLmNwcCAqLywKIAkJCQkwRjYyMDE2RTE0
M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5oICovLAogCQkJCTBGNjIwMTZGMTQz
RkNEMkYwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFZhbHVlLmggKi8sCkBAIC0yNDgyLDggKzI0ODAs
NiBAQAogCQkJCTBGQzA5NzdFMTQ2OUVCQzQwMENGMjQ0MiAvKiBERkdDb21tb24uaCAqLywKIAkJ
CQkwRjNCM0ExNzE1M0U2OEVGMDAzRUQwRkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
ICovLAogCQkJCTBGM0IzQTE4MTUzRTY4RUYwMDNFRDBGRiAvKiBERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5oICovLAotCQkJCTBGQzA5NzlEMTQ2QjI3MUUwMENGMjQ0MiAvKiBERkdDb3JyZWN0YWJs
ZUp1bXBQb2ludC5jcHAgKi8sCi0JCQkJMEZDMDk3OUExNDZBNzcyMDAwQ0YyNDQyIC8qIERGR0Nv
cnJlY3RhYmxlSnVtcFBvaW50LmggKi8sCiAJCQkJMEZGRkM5NEQxNEVGOTA5NTAwQzcyNTMyIC8q
IERGR0NTRVBoYXNlLmNwcCAqLywKIAkJCQkwRkZGQzk0RTE0RUY5MDk1MDBDNzI1MzIgLyogREZH
Q1NFUGhhc2UuaCAqLywKIAkJCQkwRkY0Mjc2MTE1OTFBMUM5MDA0Q0I5RkYgLyogREZHRGlzYXNz
ZW1ibGVyLmNwcCAqLywKQEAgLTI4MTYsNyArMjgxMiw2IEBACiAJCQkJMEY2MjAxNzYxNDNGQ0Qz
QjAwNjhCNzdDIC8qIERGR0Jhc2ljQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5REM1
MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYyQzU1NkYxNDczOEYzMTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTBGQzA5NzlDMTQ2QTc3MjUwMENGMjQ0MiAvKiBERkdDb3JyZWN0YWJsZUp1bXBQ
b2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEM0M4MjgxNDExNUQ0RjAwRkQ4MUNCIC8qIERG
R0RyaXZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCQzBBRTgxNDk2QzdDNzAwRDRGQkREIC8q
IERGR0V4aXRQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkFFNkM0RDEzNkExMUU0MDA5
NjMwMTIgLyogREZHRlBSSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNTMxLDcgKzM1MjYsNiBA
QAogCQkJCTg2RUM5REM0MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MkUyMTE0MTcyQ0UzMDAxNzlDOTQgLyogREZHQ2FwYWJp
bGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkM1NTcwMTQ3MzhGMzUwMDEyMUU0RiAv
KiBERkdDb2RlQmxvY2tzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGQzA5NzlFMTQ2QjI3MjEw
MENGMjQ0MiAvKiBERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkQzQzgyNjE0MTE1RDQwMDBGRDgxQ0IgLyogREZHRHJpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGQkMwQUU3MTQ5NkM3QzQwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4NkVDOURDNzEzMjhERjgyMDAyQjJBRDcgLyogREZHR3JhcGguY3Bw
IGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTM3OTUyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgTGlua0J1ZmZlcjsKIGNs
YXNzIFJlcGF0Y2hCdWZmZXI7CiBjbGFzcyBXYXRjaHBvaW50OwogbmFtZXNwYWNlIERGRyB7Ci1j
bGFzcyBDb3JyZWN0YWJsZUp1bXBQb2ludDsKK3N0cnVjdCBPU1JFeGl0OwogfQogCiB0ZW1wbGF0
ZSA8Y2xhc3MgQXNzZW1ibGVyVHlwZT4KQEAgLTMyMCw3ICszMjAsNyBAQCBwdWJsaWM6CiAgICAg
Y2xhc3MgTGFiZWwgewogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBUZW1wbGF0ZUFzc2VtYmxlclR5
cGU+CiAgICAgICAgIGZyaWVuZCBjbGFzcyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOwotICAgICAg
ICBmcmllbmQgY2xhc3MgREZHOjpDb3JyZWN0YWJsZUp1bXBQb2ludDsKKyAgICAgICAgZnJpZW5k
IHN0cnVjdCBERkc6Ok9TUkV4aXQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKdW1wOwogICAgICAg
ICBmcmllbmQgY2xhc3MgSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludDsKICAgICAgICAgZnJpZW5k
IGNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKQEAgLTUwMSw3ICs1MDEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIFRlbXBsYXRlQXNzZW1ibGVyVHlwZT4KICAgICAgICAg
ZnJpZW5kIGNsYXNzIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBDYWxsOwotICAgICAgICBmcmllbmQgY2xhc3MgREZHOjpDb3JyZWN0YWJsZUp1bXBQb2ludDsK
KyAgICAgICAgZnJpZW5kIHN0cnVjdCBERkc6Ok9TUkV4aXQ7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBMaW5rQnVmZmVyOwogICAgIHB1YmxpYzoKICAgICAgICAgSnVtcCgpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmNw
cAkocmV2aXNpb24gMTM3OTUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb3Jy
ZWN0YWJsZUp1bXBQb2ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNDMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaCIKLQotI2lmIEVOQUJM
RShERkdfSklUKQotCi0jaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKLQotQ29kZUxvY2F0aW9uSnVtcCBDb3JyZWN0YWJsZUp1bXBQb2ludDo6
Y29kZUxvY2F0aW9uRm9yUmVwYXRjaChDb2RlQmxvY2sqIGNvZGVCbG9jaykgY29uc3QKLXsKLSAg
ICBBU1NFUlQobV9tb2RlID09IENvcnJlY3RlZEp1bXApOwotICAgIHJldHVybiBDb2RlTG9jYXRp
b25KdW1wKGNvZGVCbG9jay0+Z2V0SklUQ29kZSgpLmRhdGFBZGRyZXNzQXRPZmZzZXQobV9jb2Rl
T2Zmc2V0KSk7Ci19Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2VuZGlmIC8vIEVO
QUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb3JyZWN0
YWJsZUp1bXBQb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaAkocmV2aXNpb24gMTM3OTUyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDE2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpZm5kZWYgREZHQ29ycmVjdGFibGVKdW1wUG9pbnRfaAotI2RlZmluZSBERkdD
b3JyZWN0YWJsZUp1bXBQb2ludF9oCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUg
IkxpbmtCdWZmZXIuaCIKLSNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgotCi1uYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLS8vIFRoaXMgaXMgYSB0eXBlLXNhZmUgdW5pb24gb2Yg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgYW5kIENvZGVMb2NhdGlvbkp1bXAuCi0vLyBGdXJ0aGVybW9y
ZSwgaXQgc3VwcG9ydHMgdGhlIG5vdGlvbiBvZiBicmFuY2hpbmcgKHBvc3NpYmx5IGNvbmRpdGlv
bmFsbHksIGJ1dAotLy8gYWxzbyBwb3NzaWJseSBqdW1waW5nIHVuY29uZGl0aW9uYWxseSkgdG8g
YW4gb3V0LW9mLWxpbmUgcGF0Y2hhYmxlIGp1bXAuCi0vLyBUaHVzIGl0IGdvZXMgdGhyb3VnaCB0
aHJlZSBzdGF0ZXM6Ci0vLwotLy8gMSkgTGFiZWwgb2YgdW5wYXRjaGFibGUgYnJhbmNoIG9yIGp1
bXAgKGkuZS4gTWFjcm9Bc3NlbWJsZXI6Okp1bXApLgotLy8gMikgTGFiZWwgb2YgcGF0Y2hhYmxl
IGp1bXAgKGkuZS4gTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXApLgotLy8gMykgQ29ycmVj
dGVkIHBvc3QtbGlua2luZyBsYWJlbCBvZiBwYXRjaGFibGUganVtcCAoaS5lLiBDb2RlTG9jYXRp
b25KdW1wKS4KLS8vCi0vLyBUaGUgc2V0dGluZyBvZiBzdGF0ZSAoMSkgY29ycmVzcG9uZHMgdG8g
cGxhbnRpbmcgdGhlIGluLWxpbmUgdW5wYXRjaGFibGUKLS8vIGJyYW5jaCBvciBqdW1wLiBUaGUg
c3RhdGUgdHJhbnNpdGlvbiAoMSktPigyKSBjb3JyZXNwb25kcyB0byBsaW5raW5nIHRoZQotLy8g
aW4tbGluZSBicmFuY2ggb3IganVtcCB0byB0aGUgb3V0LW9mLWxpbmUgcGF0Y2hhYmxlIGp1bXAs
IGFuZCByZWNvcmRpbmcKLS8vIHRoZSBsYXR0ZXIncyBsYWJlbC4gVGhlIHN0YXRlIHRyYW5zaXRp
b24gKDIpLT4oMykgY29ycmVzcG9uZHMgdG8gcmVjb3JkaW5nCi0vLyB0aGUgb3V0LW9mLWxpbmUg
cGF0Y2hhYmxlIGp1bXAncyBsb2NhdGlvbiBhZnRlciBicmFuY2ggY29tcGFjdGlvbiBoYXMKLS8v
IGNvbXBsZXRlZC4KLS8vCi0vLyBZb3UgY2FuIGFsc28gZ28gZGlyZWN0bHkgZnJvbSB0aGUgZmly
c3Qgc3RhdGUgdG8gdGhlIHRoaXJkIHN0YXRlLCBpZiB5b3UKLS8vIHdpc2ggdG8gdXNlIHRoaXMg
Y2xhc3MgZm9yIGluLWxpbmUgcGF0Y2hhYmxlIGp1bXBzLgotCi1jbGFzcyBDb3JyZWN0YWJsZUp1
bXBQb2ludCB7Ci1wdWJsaWM6Ci0gICAgQ29ycmVjdGFibGVKdW1wUG9pbnQoTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgY2hlY2spCi0gICAgICAgIDogbV9jb2RlT2Zmc2V0KGNoZWNrLm1fbGFiZWwubV9v
ZmZzZXQpCi0jaWZuZGVmIE5ERUJVRwotICAgICAgICAsIG1fbW9kZShJbml0aWFsSnVtcCkKLSNl
bmRpZgotICAgIHsKLSNpZiBDUFUoQVJNX1RIVU1CMikKLSAgICAgICAgbV90eXBlID0gY2hlY2su
bV90eXBlOwotICAgICAgICBtX2NvbmRpdGlvbiA9IGNoZWNrLm1fY29uZGl0aW9uOwotI2VuZGlm
Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNTZXQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
Y29kZU9mZnNldCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCk7Ci0gICAg
fQotICAgIAotICAgIHZvaWQgc3dpdGNoVG9MYXRlSnVtcChNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hh
YmxlSnVtcCBjaGVjaykKLSAgICB7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICBBU1NFUlQobV9t
b2RlID09IEluaXRpYWxKdW1wKTsKLSAgICAgICAgbV9tb2RlID0gTGF0ZUp1bXA7Ci0jZW5kaWYK
LSAgICAgICAgLy8gTGF0ZSBqdW1wcyBzaG91bGQgb25seSBldmVyIGJlIHJlYWwganVtcHMuCi0j
aWYgQ1BVKEFSTV9USFVNQjIpCi0gICAgICAgIEFTU0VSVChjaGVjay5tX2p1bXAubV90eXBlID09
IEFSTXY3QXNzZW1ibGVyOjpKdW1wTm9Db25kaXRpb25GaXhlZFNpemUpOwotICAgICAgICBBU1NF
UlQoY2hlY2subV9qdW1wLm1fY29uZGl0aW9uID09IEFSTXY3QXNzZW1ibGVyOjpDb25kaXRpb25J
bnZhbGlkKTsKLSAgICAgICAgbV90eXBlID0gQVJNdjdBc3NlbWJsZXI6Okp1bXBOb0NvbmRpdGlv
bkZpeGVkU2l6ZTsKLSAgICAgICAgbV9jb25kaXRpb24gPSBBUk12N0Fzc2VtYmxlcjo6Q29uZGl0
aW9uSW52YWxpZDsKLSNlbmRpZgotICAgICAgICBtX2NvZGVPZmZzZXQgPSBjaGVjay5tX2p1bXAu
bV9sYWJlbC5tX29mZnNldDsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBjb3JyZWN0SW5pdGlhbEp1
bXAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX21vZGUg
PT0gSW5pdGlhbEp1bXApOwotI2lmIENQVShBUk1fVEhVTUIyKQotICAgICAgICBBU1NFUlQobV90
eXBlID09IEFSTXY3QXNzZW1ibGVyOjpKdW1wTm9Db25kaXRpb25GaXhlZFNpemUpOwotICAgICAg
ICBBU1NFUlQobV9jb25kaXRpb24gPT0gQVJNdjdBc3NlbWJsZXI6OkNvbmRpdGlvbkludmFsaWQp
OwotI2VuZGlmCi0gICAgICAgIGNvcnJlY3RKdW1wKGxpbmtCdWZmZXIpOwotICAgIH0KLSAgICAK
LSAgICB2b2lkIGNvcnJlY3RMYXRlSnVtcChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fbW9kZSA9PSBMYXRlSnVtcCk7Ci0gICAgICAgIGNvcnJlY3RKdW1w
KGxpbmtCdWZmZXIpOwotICAgIH0KLSAgICAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpbml0
aWFsSnVtcCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV9tb2RlID09IEluaXRpYWxK
dW1wKTsKLSAgICAgICAgcmV0dXJuIGdldEp1bXAoKTsKLSAgICB9Ci0gICAgCi0gICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgbGF0ZUp1bXAoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
bW9kZSA9PSBMYXRlSnVtcCk7Ci0gICAgICAgIHJldHVybiBnZXRKdW1wKCk7Ci0gICAgfQotICAg
IAotICAgIENvZGVMb2NhdGlvbkp1bXAgY29kZUxvY2F0aW9uRm9yUmVwYXRjaChDb2RlQmxvY2sq
KSBjb25zdDsKLSAgICAKLXByaXZhdGU6Ci0gICAgdm9pZCBjb3JyZWN0SnVtcChMaW5rQnVmZmVy
JiBsaW5rQnVmZmVyKQotICAgIHsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIG1fbW9kZSA9IENv
cnJlY3RlZEp1bXA7Ci0jZW5kaWYKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxhYmVs
OwotICAgICAgICBsYWJlbC5tX2xhYmVsLm1fb2Zmc2V0ID0gbV9jb2RlT2Zmc2V0OwotICAgICAg
ICBtX2NvZGVPZmZzZXQgPSBsaW5rQnVmZmVyLm9mZnNldE9mKGxhYmVsKTsKLSAgICB9Ci0gICAg
Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZ2V0SnVtcCgpIGNvbnN0Ci0gICAgewotICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wOwotICAgICAgICBqdW1wLm1fbGFiZWwubV9vZmZz
ZXQgPSBtX2NvZGVPZmZzZXQ7Ci0jaWYgQ1BVKEFSTV9USFVNQjIpCi0gICAgICAgIGp1bXAubV90
eXBlID0gbV90eXBlOwotICAgICAgICBqdW1wLm1fY29uZGl0aW9uID0gbV9jb25kaXRpb247Ci0j
ZW5kaWYKLSAgICAgICAgcmV0dXJuIGp1bXA7Ci0gICAgfQotICAgIAotICAgIHVuc2lnbmVkIG1f
Y29kZU9mZnNldDsKLQotI2lmIENQVShBUk1fVEhVTUIyKQotICAgIEFSTXY3QXNzZW1ibGVyOjpK
dW1wVHlwZSBtX3R5cGUgOiA4OwotICAgIEFSTXY3QXNzZW1ibGVyOjpDb25kaXRpb24gbV9jb25k
aXRpb24gOiA4OwotI2VuZGlmCi0KLSNpZm5kZWYgTkRFQlVHCi0gICAgZW51bSBNb2RlIHsKLSAg
ICAgICAgSW5pdGlhbEp1bXAsCi0gICAgICAgIExhdGVKdW1wLAotICAgICAgICBDb3JyZWN0ZWRK
dW1wCi0gICAgfTsKLQotICAgIE1vZGUgbV9tb2RlOwotI2VuZGlmCi19OwotCi19IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQotI2VuZGlmIC8v
IERGR0NvcnJlY3RhYmxlSnVtcFBvaW50X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxMzc5NTIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEs
MTEgKzUxLDEyIEBAIEpJVENvbXBpbGVyOjpKSVRDb21waWxlcihHcmFwaCYgZGZnKQogCiB2b2lk
IEpJVENvbXBpbGVyOjpsaW5rT1NSRXhpdHMoKQogeworICAgIEFTU0VSVChjb2RlQmxvY2soKS0+
bnVtYmVyT2ZPU1JFeGl0cygpID09IG1fZXhpdENvbXBpbGF0aW9uSW5mby5zaXplKCkpOwogICAg
IGlmIChtX2dyYXBoLm1fY29tcGlsYXRpb24pIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGNvZGVCbG9jaygpLT5udW1iZXJPZk9TUkV4aXRzKCk7ICsraSkgewogICAgICAgICAg
ICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jaygpLT5vc3JFeGl0KGkpOwogICAgICAgICAgICAg
aWYgKGV4aXQubV93YXRjaHBvaW50SW5kZXggPT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKQotICAgICAgICAgICAgICAgIG1fZXhpdFNpdGVMYWJlbHMuYXBwZW5kKGV4aXQu
bV9jaGVjay5pbml0aWFsSnVtcCgpLmxhYmVsKCkpOworICAgICAgICAgICAgICAgIG1fZXhpdFNp
dGVMYWJlbHMuYXBwZW5kKG1fZXhpdENvbXBpbGF0aW9uSW5mb1tpXS5mYWlsdXJlSnVtcCgpLmxh
YmVsKCkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG1fZXhpdFNpdGVMYWJl
bHMuYXBwZW5kKGNvZGVCbG9jaygpLT53YXRjaHBvaW50KGV4aXQubV93YXRjaHBvaW50SW5kZXgp
LnNvdXJjZUxhYmVsKCkpOwogICAgICAgICB9CkBAIC02MywxNCArNjQsMTUgQEAgdm9pZCBKSVRD
b21waWxlcjo6bGlua09TUkV4aXRzKCkKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgY29kZUJsb2NrKCktPm51bWJlck9mT1NSRXhpdHMoKTsgKytpKSB7CiAgICAgICAgIE9TUkV4
aXQmIGV4aXQgPSBjb2RlQmxvY2soKS0+b3NyRXhpdChpKTsKLSAgICAgICAgQVNTRVJUKCFleGl0
Lm1fY2hlY2suaXNTZXQoKSA9PSAoZXhpdC5tX3dhdGNocG9pbnRJbmRleCAhPSBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKTsKKyAgICAgICAgSnVtcCYgZmFpbHVyZUp1bXAg
PSBtX2V4aXRDb21waWxhdGlvbkluZm9baV0uZmFpbHVyZUp1bXAoKTsKKyAgICAgICAgQVNTRVJU
KCFmYWlsdXJlSnVtcC5pc1NldCgpID09IChleGl0Lm1fd2F0Y2hwb2ludEluZGV4ICE9IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkpOwogICAgICAgICBpZiAoZXhpdC5tX3dh
dGNocG9pbnRJbmRleCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0g
ICAgICAgICAgICBleGl0Lm1fY2hlY2suaW5pdGlhbEp1bXAoKS5saW5rKHRoaXMpOworICAgICAg
ICAgICAgZmFpbHVyZUp1bXAubGluayh0aGlzKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
Y29kZUJsb2NrKCktPndhdGNocG9pbnQoZXhpdC5tX3dhdGNocG9pbnRJbmRleCkuc2V0RGVzdGlu
YXRpb24obGFiZWwoKSk7CiAgICAgICAgIGppdEFzc2VydEhhc1ZhbGlkQ2FsbEZyYW1lKCk7CiAg
ICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGkpLCAmZ2xvYmFsRGF0YSgpLT5vc3JFeGl0SW5k
ZXgpOwotICAgICAgICBleGl0Lm1fY2hlY2suc3dpdGNoVG9MYXRlSnVtcChwYXRjaGFibGVKdW1w
KCkpOworICAgICAgICBleGl0LnNldFBhdGNoYWJsZUNvZGVPZmZzZXQocGF0Y2hhYmxlSnVtcCgp
KTsKICAgICB9CiB9CiAKQEAgLTIxMCw4ICsyMTIsOCBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5r
KExpbmtCdWZmZXImIGxpbmtCCiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgdGFyZ2V0ID0gQ29kZUxv
Y2F0aW9uTGFiZWwob3NyRXhpdFRodW5rLmNvZGUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGNvZGVCbG9jaygpLT5udW1iZXJPZk9TUkV4aXRzKCk7ICsraSkgewogICAgICAgICBP
U1JFeGl0JiBleGl0ID0gY29kZUJsb2NrKCktPm9zckV4aXQoaSk7Ci0gICAgICAgIGxpbmtCdWZm
ZXIubGluayhleGl0Lm1fY2hlY2subGF0ZUp1bXAoKSwgdGFyZ2V0KTsKLSAgICAgICAgZXhpdC5t
X2NoZWNrLmNvcnJlY3RMYXRlSnVtcChsaW5rQnVmZmVyKTsKKyAgICAgICAgbGlua0J1ZmZlci5s
aW5rKGV4aXQuZ2V0UGF0Y2hhYmxlQ29kZU9mZnNldEFzSnVtcCgpLCB0YXJnZXQpOworICAgICAg
ICBleGl0LmNvcnJlY3RKdW1wKGxpbmtCdWZmZXIpOwogICAgICAgICBpZiAoZXhpdC5tX3dhdGNo
cG9pbnRJbmRleCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAg
ICAgICAgICBjb2RlQmxvY2soKS0+d2F0Y2hwb2ludChleGl0Lm1fd2F0Y2hwb2ludEluZGV4KS5j
b3JyZWN0TGFiZWxzKGxpbmtCdWZmZXIpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDEzNzk1MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIkRGR0ZQUkluZm8uaCIKICNpbmNsdWRlICJERkdHUFJJbmZv
LmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKKyNpbmNsdWRlICJERkdPU1JFeGl0Q29tcGlsYXRp
b25JbmZvLmgiCiAjaW5jbHVkZSAiREZHUmVnaXN0ZXJCYW5rLmgiCiAjaW5jbHVkZSAiREZHUmVn
aXN0ZXJTZXQuaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCkBAIC0zNDMsNiArMzQ0LDggQEAgcHVi
bGljOgogICAgIFNwZWN1bGF0ZWRUeXBlIGdldFNwZWN1bGF0aW9uKE5vZGVJbmRleCBub2RlSW5k
ZXgpIHsgcmV0dXJuIGdldFNwZWN1bGF0aW9uKGdyYXBoKClbbm9kZUluZGV4XSk7IH0KICAgICBT
cGVjdWxhdGVkVHlwZSBnZXRTcGVjdWxhdGlvbihFZGdlIG5vZGVVc2UpIHsgcmV0dXJuIGdldFNw
ZWN1bGF0aW9uKG5vZGVVc2UuaW5kZXgoKSk7IH0KIAorICAgIHZvaWQgYXBwZW5kRXhpdEp1bXAo
TWFjcm9Bc3NlbWJsZXI6Okp1bXAganVtcFRvRmFpbCkgeyBtX2V4aXRDb21waWxhdGlvbkluZm8u
YXBwZW5kKE9TUkV4aXRDb21waWxhdGlvbkluZm8oanVtcFRvRmFpbCkpOyB9CisKICNpZiBVU0Uo
SlNWQUxVRTMyXzY0KQogICAgIHZvaWQqIGFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KE5vZGVJbmRl
eCBub2RlSW5kZXgpCiAgICAgewpAQCAtNDYwLDYgKzQ2Myw3IEBAIHByaXZhdGU6CiAgICAgCiAg
ICAgVmVjdG9yPFByb3BlcnR5QWNjZXNzUmVjb3JkLCA0PiBtX3Byb3BlcnR5QWNjZXNzZXM7CiAg
ICAgVmVjdG9yPEpTQ2FsbFJlY29yZCwgND4gbV9qc0NhbGxzOworICAgIFZlY3RvcjxPU1JFeGl0
Q29tcGlsYXRpb25JbmZvPiBtX2V4aXRDb21waWxhdGlvbkluZm87CiAgICAgVmVjdG9yPExhYmVs
PiBtX2V4aXRTaXRlTGFiZWxzOwogICAgIHVuc2lnbmVkIG1fY3VycmVudENvZGVPcmlnaW5JbmRl
eDsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHJl
dmlzaW9uIDEzNzk1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMywxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAKLU9TUkV4aXQ6Ok9TUkV4aXQoRXhpdEtpbmQga2luZCwgSlNWYWx1
ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHZhbHVl
UHJvZmlsZSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2ssIFNwZWN1bGF0aXZlSklUKiBqaXQs
IHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4KQorT1NSRXhpdDo6
T1NSRXhpdChFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgdmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCogaml0
LCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCkKICAgICA6IG1f
anNWYWx1ZVNvdXJjZShqc1ZhbHVlU291cmNlKQogICAgICwgbV92YWx1ZVByb2ZpbGUodmFsdWVQ
cm9maWxlKQotICAgICwgbV9jaGVjayhjaGVjaykKKyAgICAsIG1fcGF0Y2hhYmxlQ29kZU9mZnNl
dCgwKQogICAgICwgbV9ub2RlSW5kZXgoaml0LT5tX2NvbXBpbGVJbmRleCkKICAgICAsIG1fY29k
ZU9yaWdpbihqaXQtPm1fY29kZU9yaWdpbkZvck9TUikKICAgICAsIG1fY29kZU9yaWdpbkZvckV4
aXRQcm9maWxlKG1fY29kZU9yaWdpbikKQEAgLTUwLDYgKzUwLDI4IEBAIE9TUkV4aXQ6Ok9TUkV4
aXQoRXhpdEtpbmQga2luZCwgSlNWYWx1ZVMKICAgICBBU1NFUlQobV9jb2RlT3JpZ2luLmlzU2V0
KCkpOwogfQogCit2b2lkIE9TUkV4aXQ6OnNldFBhdGNoYWJsZUNvZGVPZmZzZXQoTWFjcm9Bc3Nl
bWJsZXI6OlBhdGNoYWJsZUp1bXAgY2hlY2spCit7CisgICAgbV9wYXRjaGFibGVDb2RlT2Zmc2V0
ID0gY2hlY2subV9qdW1wLm1fbGFiZWwubV9vZmZzZXQ7Cit9CisKK01hY3JvQXNzZW1ibGVyOjpK
dW1wIE9TUkV4aXQ6OmdldFBhdGNoYWJsZUNvZGVPZmZzZXRBc0p1bXAoKSBjb25zdAoreworICAg
IHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6SnVtcChBc3NlbWJsZXJMYWJlbChtX3BhdGNoYWJsZUNv
ZGVPZmZzZXQpKTsKK30KKworQ29kZUxvY2F0aW9uSnVtcCBPU1JFeGl0Ojpjb2RlTG9jYXRpb25G
b3JSZXBhdGNoKENvZGVCbG9jayogZGZnQ29kZUJsb2NrKSBjb25zdAoreworICAgIHJldHVybiBD
b2RlTG9jYXRpb25KdW1wKGRmZ0NvZGVCbG9jay0+Z2V0SklUQ29kZSgpLmRhdGFBZGRyZXNzQXRP
ZmZzZXQobV9wYXRjaGFibGVDb2RlT2Zmc2V0KSk7Cit9CisKK3ZvaWQgT1NSRXhpdDo6Y29ycmVj
dEp1bXAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKK3sKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFi
ZWwgbGFiZWw7CisgICAgbGFiZWwubV9sYWJlbC5tX29mZnNldCA9IG1fcGF0Y2hhYmxlQ29kZU9m
ZnNldDsKKyAgICBtX3BhdGNoYWJsZUNvZGVPZmZzZXQgPSBsaW5rQnVmZmVyLm9mZnNldE9mKGxh
YmVsKTsKK30KKwogYm9vbCBPU1JFeGl0Ojpjb25zaWRlckFkZGluZ0FzRnJlcXVlbnRFeGl0U2l0
ZVNsb3coQ29kZUJsb2NrKiBkZmdDb2RlQmxvY2ssIENvZGVCbG9jayogcHJvZmlsZWRDb2RlQmxv
Y2spCiB7CiAgICAgaWYgKHN0YXRpY19jYXN0PGRvdWJsZT4obV9jb3VudCkgLyBkZmdDb2RlQmxv
Y2stPm9zckV4aXRDb3VudGVyKCkgPD0gT3B0aW9uczo6b3NyRXhpdFByb21pbmVuY2VGb3JGcmVx
dWVudEV4aXRTaXRlKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQu
aAkocmV2aXNpb24gMTM3OTUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKIAogI2luY2x1ZGUgIkNvZGVP
cmlnaW4uaCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKLSNpbmNsdWRlICJERkdDb3JyZWN0YWJs
ZUp1bXBQb2ludC5oIgogI2luY2x1ZGUgIkRGR0V4aXRQcm9maWxlLmgiCiAjaW5jbHVkZSAiREZH
R1BSSW5mby5oIgogI2luY2x1ZGUgIkRGR1ZhbHVlUmVjb3ZlcnlPdmVycmlkZS5oIgpAQCAtODQs
MTQgKzgzLDE0IEBAIHByaXZhdGU6CiAvLyBUaGlzIHN0cnVjdHVyZSBkZXNjcmliZXMgaG93IHRv
IGV4aXQgdGhlIHNwZWN1bGF0aXZlIHBhdGggYnkKIC8vIGdvaW5nIGludG8gYmFzZWxpbmUgY29k
ZS4KIHN0cnVjdCBPU1JFeGl0IHsKLSAgICBPU1JFeGl0KEV4aXRLaW5kLCBKU1ZhbHVlU291cmNl
LCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCwgU3Bl
Y3VsYXRpdmVKSVQqLCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRl
eCA9IDApOworICAgIE9TUkV4aXQoRXhpdEtpbmQsIEpTVmFsdWVTb3VyY2UsIE1ldGhvZE9mR2V0
dGluZ0FWYWx1ZVByb2ZpbGUsIFNwZWN1bGF0aXZlSklUKiwgdW5zaWduZWQgc3RyZWFtSW5kZXgs
IHVuc2lnbmVkIHJlY292ZXJ5SW5kZXggPSAwKTsKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgbV9jb2RlOwogICAgIAogICAgIEpTVmFsdWVTb3VyY2UgbV9qc1ZhbHVlU291cmNlOwog
ICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgbV92YWx1ZVByb2ZpbGU7Ci0gICAgCi0g
ICAgQ29ycmVjdGFibGVKdW1wUG9pbnQgbV9jaGVjazsKKworICAgIHVuc2lnbmVkIG1fcGF0Y2hh
YmxlQ29kZU9mZnNldDsKICAgICBOb2RlSW5kZXggbV9ub2RlSW5kZXg7CiAgICAgQ29kZU9yaWdp
biBtX2NvZGVPcmlnaW47CiAgICAgQ29kZU9yaWdpbiBtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmls
ZTsKQEAgLTEwOCw3ICsxMDcsMTIgQEAgc3RydWN0IE9TUkV4aXQgewogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gY29uc2lkZXJBZGRpbmdBc0ZyZXF1ZW50RXhpdFNp
dGVTbG93KGRmZ0NvZGVCbG9jaywgcHJvZmlsZWRDb2RlQmxvY2spOwogICAgIH0KLSAgICAKKwor
ICAgIHZvaWQgc2V0UGF0Y2hhYmxlQ29kZU9mZnNldChNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxl
SnVtcCk7CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZ2V0UGF0Y2hhYmxlQ29kZU9mZnNldEFz
SnVtcCgpIGNvbnN0OworICAgIENvZGVMb2NhdGlvbkp1bXAgY29kZUxvY2F0aW9uRm9yUmVwYXRj
aChDb2RlQmxvY2sqKSBjb25zdDsKKyAgICB2b2lkIGNvcnJlY3RKdW1wKExpbmtCdWZmZXImKTsK
KwogICAgIHVuc2lnbmVkIG1fc3RyZWFtSW5kZXg7CiAgICAgaW50IG1fbGFzdFNldE9wZXJhbmQ7
CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxh
dGlvbkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxhdGlvbkluZm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mb19oCisjZGVmaW5lIERGR09TUkV4aXRD
b21waWxhdGlvbkluZm9faAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFC
TEUoREZHX0pJVCkKKworI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJERkdDb21t
b24uaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CisKK2NsYXNzIE9TUkV4aXRDb21waWxhdGlvbkluZm8geworcHVibGljOgor
ICAgIE9TUkV4aXRDb21waWxhdGlvbkluZm8oTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZmFpbHVyZUp1
bXApCisgICAgICAgIDogbV9mYWlsdXJlSnVtcChmYWlsdXJlSnVtcCkKKyAgICB7CisgICAgfQor
CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAmIGZhaWx1cmVKdW1wKCkgeyByZXR1cm4gbV9mYWls
dXJlSnVtcDsgfQorCitwcml2YXRlOgorICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG1fZmFpbHVy
ZUp1bXA7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFC
TEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR09TUkV4aXRDb21waWxhdGlvbkluZm9faAorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIu
Y3BwCShyZXZpc2lvbiAxMzc5NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lk
IGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAKICAgICB7CiAgICAgICAgIFJl
cGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwotICAgICAgICByZXBhdGNoQnVm
ZmVyLnJlbGluayhleGl0Lm1fY2hlY2suY29kZUxvY2F0aW9uRm9yUmVwYXRjaChjb2RlQmxvY2sp
LCBDb2RlTG9jYXRpb25MYWJlbChleGl0Lm1fY29kZS5jb2RlKCkpKTsKKyAgICAgICAgcmVwYXRj
aEJ1ZmZlci5yZWxpbmsoZXhpdC5jb2RlTG9jYXRpb25Gb3JSZXBhdGNoKGNvZGVCbG9jayksIENv
ZGVMb2NhdGlvbkxhYmVsKGV4aXQubV9jb2RlLmNvZGUoKSkpOwogICAgIH0KICAgICAKICAgICBn
bG9iYWxEYXRhLT5vc3JFeGl0SnVtcERlc3RpbmF0aW9uID0gZXhpdC5tX2NvZGUuY29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTM3OTUyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
OSw3ICsxMDksOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGlvbkNoZWNrKEV4CiAg
ICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKGF0KG1f
Y29tcGlsZUluZGV4KS5jYW5FeGl0KCkgfHwgbV9pc0NoZWNraW5nQXJndW1lbnRUeXBlcyk7Ci0g
ICAgbV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZE9TUkV4aXQoT1NSRXhpdChraW5kLCBqc1ZhbHVl
U291cmNlLCBtX2ppdC5ncmFwaCgpLm1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3Iobm9k
ZUluZGV4KSwganVtcFRvRmFpbCwgdGhpcywgbV9zdHJlYW0tPnNpemUoKSkpOworICAgIG1faml0
LmFwcGVuZEV4aXRKdW1wKGp1bXBUb0ZhaWwpOworICAgIG1faml0LmNvZGVCbG9jaygpLT5hcHBl
bmRPU1JFeGl0KE9TUkV4aXQoa2luZCwganNWYWx1ZVNvdXJjZSwgbV9qaXQuZ3JhcGgoKS5tZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKG5vZGVJbmRleCksIHRoaXMsIG1fc3RyZWFtLT5z
aXplKCkpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25DaGVjayhFeGl0
S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIEVkZ2Ugbm9kZVVzZSwgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAganVtcFRvRmFpbCkKQEAgLTEzOCw3ICsxMzksOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpzcGVjdWxhdGlvbkNoZWNrKEV4CiAgICAgICAgIHJldHVybjsKICAgICBB
U1NFUlQoYXQobV9jb21waWxlSW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVu
dFR5cGVzKTsKICAgICBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kU3BlY3VsYXRpb25SZWNvdmVy
eShyZWNvdmVyeSk7Ci0gICAgbV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZE9TUkV4aXQoT1NSRXhp
dChraW5kLCBqc1ZhbHVlU291cmNlLCBtX2ppdC5ncmFwaCgpLm1ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGVGb3Iobm9kZUluZGV4KSwganVtcFRvRmFpbCwgdGhpcywgbV9zdHJlYW0tPnNpemUo
KSwgbV9qaXQuY29kZUJsb2NrKCktPm51bWJlck9mU3BlY3VsYXRpb25SZWNvdmVyaWVzKCkpKTsK
KyAgICBtX2ppdC5hcHBlbmRFeGl0SnVtcChqdW1wVG9GYWlsKTsKKyAgICBtX2ppdC5jb2RlQmxv
Y2soKS0+YXBwZW5kT1NSRXhpdChPU1JFeGl0KGtpbmQsIGpzVmFsdWVTb3VyY2UsIG1faml0Lmdy
YXBoKCkubWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcihub2RlSW5kZXgpLCB0aGlzLCBt
X3N0cmVhbS0+c2l6ZSgpLCBtX2ppdC5jb2RlQmxvY2soKS0+bnVtYmVyT2ZTcGVjdWxhdGlvblJl
Y292ZXJpZXMoKSkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGlvbkNoZWNr
KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgRWRnZSBub2RlVXNl
LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9GYWlsLCBjb25zdCBTcGVjdWxhdGlvblJlY292
ZXJ5JiByZWNvdmVyeSkKQEAgLTE1OSwxMSArMTYxLDEyIEBAIEp1bXBSZXBsYWNlbWVudFdhdGNo
cG9pbnQqIFNwZWN1bGF0aXZlSkkKICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgIHJl
dHVybiAwOwogICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRleCkuY2FuRXhpdCgpIHx8IG1faXND
aGVja2luZ0FyZ3VtZW50VHlwZXMpOworICAgIG1faml0LmFwcGVuZEV4aXRKdW1wKEpJVENvbXBp
bGVyOjpKdW1wKCkpOwogICAgIE9TUkV4aXQmIGV4aXQgPSBtX2ppdC5jb2RlQmxvY2soKS0+b3Ny
RXhpdCgKICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZE9TUkV4aXQoCiAgICAgICAg
ICAgICBPU1JFeGl0KGtpbmQsIGpzVmFsdWVTb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgIG1f
aml0LmdyYXBoKCkubWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcihub2RlSW5kZXgpLAot
ICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCgpLCB0aGlzLCBtX3N0cmVhbS0+
c2l6ZSgpKSkpOworICAgICAgICAgICAgICAgICAgICB0aGlzLCBtX3N0cmVhbS0+c2l6ZSgpKSkp
OwogICAgIGV4aXQubV93YXRjaHBvaW50SW5kZXggPSBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5k
V2F0Y2hwb2ludCgKICAgICAgICAgSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludChtX2ppdC53YXRj
aHBvaW50TGFiZWwoKSkpOwogICAgIHJldHVybiAmbV9qaXQuY29kZUJsb2NrKCktPndhdGNocG9p
bnQoZXhpdC5tX3dhdGNocG9pbnRJbmRleCk7Cg==
</data>
<flag name="review"
          id="196892"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="196893"
          type_id="3"
          status="-"
          setter="msaboff"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179848</attachid>
            <date>2012-12-17 18:29:16 -0800</date>
            <delta_ts>2012-12-17 18:54:02 -0800</delta_ts>
            <desc>Patch with change in CMakeLists.txt missed in first patch</desc>
            <filename>105237-2.patch</filename>
            <type>text/plain</type>
            <size>32486</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3OTY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBA
CisyMDEyLTEyLTE3ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIERGRzogUmVmYWN0b3IgREZHQ29ycmVjdGFibGVKdW1wUG9pbnQgdG8gcmVkdWNlIHNpemUg
b2YgT1NSRXhpdCBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDUyMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZXBsYWNlZCBERkdDb3JyZWN0YWJsZUp1bXBQb2ludCB3aXRoIE9TUkV4aXRDb21w
aWxhdGlvbkluZm8gd2hpY2ggaXMgdXNlZCBhbmQga2VwdCBhbGl2ZSBvbmx5IHdoaWxlIHdlIGFy
ZQorICAgICAgICBjb21waWxpbmcgaW4gdGhlIERGRy4gIE1vdmVkIHRoZSBwYXRjaGFibGUgYnJh
bmNoIG9mZnNldCBkaXJlY3RseSBpbnRvIE9TUkV4aXQuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToK
KyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAq
IGRmZy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogZGZn
L0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGlua09TUkV4
aXRzKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICog
ZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFw
cGVuZEV4aXRKdW1wKToKKyAgICAgICAgKEpJVENvbXBpbGVyKToKKyAgICAgICAgKiBkZmcvREZH
T1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6T1NSRXhpdCk6CisgICAg
ICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6c2V0UGF0Y2hhYmxlQ29kZU9mZnNldCk6CisgICAgICAg
IChKU0M6OkRGRzo6T1NSRXhpdDo6Z2V0UGF0Y2hhYmxlQ29kZU9mZnNldEFzSnVtcCk6CisgICAg
ICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Y29kZUxvY2F0aW9uRm9yUmVwYXRjaCk6CisgICAgICAg
IChKU0M6OkRGRzo6T1NSRXhpdDo6Y29ycmVjdEp1bXApOgorICAgICAgICAqIGRmZy9ERkdPU1JF
eGl0Lmg6CisgICAgICAgIChPU1JFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBp
bGF0aW9uSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKE9TUkV4aXRDb21waWxhdGlvbkluZm8pOgor
ICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxhdGlvbkluZm86Ok9TUkV4aXRDb21waWxh
dGlvbkluZm8pOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxhdGlvbkluZm86OmZh
aWx1cmVKdW1wKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGlvbkNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6c3BlY3VsYXRpb25XYXRjaHBvaW50KToKKwogMjAxMi0xMi0xNyAgRmlsaXAgUGl6
bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBpcyB0b28gYWdncmVzc2l2ZSB3
aXRoIGVsaWRpbmcgb3ZlcmZsb3cgY2hlY2tzIGluIGxvb3BzCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzc5NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDYgQEAgc2V0
KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBkZmcvREZHQ0ZBUGhhc2UuY3BwCiAgICAgZGZn
L0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCiAgICAgZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcAotICAgIGRmZy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5jcHAKICAgICBkZmcv
REZHQ1NFUGhhc2UuY3BwCiAgICAgZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKICAgICBkZmcvREZH
RG9taW5hdG9ycy5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCShyZXZpc2lvbiAxMzc5NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMTg2LDggKzE4Niw2IEBAIGphdmFzY3Jp
cHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhh
c2UuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmggXAotCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuY3BwIFwKLQlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwIFwKQEAgLTIyOCw2ICsyMjYsNyBAQCBqYXZhc2NyaXB0
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRD
b21waWxlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBcCisJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGhhc2UuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1BoYXNlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQu
cHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCShyZXZp
c2lvbiAxMzc5NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkod29ya2lu
ZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw2IEBAIFNPVVJDRVMgKz0gXAogICAgIGRmZy9ERkdDRkFQ
aGFzZS5jcHAgXAogICAgIGRmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCBcCiAgICAg
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBcCi0gICAgZGZnL0RGR0NvcnJlY3RhYmxl
SnVtcFBvaW50LmNwcCBcCiAgICAgZGZnL0RGR0NTRVBoYXNlLmNwcCBcCiAgICAgZGZnL0RGR0Rp
c2Fzc2VtYmxlci5jcHAgXAogICAgIGRmZy9ERkdEb21pbmF0b3JzLmNwcCBcCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM3OTUyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTIzNiw4ICsyMzYsNiBAQAogCQkwRkMwOTc3NjE0Njk0M0IwMDBDRjI0NDIg
LyogREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3NzUxNDY5NDNBRDAwQ0YyNDQyIC8qIERGR09TUkV4
aXRDb21waWxlcjMyXzY0LmNwcCAqLzsgfTsKIAkJMEZDMDk3OTExNDZBNkY3MTAwQ0YyNDQyIC8q
IERGR09TUkV4aXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZDMDk3OEUxNDZBNkY2MzAwQ0YyNDQyIC8qIERGR09TUkV4aXQuY3BwICovOyB9Owog
CQkwRkMwOTc5MjE0NkE2RjczMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzhGMTQ2QTZG
NjMwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuY3BwICovOyB9OwotCQkwRkMwOTc5QzE0
NkE3NzI1MDBDRjI0NDIgLyogREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzlBMTQ2QTc3MjAwMENGMjQ0
MiAvKiBERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGQzA5NzlFMTQ2QjI3MjEwMENGMjQ0MiAvKiBERkdD
b3JyZWN0YWJsZUp1bXBQb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkMwOTc5RDE0NkIyNzFFMDBDRjI0NDIgLyogREZHQ29ycmVjdGFibGVK
dW1wUG9pbnQuY3BwICovOyB9OwogCQkwRkMwOTdBMTE0NkIyOENBMDBDRjI0NDIgLyogREZHVGh1
bmtzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
QzA5NzlGMTQ2QjI4QzcwMENGMjQ0MiAvKiBERkdUaHVua3MuY3BwICovOyB9OwogCQkwRkMwOTdB
MjE0NkIyOENDMDBDRjI0NDIgLyogREZHVGh1bmtzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTdBMDE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1
bmtzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEZDODE1MEExNDA0M0JGNTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzgxNTA5MTQwNDNCRDIw
MENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwNzEsOCArMTA2OSw2IEBACiAJCTBGQzA5NzdF
MTQ2OUVCQzQwMENGMjQ0MiAvKiBERkdDb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHQ29tbW9uLmg7IHBhdGggPSBkZmcvREZHQ29tbW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGQzA5NzhFMTQ2QTZGNjMwMENGMjQ0MiAvKiBERkdPU1JFeGl0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR09TUkV4aXQuY3Bw
OyBwYXRoID0gZGZnL0RGR09TUkV4aXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkMwOTc4RjE0NkE2RjYzMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR09TUkV4aXRDb21waWxlci5jcHA7
IHBhdGggPSBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMEZDMDk3OUExNDZBNzcyMDAwQ0YyNDQyIC8qIERGR0NvcnJlY3RhYmxlSnVtcFBv
aW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NvcnJlY3RhYmxlSnVt
cFBvaW50Lmg7IHBhdGggPSBkZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZDMDk3OUQxNDZCMjcxRTAwQ0YyNDQyIC8qIERGR0NvcnJl
Y3RhYmxlSnVtcFBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmNwcDsgcGF0aCA9IGRmZy9ERkdDb3JyZWN0YWJsZUp1
bXBQb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzA5NzlGMTQ2QjI4
QzcwMENGMjQ0MiAvKiBERkdUaHVua3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gREZHVGh1bmtzLmNwcDsgcGF0aCA9IGRmZy9ERkdUaHVua3MuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMwOTdBMDE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1
bmtzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1RodW5rcy5oOyBwYXRo
ID0gZGZnL0RGR1RodW5rcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkM4MTUw
ODE0MDQzQkNBMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyOTIsNiArMTI4OCw3IEBACiAJCTY1NjBBNENGMDRC
M0IzRTcwMDhBRTk1MiAvKiBDb3JlRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFt
ZSA9IENvcmVGb3VuZGF0aW9uLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+
IjsgfTsKIAkJNjU2MjFFNkIwODlFODU5NzAwNzYwRjM1IC8qIFByb3BlcnR5U2xvdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9w
ZXJ0eVNsb3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJ
CTY1NjIxRTZDMDg5RTg1OTcwMDc2MEYzNSAvKiBQcm9wZXJ0eVNsb3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvcGVydHlTbG90Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJNjU5ODdGMkMxNjdGRTg0
QjAwM0MyRjhEIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oOyBwYXRoID0gZGZn
L0RGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNjVDMDJGQkIwNjM3NDYyQTAwM0U3RUU2IC8qIFByb3RlY3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvdGVjdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCTY1QzdBMTcxMEE4RUFBQ0IwMEZBMzdF
QSAvKiBKU1dyYXBwZXJPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTV3JhcHBlck9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTY1QzdBMTcyMEE4RUFBQ0IwMEZBMzdFQSAvKiBKU1dyYXBwZXJPYmplY3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV3JhcHBlck9iamVjdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjQ1NSw2ICsyNDUyLDcgQEAKIAkJODZFQzlEQjMxMzI4REY0NDAw
MkIyQUQ3IC8qIGRmZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJNjU5ODdGMkMxNjdGRTg0QjAwM0MyRjhEIC8qIERGR09TUkV4aXRDb21waWxhdGlvbklu
Zm8uaCAqLywKIAkJCQkwRjYyMDE2RDE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0
ZS5jcHAgKi8sCiAJCQkJMEY2MjAxNkUxNDNGQ0QyRjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0U3Rh
dGUuaCAqLywKIAkJCQkwRjYyMDE2RjE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RWYWx1
ZS5oICovLApAQCAtMjQ4Miw4ICsyNDgwLDYgQEAKIAkJCQkwRkMwOTc3RTE0NjlFQkM0MDBDRjI0
NDIgLyogREZHQ29tbW9uLmggKi8sCiAJCQkJMEYzQjNBMTcxNTNFNjhFRjAwM0VEMEZGIC8qIERG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCAqLywKIAkJCQkwRjNCM0ExODE1M0U2OEVGMDAzRUQw
RkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuaCAqLywKLQkJCQkwRkMwOTc5RDE0NkIyNzFF
MDBDRjI0NDIgLyogREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuY3BwICovLAotCQkJCTBGQzA5NzlB
MTQ2QTc3MjAwMENGMjQ0MiAvKiBERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5oICovLAogCQkJCTBG
RkZDOTREMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5
NEUxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmggKi8sCiAJCQkJMEZGNDI3NjExNTkx
QTFDOTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5jcHAgKi8sCkBAIC0yODE2LDcgKzI4MTIs
NiBAQAogCQkJCTBGNjIwMTc2MTQzRkNEM0IwMDY4Qjc3QyAvKiBERkdCYXNpY0Jsb2NrLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NkVDOURDNTEzMjhERjgyMDAyQjJBRDcgLyogREZHQnl0ZUNvZGVQ
YXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkM1NTZGMTQ3MzhGMzEwMDEyMUU0RiAvKiBE
RkdDb2RlQmxvY2tzLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkMwOTc5QzE0NkE3NzI1MDBDRjI0
NDIgLyogREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDND
ODI4MTQxMTVENEYwMEZEODFDQiAvKiBERkdEcml2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
QkMwQUU4MTQ5NkM3QzcwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODZBRTZDNEQxMzZBMTFFNDAwOTYzMDEyIC8qIERGR0ZQUkluZm8uaCBpbiBIZWFkZXJz
ICovLApAQCAtMzUzMSw3ICszNTI2LDYgQEAKIAkJCQk4NkVDOURDNDEzMjhERjgyMDAyQjJBRDcg
LyogREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEODJFMjExNDE3
MkNFMzAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjJDNTU3MDE0NzM4RjM1MDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQkwRkMwOTc5RTE0NkIyNzIxMDBDRjI0NDIgLyogREZHQ29ycmVjdGFibGVKdW1wUG9p
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEM0M4MjYxNDExNUQ0MDAwRkQ4MUNCIC8qIERG
R0RyaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkJDMEFFNzE0OTZDN0M0MDBENEZCREQg
LyogREZHRXhpdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQzlEQzcxMzI4REY4
MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1i
bGVyLmgJKHJldmlzaW9uIDEzNzk1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3
IEBAIGNsYXNzIExpbmtCdWZmZXI7CiBjbGFzcyBSZXBhdGNoQnVmZmVyOwogY2xhc3MgV2F0Y2hw
b2ludDsKIG5hbWVzcGFjZSBERkcgewotY2xhc3MgQ29ycmVjdGFibGVKdW1wUG9pbnQ7CitzdHJ1
Y3QgT1NSRXhpdDsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIEFzc2VtYmxlclR5cGU+CkBAIC0zMjAs
NyArMzIwLDcgQEAgcHVibGljOgogICAgIGNsYXNzIExhYmVsIHsKICAgICAgICAgdGVtcGxhdGU8
Y2xhc3MgVGVtcGxhdGVBc3NlbWJsZXJUeXBlPgogICAgICAgICBmcmllbmQgY2xhc3MgQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlcjsKLSAgICAgICAgZnJpZW5kIGNsYXNzIERGRzo6Q29ycmVjdGFibGVK
dW1wUG9pbnQ7CisgICAgICAgIGZyaWVuZCBzdHJ1Y3QgREZHOjpPU1JFeGl0OwogICAgICAgICBm
cmllbmQgY2xhc3MgSnVtcDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEp1bXBSZXBsYWNlbWVudFdh
dGNocG9pbnQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7CkBA
IC01MDEsNyArNTAxLDcgQEAgcHVibGljOgogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBUZW1wbGF0
ZUFzc2VtYmxlclR5cGU+CiAgICAgICAgIGZyaWVuZCBjbGFzcyBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyOwogICAgICAgICBmcmllbmQgY2xhc3MgQ2FsbDsKLSAgICAgICAgZnJpZW5kIGNsYXNzIERG
Rzo6Q29ycmVjdGFibGVKdW1wUG9pbnQ7CisgICAgICAgIGZyaWVuZCBzdHJ1Y3QgREZHOjpPU1JF
eGl0OwogICAgICAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKICAgICBwdWJsaWM6CiAgICAg
ICAgIEp1bXAoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb3JyZWN0YWJs
ZUp1bXBQb2ludC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb3JyZWN0YWJsZUp1bXBQb2ludC5jcHAJKHJldmlzaW9uIDEzNzk1MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR0NvcnJlY3RhYmxl
SnVtcFBvaW50LmgiCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLUNvZGVMb2NhdGlvbkp1
bXAgQ29ycmVjdGFibGVKdW1wUG9pbnQ6OmNvZGVMb2NhdGlvbkZvclJlcGF0Y2goQ29kZUJsb2Nr
KiBjb2RlQmxvY2spIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbW9kZSA9PSBDb3JyZWN0ZWRKdW1w
KTsKLSAgICByZXR1cm4gQ29kZUxvY2F0aW9uSnVtcChjb2RlQmxvY2stPmdldEpJVENvZGUoKS5k
YXRhQWRkcmVzc0F0T2Zmc2V0KG1fY29kZU9mZnNldCkpOwotfQotCi19IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmgJKHJldmlz
aW9uIDEzNzk1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVK
dW1wUG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxNjQgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIERGR0NvcnJlY3RhYmxl
SnVtcFBvaW50X2gKLSNkZWZpbmUgREZHQ29ycmVjdGFibGVKdW1wUG9pbnRfaAotCi0jaWYgRU5B
QkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCi0jaW5jbHVkZSAiTWFjcm9B
c3NlbWJsZXIuaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi0vLyBUaGlz
IGlzIGEgdHlwZS1zYWZlIHVuaW9uIG9mIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGFuZCBDb2RlTG9j
YXRpb25KdW1wLgotLy8gRnVydGhlcm1vcmUsIGl0IHN1cHBvcnRzIHRoZSBub3Rpb24gb2YgYnJh
bmNoaW5nIChwb3NzaWJseSBjb25kaXRpb25hbGx5LCBidXQKLS8vIGFsc28gcG9zc2libHkganVt
cGluZyB1bmNvbmRpdGlvbmFsbHkpIHRvIGFuIG91dC1vZi1saW5lIHBhdGNoYWJsZSBqdW1wLgot
Ly8gVGh1cyBpdCBnb2VzIHRocm91Z2ggdGhyZWUgc3RhdGVzOgotLy8KLS8vIDEpIExhYmVsIG9m
IHVucGF0Y2hhYmxlIGJyYW5jaCBvciBqdW1wIChpLmUuIE1hY3JvQXNzZW1ibGVyOjpKdW1wKS4K
LS8vIDIpIExhYmVsIG9mIHBhdGNoYWJsZSBqdW1wIChpLmUuIE1hY3JvQXNzZW1ibGVyOjpQYXRj
aGFibGVKdW1wKS4KLS8vIDMpIENvcnJlY3RlZCBwb3N0LWxpbmtpbmcgbGFiZWwgb2YgcGF0Y2hh
YmxlIGp1bXAgKGkuZS4gQ29kZUxvY2F0aW9uSnVtcCkuCi0vLwotLy8gVGhlIHNldHRpbmcgb2Yg
c3RhdGUgKDEpIGNvcnJlc3BvbmRzIHRvIHBsYW50aW5nIHRoZSBpbi1saW5lIHVucGF0Y2hhYmxl
Ci0vLyBicmFuY2ggb3IganVtcC4gVGhlIHN0YXRlIHRyYW5zaXRpb24gKDEpLT4oMikgY29ycmVz
cG9uZHMgdG8gbGlua2luZyB0aGUKLS8vIGluLWxpbmUgYnJhbmNoIG9yIGp1bXAgdG8gdGhlIG91
dC1vZi1saW5lIHBhdGNoYWJsZSBqdW1wLCBhbmQgcmVjb3JkaW5nCi0vLyB0aGUgbGF0dGVyJ3Mg
bGFiZWwuIFRoZSBzdGF0ZSB0cmFuc2l0aW9uICgyKS0+KDMpIGNvcnJlc3BvbmRzIHRvIHJlY29y
ZGluZwotLy8gdGhlIG91dC1vZi1saW5lIHBhdGNoYWJsZSBqdW1wJ3MgbG9jYXRpb24gYWZ0ZXIg
YnJhbmNoIGNvbXBhY3Rpb24gaGFzCi0vLyBjb21wbGV0ZWQuCi0vLwotLy8gWW91IGNhbiBhbHNv
IGdvIGRpcmVjdGx5IGZyb20gdGhlIGZpcnN0IHN0YXRlIHRvIHRoZSB0aGlyZCBzdGF0ZSwgaWYg
eW91Ci0vLyB3aXNoIHRvIHVzZSB0aGlzIGNsYXNzIGZvciBpbi1saW5lIHBhdGNoYWJsZSBqdW1w
cy4KLQotY2xhc3MgQ29ycmVjdGFibGVKdW1wUG9pbnQgewotcHVibGljOgotICAgIENvcnJlY3Rh
YmxlSnVtcFBvaW50KE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrKQotICAgICAgICA6IG1fY29k
ZU9mZnNldChjaGVjay5tX2xhYmVsLm1fb2Zmc2V0KQotI2lmbmRlZiBOREVCVUcKLSAgICAgICAg
LCBtX21vZGUoSW5pdGlhbEp1bXApCi0jZW5kaWYKLSAgICB7Ci0jaWYgQ1BVKEFSTV9USFVNQjIp
Ci0gICAgICAgIG1fdHlwZSA9IGNoZWNrLm1fdHlwZTsKLSAgICAgICAgbV9jb25kaXRpb24gPSBj
aGVjay5tX2NvbmRpdGlvbjsKLSNlbmRpZgotICAgIH0KLSAgICAKLSAgICBib29sIGlzU2V0KCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX2NvZGVPZmZzZXQgIT0gc3RkOjpudW1lcmljX2xpbWl0
czx1aW50MzJfdD46Om1heCgpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIHN3aXRjaFRvTGF0ZUp1
bXAoTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgY2hlY2spCi0gICAgewotI2lmbmRlZiBO
REVCVUcKLSAgICAgICAgQVNTRVJUKG1fbW9kZSA9PSBJbml0aWFsSnVtcCk7Ci0gICAgICAgIG1f
bW9kZSA9IExhdGVKdW1wOwotI2VuZGlmCi0gICAgICAgIC8vIExhdGUganVtcHMgc2hvdWxkIG9u
bHkgZXZlciBiZSByZWFsIGp1bXBzLgotI2lmIENQVShBUk1fVEhVTUIyKQotICAgICAgICBBU1NF
UlQoY2hlY2subV9qdW1wLm1fdHlwZSA9PSBBUk12N0Fzc2VtYmxlcjo6SnVtcE5vQ29uZGl0aW9u
Rml4ZWRTaXplKTsKLSAgICAgICAgQVNTRVJUKGNoZWNrLm1fanVtcC5tX2NvbmRpdGlvbiA9PSBB
Uk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9uSW52YWxpZCk7Ci0gICAgICAgIG1fdHlwZSA9IEFSTXY3
QXNzZW1ibGVyOjpKdW1wTm9Db25kaXRpb25GaXhlZFNpemU7Ci0gICAgICAgIG1fY29uZGl0aW9u
ID0gQVJNdjdBc3NlbWJsZXI6OkNvbmRpdGlvbkludmFsaWQ7Ci0jZW5kaWYKLSAgICAgICAgbV9j
b2RlT2Zmc2V0ID0gY2hlY2subV9qdW1wLm1fbGFiZWwubV9vZmZzZXQ7Ci0gICAgfQotICAgIAot
ICAgIHZvaWQgY29ycmVjdEluaXRpYWxKdW1wKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCi0gICAg
ewotICAgICAgICBBU1NFUlQobV9tb2RlID09IEluaXRpYWxKdW1wKTsKLSNpZiBDUFUoQVJNX1RI
VU1CMikKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBBUk12N0Fzc2VtYmxlcjo6SnVtcE5vQ29u
ZGl0aW9uRml4ZWRTaXplKTsKLSAgICAgICAgQVNTRVJUKG1fY29uZGl0aW9uID09IEFSTXY3QXNz
ZW1ibGVyOjpDb25kaXRpb25JbnZhbGlkKTsKLSNlbmRpZgotICAgICAgICBjb3JyZWN0SnVtcChs
aW5rQnVmZmVyKTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBjb3JyZWN0TGF0ZUp1bXAoTGlua0J1
ZmZlciYgbGlua0J1ZmZlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX21vZGUgPT0gTGF0ZUp1
bXApOwotICAgICAgICBjb3JyZWN0SnVtcChsaW5rQnVmZmVyKTsKLSAgICB9Ci0gICAgCi0gICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgaW5pdGlhbEp1bXAoKSBjb25zdAotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fbW9kZSA9PSBJbml0aWFsSnVtcCk7Ci0gICAgICAgIHJldHVybiBnZXRKdW1wKCk7
Ci0gICAgfQotICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGxhdGVKdW1wKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChtX21vZGUgPT0gTGF0ZUp1bXApOwotICAgICAgICByZXR1
cm4gZ2V0SnVtcCgpOwotICAgIH0KLSAgICAKLSAgICBDb2RlTG9jYXRpb25KdW1wIGNvZGVMb2Nh
dGlvbkZvclJlcGF0Y2goQ29kZUJsb2NrKikgY29uc3Q7Ci0gICAgCi1wcml2YXRlOgotICAgIHZv
aWQgY29ycmVjdEp1bXAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKLSAgICB7Ci0jaWZuZGVmIE5E
RUJVRwotICAgICAgICBtX21vZGUgPSBDb3JyZWN0ZWRKdW1wOwotI2VuZGlmCi0gICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpMYWJlbCBsYWJlbDsKLSAgICAgICAgbGFiZWwubV9sYWJlbC5tX29mZnNl
dCA9IG1fY29kZU9mZnNldDsKLSAgICAgICAgbV9jb2RlT2Zmc2V0ID0gbGlua0J1ZmZlci5vZmZz
ZXRPZihsYWJlbCk7Ci0gICAgfQotICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGdldEp1
bXAoKSBjb25zdAotICAgIHsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAganVtcDsKLSAg
ICAgICAganVtcC5tX2xhYmVsLm1fb2Zmc2V0ID0gbV9jb2RlT2Zmc2V0OwotI2lmIENQVShBUk1f
VEhVTUIyKQotICAgICAgICBqdW1wLm1fdHlwZSA9IG1fdHlwZTsKLSAgICAgICAganVtcC5tX2Nv
bmRpdGlvbiA9IG1fY29uZGl0aW9uOwotI2VuZGlmCi0gICAgICAgIHJldHVybiBqdW1wOwotICAg
IH0KLSAgICAKLSAgICB1bnNpZ25lZCBtX2NvZGVPZmZzZXQ7Ci0KLSNpZiBDUFUoQVJNX1RIVU1C
MikKLSAgICBBUk12N0Fzc2VtYmxlcjo6SnVtcFR5cGUgbV90eXBlIDogODsKLSAgICBBUk12N0Fz
c2VtYmxlcjo6Q29uZGl0aW9uIG1fY29uZGl0aW9uIDogODsKLSNlbmRpZgotCi0jaWZuZGVmIE5E
RUJVRwotICAgIGVudW0gTW9kZSB7Ci0gICAgICAgIEluaXRpYWxKdW1wLAotICAgICAgICBMYXRl
SnVtcCwKLSAgICAgICAgQ29ycmVjdGVkSnVtcAotICAgIH07Ci0KLSAgICBNb2RlIG1fbW9kZTsK
LSNlbmRpZgotfTsKLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5B
QkxFKERGR19KSVQpCi0KLSNlbmRpZiAvLyBERkdDb3JyZWN0YWJsZUp1bXBQb2ludF9oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNp
b24gMTM3OTUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDExICs1MSwxMiBAQCBKSVRDb21waWxlcjo6SklUQ29t
cGlsZXIoR3JhcGgmIGRmZykKIAogdm9pZCBKSVRDb21waWxlcjo6bGlua09TUkV4aXRzKCkKIHsK
KyAgICBBU1NFUlQoY29kZUJsb2NrKCktPm51bWJlck9mT1NSRXhpdHMoKSA9PSBtX2V4aXRDb21w
aWxhdGlvbkluZm8uc2l6ZSgpKTsKICAgICBpZiAobV9ncmFwaC5tX2NvbXBpbGF0aW9uKSB7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2RlQmxvY2soKS0+bnVtYmVyT2ZPU1JF
eGl0cygpOyArK2kpIHsKICAgICAgICAgICAgIE9TUkV4aXQmIGV4aXQgPSBjb2RlQmxvY2soKS0+
b3NyRXhpdChpKTsKICAgICAgICAgICAgIGlmIChleGl0Lm1fd2F0Y2hwb2ludEluZGV4ID09IHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgICAgICAgICBtX2V4
aXRTaXRlTGFiZWxzLmFwcGVuZChleGl0Lm1fY2hlY2suaW5pdGlhbEp1bXAoKS5sYWJlbCgpKTsK
KyAgICAgICAgICAgICAgICBtX2V4aXRTaXRlTGFiZWxzLmFwcGVuZChtX2V4aXRDb21waWxhdGlv
bkluZm9baV0uZmFpbHVyZUp1bXAoKS5sYWJlbCgpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICBtX2V4aXRTaXRlTGFiZWxzLmFwcGVuZChjb2RlQmxvY2soKS0+d2F0Y2hwb2lu
dChleGl0Lm1fd2F0Y2hwb2ludEluZGV4KS5zb3VyY2VMYWJlbCgpKTsKICAgICAgICAgfQpAQCAt
NjMsMTQgKzY0LDE1IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmtPU1JFeGl0cygpCiAgICAgCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGVCbG9jaygpLT5udW1iZXJPZk9TUkV4aXRz
KCk7ICsraSkgewogICAgICAgICBPU1JFeGl0JiBleGl0ID0gY29kZUJsb2NrKCktPm9zckV4aXQo
aSk7Ci0gICAgICAgIEFTU0VSVCghZXhpdC5tX2NoZWNrLmlzU2V0KCkgPT0gKGV4aXQubV93YXRj
aHBvaW50SW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSk7Cisg
ICAgICAgIEp1bXAmIGZhaWx1cmVKdW1wID0gbV9leGl0Q29tcGlsYXRpb25JbmZvW2ldLmZhaWx1
cmVKdW1wKCk7CisgICAgICAgIEFTU0VSVCghZmFpbHVyZUp1bXAuaXNTZXQoKSA9PSAoZXhpdC5t
X3dhdGNocG9pbnRJbmRleCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
KTsKICAgICAgICAgaWYgKGV4aXQubV93YXRjaHBvaW50SW5kZXggPT0gc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICAgICAgZXhpdC5tX2NoZWNrLmluaXRpYWxK
dW1wKCkubGluayh0aGlzKTsKKyAgICAgICAgICAgIGZhaWx1cmVKdW1wLmxpbmsodGhpcyk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvZGVCbG9jaygpLT53YXRjaHBvaW50KGV4aXQubV93
YXRjaHBvaW50SW5kZXgpLnNldERlc3RpbmF0aW9uKGxhYmVsKCkpOwogICAgICAgICBqaXRBc3Nl
cnRIYXNWYWxpZENhbGxGcmFtZSgpOwogICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihpKSwg
Jmdsb2JhbERhdGEoKS0+b3NyRXhpdEluZGV4KTsKLSAgICAgICAgZXhpdC5tX2NoZWNrLnN3aXRj
aFRvTGF0ZUp1bXAocGF0Y2hhYmxlSnVtcCgpKTsKKyAgICAgICAgZXhpdC5zZXRQYXRjaGFibGVD
b2RlT2Zmc2V0KHBhdGNoYWJsZUp1bXAoKSk7CiAgICAgfQogfQogCkBAIC0yMTAsOCArMjEyLDgg
QEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgIENvZGVMb2Nh
dGlvbkxhYmVsIHRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsKG9zckV4aXRUaHVuay5jb2RlKCkp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2RlQmxvY2soKS0+bnVtYmVyT2ZPU1JF
eGl0cygpOyArK2kpIHsKICAgICAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jaygpLT5vc3JF
eGl0KGkpOwotICAgICAgICBsaW5rQnVmZmVyLmxpbmsoZXhpdC5tX2NoZWNrLmxhdGVKdW1wKCks
IHRhcmdldCk7Ci0gICAgICAgIGV4aXQubV9jaGVjay5jb3JyZWN0TGF0ZUp1bXAobGlua0J1ZmZl
cik7CisgICAgICAgIGxpbmtCdWZmZXIubGluayhleGl0LmdldFBhdGNoYWJsZUNvZGVPZmZzZXRB
c0p1bXAoKSwgdGFyZ2V0KTsKKyAgICAgICAgZXhpdC5jb3JyZWN0SnVtcChsaW5rQnVmZmVyKTsK
ICAgICAgICAgaWYgKGV4aXQubV93YXRjaHBvaW50SW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICAgICAgY29kZUJsb2NrKCktPndhdGNocG9pbnQo
ZXhpdC5tX3dhdGNocG9pbnRJbmRleCkuY29ycmVjdExhYmVscyhsaW5rQnVmZmVyKTsKICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZp
c2lvbiAxMzc5NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJERkdGUFJJbmZv
LmgiCiAjaW5jbHVkZSAiREZHR1BSSW5mby5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCisjaW5j
bHVkZSAiREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIgogI2luY2x1ZGUgIkRGR1JlZ2lzdGVy
QmFuay5oIgogI2luY2x1ZGUgIkRGR1JlZ2lzdGVyU2V0LmgiCiAjaW5jbHVkZSAiSklUQ29kZS5o
IgpAQCAtMzQzLDYgKzM0NCw4IEBAIHB1YmxpYzoKICAgICBTcGVjdWxhdGVkVHlwZSBnZXRTcGVj
dWxhdGlvbihOb2RlSW5kZXggbm9kZUluZGV4KSB7IHJldHVybiBnZXRTcGVjdWxhdGlvbihncmFw
aCgpW25vZGVJbmRleF0pOyB9CiAgICAgU3BlY3VsYXRlZFR5cGUgZ2V0U3BlY3VsYXRpb24oRWRn
ZSBub2RlVXNlKSB7IHJldHVybiBnZXRTcGVjdWxhdGlvbihub2RlVXNlLmluZGV4KCkpOyB9CiAK
KyAgICB2b2lkIGFwcGVuZEV4aXRKdW1wKE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwp
IHsgbV9leGl0Q29tcGlsYXRpb25JbmZvLmFwcGVuZChPU1JFeGl0Q29tcGlsYXRpb25JbmZvKGp1
bXBUb0ZhaWwpKTsgfQorCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICB2b2lkKiBhZGRyZXNz
T2ZEb3VibGVDb25zdGFudChOb2RlSW5kZXggbm9kZUluZGV4KQogICAgIHsKQEAgLTQ2MCw2ICs0
NjMsNyBAQCBwcml2YXRlOgogICAgIAogICAgIFZlY3RvcjxQcm9wZXJ0eUFjY2Vzc1JlY29yZCwg
ND4gbV9wcm9wZXJ0eUFjY2Vzc2VzOwogICAgIFZlY3RvcjxKU0NhbGxSZWNvcmQsIDQ+IG1fanND
YWxsczsKKyAgICBWZWN0b3I8T1NSRXhpdENvbXBpbGF0aW9uSW5mbz4gbV9leGl0Q29tcGlsYXRp
b25JbmZvOwogICAgIFZlY3RvcjxMYWJlbD4gbV9leGl0U2l0ZUxhYmVsczsKICAgICB1bnNpZ25l
ZCBtX2N1cnJlbnRDb2RlT3JpZ2luSW5kZXg7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuY3BwCShyZXZpc2lvbiAxMzc5NTIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMs
MTAgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1PU1JFeGl0OjpPU1JF
eGl0KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZSB2YWx1ZVByb2ZpbGUsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNo
ZWNrLCBTcGVjdWxhdGl2ZUpJVCogaml0LCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWduZWQg
cmVjb3ZlcnlJbmRleCkKK09TUkV4aXQ6Ok9TUkV4aXQoRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNv
dXJjZSBqc1ZhbHVlU291cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHZhbHVlUHJv
ZmlsZSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgdW5zaWduZWQgc3RyZWFtSW5kZXgsIHVuc2lnbmVk
IHJlY292ZXJ5SW5kZXgpCiAgICAgOiBtX2pzVmFsdWVTb3VyY2UoanNWYWx1ZVNvdXJjZSkKICAg
ICAsIG1fdmFsdWVQcm9maWxlKHZhbHVlUHJvZmlsZSkKLSAgICAsIG1fY2hlY2soY2hlY2spCisg
ICAgLCBtX3BhdGNoYWJsZUNvZGVPZmZzZXQoMCkKICAgICAsIG1fbm9kZUluZGV4KGppdC0+bV9j
b21waWxlSW5kZXgpCiAgICAgLCBtX2NvZGVPcmlnaW4oaml0LT5tX2NvZGVPcmlnaW5Gb3JPU1Ip
CiAgICAgLCBtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZShtX2NvZGVPcmlnaW4pCkBAIC01MCw2
ICs1MCwyOCBAQCBPU1JFeGl0OjpPU1JFeGl0KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTCiAgICAg
QVNTRVJUKG1fY29kZU9yaWdpbi5pc1NldCgpKTsKIH0KIAordm9pZCBPU1JFeGl0OjpzZXRQYXRj
aGFibGVDb2RlT2Zmc2V0KE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIGNoZWNrKQorewor
ICAgIG1fcGF0Y2hhYmxlQ29kZU9mZnNldCA9IGNoZWNrLm1fanVtcC5tX2xhYmVsLm1fb2Zmc2V0
OworfQorCitNYWNyb0Fzc2VtYmxlcjo6SnVtcCBPU1JFeGl0OjpnZXRQYXRjaGFibGVDb2RlT2Zm
c2V0QXNKdW1wKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6Okp1bXAoQXNz
ZW1ibGVyTGFiZWwobV9wYXRjaGFibGVDb2RlT2Zmc2V0KSk7Cit9CisKK0NvZGVMb2NhdGlvbkp1
bXAgT1NSRXhpdDo6Y29kZUxvY2F0aW9uRm9yUmVwYXRjaChDb2RlQmxvY2sqIGRmZ0NvZGVCbG9j
aykgY29uc3QKK3sKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uSnVtcChkZmdDb2RlQmxvY2stPmdl
dEpJVENvZGUoKS5kYXRhQWRkcmVzc0F0T2Zmc2V0KG1fcGF0Y2hhYmxlQ29kZU9mZnNldCkpOwor
fQorCit2b2lkIE9TUkV4aXQ6OmNvcnJlY3RKdW1wKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCit7
CisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxhYmVsOworICAgIGxhYmVsLm1fbGFiZWwubV9v
ZmZzZXQgPSBtX3BhdGNoYWJsZUNvZGVPZmZzZXQ7CisgICAgbV9wYXRjaGFibGVDb2RlT2Zmc2V0
ID0gbGlua0J1ZmZlci5vZmZzZXRPZihsYWJlbCk7Cit9CisKIGJvb2wgT1NSRXhpdDo6Y29uc2lk
ZXJBZGRpbmdBc0ZyZXF1ZW50RXhpdFNpdGVTbG93KENvZGVCbG9jayogZGZnQ29kZUJsb2NrLCBD
b2RlQmxvY2sqIHByb2ZpbGVkQ29kZUJsb2NrKQogewogICAgIGlmIChzdGF0aWNfY2FzdDxkb3Vi
bGU+KG1fY291bnQpIC8gZGZnQ29kZUJsb2NrLT5vc3JFeGl0Q291bnRlcigpIDw9IE9wdGlvbnM6
Om9zckV4aXRQcm9taW5lbmNlRm9yRnJlcXVlbnRFeGl0U2l0ZSgpKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgJKHJldmlzaW9uIDEzNzk1MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICsz
Miw2IEBACiAKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uLmgi
Ci0jaW5jbHVkZSAiREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaCIKICNpbmNsdWRlICJERkdFeGl0
UHJvZmlsZS5oIgogI2luY2x1ZGUgIkRGR0dQUkluZm8uaCIKICNpbmNsdWRlICJERkdWYWx1ZVJl
Y292ZXJ5T3ZlcnJpZGUuaCIKQEAgLTg0LDE0ICs4MywxNCBAQCBwcml2YXRlOgogLy8gVGhpcyBz
dHJ1Y3R1cmUgZGVzY3JpYmVzIGhvdyB0byBleGl0IHRoZSBzcGVjdWxhdGl2ZSBwYXRoIGJ5CiAv
LyBnb2luZyBpbnRvIGJhc2VsaW5lIGNvZGUuCiBzdHJ1Y3QgT1NSRXhpdCB7Ci0gICAgT1NSRXhp
dChFeGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSwg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAsIFNwZWN1bGF0aXZlSklUKiwgdW5zaWduZWQgc3RyZWFtSW5k
ZXgsIHVuc2lnbmVkIHJlY292ZXJ5SW5kZXggPSAwKTsKKyAgICBPU1JFeGl0KEV4aXRLaW5kLCBK
U1ZhbHVlU291cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJ
VCosIHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4ID0gMCk7CiAg
ICAgCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG1fY29kZTsKICAgICAKICAgICBKU1ZhbHVl
U291cmNlIG1fanNWYWx1ZVNvdXJjZTsKICAgICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
IG1fdmFsdWVQcm9maWxlOwotICAgIAotICAgIENvcnJlY3RhYmxlSnVtcFBvaW50IG1fY2hlY2s7
CisKKyAgICB1bnNpZ25lZCBtX3BhdGNoYWJsZUNvZGVPZmZzZXQ7CiAgICAgTm9kZUluZGV4IG1f
bm9kZUluZGV4OwogICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luOwogICAgIENvZGVPcmlnaW4g
bV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGU7CkBAIC0xMDgsNyArMTA3LDEyIEBAIHN0cnVjdCBP
U1JFeGl0IHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIGNvbnNp
ZGVyQWRkaW5nQXNGcmVxdWVudEV4aXRTaXRlU2xvdyhkZmdDb2RlQmxvY2ssIHByb2ZpbGVkQ29k
ZUJsb2NrKTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHNldFBhdGNoYWJsZUNvZGVPZmZzZXQo
TWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXApOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IGdldFBhdGNoYWJsZUNvZGVPZmZzZXRBc0p1bXAoKSBjb25zdDsKKyAgICBDb2RlTG9jYXRpb25K
dW1wIGNvZGVMb2NhdGlvbkZvclJlcGF0Y2goQ29kZUJsb2NrKikgY29uc3Q7CisgICAgdm9pZCBj
b3JyZWN0SnVtcChMaW5rQnVmZmVyJik7CisKICAgICB1bnNpZ25lZCBtX3N0cmVhbUluZGV4Owog
ICAgIGludCBtX2xhc3RTZXRPcGVyYW5kOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxhdGlvbklu
Zm8uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR09TUkV4aXRDb21waWxhdGlvbklu
Zm9faAorI2RlZmluZSBERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvX2gKKworI2luY2x1ZGUgPHd0
Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJDb2RlT3Jp
Z2luLmgiCisjaW5jbHVkZSAiREZHQ29tbW9uLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIu
aCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitjbGFzcyBPU1JFeGl0Q29t
cGlsYXRpb25JbmZvIHsKK3B1YmxpYzoKKyAgICBPU1JFeGl0Q29tcGlsYXRpb25JbmZvKE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIGZhaWx1cmVKdW1wKQorICAgICAgICA6IG1fZmFpbHVyZUp1bXAoZmFp
bHVyZUp1bXApCisgICAgeworICAgIH0KKworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wJiBmYWls
dXJlSnVtcCgpIHsgcmV0dXJuIG1fZmFpbHVyZUp1bXA7IH0KKworcHJpdmF0ZToKKyAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBtX2ZhaWx1cmVKdW1wOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBERkdPU1JF
eGl0Q29tcGlsYXRpb25JbmZvX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTM3OTUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBjb21waWxlT1NSRXhpdChFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgCiAgICAgewogICAgICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJs
b2NrKTsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoZXhpdC5tX2NoZWNrLmNvZGVMb2Nh
dGlvbkZvclJlcGF0Y2goY29kZUJsb2NrKSwgQ29kZUxvY2F0aW9uTGFiZWwoZXhpdC5tX2NvZGUu
Y29kZSgpKSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGV4aXQuY29kZUxvY2F0aW9u
Rm9yUmVwYXRjaChjb2RlQmxvY2spLCBDb2RlTG9jYXRpb25MYWJlbChleGl0Lm1fY29kZS5jb2Rl
KCkpKTsKICAgICB9CiAgICAgCiAgICAgZ2xvYmFsRGF0YS0+b3NyRXhpdEp1bXBEZXN0aW5hdGlv
biA9IGV4aXQubV9jb2RlLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9u
IDEzNzk1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6c3BlY3VsYXRpb25DaGVjayhFeAogICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAg
cmV0dXJuOwogICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRleCkuY2FuRXhpdCgpIHx8IG1faXND
aGVja2luZ0FyZ3VtZW50VHlwZXMpOwotICAgIG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRPU1JF
eGl0KE9TUkV4aXQoa2luZCwganNWYWx1ZVNvdXJjZSwgbV9qaXQuZ3JhcGgoKS5tZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlRm9yKG5vZGVJbmRleCksIGp1bXBUb0ZhaWwsIHRoaXMsIG1fc3Ry
ZWFtLT5zaXplKCkpKTsKKyAgICBtX2ppdC5hcHBlbmRFeGl0SnVtcChqdW1wVG9GYWlsKTsKKyAg
ICBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kT1NSRXhpdChPU1JFeGl0KGtpbmQsIGpzVmFsdWVT
b3VyY2UsIG1faml0LmdyYXBoKCkubWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcihub2Rl
SW5kZXgpLCB0aGlzLCBtX3N0cmVhbS0+c2l6ZSgpKSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OnNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVl
U291cmNlLCBFZGdlIG5vZGVVc2UsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwpCkBA
IC0xMzgsNyArMTM5LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25DaGVjayhF
eAogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKGF0KG1fY29tcGlsZUluZGV4KS5jYW5FeGl0
KCkgfHwgbV9pc0NoZWNraW5nQXJndW1lbnRUeXBlcyk7CiAgICAgbV9qaXQuY29kZUJsb2NrKCkt
PmFwcGVuZFNwZWN1bGF0aW9uUmVjb3ZlcnkocmVjb3ZlcnkpOwotICAgIG1faml0LmNvZGVCbG9j
aygpLT5hcHBlbmRPU1JFeGl0KE9TUkV4aXQoa2luZCwganNWYWx1ZVNvdXJjZSwgbV9qaXQuZ3Jh
cGgoKS5tZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKG5vZGVJbmRleCksIGp1bXBUb0Zh
aWwsIHRoaXMsIG1fc3RyZWFtLT5zaXplKCksIG1faml0LmNvZGVCbG9jaygpLT5udW1iZXJPZlNw
ZWN1bGF0aW9uUmVjb3ZlcmllcygpKSk7CisgICAgbV9qaXQuYXBwZW5kRXhpdEp1bXAoanVtcFRv
RmFpbCk7CisgICAgbV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZE9TUkV4aXQoT1NSRXhpdChraW5k
LCBqc1ZhbHVlU291cmNlLCBtX2ppdC5ncmFwaCgpLm1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGVGb3Iobm9kZUluZGV4KSwgdGhpcywgbV9zdHJlYW0tPnNpemUoKSwgbV9qaXQuY29kZUJsb2Nr
KCktPm51bWJlck9mU3BlY3VsYXRpb25SZWNvdmVyaWVzKCkpKTsKIH0KIAogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6c3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpz
VmFsdWVTb3VyY2UsIEVkZ2Ugbm9kZVVzZSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAganVtcFRvRmFp
bCwgY29uc3QgU3BlY3VsYXRpb25SZWNvdmVyeSYgcmVjb3ZlcnkpCkBAIC0xNTksMTEgKzE2MSwx
MiBAQCBKdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50KiBTcGVjdWxhdGl2ZUpJCiAgICAgaWYgKCFt
X2NvbXBpbGVPa2F5KQogICAgICAgICByZXR1cm4gMDsKICAgICBBU1NFUlQoYXQobV9jb21waWxl
SW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVudFR5cGVzKTsKKyAgICBtX2pp
dC5hcHBlbmRFeGl0SnVtcChKSVRDb21waWxlcjo6SnVtcCgpKTsKICAgICBPU1JFeGl0JiBleGl0
ID0gbV9qaXQuY29kZUJsb2NrKCktPm9zckV4aXQoCiAgICAgICAgIG1faml0LmNvZGVCbG9jaygp
LT5hcHBlbmRPU1JFeGl0KAogICAgICAgICAgICAgT1NSRXhpdChraW5kLCBqc1ZhbHVlU291cmNl
LAogICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLm1ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGVGb3Iobm9kZUluZGV4KSwKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAoKSwgdGhpcywgbV9zdHJlYW0tPnNpemUoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAg
dGhpcywgbV9zdHJlYW0tPnNpemUoKSkpKTsKICAgICBleGl0Lm1fd2F0Y2hwb2ludEluZGV4ID0g
bV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZFdhdGNocG9pbnQoCiAgICAgICAgIEp1bXBSZXBsYWNl
bWVudFdhdGNocG9pbnQobV9qaXQud2F0Y2hwb2ludExhYmVsKCkpKTsKICAgICByZXR1cm4gJm1f
aml0LmNvZGVCbG9jaygpLT53YXRjaHBvaW50KGV4aXQubV93YXRjaHBvaW50SW5kZXgpOwo=
</data>
<flag name="commit-queue"
          id="196897"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179856</attachid>
            <date>2012-12-17 18:54:02 -0800</date>
            <delta_ts>2012-12-17 19:52:12 -0800</delta_ts>
            <desc>Added reviewer information.</desc>
            <filename>105237-3.patch</filename>
            <type>text/plain</type>
            <size>32483</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3OTY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBA
CisyMDEyLTEyLTE3ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIERGRzogUmVmYWN0b3IgREZHQ29ycmVjdGFibGVKdW1wUG9pbnQgdG8gcmVkdWNlIHNpemUg
b2YgT1NSRXhpdCBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDUyMzcKKworICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KKworICAg
ICAgICBSZXBsYWNlZCBERkdDb3JyZWN0YWJsZUp1bXBQb2ludCB3aXRoIE9TUkV4aXRDb21waWxh
dGlvbkluZm8gd2hpY2ggaXMgdXNlZCBhbmQga2VwdCBhbGl2ZSBvbmx5IHdoaWxlIHdlIGFyZQor
ICAgICAgICBjb21waWxpbmcgaW4gdGhlIERGRy4gIE1vdmVkIHRoZSBwYXRjaGFibGUgYnJhbmNo
IG9mZnNldCBkaXJlY3RseSBpbnRvIE9TUkV4aXQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAg
ICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAqIGRm
Zy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogZGZnL0RG
R0NvcnJlY3RhYmxlSnVtcFBvaW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogZGZnL0RGR0pJVENv
bXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGlua09TUkV4aXRz
KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZn
L0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFwcGVu
ZEV4aXRKdW1wKToKKyAgICAgICAgKEpJVENvbXBpbGVyKToKKyAgICAgICAgKiBkZmcvREZHT1NS
RXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6T1NSRXhpdCk6CisgICAgICAg
IChKU0M6OkRGRzo6T1NSRXhpdDo6c2V0UGF0Y2hhYmxlQ29kZU9mZnNldCk6CisgICAgICAgIChK
U0M6OkRGRzo6T1NSRXhpdDo6Z2V0UGF0Y2hhYmxlQ29kZU9mZnNldEFzSnVtcCk6CisgICAgICAg
IChKU0M6OkRGRzo6T1NSRXhpdDo6Y29kZUxvY2F0aW9uRm9yUmVwYXRjaCk6CisgICAgICAgIChK
U0M6OkRGRzo6T1NSRXhpdDo6Y29ycmVjdEp1bXApOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0
Lmg6CisgICAgICAgIChPU1JFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGF0
aW9uSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKE9TUkV4aXRDb21waWxhdGlvbkluZm8pOgorICAg
ICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxhdGlvbkluZm86Ok9TUkV4aXRDb21waWxhdGlv
bkluZm8pOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxhdGlvbkluZm86OmZhaWx1
cmVKdW1wKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpzcGVjdWxhdGlvbkNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6c3BlY3VsYXRpb25XYXRjaHBvaW50KToKKwogMjAxMi0xMi0xNyAgRmlsaXAgUGl6bG8g
IDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBpcyB0b28gYWdncmVzc2l2ZSB3aXRo
IGVsaWRpbmcgb3ZlcmZsb3cgY2hlY2tzIGluIGxvb3BzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzc5NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDYgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBkZmcvREZHQ0ZBUGhhc2UuY3BwCiAgICAgZGZnL0RG
R0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCiAgICAgZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1Bo
YXNlLmNwcAotICAgIGRmZy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5jcHAKICAgICBkZmcvREZH
Q1NFUGhhc2UuY3BwCiAgICAgZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKICAgICBkZmcvREZHRG9t
aW5hdG9ycy5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCShyZXZpc2lvbiAxMzc5NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMTg2LDggKzE4Niw2IEBAIGphdmFzY3JpcHRj
b3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2Uu
Y3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmggXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuY3BwIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ1NFUGhhc2UuY3BwIFwKQEAgLTIyOCw2ICsyMjYsNyBAQCBqYXZhc2NyaXB0Y29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21w
aWxlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBcCisJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmggXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUGhhc2UuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1BoYXNlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJp
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCShyZXZpc2lv
biAxMzc5NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkod29ya2luZyBj
b3B5KQpAQCAtMTE2LDcgKzExNiw2IEBAIFNPVVJDRVMgKz0gXAogICAgIGRmZy9ERkdDRkFQaGFz
ZS5jcHAgXAogICAgIGRmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCBcCiAgICAgZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBcCi0gICAgZGZnL0RGR0NvcnJlY3RhYmxlSnVt
cFBvaW50LmNwcCBcCiAgICAgZGZnL0RGR0NTRVBoYXNlLmNwcCBcCiAgICAgZGZnL0RGR0Rpc2Fz
c2VtYmxlci5jcHAgXAogICAgIGRmZy9ERkdEb21pbmF0b3JzLmNwcCBcCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM3OTUyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTIzNiw4ICsyMzYsNiBAQAogCQkwRkMwOTc3NjE0Njk0M0IwMDBDRjI0NDIgLyog
REZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3NzUxNDY5NDNBRDAwQ0YyNDQyIC8qIERGR09TUkV4aXRD
b21waWxlcjMyXzY0LmNwcCAqLzsgfTsKIAkJMEZDMDk3OTExNDZBNkY3MTAwQ0YyNDQyIC8qIERG
R09TUkV4aXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZDMDk3OEUxNDZBNkY2MzAwQ0YyNDQyIC8qIERGR09TUkV4aXQuY3BwICovOyB9OwogCQkw
RkMwOTc5MjE0NkE2RjczMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzhGMTQ2QTZGNjMw
MENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuY3BwICovOyB9OwotCQkwRkMwOTc5QzE0NkE3
NzI1MDBDRjI0NDIgLyogREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzlBMTQ2QTc3MjAwMENGMjQ0MiAv
KiBERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTBGQzA5NzlFMTQ2QjI3MjEwMENGMjQ0MiAvKiBERkdDb3Jy
ZWN0YWJsZUp1bXBQb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkMwOTc5RDE0NkIyNzFFMDBDRjI0NDIgLyogREZHQ29ycmVjdGFibGVKdW1w
UG9pbnQuY3BwICovOyB9OwogCQkwRkMwOTdBMTE0NkIyOENBMDBDRjI0NDIgLyogREZHVGh1bmtz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5
NzlGMTQ2QjI4QzcwMENGMjQ0MiAvKiBERkdUaHVua3MuY3BwICovOyB9OwogCQkwRkMwOTdBMjE0
NkIyOENDMDBDRjI0NDIgLyogREZHVGh1bmtzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTdBMDE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1bmtz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZD
ODE1MEExNDA0M0JGNTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzgxNTA5MTQwNDNCRDIwMENG
QTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwNzEsOCArMTA2OSw2IEBACiAJCTBGQzA5NzdFMTQ2
OUVCQzQwMENGMjQ0MiAvKiBERkdDb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHQ29tbW9uLmg7IHBhdGggPSBkZmcvREZHQ29tbW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGQzA5NzhFMTQ2QTZGNjMwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR09TUkV4aXQuY3BwOyBw
YXRoID0gZGZnL0RGR09TUkV4aXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkMwOTc4RjE0NkE2RjYzMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR09TUkV4aXRDb21waWxlci5jcHA7IHBh
dGggPSBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMEZDMDk3OUExNDZBNzcyMDAwQ0YyNDQyIC8qIERGR0NvcnJlY3RhYmxlSnVtcFBvaW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NvcnJlY3RhYmxlSnVtcFBv
aW50Lmg7IHBhdGggPSBkZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMEZDMDk3OUQxNDZCMjcxRTAwQ0YyNDQyIC8qIERGR0NvcnJlY3Rh
YmxlSnVtcFBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERG
R0NvcnJlY3RhYmxlSnVtcFBvaW50LmNwcDsgcGF0aCA9IGRmZy9ERkdDb3JyZWN0YWJsZUp1bXBQ
b2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzA5NzlGMTQ2QjI4Qzcw
MENGMjQ0MiAvKiBERkdUaHVua3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gREZHVGh1bmtzLmNwcDsgcGF0aCA9IGRmZy9ERkdUaHVua3MuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkMwOTdBMDE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1bmtz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1RodW5rcy5oOyBwYXRoID0g
ZGZnL0RGR1RodW5rcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkM4MTUwODE0
MDQzQkNBMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyOTIsNiArMTI4OCw3IEBACiAJCTY1NjBBNENGMDRCM0Iz
RTcwMDhBRTk1MiAvKiBDb3JlRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9
IENvcmVGb3VuZGF0aW9uLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+Ijsg
fTsKIAkJNjU2MjFFNkIwODlFODU5NzAwNzYwRjM1IC8qIFByb3BlcnR5U2xvdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9wZXJ0
eVNsb3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCTY1
NjIxRTZDMDg5RTg1OTcwMDc2MEYzNSAvKiBQcm9wZXJ0eVNsb3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvcGVydHlTbG90Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJNjU5ODdGMkMxNjdGRTg0QjAw
M0MyRjhEIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oOyBwYXRoID0gZGZnL0RG
R09TUkV4aXRDb21waWxhdGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NjVDMDJGQkIwNjM3NDYyQTAwM0U3RUU2IC8qIFByb3RlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvdGVjdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCTY1QzdBMTcxMEE4RUFBQ0IwMEZBMzdFQSAv
KiBKU1dyYXBwZXJPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTV3JhcHBlck9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1
QzdBMTcyMEE4RUFBQ0IwMEZBMzdFQSAvKiBKU1dyYXBwZXJPYmplY3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV3JhcHBlck9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjQ1NSw2ICsyNDUyLDcgQEAKIAkJODZFQzlEQjMxMzI4REY0NDAwMkIy
QUQ3IC8qIGRmZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJNjU5ODdGMkMxNjdGRTg0QjAwM0MyRjhEIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8u
aCAqLywKIAkJCQkwRjYyMDE2RDE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5j
cHAgKi8sCiAJCQkJMEY2MjAxNkUxNDNGQ0QyRjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUu
aCAqLywKIAkJCQkwRjYyMDE2RjE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RWYWx1ZS5o
ICovLApAQCAtMjQ4Miw4ICsyNDgwLDYgQEAKIAkJCQkwRkMwOTc3RTE0NjlFQkM0MDBDRjI0NDIg
LyogREZHQ29tbW9uLmggKi8sCiAJCQkJMEYzQjNBMTcxNTNFNjhFRjAwM0VEMEZGIC8qIERGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmNwcCAqLywKIAkJCQkwRjNCM0ExODE1M0U2OEVGMDAzRUQwRkYg
LyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuaCAqLywKLQkJCQkwRkMwOTc5RDE0NkIyNzFFMDBD
RjI0NDIgLyogREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuY3BwICovLAotCQkJCTBGQzA5NzlBMTQ2
QTc3MjAwMENGMjQ0MiAvKiBERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5oICovLAogCQkJCTBGRkZD
OTREMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NEUx
NEVGOTA5NTAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmggKi8sCiAJCQkJMEZGNDI3NjExNTkxQTFD
OTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5jcHAgKi8sCkBAIC0yODE2LDcgKzI4MTIsNiBA
QAogCQkJCTBGNjIwMTc2MTQzRkNEM0IwMDY4Qjc3QyAvKiBERkdCYXNpY0Jsb2NrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NkVDOURDNTEzMjhERjgyMDAyQjJBRDcgLyogREZHQnl0ZUNvZGVQYXJz
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkM1NTZGMTQ3MzhGMzEwMDEyMUU0RiAvKiBERkdD
b2RlQmxvY2tzLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkMwOTc5QzE0NkE3NzI1MDBDRjI0NDIg
LyogREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDNDODI4
MTQxMTVENEYwMEZEODFDQiAvKiBERkdEcml2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkMw
QUU4MTQ5NkM3QzcwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODZBRTZDNEQxMzZBMTFFNDAwOTYzMDEyIC8qIERGR0ZQUkluZm8uaCBpbiBIZWFkZXJzICov
LApAQCAtMzUzMSw3ICszNTI2LDYgQEAKIAkJCQk4NkVDOURDNDEzMjhERjgyMDAyQjJBRDcgLyog
REZHQnl0ZUNvZGVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEODJFMjExNDE3MkNF
MzAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJD
NTU3MDE0NzM4RjM1MDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQkwRkMwOTc5RTE0NkIyNzIxMDBDRjI0NDIgLyogREZHQ29ycmVjdGFibGVKdW1wUG9pbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEM0M4MjYxNDExNUQ0MDAwRkQ4MUNCIC8qIERGR0Ry
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkJDMEFFNzE0OTZDN0M0MDBENEZCREQgLyog
REZHRXhpdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQzlEQzcxMzI4REY4MjAw
MkIyQUQ3IC8qIERGR0dyYXBoLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVy
LmgJKHJldmlzaW9uIDEzNzk1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBA
IGNsYXNzIExpbmtCdWZmZXI7CiBjbGFzcyBSZXBhdGNoQnVmZmVyOwogY2xhc3MgV2F0Y2hwb2lu
dDsKIG5hbWVzcGFjZSBERkcgewotY2xhc3MgQ29ycmVjdGFibGVKdW1wUG9pbnQ7CitzdHJ1Y3Qg
T1NSRXhpdDsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIEFzc2VtYmxlclR5cGU+CkBAIC0zMjAsNyAr
MzIwLDcgQEAgcHVibGljOgogICAgIGNsYXNzIExhYmVsIHsKICAgICAgICAgdGVtcGxhdGU8Y2xh
c3MgVGVtcGxhdGVBc3NlbWJsZXJUeXBlPgogICAgICAgICBmcmllbmQgY2xhc3MgQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjsKLSAgICAgICAgZnJpZW5kIGNsYXNzIERGRzo6Q29ycmVjdGFibGVKdW1w
UG9pbnQ7CisgICAgICAgIGZyaWVuZCBzdHJ1Y3QgREZHOjpPU1JFeGl0OwogICAgICAgICBmcmll
bmQgY2xhc3MgSnVtcDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEp1bXBSZXBsYWNlbWVudFdhdGNo
cG9pbnQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7CkBAIC01
MDEsNyArNTAxLDcgQEAgcHVibGljOgogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBUZW1wbGF0ZUFz
c2VtYmxlclR5cGU+CiAgICAgICAgIGZyaWVuZCBjbGFzcyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVy
OwogICAgICAgICBmcmllbmQgY2xhc3MgQ2FsbDsKLSAgICAgICAgZnJpZW5kIGNsYXNzIERGRzo6
Q29ycmVjdGFibGVKdW1wUG9pbnQ7CisgICAgICAgIGZyaWVuZCBzdHJ1Y3QgREZHOjpPU1JFeGl0
OwogICAgICAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKICAgICBwdWJsaWM6CiAgICAgICAg
IEp1bXAoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb3JyZWN0YWJsZUp1
bXBQb2ludC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b3JyZWN0YWJsZUp1bXBQb2ludC5jcHAJKHJldmlzaW9uIDEzNzk1MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR0NvcnJlY3RhYmxlSnVt
cFBvaW50LmgiCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLUNvZGVMb2NhdGlvbkp1bXAg
Q29ycmVjdGFibGVKdW1wUG9pbnQ6OmNvZGVMb2NhdGlvbkZvclJlcGF0Y2goQ29kZUJsb2NrKiBj
b2RlQmxvY2spIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbW9kZSA9PSBDb3JyZWN0ZWRKdW1wKTsK
LSAgICByZXR1cm4gQ29kZUxvY2F0aW9uSnVtcChjb2RlQmxvY2stPmdldEpJVENvZGUoKS5kYXRh
QWRkcmVzc0F0T2Zmc2V0KG1fY29kZU9mZnNldCkpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmgJKHJldmlzaW9u
IDEzNzk1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVKdW1w
UG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIERGR0NvcnJlY3RhYmxlSnVt
cFBvaW50X2gKLSNkZWZpbmUgREZHQ29ycmVjdGFibGVKdW1wUG9pbnRfaAotCi0jaWYgRU5BQkxF
KERGR19KSVQpCi0KLSNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCi0jaW5jbHVkZSAiTWFjcm9Bc3Nl
bWJsZXIuaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi0vLyBUaGlzIGlz
IGEgdHlwZS1zYWZlIHVuaW9uIG9mIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGFuZCBDb2RlTG9jYXRp
b25KdW1wLgotLy8gRnVydGhlcm1vcmUsIGl0IHN1cHBvcnRzIHRoZSBub3Rpb24gb2YgYnJhbmNo
aW5nIChwb3NzaWJseSBjb25kaXRpb25hbGx5LCBidXQKLS8vIGFsc28gcG9zc2libHkganVtcGlu
ZyB1bmNvbmRpdGlvbmFsbHkpIHRvIGFuIG91dC1vZi1saW5lIHBhdGNoYWJsZSBqdW1wLgotLy8g
VGh1cyBpdCBnb2VzIHRocm91Z2ggdGhyZWUgc3RhdGVzOgotLy8KLS8vIDEpIExhYmVsIG9mIHVu
cGF0Y2hhYmxlIGJyYW5jaCBvciBqdW1wIChpLmUuIE1hY3JvQXNzZW1ibGVyOjpKdW1wKS4KLS8v
IDIpIExhYmVsIG9mIHBhdGNoYWJsZSBqdW1wIChpLmUuIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFi
bGVKdW1wKS4KLS8vIDMpIENvcnJlY3RlZCBwb3N0LWxpbmtpbmcgbGFiZWwgb2YgcGF0Y2hhYmxl
IGp1bXAgKGkuZS4gQ29kZUxvY2F0aW9uSnVtcCkuCi0vLwotLy8gVGhlIHNldHRpbmcgb2Ygc3Rh
dGUgKDEpIGNvcnJlc3BvbmRzIHRvIHBsYW50aW5nIHRoZSBpbi1saW5lIHVucGF0Y2hhYmxlCi0v
LyBicmFuY2ggb3IganVtcC4gVGhlIHN0YXRlIHRyYW5zaXRpb24gKDEpLT4oMikgY29ycmVzcG9u
ZHMgdG8gbGlua2luZyB0aGUKLS8vIGluLWxpbmUgYnJhbmNoIG9yIGp1bXAgdG8gdGhlIG91dC1v
Zi1saW5lIHBhdGNoYWJsZSBqdW1wLCBhbmQgcmVjb3JkaW5nCi0vLyB0aGUgbGF0dGVyJ3MgbGFi
ZWwuIFRoZSBzdGF0ZSB0cmFuc2l0aW9uICgyKS0+KDMpIGNvcnJlc3BvbmRzIHRvIHJlY29yZGlu
ZwotLy8gdGhlIG91dC1vZi1saW5lIHBhdGNoYWJsZSBqdW1wJ3MgbG9jYXRpb24gYWZ0ZXIgYnJh
bmNoIGNvbXBhY3Rpb24gaGFzCi0vLyBjb21wbGV0ZWQuCi0vLwotLy8gWW91IGNhbiBhbHNvIGdv
IGRpcmVjdGx5IGZyb20gdGhlIGZpcnN0IHN0YXRlIHRvIHRoZSB0aGlyZCBzdGF0ZSwgaWYgeW91
Ci0vLyB3aXNoIHRvIHVzZSB0aGlzIGNsYXNzIGZvciBpbi1saW5lIHBhdGNoYWJsZSBqdW1wcy4K
LQotY2xhc3MgQ29ycmVjdGFibGVKdW1wUG9pbnQgewotcHVibGljOgotICAgIENvcnJlY3RhYmxl
SnVtcFBvaW50KE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrKQotICAgICAgICA6IG1fY29kZU9m
ZnNldChjaGVjay5tX2xhYmVsLm1fb2Zmc2V0KQotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgLCBt
X21vZGUoSW5pdGlhbEp1bXApCi0jZW5kaWYKLSAgICB7Ci0jaWYgQ1BVKEFSTV9USFVNQjIpCi0g
ICAgICAgIG1fdHlwZSA9IGNoZWNrLm1fdHlwZTsKLSAgICAgICAgbV9jb25kaXRpb24gPSBjaGVj
ay5tX2NvbmRpdGlvbjsKLSNlbmRpZgotICAgIH0KLSAgICAKLSAgICBib29sIGlzU2V0KCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2NvZGVPZmZzZXQgIT0gc3RkOjpudW1lcmljX2xpbWl0czx1
aW50MzJfdD46Om1heCgpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIHN3aXRjaFRvTGF0ZUp1bXAo
TWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgY2hlY2spCi0gICAgewotI2lmbmRlZiBOREVC
VUcKLSAgICAgICAgQVNTRVJUKG1fbW9kZSA9PSBJbml0aWFsSnVtcCk7Ci0gICAgICAgIG1fbW9k
ZSA9IExhdGVKdW1wOwotI2VuZGlmCi0gICAgICAgIC8vIExhdGUganVtcHMgc2hvdWxkIG9ubHkg
ZXZlciBiZSByZWFsIGp1bXBzLgotI2lmIENQVShBUk1fVEhVTUIyKQotICAgICAgICBBU1NFUlQo
Y2hlY2subV9qdW1wLm1fdHlwZSA9PSBBUk12N0Fzc2VtYmxlcjo6SnVtcE5vQ29uZGl0aW9uRml4
ZWRTaXplKTsKLSAgICAgICAgQVNTRVJUKGNoZWNrLm1fanVtcC5tX2NvbmRpdGlvbiA9PSBBUk12
N0Fzc2VtYmxlcjo6Q29uZGl0aW9uSW52YWxpZCk7Ci0gICAgICAgIG1fdHlwZSA9IEFSTXY3QXNz
ZW1ibGVyOjpKdW1wTm9Db25kaXRpb25GaXhlZFNpemU7Ci0gICAgICAgIG1fY29uZGl0aW9uID0g
QVJNdjdBc3NlbWJsZXI6OkNvbmRpdGlvbkludmFsaWQ7Ci0jZW5kaWYKLSAgICAgICAgbV9jb2Rl
T2Zmc2V0ID0gY2hlY2subV9qdW1wLm1fbGFiZWwubV9vZmZzZXQ7Ci0gICAgfQotICAgIAotICAg
IHZvaWQgY29ycmVjdEluaXRpYWxKdW1wKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCi0gICAgewot
ICAgICAgICBBU1NFUlQobV9tb2RlID09IEluaXRpYWxKdW1wKTsKLSNpZiBDUFUoQVJNX1RIVU1C
MikKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBBUk12N0Fzc2VtYmxlcjo6SnVtcE5vQ29uZGl0
aW9uRml4ZWRTaXplKTsKLSAgICAgICAgQVNTRVJUKG1fY29uZGl0aW9uID09IEFSTXY3QXNzZW1i
bGVyOjpDb25kaXRpb25JbnZhbGlkKTsKLSNlbmRpZgotICAgICAgICBjb3JyZWN0SnVtcChsaW5r
QnVmZmVyKTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBjb3JyZWN0TGF0ZUp1bXAoTGlua0J1ZmZl
ciYgbGlua0J1ZmZlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX21vZGUgPT0gTGF0ZUp1bXAp
OwotICAgICAgICBjb3JyZWN0SnVtcChsaW5rQnVmZmVyKTsKLSAgICB9Ci0gICAgCi0gICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgaW5pdGlhbEp1bXAoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fbW9kZSA9PSBJbml0aWFsSnVtcCk7Ci0gICAgICAgIHJldHVybiBnZXRKdW1wKCk7Ci0g
ICAgfQotICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGxhdGVKdW1wKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX21vZGUgPT0gTGF0ZUp1bXApOwotICAgICAgICByZXR1cm4g
Z2V0SnVtcCgpOwotICAgIH0KLSAgICAKLSAgICBDb2RlTG9jYXRpb25KdW1wIGNvZGVMb2NhdGlv
bkZvclJlcGF0Y2goQ29kZUJsb2NrKikgY29uc3Q7Ci0gICAgCi1wcml2YXRlOgotICAgIHZvaWQg
Y29ycmVjdEp1bXAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKLSAgICB7Ci0jaWZuZGVmIE5ERUJV
RwotICAgICAgICBtX21vZGUgPSBDb3JyZWN0ZWRKdW1wOwotI2VuZGlmCi0gICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBsYWJlbDsKLSAgICAgICAgbGFiZWwubV9sYWJlbC5tX29mZnNldCA9
IG1fY29kZU9mZnNldDsKLSAgICAgICAgbV9jb2RlT2Zmc2V0ID0gbGlua0J1ZmZlci5vZmZzZXRP
ZihsYWJlbCk7Ci0gICAgfQotICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGdldEp1bXAo
KSBjb25zdAotICAgIHsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAganVtcDsKLSAgICAg
ICAganVtcC5tX2xhYmVsLm1fb2Zmc2V0ID0gbV9jb2RlT2Zmc2V0OwotI2lmIENQVShBUk1fVEhV
TUIyKQotICAgICAgICBqdW1wLm1fdHlwZSA9IG1fdHlwZTsKLSAgICAgICAganVtcC5tX2NvbmRp
dGlvbiA9IG1fY29uZGl0aW9uOwotI2VuZGlmCi0gICAgICAgIHJldHVybiBqdW1wOwotICAgIH0K
LSAgICAKLSAgICB1bnNpZ25lZCBtX2NvZGVPZmZzZXQ7Ci0KLSNpZiBDUFUoQVJNX1RIVU1CMikK
LSAgICBBUk12N0Fzc2VtYmxlcjo6SnVtcFR5cGUgbV90eXBlIDogODsKLSAgICBBUk12N0Fzc2Vt
Ymxlcjo6Q29uZGl0aW9uIG1fY29uZGl0aW9uIDogODsKLSNlbmRpZgotCi0jaWZuZGVmIE5ERUJV
RwotICAgIGVudW0gTW9kZSB7Ci0gICAgICAgIEluaXRpYWxKdW1wLAotICAgICAgICBMYXRlSnVt
cCwKLSAgICAgICAgQ29ycmVjdGVkSnVtcAotICAgIH07Ci0KLSAgICBNb2RlIG1fbW9kZTsKLSNl
bmRpZgotfTsKLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxF
KERGR19KSVQpCi0KLSNlbmRpZiAvLyBERkdDb3JyZWN0YWJsZUp1bXBQb2ludF9oCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24g
MTM3OTUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDExICs1MSwxMiBAQCBKSVRDb21waWxlcjo6SklUQ29tcGls
ZXIoR3JhcGgmIGRmZykKIAogdm9pZCBKSVRDb21waWxlcjo6bGlua09TUkV4aXRzKCkKIHsKKyAg
ICBBU1NFUlQoY29kZUJsb2NrKCktPm51bWJlck9mT1NSRXhpdHMoKSA9PSBtX2V4aXRDb21waWxh
dGlvbkluZm8uc2l6ZSgpKTsKICAgICBpZiAobV9ncmFwaC5tX2NvbXBpbGF0aW9uKSB7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2RlQmxvY2soKS0+bnVtYmVyT2ZPU1JFeGl0
cygpOyArK2kpIHsKICAgICAgICAgICAgIE9TUkV4aXQmIGV4aXQgPSBjb2RlQmxvY2soKS0+b3Ny
RXhpdChpKTsKICAgICAgICAgICAgIGlmIChleGl0Lm1fd2F0Y2hwb2ludEluZGV4ID09IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgICAgICAgICBtX2V4aXRT
aXRlTGFiZWxzLmFwcGVuZChleGl0Lm1fY2hlY2suaW5pdGlhbEp1bXAoKS5sYWJlbCgpKTsKKyAg
ICAgICAgICAgICAgICBtX2V4aXRTaXRlTGFiZWxzLmFwcGVuZChtX2V4aXRDb21waWxhdGlvbklu
Zm9baV0uZmFpbHVyZUp1bXAoKS5sYWJlbCgpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBtX2V4aXRTaXRlTGFiZWxzLmFwcGVuZChjb2RlQmxvY2soKS0+d2F0Y2hwb2ludChl
eGl0Lm1fd2F0Y2hwb2ludEluZGV4KS5zb3VyY2VMYWJlbCgpKTsKICAgICAgICAgfQpAQCAtNjMs
MTQgKzY0LDE1IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmtPU1JFeGl0cygpCiAgICAgCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGVCbG9jaygpLT5udW1iZXJPZk9TUkV4aXRzKCk7
ICsraSkgewogICAgICAgICBPU1JFeGl0JiBleGl0ID0gY29kZUJsb2NrKCktPm9zckV4aXQoaSk7
Ci0gICAgICAgIEFTU0VSVCghZXhpdC5tX2NoZWNrLmlzU2V0KCkgPT0gKGV4aXQubV93YXRjaHBv
aW50SW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSk7CisgICAg
ICAgIEp1bXAmIGZhaWx1cmVKdW1wID0gbV9leGl0Q29tcGlsYXRpb25JbmZvW2ldLmZhaWx1cmVK
dW1wKCk7CisgICAgICAgIEFTU0VSVCghZmFpbHVyZUp1bXAuaXNTZXQoKSA9PSAoZXhpdC5tX3dh
dGNocG9pbnRJbmRleCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKTsK
ICAgICAgICAgaWYgKGV4aXQubV93YXRjaHBvaW50SW5kZXggPT0gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICAgICAgZXhpdC5tX2NoZWNrLmluaXRpYWxKdW1w
KCkubGluayh0aGlzKTsKKyAgICAgICAgICAgIGZhaWx1cmVKdW1wLmxpbmsodGhpcyk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGNvZGVCbG9jaygpLT53YXRjaHBvaW50KGV4aXQubV93YXRj
aHBvaW50SW5kZXgpLnNldERlc3RpbmF0aW9uKGxhYmVsKCkpOwogICAgICAgICBqaXRBc3NlcnRI
YXNWYWxpZENhbGxGcmFtZSgpOwogICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihpKSwgJmds
b2JhbERhdGEoKS0+b3NyRXhpdEluZGV4KTsKLSAgICAgICAgZXhpdC5tX2NoZWNrLnN3aXRjaFRv
TGF0ZUp1bXAocGF0Y2hhYmxlSnVtcCgpKTsKKyAgICAgICAgZXhpdC5zZXRQYXRjaGFibGVDb2Rl
T2Zmc2V0KHBhdGNoYWJsZUp1bXAoKSk7CiAgICAgfQogfQogCkBAIC0yMTAsOCArMjEyLDggQEAg
dm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgIENvZGVMb2NhdGlv
bkxhYmVsIHRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsKG9zckV4aXRUaHVuay5jb2RlKCkpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2RlQmxvY2soKS0+bnVtYmVyT2ZPU1JFeGl0
cygpOyArK2kpIHsKICAgICAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jaygpLT5vc3JFeGl0
KGkpOwotICAgICAgICBsaW5rQnVmZmVyLmxpbmsoZXhpdC5tX2NoZWNrLmxhdGVKdW1wKCksIHRh
cmdldCk7Ci0gICAgICAgIGV4aXQubV9jaGVjay5jb3JyZWN0TGF0ZUp1bXAobGlua0J1ZmZlcik7
CisgICAgICAgIGxpbmtCdWZmZXIubGluayhleGl0LmdldFBhdGNoYWJsZUNvZGVPZmZzZXRBc0p1
bXAoKSwgdGFyZ2V0KTsKKyAgICAgICAgZXhpdC5jb3JyZWN0SnVtcChsaW5rQnVmZmVyKTsKICAg
ICAgICAgaWYgKGV4aXQubV93YXRjaHBvaW50SW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKQogICAgICAgICAgICAgY29kZUJsb2NrKCktPndhdGNocG9pbnQoZXhp
dC5tX3dhdGNocG9pbnRJbmRleCkuY29ycmVjdExhYmVscyhsaW5rQnVmZmVyKTsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lv
biAxMzc5NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJERkdGUFJJbmZvLmgi
CiAjaW5jbHVkZSAiREZHR1BSSW5mby5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCisjaW5jbHVk
ZSAiREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIgogI2luY2x1ZGUgIkRGR1JlZ2lzdGVyQmFu
ay5oIgogI2luY2x1ZGUgIkRGR1JlZ2lzdGVyU2V0LmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgpA
QCAtMzQzLDYgKzM0NCw4IEBAIHB1YmxpYzoKICAgICBTcGVjdWxhdGVkVHlwZSBnZXRTcGVjdWxh
dGlvbihOb2RlSW5kZXggbm9kZUluZGV4KSB7IHJldHVybiBnZXRTcGVjdWxhdGlvbihncmFwaCgp
W25vZGVJbmRleF0pOyB9CiAgICAgU3BlY3VsYXRlZFR5cGUgZ2V0U3BlY3VsYXRpb24oRWRnZSBu
b2RlVXNlKSB7IHJldHVybiBnZXRTcGVjdWxhdGlvbihub2RlVXNlLmluZGV4KCkpOyB9CiAKKyAg
ICB2b2lkIGFwcGVuZEV4aXRKdW1wKE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwpIHsg
bV9leGl0Q29tcGlsYXRpb25JbmZvLmFwcGVuZChPU1JFeGl0Q29tcGlsYXRpb25JbmZvKGp1bXBU
b0ZhaWwpKTsgfQorCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICB2b2lkKiBhZGRyZXNzT2ZE
b3VibGVDb25zdGFudChOb2RlSW5kZXggbm9kZUluZGV4KQogICAgIHsKQEAgLTQ2MCw2ICs0NjMs
NyBAQCBwcml2YXRlOgogICAgIAogICAgIFZlY3RvcjxQcm9wZXJ0eUFjY2Vzc1JlY29yZCwgND4g
bV9wcm9wZXJ0eUFjY2Vzc2VzOwogICAgIFZlY3RvcjxKU0NhbGxSZWNvcmQsIDQ+IG1fanNDYWxs
czsKKyAgICBWZWN0b3I8T1NSRXhpdENvbXBpbGF0aW9uSW5mbz4gbV9leGl0Q29tcGlsYXRpb25J
bmZvOwogICAgIFZlY3RvcjxMYWJlbD4gbV9leGl0U2l0ZUxhYmVsczsKICAgICB1bnNpZ25lZCBt
X2N1cnJlbnRDb2RlT3JpZ2luSW5kZXg7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXQuY3BwCShyZXZpc2lvbiAxMzc5NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsMTAg
QEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1PU1JFeGl0OjpPU1JFeGl0
KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZSB2YWx1ZVByb2ZpbGUsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNr
LCBTcGVjdWxhdGl2ZUpJVCogaml0LCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVj
b3ZlcnlJbmRleCkKK09TUkV4aXQ6Ok9TUkV4aXQoRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJj
ZSBqc1ZhbHVlU291cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHZhbHVlUHJvZmls
ZSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgdW5zaWduZWQgc3RyZWFtSW5kZXgsIHVuc2lnbmVkIHJl
Y292ZXJ5SW5kZXgpCiAgICAgOiBtX2pzVmFsdWVTb3VyY2UoanNWYWx1ZVNvdXJjZSkKICAgICAs
IG1fdmFsdWVQcm9maWxlKHZhbHVlUHJvZmlsZSkKLSAgICAsIG1fY2hlY2soY2hlY2spCisgICAg
LCBtX3BhdGNoYWJsZUNvZGVPZmZzZXQoMCkKICAgICAsIG1fbm9kZUluZGV4KGppdC0+bV9jb21w
aWxlSW5kZXgpCiAgICAgLCBtX2NvZGVPcmlnaW4oaml0LT5tX2NvZGVPcmlnaW5Gb3JPU1IpCiAg
ICAgLCBtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZShtX2NvZGVPcmlnaW4pCkBAIC01MCw2ICs1
MCwyOCBAQCBPU1JFeGl0OjpPU1JFeGl0KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTCiAgICAgQVNT
RVJUKG1fY29kZU9yaWdpbi5pc1NldCgpKTsKIH0KIAordm9pZCBPU1JFeGl0OjpzZXRQYXRjaGFi
bGVDb2RlT2Zmc2V0KE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIGNoZWNrKQoreworICAg
IG1fcGF0Y2hhYmxlQ29kZU9mZnNldCA9IGNoZWNrLm1fanVtcC5tX2xhYmVsLm1fb2Zmc2V0Owor
fQorCitNYWNyb0Fzc2VtYmxlcjo6SnVtcCBPU1JFeGl0OjpnZXRQYXRjaGFibGVDb2RlT2Zmc2V0
QXNKdW1wKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6Okp1bXAoQXNzZW1i
bGVyTGFiZWwobV9wYXRjaGFibGVDb2RlT2Zmc2V0KSk7Cit9CisKK0NvZGVMb2NhdGlvbkp1bXAg
T1NSRXhpdDo6Y29kZUxvY2F0aW9uRm9yUmVwYXRjaChDb2RlQmxvY2sqIGRmZ0NvZGVCbG9jaykg
Y29uc3QKK3sKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uSnVtcChkZmdDb2RlQmxvY2stPmdldEpJ
VENvZGUoKS5kYXRhQWRkcmVzc0F0T2Zmc2V0KG1fcGF0Y2hhYmxlQ29kZU9mZnNldCkpOworfQor
Cit2b2lkIE9TUkV4aXQ6OmNvcnJlY3RKdW1wKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCit7Cisg
ICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxhYmVsOworICAgIGxhYmVsLm1fbGFiZWwubV9vZmZz
ZXQgPSBtX3BhdGNoYWJsZUNvZGVPZmZzZXQ7CisgICAgbV9wYXRjaGFibGVDb2RlT2Zmc2V0ID0g
bGlua0J1ZmZlci5vZmZzZXRPZihsYWJlbCk7Cit9CisKIGJvb2wgT1NSRXhpdDo6Y29uc2lkZXJB
ZGRpbmdBc0ZyZXF1ZW50RXhpdFNpdGVTbG93KENvZGVCbG9jayogZGZnQ29kZUJsb2NrLCBDb2Rl
QmxvY2sqIHByb2ZpbGVkQ29kZUJsb2NrKQogewogICAgIGlmIChzdGF0aWNfY2FzdDxkb3VibGU+
KG1fY291bnQpIC8gZGZnQ29kZUJsb2NrLT5vc3JFeGl0Q291bnRlcigpIDw9IE9wdGlvbnM6Om9z
ckV4aXRQcm9taW5lbmNlRm9yRnJlcXVlbnRFeGl0U2l0ZSgpKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgJKHJldmlzaW9uIDEzNzk1MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2
IEBACiAKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCi0j
aW5jbHVkZSAiREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaCIKICNpbmNsdWRlICJERkdFeGl0UHJv
ZmlsZS5oIgogI2luY2x1ZGUgIkRGR0dQUkluZm8uaCIKICNpbmNsdWRlICJERkdWYWx1ZVJlY292
ZXJ5T3ZlcnJpZGUuaCIKQEAgLTg0LDE0ICs4MywxNCBAQCBwcml2YXRlOgogLy8gVGhpcyBzdHJ1
Y3R1cmUgZGVzY3JpYmVzIGhvdyB0byBleGl0IHRoZSBzcGVjdWxhdGl2ZSBwYXRoIGJ5CiAvLyBn
b2luZyBpbnRvIGJhc2VsaW5lIGNvZGUuCiBzdHJ1Y3QgT1NSRXhpdCB7Ci0gICAgT1NSRXhpdChF
eGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSwgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAsIFNwZWN1bGF0aXZlSklUKiwgdW5zaWduZWQgc3RyZWFtSW5kZXgs
IHVuc2lnbmVkIHJlY292ZXJ5SW5kZXggPSAwKTsKKyAgICBPU1JFeGl0KEV4aXRLaW5kLCBKU1Zh
bHVlU291cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCos
IHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4ID0gMCk7CiAgICAg
CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG1fY29kZTsKICAgICAKICAgICBKU1ZhbHVlU291
cmNlIG1fanNWYWx1ZVNvdXJjZTsKICAgICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIG1f
dmFsdWVQcm9maWxlOwotICAgIAotICAgIENvcnJlY3RhYmxlSnVtcFBvaW50IG1fY2hlY2s7CisK
KyAgICB1bnNpZ25lZCBtX3BhdGNoYWJsZUNvZGVPZmZzZXQ7CiAgICAgTm9kZUluZGV4IG1fbm9k
ZUluZGV4OwogICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luOwogICAgIENvZGVPcmlnaW4gbV9j
b2RlT3JpZ2luRm9yRXhpdFByb2ZpbGU7CkBAIC0xMDgsNyArMTA3LDEyIEBAIHN0cnVjdCBPU1JF
eGl0IHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIGNvbnNpZGVy
QWRkaW5nQXNGcmVxdWVudEV4aXRTaXRlU2xvdyhkZmdDb2RlQmxvY2ssIHByb2ZpbGVkQ29kZUJs
b2NrKTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHNldFBhdGNoYWJsZUNvZGVPZmZzZXQoTWFj
cm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXApOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGdl
dFBhdGNoYWJsZUNvZGVPZmZzZXRBc0p1bXAoKSBjb25zdDsKKyAgICBDb2RlTG9jYXRpb25KdW1w
IGNvZGVMb2NhdGlvbkZvclJlcGF0Y2goQ29kZUJsb2NrKikgY29uc3Q7CisgICAgdm9pZCBjb3Jy
ZWN0SnVtcChMaW5rQnVmZmVyJik7CisKICAgICB1bnNpZ25lZCBtX3N0cmVhbUluZGV4OwogICAg
IGludCBtX2xhc3RTZXRPcGVyYW5kOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxhdGlvbkluZm8u
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR09TUkV4aXRDb21waWxhdGlvbkluZm9f
aAorI2RlZmluZSBERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvX2gKKworI2luY2x1ZGUgPHd0Zi9Q
bGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJDb2RlT3JpZ2lu
LmgiCisjaW5jbHVkZSAiREZHQ29tbW9uLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIK
KworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitjbGFzcyBPU1JFeGl0Q29tcGls
YXRpb25JbmZvIHsKK3B1YmxpYzoKKyAgICBPU1JFeGl0Q29tcGlsYXRpb25JbmZvKE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIGZhaWx1cmVKdW1wKQorICAgICAgICA6IG1fZmFpbHVyZUp1bXAoZmFpbHVy
ZUp1bXApCisgICAgeworICAgIH0KKworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wJiBmYWlsdXJl
SnVtcCgpIHsgcmV0dXJuIG1fZmFpbHVyZUp1bXA7IH0KKworcHJpdmF0ZToKKyAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBtX2ZhaWx1cmVKdW1wOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBERkdPU1JFeGl0
Q29tcGlsYXRpb25JbmZvX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTM3OTUyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTgsNyArMTE4LDcgQEAgdm9pZCBjb21waWxlT1NSRXhpdChFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgCiAgICAgewogICAgICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2Nr
KTsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoZXhpdC5tX2NoZWNrLmNvZGVMb2NhdGlv
bkZvclJlcGF0Y2goY29kZUJsb2NrKSwgQ29kZUxvY2F0aW9uTGFiZWwoZXhpdC5tX2NvZGUuY29k
ZSgpKSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGV4aXQuY29kZUxvY2F0aW9uRm9y
UmVwYXRjaChjb2RlQmxvY2spLCBDb2RlTG9jYXRpb25MYWJlbChleGl0Lm1fY29kZS5jb2RlKCkp
KTsKICAgICB9CiAgICAgCiAgICAgZ2xvYmFsRGF0YS0+b3NyRXhpdEp1bXBEZXN0aW5hdGlvbiA9
IGV4aXQubV9jb2RlLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDEz
Nzk1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
c3BlY3VsYXRpb25DaGVjayhFeAogICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgcmV0
dXJuOwogICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRleCkuY2FuRXhpdCgpIHx8IG1faXNDaGVj
a2luZ0FyZ3VtZW50VHlwZXMpOwotICAgIG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRPU1JFeGl0
KE9TUkV4aXQoa2luZCwganNWYWx1ZVNvdXJjZSwgbV9qaXQuZ3JhcGgoKS5tZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlRm9yKG5vZGVJbmRleCksIGp1bXBUb0ZhaWwsIHRoaXMsIG1fc3RyZWFt
LT5zaXplKCkpKTsKKyAgICBtX2ppdC5hcHBlbmRFeGl0SnVtcChqdW1wVG9GYWlsKTsKKyAgICBt
X2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kT1NSRXhpdChPU1JFeGl0KGtpbmQsIGpzVmFsdWVTb3Vy
Y2UsIG1faml0LmdyYXBoKCkubWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcihub2RlSW5k
ZXgpLCB0aGlzLCBtX3N0cmVhbS0+c2l6ZSgpKSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291
cmNlLCBFZGdlIG5vZGVVc2UsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwpCkBAIC0x
MzgsNyArMTM5LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25DaGVjayhFeAog
ICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKGF0KG1fY29tcGlsZUluZGV4KS5jYW5FeGl0KCkg
fHwgbV9pc0NoZWNraW5nQXJndW1lbnRUeXBlcyk7CiAgICAgbV9qaXQuY29kZUJsb2NrKCktPmFw
cGVuZFNwZWN1bGF0aW9uUmVjb3ZlcnkocmVjb3ZlcnkpOwotICAgIG1faml0LmNvZGVCbG9jaygp
LT5hcHBlbmRPU1JFeGl0KE9TUkV4aXQoa2luZCwganNWYWx1ZVNvdXJjZSwgbV9qaXQuZ3JhcGgo
KS5tZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKG5vZGVJbmRleCksIGp1bXBUb0ZhaWws
IHRoaXMsIG1fc3RyZWFtLT5zaXplKCksIG1faml0LmNvZGVCbG9jaygpLT5udW1iZXJPZlNwZWN1
bGF0aW9uUmVjb3ZlcmllcygpKSk7CisgICAgbV9qaXQuYXBwZW5kRXhpdEp1bXAoanVtcFRvRmFp
bCk7CisgICAgbV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZE9TUkV4aXQoT1NSRXhpdChraW5kLCBq
c1ZhbHVlU291cmNlLCBtX2ppdC5ncmFwaCgpLm1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVG
b3Iobm9kZUluZGV4KSwgdGhpcywgbV9zdHJlYW0tPnNpemUoKSwgbV9qaXQuY29kZUJsb2NrKCkt
Pm51bWJlck9mU3BlY3VsYXRpb25SZWNvdmVyaWVzKCkpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6c3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFs
dWVTb3VyY2UsIEVkZ2Ugbm9kZVVzZSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAganVtcFRvRmFpbCwg
Y29uc3QgU3BlY3VsYXRpb25SZWNvdmVyeSYgcmVjb3ZlcnkpCkBAIC0xNTksMTEgKzE2MSwxMiBA
QCBKdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50KiBTcGVjdWxhdGl2ZUpJCiAgICAgaWYgKCFtX2Nv
bXBpbGVPa2F5KQogICAgICAgICByZXR1cm4gMDsKICAgICBBU1NFUlQoYXQobV9jb21waWxlSW5k
ZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVudFR5cGVzKTsKKyAgICBtX2ppdC5h
cHBlbmRFeGl0SnVtcChKSVRDb21waWxlcjo6SnVtcCgpKTsKICAgICBPU1JFeGl0JiBleGl0ID0g
bV9qaXQuY29kZUJsb2NrKCktPm9zckV4aXQoCiAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLT5h
cHBlbmRPU1JFeGl0KAogICAgICAgICAgICAgT1NSRXhpdChraW5kLCBqc1ZhbHVlU291cmNlLAog
ICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLm1ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGVGb3Iobm9kZUluZGV4KSwKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAoKSwgdGhpcywgbV9zdHJlYW0tPnNpemUoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgdGhp
cywgbV9zdHJlYW0tPnNpemUoKSkpKTsKICAgICBleGl0Lm1fd2F0Y2hwb2ludEluZGV4ID0gbV9q
aXQuY29kZUJsb2NrKCktPmFwcGVuZFdhdGNocG9pbnQoCiAgICAgICAgIEp1bXBSZXBsYWNlbWVu
dFdhdGNocG9pbnQobV9qaXQud2F0Y2hwb2ludExhYmVsKCkpKTsKICAgICByZXR1cm4gJm1faml0
LmNvZGVCbG9jaygpLT53YXRjaHBvaW50KGV4aXQubV93YXRjaHBvaW50SW5kZXgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>