<?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>124448</bug_id>
          
          <creation_ts>2013-11-15 22:50:03 -0800</creation_ts>
          <short_desc>Move LineWidth.{h,cpp} into rendering/line</short_desc>
          <delta_ts>2013-11-20 10:22:09 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>121261</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zoltan Horvath">zoltan</reporter>
          <assigned_to name="Zoltan Horvath">zoltan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>951332</commentid>
    <comment_count>0</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2013-11-15 22:50:03 -0800</bug_when>
    <thetext>Move LineWidth.{h,cpp} into rendering/line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951333</commentid>
    <comment_count>1</comment_count>
      <attachid>217117</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2013-11-15 22:54:29 -0800</bug_when>
    <thetext>Created attachment 217117
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952147</commentid>
    <comment_count>2</comment_count>
      <attachid>217117</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2013-11-19 11:36:18 -0800</bug_when>
    <thetext>Comment on attachment 217117
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952148</commentid>
    <comment_count>3</comment_count>
      <attachid>217117</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-19 11:37:18 -0800</bug_when>
    <thetext>Comment on attachment 217117
patch

Rejecting attachment 217117 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 217117, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
re/WebCore.xcodeproj/project.pbxproj.rej
patching file Source/WebCore/rendering/LineWidth.cpp
rm &apos;Source/WebCore/rendering/LineWidth.cpp&apos;
patching file Source/WebCore/rendering/LineWidth.h
rm &apos;Source/WebCore/rendering/LineWidth.h&apos;
patching file Source/WebCore/rendering/line/LineWidth.cpp
patching file Source/WebCore/rendering/line/LineWidth.h

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;David Hyatt&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/27108152</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952633</commentid>
    <comment_count>4</comment_count>
      <attachid>217448</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2013-11-20 09:37:03 -0800</bug_when>
    <thetext>Created attachment 217448
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952660</commentid>
    <comment_count>5</comment_count>
      <attachid>217448</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-20 10:22:07 -0800</bug_when>
    <thetext>Comment on attachment 217448
patch for landing

Clearing flags on attachment: 217448

Committed r159569: &lt;http://trac.webkit.org/changeset/159569&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952661</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-20 10:22:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217117</attachid>
            <date>2013-11-15 22:54:29 -0800</date>
            <delta_ts>2013-11-20 09:37:03 -0800</delta_ts>
            <desc>patch</desc>
            <filename>linewidthmove.patch</filename>
            <type>text/plain</type>
            <size>42481</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNDcwZGYyNC4uOTA5Njc2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIxMTUsNyArMjExNSw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICByZW5k
ZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKICAgICByZW5kZXJpbmcvTGF5b3V0UmVwYWludGVyLmNw
cAogICAgIHJlbmRlcmluZy9MYXlvdXRTdGF0ZS5jcHAKLSAgICByZW5kZXJpbmcvTGluZVdpZHRo
LmNwcAogICAgIHJlbmRlcmluZy9PcmRlckl0ZXJhdG9yLmNwcAogICAgIHJlbmRlcmluZy9Qb2lu
dGVyRXZlbnRzSGl0UnVsZXMuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAt
MjIxNCw2ICsyMjEzLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogCiAgICAgcmVuZGVyaW5nL2xp
bmUvTGluZUJyZWFrZXIuY3BwCiAgICAgcmVuZGVyaW5nL2xpbmUvTGluZUluZm8uY3BwCisgICAg
cmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcAogCiAgICAgcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxCbG9jay5jcHAKICAgICByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNl
ZC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBiOTJhMWViLi5lOTRmN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDEgQEAKKzIwMTMtMTEtMTUgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgTW92ZSBMaW5lV2lkdGgue2gsY3BwfSBpbnRvIHJlbmRlcmluZy9saW5lCisg
ICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjQ0NDg+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gcjE1OTM1NCBJIGludHJvZHVjZWQgbGlu
ZSBkaXJlY3RvcnkuIE5vdyBpdCdzIHRpbWUgdG8gbW92ZSB0aGUgaGVscGVyIGNsYXNzZXMgb2Yg
UmVuZGVyQmxvY2tMaW5lTGF5b3V0IGludG8gJ2xpbmUnIHN1YmRpcmVjdG9yeS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGluZVdpZHRoLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OkxpbmVXaWR0aDo6TGluZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVX
aWR0aDo6Zml0c09uTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lV2lkdGg6OmZpdHNPbkxp
bmVJbmNsdWRpbmdFeHRyYVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0aDo6Zml0
c09uTGluZUV4Y2x1ZGluZ1RyYWlsaW5nV2hpdGVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpM
aW5lV2lkdGg6OnVwZGF0ZUF2YWlsYWJsZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVX
aWR0aDo6c2hyaW5rQXZhaWxhYmxlV2lkdGhGb3JOZXdGbG9hdElmTmVlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkxpbmVXaWR0aDo6Y29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0
aDo6YXBwbHlPdmVyaGFuZyk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lV2lkdGg6OmZpdEJlbG93
RmxvYXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0aDo6c2V0VHJhaWxpbmdXaGl0ZXNw
YWNlV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6TGluZVdpZHRoOjp1cGRhdGVDdXJyZW50U2hh
cGVTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0aDo6Y29tcHV0ZUF2YWlsYWJs
ZVdpZHRoRnJvbUxlZnRBbmRSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lV2lkdGg6OmZp
dHNPbkxpbmVFeGNsdWRpbmdUcmFpbGluZ0NvbGxhcHNlZFdoaXRlc3BhY2UpOgorICAgICAgICAq
IHJlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0xpbmVXaWR0aC5oLgorICAgICAgICAoV2ViQ29yZTo6TGluZVdpZHRoOjpjdXJy
ZW50V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6TGluZVdpZHRoOjp1bmNvbW1pdHRlZFdpZHRo
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0aDo6Y29tbWl0dGVkV2lkdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6TGluZVdpZHRoOjphdmFpbGFibGVXaWR0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpMaW5lV2lkdGg6OmFkZFVuY29tbWl0dGVkV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6TGlu
ZVdpZHRoOjpzaG91bGRJbmRlbnRUZXh0KToKKwogMjAxMy0xMS0xNSAgQnJhZHkgRWlkc29uICA8
YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBJREJDdXJzb3JCYWNrZW5kIG9wZXJh
dGlvbnMgaW50byB0aGVpciBvd24gZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmlu
ZGV4IGZkNTMyNzguLjg0ZDk1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAt
NDMwNiw4ICs0MzA2LDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvTGF5b3V0UmVwYWludGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9M
YXlvdXRSZXBhaW50ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGluZUxheW91
dFN0YXRlLmggXAotCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MaW5lV2lkdGguaCBcCi0JU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVXaWR0aC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9PdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL09yZGVySXRlcmF0b3IuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvT3Jk
ZXJJdGVyYXRvci5oIFwKQEAgLTQ1MTUsNiArNDUxMyw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuaCBcCiAJU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9MaW5lSW5saW5lSGVhZGVycy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbGluZS9MaW5lV2lkdGguaCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xp
bmUvTGluZVdpZHRoLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxCbG9jay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MQmxvY2suaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxGZW5jZWQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qCmluZGV4IDUxZTkxOGUuLmJiMzU2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtOTY4Niw3ICs5Njg2LDYg
QEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdc
TGluZVdpZHRoLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xP
cmRlckl0ZXJhdG9yLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmlu
Z1xQb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0xMTA1Miw2ICsxMTA1MSw3IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcVGV4dFBhaW50U3R5bGUuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXGxpbmVcTGluZUJyZWFrZXIuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXGxpbmVcTGluZUluZm8uY3Bw
IiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXGxpbmVcTGluZVdpZHRo
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNcUG9s
eWdvblNoYXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xz
aGFwZXNcUmFzdGVyU2hhcGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVu
ZGVyaW5nXHNoYXBlc1xSZWN0YW5nbGVTaGFwZS5jcHAiIC8+CkBAIC0xOTc5MCw3ICsxOTc5MCw2
IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcTGF5b3V0UmVwYWludGVy
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcTGF5b3V0U3RhdGUu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xMaW5lTGF5b3V0U3Rh
dGUuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xMaW5lV2lkdGgu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xPcmRlckl0ZXJhdG9y
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUGFpbnRJbmZvLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUGFpbnRQaGFzZS5oIiAv
PgpAQCAtMTk4NjcsNiArMTk4NjYsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVu
ZGVyaW5nXGxpbmVcTGluZUJyZWFrZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJlbmRlcmluZ1xsaW5lXExpbmVJbmZvLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxyZW5kZXJpbmdcbGluZVxMaW5lSW5saW5lSGVhZGVycy5oIiAvPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccmVuZGVyaW5nXGxpbmVcTGluZVdpZHRoLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFBvbHlnb25TaGFwZS5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xSYXN0ZXJTaGFwZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xSZWN0YW5nbGVTaGFw
ZS5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGEzOTVkYWIuLjEzNjNmNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMK
QEAgLTY4OTgsNyArNjg5OCw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVz
XGluZGV4ZWRkYlxsZXZlbGRiXElEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5jcHAiPgogICAgICAg
PEZpbHRlcj5Nb2R1bGVzXGluZGV4ZWRkYlxsZXZlbGRiPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBp
bGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcTGluZVdpZHRoLmNwcCI+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcbGluZVxMaW5lV2lkdGguY3Bw
Ij4KICAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNCZWZvcmVV
bmxvYWRFdmVudC5jcHAiPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDA0YmVkMDcuLmQ2ZDhlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM0NDUsOCArMzQ0
NSw2IEBACiAJCUEwN0QzMzU2MTUyQjYzMEUwMDFCNjM5MyAvKiBKU1dlYkdMU2hhZGVyUHJlY2lz
aW9uRm9ybWF0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMDdEMzM1NDE1MkI2MzBFMDAxQjYzOTMgLyogSlNXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1h
dC5oICovOyB9OwogCQlBMDdEMzM1ODE1MkI2MzJEMDAxQjYzOTMgLyogV2ViR0xTaGFkZXJQcmVj
aXNpb25Gb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEEwN0QzMzU3MTUyQjYzMkQwMDFCNjM5MyAvKiBXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1h
dC5oICovOyB9OwogCQlBMDhDRjE1NDE1MkI3N0IzMDA5QzU3NzUgLyogV2ViR0xTaGFkZXJQcmVj
aXNpb25Gb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTA4Q0YxNTMxNTJCNzdCMzAwOUM1Nzc1IC8qIFdlYkdMU2hhZGVyUHJlY2lzaW9uRm9y
bWF0LmNwcCAqLzsgfTsKLQkJQTBDQjAwMjQxN0RGODI2NjAwMTc4OTZCIC8qIExpbmVXaWR0aC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMENCMDAy
MzE3REY4MUFDMDAxNzg5NkIgLyogTGluZVdpZHRoLmNwcCAqLzsgfTsKLQkJQTBDQjAwMjUxN0RG
ODI2QzAwMTc4OTZCIC8qIExpbmVXaWR0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTBDQjAwMjExN0RFOUNEMDAwMTc4OTZCIC8qIExpbmVXaWR0aC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCUEwRUUwREY1MTQ0Rjgy
NTUwMEY4MEIwRCAvKiBXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEwRUUwREYxMTQ0RjgyNTUwMEY4MEIwRCAv
KiBXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmNwcCAqLzsgfTsKIAkJQTBFRTBERjYxNDRGODI1NTAw
RjgwQjBEIC8qIFdlYkdMRGVidWdSZW5kZXJlckluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEwRUUwREYyMTQ0RjgyNTUwMEY4MEIwRCAvKiBXZWJH
TERlYnVnUmVuZGVyZXJJbmZvLmggKi87IH07CiAJCUEwRUUwREY3MTQ0RjgyNTUwMEY4MEIwRCAv
KiBXZWJHTERlYnVnU2hhZGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMEVFMERGMzE0NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1NoYWRl
cnMuY3BwICovOyB9OwpAQCAtNjMwNiw2ICs2MzA0LDggQEAKIAkJRkZCNjk4Q0YxODM0MDJCQjAw
MTU4QTMxIC8qIExpbmVJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZGQjY5OENEMTgzM0YxNzYwMDE1OEEzMSAvKiBMaW5lSW5mby5jcHAgKi87
IH07CiAJCUZGRDVCOTdBMTM1Q0M5NzgwMEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZGRDVCOTc3
MTM1Q0M5NzgwMEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmNwcCAqLzsgfTsKIAkJRkZE
NUI5N0IxMzVDQzk3ODAwRDVFOTJBIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZGRDVCOTc4MTM1Q0M5NzgwMEQ1
RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkZFRkFCMjcxODM3NEM2MjAwNTE0NTM0IC8qIExpbmVX
aWR0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RkVGQUIyNTE4Mzc0QzYyMDA1MTQ1MzQgLyogTGluZVdpZHRoLmNwcCAqLzsgfTsKKwkJRkZFRkFC
MjgxODM3NEM2MjAwNTE0NTM0IC8qIExpbmVXaWR0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkZFRkFCMjYxODM3NEM2MjAwNTE0NTM0IC8qIExpbmVX
aWR0aC5oICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC0xMDIyMSw4ICsxMDIyMSw2IEBA
CiAJCUEwN0QzMzU3MTUyQjYzMkQwMDFCNjM5MyAvKiBXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1h
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJHTFNoYWRlclByZWNpc2lv
bkZvcm1hdC5oOyBwYXRoID0gY2FudmFzL1dlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEwN0QzMzU5MTUyQjYzM0UwMDFCNjM5MyAvKiBX
ZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV2Vi
R0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQuaWRsOyBwYXRoID0gY2FudmFzL1dlYkdMU2hhZGVyUHJl
Y2lzaW9uRm9ybWF0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTA4Q0YxNTMx
NTJCNzdCMzAwOUM1Nzc1IC8qIFdlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0
LmNwcDsgcGF0aCA9IGNhbnZhcy9XZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUEwQ0IwMDIxMTdERTlDRDAwMDE3ODk2QiAvKiBMaW5l
V2lkdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGluZVdpZHRoLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUEwQ0IwMDIzMTdERjgxQUMwMDE3ODk2QiAvKiBM
aW5lV2lkdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGluZVdp
ZHRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTBFRTBERUYxNDRGODIzMjAw
RjgwQjBEIC8qIFdlYkdMRGVidWdTaGFkZXJzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBX
ZWJHTERlYnVnU2hhZGVycy5pZGw7IHBhdGggPSBjYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMEVFMERGMDE0NEY4MjQzMDBGODBCMEQg
LyogV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV2Vi
R0xEZWJ1Z1JlbmRlcmVySW5mby5pZGw7IHBhdGggPSBjYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVy
SW5mby5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEwRUUwREYxMTQ0RjgyNTUw
MEY4MEIwRCAvKiBXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkdMRGVidWdSZW5kZXJlckluZm8uY3BwOyBwYXRoID0gY2Fu
dmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTM0ODcsNiArMTM0ODUsOCBAQAogCQlGRkI2OThDRTE4MzNGMTc2MDAxNThBMzEgLyog
TGluZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGluZUluZm8uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkZENUI5NzcxMzVDQzk3ODAwRDVFOTJBIC8q
IFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZGRDVCOTc4MTM1Q0M5NzgwMEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkZFRkFCMjUxODM3NEM2MjAwNTE0NTM0IC8qIExp
bmVXaWR0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMaW5lV2lk
dGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRkVGQUIyNjE4Mzc0QzYyMDA1
MTQ1MzQgLyogTGluZVdpZHRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExp
bmVXaWR0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZl
cmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0
aW9uICovCkBAIC0yMDk2OCw4ICsyMDk2OCw2IEBACiAJCQkJMkQ5MDY2MDQwQkUxNDFENDAwOTU2
OTk4IC8qIExheW91dFN0YXRlLmNwcCAqLywKIAkJCQkyRDkwNjYwNTBCRTE0MUQ0MDA5NTY5OTgg
LyogTGF5b3V0U3RhdGUuaCAqLywKIAkJCQlBMDcxOEJFODE3RTI2RjE2MDBGNkJGNDQgLyogTGlu
ZUxheW91dFN0YXRlLmggKi8sCi0JCQkJQTBDQjAwMjMxN0RGODFBQzAwMTc4OTZCIC8qIExpbmVX
aWR0aC5jcHAgKi8sCi0JCQkJQTBDQjAwMjExN0RFOUNEMDAwMTc4OTZCIC8qIExpbmVXaWR0aC5o
ICovLAogCQkJCTlCQTI3M0YzMTcyMjA2QkIwMDk3Q0U0NyAvKiBMb2dpY2FsU2VsZWN0aW9uT2Zm
c2V0Q2FjaGVzLmggKi8sCiAJCQkJMzc3NEFCQTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBU
ZXN0UmVxdWVzdENsaWVudC5oICovLAogCQkJCTkzNzdBQjlGMTVERUZFRUYwMDMxRkQwNCAvKiBQ
YWdpbmF0aW9uLmggKi8sCkBAIC0yMTkwOSw2ICsyMTkwNyw4IEBACiAJCUZGQjY5OEM4MTgzMkYx
MEIwMDE1OEEzMSAvKiBsaW5lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQlGRkVGQUIyNTE4Mzc0QzYyMDA1MTQ1MzQgLyogTGluZVdpZHRoLmNwcCAqLywK
KwkJCQlGRkVGQUIyNjE4Mzc0QzYyMDA1MTQ1MzQgLyogTGluZVdpZHRoLmggKi8sCiAJCQkJRkZC
Njk4Q0QxODMzRjE3NjAwMTU4QTMxIC8qIExpbmVJbmZvLmNwcCAqLywKIAkJCQlGRkI2OThDRTE4
MzNGMTc2MDAxNThBMzEgLyogTGluZUluZm8uaCAqLywKIAkJCQlGRkI2OThDQTE4MzNFQzM4MDAx
NThBMzEgLyogTGluZUJyZWFrZXIuY3BwICovLApAQCAtMjI2NzMsNiArMjI2NzMsNyBAQAogCQkJ
CTA3OTY5REJDMTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5MjgxN0QxNEQxQzAwNDIwQUExIC8qIFJUQ1Nlc3Npb25E
ZXNjcmlwdGlvblJlcXVlc3RJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTk5MkVDMDBBQTUw
Njk1MDBBQzA3ODUgLyogRE9NSFRNTFRpdGxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RkZFRkFCMjgxODM3NEM2MjAwNTE0NTM0IC8qIExpbmVXaWR0aC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODVFNzExQ0YwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxUaXRsZUVsZW1lbnRJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVCQTREMTcwQUE2ODg2ODAwODgwNTJEIC8qIERPTUhU
TUxVTGlzdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUQwMEFDNUQ1MzUwMDUz
MjcwRiAvKiBET01IVE1MVUxpc3RFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAt
MjUyMTIsNyArMjUyMTMsNiBAQAogCQkJCUJFMTZDNTkzMTdDRkUxNzIwMDg1MkMwNCAvKiBJbmJh
bmRHZW5lcmljVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlCRTE2QzU5NTE3Q0ZFMTcy
MDA4NTJDMDQgLyogSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzEwRDc2ODE3RDhFRTcxMDA1RTI2MjYgLyogUmVuZGVyQmxvY2tGbG93LmggaW4gSGVhZGVycyAq
LywKLQkJCQlBMENCMDAyNTE3REY4MjZDMDAxNzg5NkIgLyogTGluZVdpZHRoLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDRDNFMjUxQzE4MDQ2QjA2MDBFMjdGNTYgLyogR3JpZENvb3JkaW5hdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUNEM0UyNTI0MTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVt
cGxhdGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RFRjRGRDcxN0U4NUM4RjAwQUVFMjRC
IC8qIEdyaWRMZW5ndGguaCBpbiBIZWFkZXJzICovLApAQCAtMjcyMTcsNiArMjcyMTcsNyBAQAog
CQkJCUE3QUQyRjg3MEVDODlEMDcwMDhBQjAwMiAvKiBMaW5rSGFzaC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5OENFNDMyNjEyOUUwMEJEMDA1ODIxREMgLyogTGlua0xvYWRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5ODVCQjk2RDEzQTk0MDU4MDA3QTBCNjkgLyogTGlua1JlbEF0dHJpYnV0
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRkVGQUIyNzE4Mzc0QzYyMDA1MTQ1MzQgLyogTGlu
ZVdpZHRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDN0ZBNjIwMEQxRjBDQkQwMERCMjJBOSAv
KiBMaXZlTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc4RTA5MTAxN0QxNENFRTAw
NDIwQUExIC8qIFJUQ1N0YXRzUmVzcG9uc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwNTg1
MDIxN0ZBMTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0yODI4OCw3ICsyODI4OSw2IEBACiAJCQkJQkUxNkM1OTIxN0NGRTE3MjAwODUy
QzA0IC8qIEluYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkUx
NkM1OTQxN0NGRTE3MjAwODUyQzA0IC8qIEluYmFuZFdlYlZUVFRleHRUcmFjay5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzEwRDc2NzE3RDhFRTZFMDA1RTI2MjYgLyogUmVuZGVyQmxvY2tGbG93
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUEwQ0IwMDI0MTdERjgyNjYwMDE3ODk2QiAvKiBMaW5l
V2lkdGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QzRTI1MjMxODA0NkJDRDAwRTI3RjU2IC8q
IENTU0dyaWRUZW1wbGF0ZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERTdGQzQ0MTgx
OTA0QjEwMDJCQkI3NyAvKiBPcmRlckl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MaW5lV2lkdGguY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVXaWR0aC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDU0MThhNDAuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0xpbmVXaWR0aC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBk
aXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKLSAq
ICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0g
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MKLSAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi0gKiBDT1BZUklHSFQgSE9MREVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCi0gKiBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0gKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0gKiBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VECi0gKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkxpbmVXaWR0aC5oIgotCi0jaW5jbHVkZSAiUmVu
ZGVyQmxvY2tGbG93LmgiCi0jaW5jbHVkZSAiUmVuZGVyUnVieVJ1bi5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLUxpbmVXaWR0aDo6TGluZVdpZHRoKFJlbmRlckJsb2NrRmxvdyYgYmxvY2ss
IGJvb2wgaXNGaXJzdExpbmUsIEluZGVudFRleHRPck5vdCBzaG91bGRJbmRlbnRUZXh0KQotICAg
IDogbV9ibG9jayhibG9jaykKLSAgICAsIG1fdW5jb21taXR0ZWRXaWR0aCgwKQotICAgICwgbV9j
b21taXR0ZWRXaWR0aCgwKQotICAgICwgbV9vdmVyaGFuZ1dpZHRoKDApCi0gICAgLCBtX3RyYWls
aW5nV2hpdGVzcGFjZVdpZHRoKDApCi0gICAgLCBtX3RyYWlsaW5nQ29sbGFwc2VkV2hpdGVzcGFj
ZVdpZHRoKDApCi0gICAgLCBtX2xlZnQoMCkKLSAgICAsIG1fcmlnaHQoMCkKLSAgICAsIG1fYXZh
aWxhYmxlV2lkdGgoMCkKLSNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLSAgICAsIG1fc2VnbWVudCgw
KQotI2VuZGlmCi0gICAgLCBtX2lzRmlyc3RMaW5lKGlzRmlyc3RMaW5lKQotICAgICwgbV9zaG91
bGRJbmRlbnRUZXh0KHNob3VsZEluZGVudFRleHQpCi17Ci0jaWYgRU5BQkxFKENTU19TSEFQRVMp
Ci0gICAgdXBkYXRlQ3VycmVudFNoYXBlU2VnbWVudCgpOwotI2VuZGlmCi0gICAgdXBkYXRlQXZh
aWxhYmxlV2lkdGgoKTsKLX0KLQotYm9vbCBMaW5lV2lkdGg6OmZpdHNPbkxpbmUoYm9vbCBpZ25v
cmluZ1RyYWlsaW5nU3BhY2UpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGlnbm9yaW5nVHJhaWxpbmdT
cGFjZSA/IGZpdHNPbkxpbmVFeGNsdWRpbmdUcmFpbGluZ0NvbGxhcHNlZFdoaXRlc3BhY2UoKSA6
IGZpdHNPbkxpbmVJbmNsdWRpbmdFeHRyYVdpZHRoKDApOwotfQotCi1ib29sIExpbmVXaWR0aDo6
Zml0c09uTGluZUluY2x1ZGluZ0V4dHJhV2lkdGgoZmxvYXQgZXh0cmEpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIGN1cnJlbnRXaWR0aCgpICsgZXh0cmEgPD0gbV9hdmFpbGFibGVXaWR0aDsKLX0KLQot
Ym9vbCBMaW5lV2lkdGg6OmZpdHNPbkxpbmVFeGNsdWRpbmdUcmFpbGluZ1doaXRlc3BhY2UoZmxv
YXQgZXh0cmEpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGN1cnJlbnRXaWR0aCgpIC0gbV90cmFpbGlu
Z1doaXRlc3BhY2VXaWR0aCArIGV4dHJhIDw9IG1fYXZhaWxhYmxlV2lkdGg7Ci19Ci0KLXZvaWQg
TGluZVdpZHRoOjp1cGRhdGVBdmFpbGFibGVXaWR0aChMYXlvdXRVbml0IHJlcGxhY2VkSGVpZ2h0
KQotewotICAgIExheW91dFVuaXQgaGVpZ2h0ID0gbV9ibG9jay5sb2dpY2FsSGVpZ2h0KCk7Ci0g
ICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0ID0gbV9ibG9jay5taW5MaW5lSGVpZ2h0Rm9yUmVw
bGFjZWRSZW5kZXJlcihtX2lzRmlyc3RMaW5lLCByZXBsYWNlZEhlaWdodCk7Ci0gICAgbV9sZWZ0
ID0gbV9ibG9jay5sb2dpY2FsTGVmdE9mZnNldEZvckxpbmUoaGVpZ2h0LCBzaG91bGRJbmRlbnRU
ZXh0KCksIGxvZ2ljYWxIZWlnaHQpOwotICAgIG1fcmlnaHQgPSBtX2Jsb2NrLmxvZ2ljYWxSaWdo
dE9mZnNldEZvckxpbmUoaGVpZ2h0LCBzaG91bGRJbmRlbnRUZXh0KCksIGxvZ2ljYWxIZWlnaHQp
OwotCi0jaWYgRU5BQkxFKENTU19TSEFQRVMpCi0gICAgaWYgKG1fc2VnbWVudCkgewotICAgICAg
ICBtX2xlZnQgPSBzdGQ6Om1heDxmbG9hdD4obV9zZWdtZW50LT5sb2dpY2FsTGVmdCwgbV9sZWZ0
KTsKLSAgICAgICAgbV9yaWdodCA9IHN0ZDo6bWluPGZsb2F0PihtX3NlZ21lbnQtPmxvZ2ljYWxS
aWdodCwgbV9yaWdodCk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBjb21wdXRlQXZhaWxhYmxlV2lk
dGhGcm9tTGVmdEFuZFJpZ2h0KCk7Ci19Ci0KLXZvaWQgTGluZVdpZHRoOjpzaHJpbmtBdmFpbGFi
bGVXaWR0aEZvck5ld0Zsb2F0SWZOZWVkZWQoRmxvYXRpbmdPYmplY3QqIG5ld0Zsb2F0KQotewot
ICAgIExheW91dFVuaXQgaGVpZ2h0ID0gbV9ibG9jay5sb2dpY2FsSGVpZ2h0KCk7Ci0gICAgaWYg
KGhlaWdodCA8IG1fYmxvY2subG9naWNhbFRvcEZvckZsb2F0KG5ld0Zsb2F0KSB8fCBoZWlnaHQg
Pj0gbV9ibG9jay5sb2dpY2FsQm90dG9tRm9yRmxvYXQobmV3RmxvYXQpKQotICAgICAgICByZXR1
cm47Ci0KLSNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLSAgICAvLyBXaGVuIGZsb2F0cyB3aXRoIHNo
YXBlIG91dHNpZGUgYXJlIHN0YWNrZWQsIHRoZSBmbG9hdHMgYXJlIHBvc2l0aW9uZWQgYmFzZWQg
b24gdGhlIG1hcmdpbiBib3ggb2YgdGhlIGZsb2F0LAotICAgIC8vIG5vdCB0aGUgc2hhcGUncyBj
b250b3VyLiBTaW5jZSB3ZSBjb21wdXRlZCB0aGUgd2lkdGggYmFzZWQgb24gdGhlIHNoYXBlIGNv
bnRvdXIgd2hlbiB3ZSBhZGRlZCB0aGUgZmxvYXQsCi0gICAgLy8gd2hlbiB3ZSBhZGQgYSBzdWJz
ZXF1ZW50IGZsb2F0IG9uIHRoZSBzYW1lIGxpbmUsIHdlIG5lZWQgdG8gdW5kbyB0aGUgc2hhcGUg
ZGVsdGEgaW4gb3JkZXIgdG8gcG9zaXRpb24KLSAgICAvLyBiYXNlZCBvbiB0aGUgbWFyZ2luIGJv
eC4gSW4gb3JkZXIgdG8gZG8gdGhpcywgd2UgbmVlZCB0byB3YWxrIGJhY2sgdGhyb3VnaCB0aGUg
ZmxvYXRpbmcgb2JqZWN0IGxpc3QgdG8gZmluZAotICAgIC8vIHRoZSBmaXJzdCBwcmV2aW91cyBm
bG9hdCB0aGF0IGlzIG9uIHRoZSBzYW1lIHNpZGUgYXMgb3VyIG5ld0Zsb2F0LgotICAgIFNoYXBl
T3V0c2lkZUluZm8qIHByZXZpb3VzU2hhcGVPdXRzaWRlSW5mbyA9IDA7Ci0gICAgY29uc3QgRmxv
YXRpbmdPYmplY3RTZXQmIGZsb2F0aW5nT2JqZWN0U2V0ID0gbV9ibG9jay5tX2Zsb2F0aW5nT2Jq
ZWN0cy0+c2V0KCk7Ci0gICAgYXV0byBpdCA9IGZsb2F0aW5nT2JqZWN0U2V0LmVuZCgpOwotICAg
IGF1dG8gYmVnaW4gPSBmbG9hdGluZ09iamVjdFNldC5iZWdpbigpOwotICAgIExheW91dFVuaXQg
bGluZUhlaWdodCA9IG1fYmxvY2subGluZUhlaWdodChtX2lzRmlyc3RMaW5lLCBtX2Jsb2NrLmlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwg
UG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKTsKLSAgICBmb3IgKC0taXQ7IGl0ICE9IGJlZ2lu
OyAtLWl0KSB7Ci0gICAgICAgIEZsb2F0aW5nT2JqZWN0KiBwcmV2aW91c0Zsb2F0ID0gaXQtPmdl
dCgpOwotICAgICAgICBpZiAocHJldmlvdXNGbG9hdCAhPSBuZXdGbG9hdCAmJiBwcmV2aW91c0Zs
b2F0LT50eXBlKCkgPT0gbmV3RmxvYXQtPnR5cGUoKSkgewotICAgICAgICAgICAgcHJldmlvdXNT
aGFwZU91dHNpZGVJbmZvID0gcHJldmlvdXNGbG9hdC0+cmVuZGVyZXIoKS5zaGFwZU91dHNpZGVJ
bmZvKCk7Ci0gICAgICAgICAgICBpZiAocHJldmlvdXNTaGFwZU91dHNpZGVJbmZvKQotICAgICAg
ICAgICAgICAgIHByZXZpb3VzU2hhcGVPdXRzaWRlSW5mby0+dXBkYXRlRGVsdGFzRm9yQ29udGFp
bmluZ0Jsb2NrTGluZSgmbV9ibG9jaywgcHJldmlvdXNGbG9hdCwgbV9ibG9jay5sb2dpY2FsSGVp
Z2h0KCksIGxpbmVIZWlnaHQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBTaGFwZU91dHNpZGVJbmZvKiBzaGFwZU91dHNpZGVJbmZvID0gbmV3RmxvYXQtPnJl
bmRlcmVyKCkuc2hhcGVPdXRzaWRlSW5mbygpOwotICAgIGlmIChzaGFwZU91dHNpZGVJbmZvKQot
ICAgICAgICBzaGFwZU91dHNpZGVJbmZvLT51cGRhdGVEZWx0YXNGb3JDb250YWluaW5nQmxvY2tM
aW5lKCZtX2Jsb2NrLCBuZXdGbG9hdCwgbV9ibG9jay5sb2dpY2FsSGVpZ2h0KCksIGxpbmVIZWln
aHQpOwotI2VuZGlmCi0KLSAgICBpZiAobmV3RmxvYXQtPnR5cGUoKSA9PSBGbG9hdGluZ09iamVj
dDo6RmxvYXRMZWZ0KSB7Ci0gICAgICAgIGZsb2F0IG5ld0xlZnQgPSBtX2Jsb2NrLmxvZ2ljYWxS
aWdodEZvckZsb2F0KG5ld0Zsb2F0KTsKLSNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLSAgICAgICAg
aWYgKHByZXZpb3VzU2hhcGVPdXRzaWRlSW5mbykKLSAgICAgICAgICAgIG5ld0xlZnQgLT0gcHJl
dmlvdXNTaGFwZU91dHNpZGVJbmZvLT5yaWdodE1hcmdpbkJveERlbHRhKCk7Ci0gICAgICAgIGlm
IChzaGFwZU91dHNpZGVJbmZvKQotICAgICAgICAgICAgbmV3TGVmdCArPSBzaGFwZU91dHNpZGVJ
bmZvLT5yaWdodE1hcmdpbkJveERlbHRhKCk7Ci0jZW5kaWYKLQotICAgICAgICBpZiAoc2hvdWxk
SW5kZW50VGV4dCgpICYmIG1fYmxvY2suc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkp
Ci0gICAgICAgICAgICBuZXdMZWZ0ICs9IGZsb29yVG9JbnQobV9ibG9jay50ZXh0SW5kZW50T2Zm
c2V0KCkpOwotICAgICAgICBtX2xlZnQgPSBzdGQ6Om1heDxmbG9hdD4obV9sZWZ0LCBuZXdMZWZ0
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBmbG9hdCBuZXdSaWdodCA9IG1fYmxvY2subG9naWNh
bExlZnRGb3JGbG9hdChuZXdGbG9hdCk7Ci0jaWYgRU5BQkxFKENTU19TSEFQRVMpCi0gICAgICAg
IGlmIChwcmV2aW91c1NoYXBlT3V0c2lkZUluZm8pCi0gICAgICAgICAgICBuZXdSaWdodCAtPSBw
cmV2aW91c1NoYXBlT3V0c2lkZUluZm8tPmxlZnRNYXJnaW5Cb3hEZWx0YSgpOwotICAgICAgICBp
ZiAoc2hhcGVPdXRzaWRlSW5mbykKLSAgICAgICAgICAgIG5ld1JpZ2h0ICs9IHNoYXBlT3V0c2lk
ZUluZm8tPmxlZnRNYXJnaW5Cb3hEZWx0YSgpOwotI2VuZGlmCi0KLSAgICAgICAgaWYgKHNob3Vs
ZEluZGVudFRleHQoKSAmJiAhbV9ibG9jay5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24o
KSkKLSAgICAgICAgICAgIG5ld1JpZ2h0IC09IGZsb29yVG9JbnQobV9ibG9jay50ZXh0SW5kZW50
T2Zmc2V0KCkpOwotICAgICAgICBtX3JpZ2h0ID0gc3RkOjptaW48ZmxvYXQ+KG1fcmlnaHQsIG5l
d1JpZ2h0KTsKLSAgICB9Ci0KLSAgICBjb21wdXRlQXZhaWxhYmxlV2lkdGhGcm9tTGVmdEFuZFJp
Z2h0KCk7Ci19Ci0KLXZvaWQgTGluZVdpZHRoOjpjb21taXQoKQotewotICAgIG1fY29tbWl0dGVk
V2lkdGggKz0gbV91bmNvbW1pdHRlZFdpZHRoOwotICAgIG1fdW5jb21taXR0ZWRXaWR0aCA9IDA7
Ci19Ci0KLXZvaWQgTGluZVdpZHRoOjphcHBseU92ZXJoYW5nKFJlbmRlclJ1YnlSdW4qIHJ1YnlS
dW4sIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlciwgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJl
cikKLXsKLSAgICBpbnQgc3RhcnRPdmVyaGFuZzsKLSAgICBpbnQgZW5kT3Zlcmhhbmc7Ci0gICAg
cnVieVJ1bi0+Z2V0T3ZlcmhhbmcobV9pc0ZpcnN0TGluZSwgc3RhcnRSZW5kZXJlciwgZW5kUmVu
ZGVyZXIsIHN0YXJ0T3ZlcmhhbmcsIGVuZE92ZXJoYW5nKTsKLQotICAgIHN0YXJ0T3Zlcmhhbmcg
PSBzdGQ6Om1pbjxpbnQ+KHN0YXJ0T3ZlcmhhbmcsIG1fY29tbWl0dGVkV2lkdGgpOwotICAgIG1f
YXZhaWxhYmxlV2lkdGggKz0gc3RhcnRPdmVyaGFuZzsKLQotICAgIGVuZE92ZXJoYW5nID0gc3Rk
OjptYXgoc3RkOjptaW48aW50PihlbmRPdmVyaGFuZywgbV9hdmFpbGFibGVXaWR0aCAtIGN1cnJl
bnRXaWR0aCgpKSwgMCk7Ci0gICAgbV9hdmFpbGFibGVXaWR0aCArPSBlbmRPdmVyaGFuZzsKLSAg
ICBtX292ZXJoYW5nV2lkdGggKz0gc3RhcnRPdmVyaGFuZyArIGVuZE92ZXJoYW5nOwotfQotCi12
b2lkIExpbmVXaWR0aDo6Zml0QmVsb3dGbG9hdHMoKQotewotICAgIEFTU0VSVCghbV9jb21taXR0
ZWRXaWR0aCk7Ci0gICAgQVNTRVJUKCFmaXRzT25MaW5lKCkpOwotCi0gICAgTGF5b3V0VW5pdCBm
bG9hdExvZ2ljYWxCb3R0b207Ci0gICAgTGF5b3V0VW5pdCBsYXN0RmxvYXRMb2dpY2FsQm90dG9t
ID0gbV9ibG9jay5sb2dpY2FsSGVpZ2h0KCk7Ci0gICAgZmxvYXQgbmV3TGluZVdpZHRoID0gbV9h
dmFpbGFibGVXaWR0aDsKLSAgICBmbG9hdCBuZXdMaW5lTGVmdCA9IG1fbGVmdDsKLSAgICBmbG9h
dCBuZXdMaW5lUmlnaHQgPSBtX3JpZ2h0OwotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGZs
b2F0TG9naWNhbEJvdHRvbSA9IG1fYmxvY2submV4dEZsb2F0TG9naWNhbEJvdHRvbUJlbG93KGxh
c3RGbG9hdExvZ2ljYWxCb3R0b20pOwotICAgICAgICBpZiAoZmxvYXRMb2dpY2FsQm90dG9tIDw9
IGxhc3RGbG9hdExvZ2ljYWxCb3R0b20pCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBu
ZXdMaW5lTGVmdCA9IG1fYmxvY2subG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKGZsb2F0TG9naWNh
bEJvdHRvbSwgc2hvdWxkSW5kZW50VGV4dCgpKTsKLSAgICAgICAgbmV3TGluZVJpZ2h0ID0gbV9i
bG9jay5sb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKGZsb2F0TG9naWNhbEJvdHRvbSwgc2hvdWxk
SW5kZW50VGV4dCgpKTsKLSAgICAgICAgbmV3TGluZVdpZHRoID0gc3RkOjptYXgoMC4wZiwgbmV3
TGluZVJpZ2h0IC0gbmV3TGluZUxlZnQpOwotICAgICAgICBsYXN0RmxvYXRMb2dpY2FsQm90dG9t
ID0gZmxvYXRMb2dpY2FsQm90dG9tOwotCi0jaWYgRU5BQkxFKENTU19TSEFQRVMpCi0gICAgICAg
IC8vIEZJWE1FOiBUaGlzIGNvZGUgc2hvdWxkIGJlIHJlZmFjdG9yZWQgdG8gaW5jb3Jwb3JhdGUg
d2l0aCB0aGUgY29kZSBhYm92ZS4KLSAgICAgICAgU2hhcGVJbnNpZGVJbmZvKiBzaGFwZUluc2lk
ZUluZm8gPSBtX2Jsb2NrLmxheW91dFNoYXBlSW5zaWRlSW5mbygpOwotICAgICAgICBpZiAoc2hh
cGVJbnNpZGVJbmZvKSB7Ci0gICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxPZmZzZXRGcm9t
U2hhcGVDb250YWluZXIgPSBtX2Jsb2NrLmxvZ2ljYWxPZmZzZXRGcm9tU2hhcGVBbmNlc3RvckNv
bnRhaW5lcihzaGFwZUluc2lkZUluZm8tPm93bmVyKCkpLmhlaWdodCgpOwotICAgICAgICAgICAg
TGF5b3V0VW5pdCBsaW5lSGVpZ2h0ID0gbV9ibG9jay5saW5lSGVpZ2h0KGZhbHNlLCBtX2Jsb2Nr
LmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGlu
ZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKTsKLSAgICAgICAgICAgIHNoYXBlSW5zaWRl
SW5mby0+dXBkYXRlU2VnbWVudHNGb3JMaW5lKGxhc3RGbG9hdExvZ2ljYWxCb3R0b20gKyBsb2dp
Y2FsT2Zmc2V0RnJvbVNoYXBlQ29udGFpbmVyLCBsaW5lSGVpZ2h0KTsKLSAgICAgICAgICAgIHVw
ZGF0ZUN1cnJlbnRTaGFwZVNlZ21lbnQoKTsKLSAgICAgICAgICAgIHVwZGF0ZUF2YWlsYWJsZVdp
ZHRoKCk7Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBpZiAobmV3TGluZVdpZHRoID49IG1f
dW5jb21taXR0ZWRXaWR0aCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGlmIChu
ZXdMaW5lV2lkdGggPiBtX2F2YWlsYWJsZVdpZHRoKSB7Ci0gICAgICAgIG1fYmxvY2suc2V0TG9n
aWNhbEhlaWdodChsYXN0RmxvYXRMb2dpY2FsQm90dG9tKTsKLSAgICAgICAgbV9hdmFpbGFibGVX
aWR0aCA9IG5ld0xpbmVXaWR0aCArIG1fb3ZlcmhhbmdXaWR0aDsKLSAgICAgICAgbV9sZWZ0ID0g
bmV3TGluZUxlZnQ7Ci0gICAgICAgIG1fcmlnaHQgPSBuZXdMaW5lUmlnaHQ7Ci0gICAgfQotfQot
Ci12b2lkIExpbmVXaWR0aDo6c2V0VHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGgoZmxvYXQgY29sbGFw
c2VkV2hpdGVzcGFjZSwgZmxvYXQgYm9yZGVyUGFkZGluZ01hcmdpbikKLXsKLSAgICBtX3RyYWls
aW5nQ29sbGFwc2VkV2hpdGVzcGFjZVdpZHRoID0gY29sbGFwc2VkV2hpdGVzcGFjZTsKLSAgICBt
X3RyYWlsaW5nV2hpdGVzcGFjZVdpZHRoID0gY29sbGFwc2VkV2hpdGVzcGFjZSArIGJvcmRlclBh
ZGRpbmdNYXJnaW47Ci19Ci0KLSNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLXZvaWQgTGluZVdpZHRo
Ojp1cGRhdGVDdXJyZW50U2hhcGVTZWdtZW50KCkKLXsKLSAgICBpZiAoU2hhcGVJbnNpZGVJbmZv
KiBzaGFwZUluc2lkZUluZm8gPSBtX2Jsb2NrLmxheW91dFNoYXBlSW5zaWRlSW5mbygpKQotICAg
ICAgICBtX3NlZ21lbnQgPSBzaGFwZUluc2lkZUluZm8tPmN1cnJlbnRTZWdtZW50KCk7Ci19Ci0j
ZW5kaWYKLQotdm9pZCBMaW5lV2lkdGg6OmNvbXB1dGVBdmFpbGFibGVXaWR0aEZyb21MZWZ0QW5k
UmlnaHQoKQotewotICAgIG1fYXZhaWxhYmxlV2lkdGggPSBzdGQ6Om1heDxmbG9hdD4oMCwgbV9y
aWdodCAtIG1fbGVmdCkgKyBtX292ZXJoYW5nV2lkdGg7Ci19Ci0KLWJvb2wgTGluZVdpZHRoOjpm
aXRzT25MaW5lRXhjbHVkaW5nVHJhaWxpbmdDb2xsYXBzZWRXaGl0ZXNwYWNlKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gY3VycmVudFdpZHRoKCkgLSBtX3RyYWlsaW5nQ29sbGFwc2VkV2hpdGVzcGFj
ZVdpZHRoIDw9IG1fYXZhaWxhYmxlV2lkdGg7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9MaW5lV2lkdGguaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9M
aW5lV2lkdGguaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTc1MjJjZi4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGluZVdpZHRoLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw5NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3Rl
bXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscwotICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUwotICog
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUKLSAqIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwKLSAqIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSAq
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwKLSAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKLSAqIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIExpbmVXaWR0aF9oCi0jZGVmaW5lIExp
bmVXaWR0aF9oCi0KLSNpbmNsdWRlICJMYXlvdXRVbml0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgRmxvYXRpbmdPYmplY3Q7Ci1jbGFzcyBSZW5kZXJCbG9ja0Zsb3c7Ci1jbGFz
cyBSZW5kZXJPYmplY3Q7Ci1jbGFzcyBSZW5kZXJSdWJ5UnVuOwotCi1zdHJ1Y3QgTGluZVNlZ21l
bnQ7Ci0KLWVudW0gSW5kZW50VGV4dE9yTm90IHsgRG9Ob3RJbmRlbnRUZXh0LCBJbmRlbnRUZXh0
IH07Ci0KLWNsYXNzIExpbmVXaWR0aCB7Ci1wdWJsaWM6Ci0gICAgTGluZVdpZHRoKFJlbmRlckJs
b2NrRmxvdyYsIGJvb2wgaXNGaXJzdExpbmUsIEluZGVudFRleHRPck5vdCBzaG91bGRJbmRlbnRU
ZXh0KTsKLQotICAgIGJvb2wgZml0c09uTGluZShib29sIGlnbm9yaW5nVHJhaWxpbmdTcGFjZSA9
IGZhbHNlKSBjb25zdDsKLSAgICBib29sIGZpdHNPbkxpbmVJbmNsdWRpbmdFeHRyYVdpZHRoKGZs
b2F0IGV4dHJhKSBjb25zdDsKLSAgICBib29sIGZpdHNPbkxpbmVFeGNsdWRpbmdUcmFpbGluZ1do
aXRlc3BhY2UoZmxvYXQgZXh0cmEpIGNvbnN0OwotCi0gICAgZmxvYXQgY3VycmVudFdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV9jb21taXR0ZWRXaWR0aCArIG1fdW5jb21taXR0ZWRXaWR0aDsgfQot
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZXZlbnR1YWxseSByZXBsYWNlIHRoZXNlIHRocmVlIGZ1
bmN0aW9ucyBieSBvbmVzIHRoYXQgd29yayBvbiBhIGhpZ2hlciBhYnN0cmFjdGlvbi4KLSAgICBm
bG9hdCB1bmNvbW1pdHRlZFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV91bmNvbW1pdHRlZFdpZHRo
OyB9Ci0gICAgZmxvYXQgY29tbWl0dGVkV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2NvbW1pdHRl
ZFdpZHRoOyB9Ci0gICAgZmxvYXQgYXZhaWxhYmxlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2F2
YWlsYWJsZVdpZHRoOyB9Ci0KLSAgICB2b2lkIHVwZGF0ZUF2YWlsYWJsZVdpZHRoKExheW91dFVu
aXQgbWluaW11bUhlaWdodCA9IDApOwotICAgIHZvaWQgc2hyaW5rQXZhaWxhYmxlV2lkdGhGb3JO
ZXdGbG9hdElmTmVlZGVkKEZsb2F0aW5nT2JqZWN0Kik7Ci0gICAgdm9pZCBhZGRVbmNvbW1pdHRl
ZFdpZHRoKGZsb2F0IGRlbHRhKSB7IG1fdW5jb21taXR0ZWRXaWR0aCArPSBkZWx0YTsgfQotICAg
IHZvaWQgY29tbWl0KCk7Ci0gICAgdm9pZCBhcHBseU92ZXJoYW5nKFJlbmRlclJ1YnlSdW4qLCBS
ZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVyZXIsIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIpOwot
ICAgIHZvaWQgZml0QmVsb3dGbG9hdHMoKTsKLSAgICB2b2lkIHNldFRyYWlsaW5nV2hpdGVzcGFj
ZVdpZHRoKGZsb2F0IGNvbGxhcHNlZFdoaXRlc3BhY2UsIGZsb2F0IGJvcmRlclBhZGRpbmdNYXJn
aW4gPSAwKTsKLQotI2lmIEVOQUJMRShDU1NfU0hBUEVTKQotICAgIHZvaWQgdXBkYXRlQ3VycmVu
dFNoYXBlU2VnbWVudCgpOwotI2VuZGlmCi0KLSAgICBib29sIHNob3VsZEluZGVudFRleHQoKSBj
b25zdCB7IHJldHVybiBtX3Nob3VsZEluZGVudFRleHQgPT0gSW5kZW50VGV4dDsgfQotCi1wcml2
YXRlOgotICAgIHZvaWQgY29tcHV0ZUF2YWlsYWJsZVdpZHRoRnJvbUxlZnRBbmRSaWdodCgpOwot
ICAgIGJvb2wgZml0c09uTGluZUV4Y2x1ZGluZ1RyYWlsaW5nQ29sbGFwc2VkV2hpdGVzcGFjZSgp
IGNvbnN0OwotCi0gICAgUmVuZGVyQmxvY2tGbG93JiBtX2Jsb2NrOwotICAgIGZsb2F0IG1fdW5j
b21taXR0ZWRXaWR0aDsKLSAgICBmbG9hdCBtX2NvbW1pdHRlZFdpZHRoOwotICAgIGZsb2F0IG1f
b3ZlcmhhbmdXaWR0aDsgLy8gVGhlIGFtb3VudCBieSB3aGljaCB8bV9hdmFpbGFibGVXaWR0aHwg
aGFzIGJlZW4gaW5mbGF0ZWQgdG8gYWNjb3VudCBmb3IgcG9zc2libGUgY29udHJhY3Rpb24gZHVl
IHRvIHJ1Ynkgb3ZlcmhhbmcuCi0gICAgZmxvYXQgbV90cmFpbGluZ1doaXRlc3BhY2VXaWR0aDsK
LSAgICBmbG9hdCBtX3RyYWlsaW5nQ29sbGFwc2VkV2hpdGVzcGFjZVdpZHRoOwotICAgIGZsb2F0
IG1fbGVmdDsKLSAgICBmbG9hdCBtX3JpZ2h0OwotICAgIGZsb2F0IG1fYXZhaWxhYmxlV2lkdGg7
Ci0jaWYgRU5BQkxFKENTU19TSEFQRVMpCi0gICAgY29uc3QgTGluZVNlZ21lbnQqIG1fc2VnbWVu
dDsKLSNlbmRpZgotICAgIGJvb2wgbV9pc0ZpcnN0TGluZTsKLSAgICBJbmRlbnRUZXh0T3JOb3Qg
bV9zaG91bGRJbmRlbnRUZXh0OwotfTsKLQotfQotCi0jZW5kaWYgLy8gTGluZVdpZHRoX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lV2lkdGguY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0MThhNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lV2lkdGguY3BwCkBAIC0wLDAgKzEsMjQwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcK
KyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUworICogRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIENPUFlSSUdIVCBI
T0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwKKyAqIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKyAqIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQKKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGluZVdpZHRoLmgiCisKKyNpbmNs
dWRlICJSZW5kZXJCbG9ja0Zsb3cuaCIKKyNpbmNsdWRlICJSZW5kZXJSdWJ5UnVuLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworTGluZVdpZHRoOjpMaW5lV2lkdGgoUmVuZGVyQmxvY2tGbG93
JiBibG9jaywgYm9vbCBpc0ZpcnN0TGluZSwgSW5kZW50VGV4dE9yTm90IHNob3VsZEluZGVudFRl
eHQpCisgICAgOiBtX2Jsb2NrKGJsb2NrKQorICAgICwgbV91bmNvbW1pdHRlZFdpZHRoKDApCisg
ICAgLCBtX2NvbW1pdHRlZFdpZHRoKDApCisgICAgLCBtX292ZXJoYW5nV2lkdGgoMCkKKyAgICAs
IG1fdHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGgoMCkKKyAgICAsIG1fdHJhaWxpbmdDb2xsYXBzZWRX
aGl0ZXNwYWNlV2lkdGgoMCkKKyAgICAsIG1fbGVmdCgwKQorICAgICwgbV9yaWdodCgwKQorICAg
ICwgbV9hdmFpbGFibGVXaWR0aCgwKQorI2lmIEVOQUJMRShDU1NfU0hBUEVTKQorICAgICwgbV9z
ZWdtZW50KDApCisjZW5kaWYKKyAgICAsIG1faXNGaXJzdExpbmUoaXNGaXJzdExpbmUpCisgICAg
LCBtX3Nob3VsZEluZGVudFRleHQoc2hvdWxkSW5kZW50VGV4dCkKK3sKKyNpZiBFTkFCTEUoQ1NT
X1NIQVBFUykKKyAgICB1cGRhdGVDdXJyZW50U2hhcGVTZWdtZW50KCk7CisjZW5kaWYKKyAgICB1
cGRhdGVBdmFpbGFibGVXaWR0aCgpOworfQorCitib29sIExpbmVXaWR0aDo6Zml0c09uTGluZShi
b29sIGlnbm9yaW5nVHJhaWxpbmdTcGFjZSkgY29uc3QKK3sKKyAgICByZXR1cm4gaWdub3JpbmdU
cmFpbGluZ1NwYWNlID8gZml0c09uTGluZUV4Y2x1ZGluZ1RyYWlsaW5nQ29sbGFwc2VkV2hpdGVz
cGFjZSgpIDogZml0c09uTGluZUluY2x1ZGluZ0V4dHJhV2lkdGgoMCk7Cit9CisKK2Jvb2wgTGlu
ZVdpZHRoOjpmaXRzT25MaW5lSW5jbHVkaW5nRXh0cmFXaWR0aChmbG9hdCBleHRyYSkgY29uc3QK
K3sKKyAgICByZXR1cm4gY3VycmVudFdpZHRoKCkgKyBleHRyYSA8PSBtX2F2YWlsYWJsZVdpZHRo
OworfQorCitib29sIExpbmVXaWR0aDo6Zml0c09uTGluZUV4Y2x1ZGluZ1RyYWlsaW5nV2hpdGVz
cGFjZShmbG9hdCBleHRyYSkgY29uc3QKK3sKKyAgICByZXR1cm4gY3VycmVudFdpZHRoKCkgLSBt
X3RyYWlsaW5nV2hpdGVzcGFjZVdpZHRoICsgZXh0cmEgPD0gbV9hdmFpbGFibGVXaWR0aDsKK30K
Kwordm9pZCBMaW5lV2lkdGg6OnVwZGF0ZUF2YWlsYWJsZVdpZHRoKExheW91dFVuaXQgcmVwbGFj
ZWRIZWlnaHQpCit7CisgICAgTGF5b3V0VW5pdCBoZWlnaHQgPSBtX2Jsb2NrLmxvZ2ljYWxIZWln
aHQoKTsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQgPSBtX2Jsb2NrLm1pbkxpbmVIZWln
aHRGb3JSZXBsYWNlZFJlbmRlcmVyKG1faXNGaXJzdExpbmUsIHJlcGxhY2VkSGVpZ2h0KTsKKyAg
ICBtX2xlZnQgPSBtX2Jsb2NrLmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShoZWlnaHQsIHNob3Vs
ZEluZGVudFRleHQoKSwgbG9naWNhbEhlaWdodCk7CisgICAgbV9yaWdodCA9IG1fYmxvY2subG9n
aWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShoZWlnaHQsIHNob3VsZEluZGVudFRleHQoKSwgbG9naWNh
bEhlaWdodCk7CisKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKKyAgICBpZiAobV9zZWdtZW50KSB7
CisgICAgICAgIG1fbGVmdCA9IHN0ZDo6bWF4PGZsb2F0PihtX3NlZ21lbnQtPmxvZ2ljYWxMZWZ0
LCBtX2xlZnQpOworICAgICAgICBtX3JpZ2h0ID0gc3RkOjptaW48ZmxvYXQ+KG1fc2VnbWVudC0+
bG9naWNhbFJpZ2h0LCBtX3JpZ2h0KTsKKyAgICB9CisjZW5kaWYKKworICAgIGNvbXB1dGVBdmFp
bGFibGVXaWR0aEZyb21MZWZ0QW5kUmlnaHQoKTsKK30KKwordm9pZCBMaW5lV2lkdGg6OnNocmlu
a0F2YWlsYWJsZVdpZHRoRm9yTmV3RmxvYXRJZk5lZWRlZChGbG9hdGluZ09iamVjdCogbmV3Rmxv
YXQpCit7CisgICAgTGF5b3V0VW5pdCBoZWlnaHQgPSBtX2Jsb2NrLmxvZ2ljYWxIZWlnaHQoKTsK
KyAgICBpZiAoaGVpZ2h0IDwgbV9ibG9jay5sb2dpY2FsVG9wRm9yRmxvYXQobmV3RmxvYXQpIHx8
IGhlaWdodCA+PSBtX2Jsb2NrLmxvZ2ljYWxCb3R0b21Gb3JGbG9hdChuZXdGbG9hdCkpCisgICAg
ICAgIHJldHVybjsKKworI2lmIEVOQUJMRShDU1NfU0hBUEVTKQorICAgIC8vIFdoZW4gZmxvYXRz
IHdpdGggc2hhcGUgb3V0c2lkZSBhcmUgc3RhY2tlZCwgdGhlIGZsb2F0cyBhcmUgcG9zaXRpb25l
ZCBiYXNlZCBvbiB0aGUgbWFyZ2luIGJveCBvZiB0aGUgZmxvYXQsCisgICAgLy8gbm90IHRoZSBz
aGFwZSdzIGNvbnRvdXIuIFNpbmNlIHdlIGNvbXB1dGVkIHRoZSB3aWR0aCBiYXNlZCBvbiB0aGUg
c2hhcGUgY29udG91ciB3aGVuIHdlIGFkZGVkIHRoZSBmbG9hdCwKKyAgICAvLyB3aGVuIHdlIGFk
ZCBhIHN1YnNlcXVlbnQgZmxvYXQgb24gdGhlIHNhbWUgbGluZSwgd2UgbmVlZCB0byB1bmRvIHRo
ZSBzaGFwZSBkZWx0YSBpbiBvcmRlciB0byBwb3NpdGlvbgorICAgIC8vIGJhc2VkIG9uIHRoZSBt
YXJnaW4gYm94LiBJbiBvcmRlciB0byBkbyB0aGlzLCB3ZSBuZWVkIHRvIHdhbGsgYmFjayB0aHJv
dWdoIHRoZSBmbG9hdGluZyBvYmplY3QgbGlzdCB0byBmaW5kCisgICAgLy8gdGhlIGZpcnN0IHBy
ZXZpb3VzIGZsb2F0IHRoYXQgaXMgb24gdGhlIHNhbWUgc2lkZSBhcyBvdXIgbmV3RmxvYXQuCisg
ICAgU2hhcGVPdXRzaWRlSW5mbyogcHJldmlvdXNTaGFwZU91dHNpZGVJbmZvID0gMDsKKyAgICBj
b25zdCBGbG9hdGluZ09iamVjdFNldCYgZmxvYXRpbmdPYmplY3RTZXQgPSBtX2Jsb2NrLm1fZmxv
YXRpbmdPYmplY3RzLT5zZXQoKTsKKyAgICBhdXRvIGl0ID0gZmxvYXRpbmdPYmplY3RTZXQuZW5k
KCk7CisgICAgYXV0byBiZWdpbiA9IGZsb2F0aW5nT2JqZWN0U2V0LmJlZ2luKCk7CisgICAgTGF5
b3V0VW5pdCBsaW5lSGVpZ2h0ID0gbV9ibG9jay5saW5lSGVpZ2h0KG1faXNGaXJzdExpbmUsIG1f
YmxvY2suaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGlj
YWxMaW5lLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpOworICAgIGZvciAoLS1pdDsgaXQg
IT0gYmVnaW47IC0taXQpIHsKKyAgICAgICAgRmxvYXRpbmdPYmplY3QqIHByZXZpb3VzRmxvYXQg
PSBpdC0+Z2V0KCk7CisgICAgICAgIGlmIChwcmV2aW91c0Zsb2F0ICE9IG5ld0Zsb2F0ICYmIHBy
ZXZpb3VzRmxvYXQtPnR5cGUoKSA9PSBuZXdGbG9hdC0+dHlwZSgpKSB7CisgICAgICAgICAgICBw
cmV2aW91c1NoYXBlT3V0c2lkZUluZm8gPSBwcmV2aW91c0Zsb2F0LT5yZW5kZXJlcigpLnNoYXBl
T3V0c2lkZUluZm8oKTsKKyAgICAgICAgICAgIGlmIChwcmV2aW91c1NoYXBlT3V0c2lkZUluZm8p
CisgICAgICAgICAgICAgICAgcHJldmlvdXNTaGFwZU91dHNpZGVJbmZvLT51cGRhdGVEZWx0YXNG
b3JDb250YWluaW5nQmxvY2tMaW5lKCZtX2Jsb2NrLCBwcmV2aW91c0Zsb2F0LCBtX2Jsb2NrLmxv
Z2ljYWxIZWlnaHQoKSwgbGluZUhlaWdodCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0KKworICAgIFNoYXBlT3V0c2lkZUluZm8qIHNoYXBlT3V0c2lkZUluZm8gPSBuZXdG
bG9hdC0+cmVuZGVyZXIoKS5zaGFwZU91dHNpZGVJbmZvKCk7CisgICAgaWYgKHNoYXBlT3V0c2lk
ZUluZm8pCisgICAgICAgIHNoYXBlT3V0c2lkZUluZm8tPnVwZGF0ZURlbHRhc0ZvckNvbnRhaW5p
bmdCbG9ja0xpbmUoJm1fYmxvY2ssIG5ld0Zsb2F0LCBtX2Jsb2NrLmxvZ2ljYWxIZWlnaHQoKSwg
bGluZUhlaWdodCk7CisjZW5kaWYKKworICAgIGlmIChuZXdGbG9hdC0+dHlwZSgpID09IEZsb2F0
aW5nT2JqZWN0OjpGbG9hdExlZnQpIHsKKyAgICAgICAgZmxvYXQgbmV3TGVmdCA9IG1fYmxvY2su
bG9naWNhbFJpZ2h0Rm9yRmxvYXQobmV3RmxvYXQpOworI2lmIEVOQUJMRShDU1NfU0hBUEVTKQor
ICAgICAgICBpZiAocHJldmlvdXNTaGFwZU91dHNpZGVJbmZvKQorICAgICAgICAgICAgbmV3TGVm
dCAtPSBwcmV2aW91c1NoYXBlT3V0c2lkZUluZm8tPnJpZ2h0TWFyZ2luQm94RGVsdGEoKTsKKyAg
ICAgICAgaWYgKHNoYXBlT3V0c2lkZUluZm8pCisgICAgICAgICAgICBuZXdMZWZ0ICs9IHNoYXBl
T3V0c2lkZUluZm8tPnJpZ2h0TWFyZ2luQm94RGVsdGEoKTsKKyNlbmRpZgorCisgICAgICAgIGlm
IChzaG91bGRJbmRlbnRUZXh0KCkgJiYgbV9ibG9jay5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJl
Y3Rpb24oKSkKKyAgICAgICAgICAgIG5ld0xlZnQgKz0gZmxvb3JUb0ludChtX2Jsb2NrLnRleHRJ
bmRlbnRPZmZzZXQoKSk7CisgICAgICAgIG1fbGVmdCA9IHN0ZDo6bWF4PGZsb2F0PihtX2xlZnQs
IG5ld0xlZnQpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZsb2F0IG5ld1JpZ2h0ID0gbV9ibG9j
ay5sb2dpY2FsTGVmdEZvckZsb2F0KG5ld0Zsb2F0KTsKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykK
KyAgICAgICAgaWYgKHByZXZpb3VzU2hhcGVPdXRzaWRlSW5mbykKKyAgICAgICAgICAgIG5ld1Jp
Z2h0IC09IHByZXZpb3VzU2hhcGVPdXRzaWRlSW5mby0+bGVmdE1hcmdpbkJveERlbHRhKCk7Cisg
ICAgICAgIGlmIChzaGFwZU91dHNpZGVJbmZvKQorICAgICAgICAgICAgbmV3UmlnaHQgKz0gc2hh
cGVPdXRzaWRlSW5mby0+bGVmdE1hcmdpbkJveERlbHRhKCk7CisjZW5kaWYKKworICAgICAgICBp
ZiAoc2hvdWxkSW5kZW50VGV4dCgpICYmICFtX2Jsb2NrLnN0eWxlKCkuaXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpKQorICAgICAgICAgICAgbmV3UmlnaHQgLT0gZmxvb3JUb0ludChtX2Jsb2NrLnRl
eHRJbmRlbnRPZmZzZXQoKSk7CisgICAgICAgIG1fcmlnaHQgPSBzdGQ6Om1pbjxmbG9hdD4obV9y
aWdodCwgbmV3UmlnaHQpOworICAgIH0KKworICAgIGNvbXB1dGVBdmFpbGFibGVXaWR0aEZyb21M
ZWZ0QW5kUmlnaHQoKTsKK30KKwordm9pZCBMaW5lV2lkdGg6OmNvbW1pdCgpCit7CisgICAgbV9j
b21taXR0ZWRXaWR0aCArPSBtX3VuY29tbWl0dGVkV2lkdGg7CisgICAgbV91bmNvbW1pdHRlZFdp
ZHRoID0gMDsKK30KKwordm9pZCBMaW5lV2lkdGg6OmFwcGx5T3ZlcmhhbmcoUmVuZGVyUnVieVJ1
biogcnVieVJ1biwgUmVuZGVyT2JqZWN0KiBzdGFydFJlbmRlcmVyLCBSZW5kZXJPYmplY3QqIGVu
ZFJlbmRlcmVyKQoreworICAgIGludCBzdGFydE92ZXJoYW5nOworICAgIGludCBlbmRPdmVyaGFu
ZzsKKyAgICBydWJ5UnVuLT5nZXRPdmVyaGFuZyhtX2lzRmlyc3RMaW5lLCBzdGFydFJlbmRlcmVy
LCBlbmRSZW5kZXJlciwgc3RhcnRPdmVyaGFuZywgZW5kT3ZlcmhhbmcpOworCisgICAgc3RhcnRP
dmVyaGFuZyA9IHN0ZDo6bWluPGludD4oc3RhcnRPdmVyaGFuZywgbV9jb21taXR0ZWRXaWR0aCk7
CisgICAgbV9hdmFpbGFibGVXaWR0aCArPSBzdGFydE92ZXJoYW5nOworCisgICAgZW5kT3Zlcmhh
bmcgPSBzdGQ6Om1heChzdGQ6Om1pbjxpbnQ+KGVuZE92ZXJoYW5nLCBtX2F2YWlsYWJsZVdpZHRo
IC0gY3VycmVudFdpZHRoKCkpLCAwKTsKKyAgICBtX2F2YWlsYWJsZVdpZHRoICs9IGVuZE92ZXJo
YW5nOworICAgIG1fb3ZlcmhhbmdXaWR0aCArPSBzdGFydE92ZXJoYW5nICsgZW5kT3Zlcmhhbmc7
Cit9CisKK3ZvaWQgTGluZVdpZHRoOjpmaXRCZWxvd0Zsb2F0cygpCit7CisgICAgQVNTRVJUKCFt
X2NvbW1pdHRlZFdpZHRoKTsKKyAgICBBU1NFUlQoIWZpdHNPbkxpbmUoKSk7CisKKyAgICBMYXlv
dXRVbml0IGZsb2F0TG9naWNhbEJvdHRvbTsKKyAgICBMYXlvdXRVbml0IGxhc3RGbG9hdExvZ2lj
YWxCb3R0b20gPSBtX2Jsb2NrLmxvZ2ljYWxIZWlnaHQoKTsKKyAgICBmbG9hdCBuZXdMaW5lV2lk
dGggPSBtX2F2YWlsYWJsZVdpZHRoOworICAgIGZsb2F0IG5ld0xpbmVMZWZ0ID0gbV9sZWZ0Owor
ICAgIGZsb2F0IG5ld0xpbmVSaWdodCA9IG1fcmlnaHQ7CisgICAgd2hpbGUgKHRydWUpIHsKKyAg
ICAgICAgZmxvYXRMb2dpY2FsQm90dG9tID0gbV9ibG9jay5uZXh0RmxvYXRMb2dpY2FsQm90dG9t
QmVsb3cobGFzdEZsb2F0TG9naWNhbEJvdHRvbSk7CisgICAgICAgIGlmIChmbG9hdExvZ2ljYWxC
b3R0b20gPD0gbGFzdEZsb2F0TG9naWNhbEJvdHRvbSkKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIG5ld0xpbmVMZWZ0ID0gbV9ibG9jay5sb2dpY2FsTGVmdE9mZnNldEZvckxpbmUoZmxv
YXRMb2dpY2FsQm90dG9tLCBzaG91bGRJbmRlbnRUZXh0KCkpOworICAgICAgICBuZXdMaW5lUmln
aHQgPSBtX2Jsb2NrLmxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUoZmxvYXRMb2dpY2FsQm90dG9t
LCBzaG91bGRJbmRlbnRUZXh0KCkpOworICAgICAgICBuZXdMaW5lV2lkdGggPSBzdGQ6Om1heCgw
LjBmLCBuZXdMaW5lUmlnaHQgLSBuZXdMaW5lTGVmdCk7CisgICAgICAgIGxhc3RGbG9hdExvZ2lj
YWxCb3R0b20gPSBmbG9hdExvZ2ljYWxCb3R0b207CisKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykK
KyAgICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBzaG91bGQgYmUgcmVmYWN0b3JlZCB0byBpbmNv
cnBvcmF0ZSB3aXRoIHRoZSBjb2RlIGFib3ZlLgorICAgICAgICBTaGFwZUluc2lkZUluZm8qIHNo
YXBlSW5zaWRlSW5mbyA9IG1fYmxvY2subGF5b3V0U2hhcGVJbnNpZGVJbmZvKCk7CisgICAgICAg
IGlmIChzaGFwZUluc2lkZUluZm8pIHsKKyAgICAgICAgICAgIExheW91dFVuaXQgbG9naWNhbE9m
ZnNldEZyb21TaGFwZUNvbnRhaW5lciA9IG1fYmxvY2subG9naWNhbE9mZnNldEZyb21TaGFwZUFu
Y2VzdG9yQ29udGFpbmVyKHNoYXBlSW5zaWRlSW5mby0+b3duZXIoKSkuaGVpZ2h0KCk7CisgICAg
ICAgICAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQgPSBtX2Jsb2NrLmxpbmVIZWlnaHQoZmFsc2Us
IG1fYmxvY2suaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVy
dGljYWxMaW5lLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpOworICAgICAgICAgICAgc2hh
cGVJbnNpZGVJbmZvLT51cGRhdGVTZWdtZW50c0ZvckxpbmUobGFzdEZsb2F0TG9naWNhbEJvdHRv
bSArIGxvZ2ljYWxPZmZzZXRGcm9tU2hhcGVDb250YWluZXIsIGxpbmVIZWlnaHQpOworICAgICAg
ICAgICAgdXBkYXRlQ3VycmVudFNoYXBlU2VnbWVudCgpOworICAgICAgICAgICAgdXBkYXRlQXZh
aWxhYmxlV2lkdGgoKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGlmIChuZXdMaW5lV2lk
dGggPj0gbV91bmNvbW1pdHRlZFdpZHRoKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgaWYgKG5ld0xpbmVXaWR0aCA+IG1fYXZhaWxhYmxlV2lkdGgpIHsKKyAgICAgICAgbV9ibG9j
ay5zZXRMb2dpY2FsSGVpZ2h0KGxhc3RGbG9hdExvZ2ljYWxCb3R0b20pOworICAgICAgICBtX2F2
YWlsYWJsZVdpZHRoID0gbmV3TGluZVdpZHRoICsgbV9vdmVyaGFuZ1dpZHRoOworICAgICAgICBt
X2xlZnQgPSBuZXdMaW5lTGVmdDsKKyAgICAgICAgbV9yaWdodCA9IG5ld0xpbmVSaWdodDsKKyAg
ICB9Cit9CisKK3ZvaWQgTGluZVdpZHRoOjpzZXRUcmFpbGluZ1doaXRlc3BhY2VXaWR0aChmbG9h
dCBjb2xsYXBzZWRXaGl0ZXNwYWNlLCBmbG9hdCBib3JkZXJQYWRkaW5nTWFyZ2luKQoreworICAg
IG1fdHJhaWxpbmdDb2xsYXBzZWRXaGl0ZXNwYWNlV2lkdGggPSBjb2xsYXBzZWRXaGl0ZXNwYWNl
OworICAgIG1fdHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGggPSBjb2xsYXBzZWRXaGl0ZXNwYWNlICsg
Ym9yZGVyUGFkZGluZ01hcmdpbjsKK30KKworI2lmIEVOQUJMRShDU1NfU0hBUEVTKQordm9pZCBM
aW5lV2lkdGg6OnVwZGF0ZUN1cnJlbnRTaGFwZVNlZ21lbnQoKQoreworICAgIGlmIChTaGFwZUlu
c2lkZUluZm8qIHNoYXBlSW5zaWRlSW5mbyA9IG1fYmxvY2subGF5b3V0U2hhcGVJbnNpZGVJbmZv
KCkpCisgICAgICAgIG1fc2VnbWVudCA9IHNoYXBlSW5zaWRlSW5mby0+Y3VycmVudFNlZ21lbnQo
KTsKK30KKyNlbmRpZgorCit2b2lkIExpbmVXaWR0aDo6Y29tcHV0ZUF2YWlsYWJsZVdpZHRoRnJv
bUxlZnRBbmRSaWdodCgpCit7CisgICAgbV9hdmFpbGFibGVXaWR0aCA9IHN0ZDo6bWF4PGZsb2F0
PigwLCBtX3JpZ2h0IC0gbV9sZWZ0KSArIG1fb3ZlcmhhbmdXaWR0aDsKK30KKworYm9vbCBMaW5l
V2lkdGg6OmZpdHNPbkxpbmVFeGNsdWRpbmdUcmFpbGluZ0NvbGxhcHNlZFdoaXRlc3BhY2UoKSBj
b25zdAoreworICAgIHJldHVybiBjdXJyZW50V2lkdGgoKSAtIG1fdHJhaWxpbmdDb2xsYXBzZWRX
aGl0ZXNwYWNlV2lkdGggPD0gbV9hdmFpbGFibGVXaWR0aDsKK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9MaW5lV2lkdGguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5lNzUyMmNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvTGluZVdpZHRoLmgKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAg
ICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVy
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MKKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCisgKiBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisg
KiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBMaW5l
V2lkdGhfaAorI2RlZmluZSBMaW5lV2lkdGhfaAorCisjaW5jbHVkZSAiTGF5b3V0VW5pdC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZsb2F0aW5nT2JqZWN0OworY2xhc3MgUmVu
ZGVyQmxvY2tGbG93OworY2xhc3MgUmVuZGVyT2JqZWN0OworY2xhc3MgUmVuZGVyUnVieVJ1bjsK
Kworc3RydWN0IExpbmVTZWdtZW50OworCitlbnVtIEluZGVudFRleHRPck5vdCB7IERvTm90SW5k
ZW50VGV4dCwgSW5kZW50VGV4dCB9OworCitjbGFzcyBMaW5lV2lkdGggeworcHVibGljOgorICAg
IExpbmVXaWR0aChSZW5kZXJCbG9ja0Zsb3cmLCBib29sIGlzRmlyc3RMaW5lLCBJbmRlbnRUZXh0
T3JOb3Qgc2hvdWxkSW5kZW50VGV4dCk7CisKKyAgICBib29sIGZpdHNPbkxpbmUoYm9vbCBpZ25v
cmluZ1RyYWlsaW5nU3BhY2UgPSBmYWxzZSkgY29uc3Q7CisgICAgYm9vbCBmaXRzT25MaW5lSW5j
bHVkaW5nRXh0cmFXaWR0aChmbG9hdCBleHRyYSkgY29uc3Q7CisgICAgYm9vbCBmaXRzT25MaW5l
RXhjbHVkaW5nVHJhaWxpbmdXaGl0ZXNwYWNlKGZsb2F0IGV4dHJhKSBjb25zdDsKKworICAgIGZs
b2F0IGN1cnJlbnRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY29tbWl0dGVkV2lkdGggKyBtX3Vu
Y29tbWl0dGVkV2lkdGg7IH0KKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGV2ZW50dWFsbHkgcmVw
bGFjZSB0aGVzZSB0aHJlZSBmdW5jdGlvbnMgYnkgb25lcyB0aGF0IHdvcmsgb24gYSBoaWdoZXIg
YWJzdHJhY3Rpb24uCisgICAgZmxvYXQgdW5jb21taXR0ZWRXaWR0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fdW5jb21taXR0ZWRXaWR0aDsgfQorICAgIGZsb2F0IGNvbW1pdHRlZFdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gbV9jb21taXR0ZWRXaWR0aDsgfQorICAgIGZsb2F0IGF2YWlsYWJsZVdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV9hdmFpbGFibGVXaWR0aDsgfQorCisgICAgdm9pZCB1cGRhdGVBdmFp
bGFibGVXaWR0aChMYXlvdXRVbml0IG1pbmltdW1IZWlnaHQgPSAwKTsKKyAgICB2b2lkIHNocmlu
a0F2YWlsYWJsZVdpZHRoRm9yTmV3RmxvYXRJZk5lZWRlZChGbG9hdGluZ09iamVjdCopOworICAg
IHZvaWQgYWRkVW5jb21taXR0ZWRXaWR0aChmbG9hdCBkZWx0YSkgeyBtX3VuY29tbWl0dGVkV2lk
dGggKz0gZGVsdGE7IH0KKyAgICB2b2lkIGNvbW1pdCgpOworICAgIHZvaWQgYXBwbHlPdmVyaGFu
ZyhSZW5kZXJSdWJ5UnVuKiwgUmVuZGVyT2JqZWN0KiBzdGFydFJlbmRlcmVyLCBSZW5kZXJPYmpl
Y3QqIGVuZFJlbmRlcmVyKTsKKyAgICB2b2lkIGZpdEJlbG93RmxvYXRzKCk7CisgICAgdm9pZCBz
ZXRUcmFpbGluZ1doaXRlc3BhY2VXaWR0aChmbG9hdCBjb2xsYXBzZWRXaGl0ZXNwYWNlLCBmbG9h
dCBib3JkZXJQYWRkaW5nTWFyZ2luID0gMCk7CisKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKKyAg
ICB2b2lkIHVwZGF0ZUN1cnJlbnRTaGFwZVNlZ21lbnQoKTsKKyNlbmRpZgorCisgICAgYm9vbCBz
aG91bGRJbmRlbnRUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRJbmRlbnRUZXh0ID09IElu
ZGVudFRleHQ7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGNvbXB1dGVBdmFpbGFibGVXaWR0aEZy
b21MZWZ0QW5kUmlnaHQoKTsKKyAgICBib29sIGZpdHNPbkxpbmVFeGNsdWRpbmdUcmFpbGluZ0Nv
bGxhcHNlZFdoaXRlc3BhY2UoKSBjb25zdDsKKworICAgIFJlbmRlckJsb2NrRmxvdyYgbV9ibG9j
azsKKyAgICBmbG9hdCBtX3VuY29tbWl0dGVkV2lkdGg7CisgICAgZmxvYXQgbV9jb21taXR0ZWRX
aWR0aDsKKyAgICBmbG9hdCBtX292ZXJoYW5nV2lkdGg7IC8vIFRoZSBhbW91bnQgYnkgd2hpY2gg
fG1fYXZhaWxhYmxlV2lkdGh8IGhhcyBiZWVuIGluZmxhdGVkIHRvIGFjY291bnQgZm9yIHBvc3Np
YmxlIGNvbnRyYWN0aW9uIGR1ZSB0byBydWJ5IG92ZXJoYW5nLgorICAgIGZsb2F0IG1fdHJhaWxp
bmdXaGl0ZXNwYWNlV2lkdGg7CisgICAgZmxvYXQgbV90cmFpbGluZ0NvbGxhcHNlZFdoaXRlc3Bh
Y2VXaWR0aDsKKyAgICBmbG9hdCBtX2xlZnQ7CisgICAgZmxvYXQgbV9yaWdodDsKKyAgICBmbG9h
dCBtX2F2YWlsYWJsZVdpZHRoOworI2lmIEVOQUJMRShDU1NfU0hBUEVTKQorICAgIGNvbnN0IExp
bmVTZWdtZW50KiBtX3NlZ21lbnQ7CisjZW5kaWYKKyAgICBib29sIG1faXNGaXJzdExpbmU7Cisg
ICAgSW5kZW50VGV4dE9yTm90IG1fc2hvdWxkSW5kZW50VGV4dDsKK307CisKK30KKworI2VuZGlm
IC8vIExpbmVXaWR0aF9oCg==
</data>
<flag name="review"
          id="240197"
          type_id="1"
          status="+"
          setter="hyatt"
    />
    <flag name="commit-queue"
          id="240198"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217448</attachid>
            <date>2013-11-20 09:37:03 -0800</date>
            <delta_ts>2013-11-20 10:22:07 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>lwcommit.patch</filename>
            <type>text/plain</type>
            <size>43667</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggN2NmZGVjNy4uMjRjOTdjNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIxMTUsNyArMjExNSw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICByZW5k
ZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKICAgICByZW5kZXJpbmcvTGF5b3V0UmVwYWludGVyLmNw
cAogICAgIHJlbmRlcmluZy9MYXlvdXRTdGF0ZS5jcHAKLSAgICByZW5kZXJpbmcvTGluZVdpZHRo
LmNwcAogICAgIHJlbmRlcmluZy9PcmRlckl0ZXJhdG9yLmNwcAogICAgIHJlbmRlcmluZy9Qb2lu
dGVyRXZlbnRzSGl0UnVsZXMuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAt
MjIxNCw2ICsyMjEzLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogCiAgICAgcmVuZGVyaW5nL2xp
bmUvTGluZUJyZWFrZXIuY3BwCiAgICAgcmVuZGVyaW5nL2xpbmUvTGluZUluZm8uY3BwCisgICAg
cmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcAogCiAgICAgcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxCbG9jay5jcHAKICAgICByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNl
ZC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBlYmY5YjQzLi4wODRkNDE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDEgQEAKKzIwMTMtMTEtMjAgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgTW92ZSBMaW5lV2lkdGgue2gsY3BwfSBpbnRvIHJlbmRlcmluZy9saW5lCisg
ICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjQ0NDg+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGF2aWQgSHlhdHQuCisKKyAgICAgICAgSW4gcjE1OTM1NCBJIGludHJvZHVjZWQgbGluZSBk
aXJlY3RvcnkuIE5vdyBpdCdzIHRpbWUgdG8gbW92ZSB0aGUgaGVscGVyIGNsYXNzZXMgb2YgUmVu
ZGVyQmxvY2tMaW5lTGF5b3V0IGludG8gJ2xpbmUnIHN1YmRpcmVjdG9yeS4KKworICAgICAgICBO
byBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGluZVdpZHRoLmNwcC4KKyAgICAgICAgKFdl
YkNvcmU6OkxpbmVXaWR0aDo6TGluZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0
aDo6Zml0c09uTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lV2lkdGg6OmZpdHNPbkxpbmVJ
bmNsdWRpbmdFeHRyYVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0aDo6Zml0c09u
TGluZUV4Y2x1ZGluZ1RyYWlsaW5nV2hpdGVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpMaW5l
V2lkdGg6OnVwZGF0ZUF2YWlsYWJsZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0
aDo6c2hyaW5rQXZhaWxhYmxlV2lkdGhGb3JOZXdGbG9hdElmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkxpbmVXaWR0aDo6Y29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0aDo6
YXBwbHlPdmVyaGFuZyk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lV2lkdGg6OmZpdEJlbG93Rmxv
YXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0aDo6c2V0VHJhaWxpbmdXaGl0ZXNwYWNl
V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6TGluZVdpZHRoOjp1cGRhdGVDdXJyZW50U2hhcGVT
ZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0aDo6Y29tcHV0ZUF2YWlsYWJsZVdp
ZHRoRnJvbUxlZnRBbmRSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lV2lkdGg6OmZpdHNP
bkxpbmVFeGNsdWRpbmdUcmFpbGluZ0NvbGxhcHNlZFdoaXRlc3BhY2UpOgorICAgICAgICAqIHJl
bmRlcmluZy9saW5lL0xpbmVXaWR0aC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0xpbmVXaWR0aC5oLgorICAgICAgICAoV2ViQ29yZTo6TGluZVdpZHRoOjpjdXJyZW50
V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6TGluZVdpZHRoOjp1bmNvbW1pdHRlZFdpZHRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0aDo6Y29tbWl0dGVkV2lkdGgpOgorICAgICAgICAo
V2ViQ29yZTo6TGluZVdpZHRoOjphdmFpbGFibGVXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpM
aW5lV2lkdGg6OmFkZFVuY29tbWl0dGVkV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6TGluZVdp
ZHRoOjpzaG91bGRJbmRlbnRUZXh0KToKKwogMjAxMy0xMS0yMCAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW51cCBnZXRPckVzdGFibGlzaElEQkRhdGFi
YXNlTWV0YWRhdGEgYW5kIHN0dWIgaXQgb3V0IGluIFdLMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KaW5kZXggMTFhMGZjNS4uY2E1N2Y5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC00MzA3LDggKzQzMDcsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9Mb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRSZXBhaW50ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0xheW91dFJlcGFpbnRlci5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9MaW5lV2lkdGguaCBcCi0JU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVXaWR0aC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9PdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCBc
CiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL09yZGVySXRlcmF0b3IuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvT3JkZXJJdGVyYXRvci5oIFwKQEAgLTQ1MTcsNiArNDUxNSw4IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGlu
ZUJyZWFrZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lSW5saW5l
SGVhZGVycy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0U3Rh
dGUuaCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmggXAorCVNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmggXAogCVNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCA4N2ZmNmRkLi5m
MDIxZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2oKQEAgLTk2OTgsNyArOTY5OCw2IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXExpbmVXaWR0aC5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcT3JkZXJJdGVyYXRvci5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmNwcCI+CiAg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTEw
NjQsNiArMTEwNjMsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFRl
eHRQYWludFN0eWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmlu
Z1xsaW5lXExpbmVCcmVha2VyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJl
bmRlcmluZ1xsaW5lXExpbmVJbmZvLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJlbmRlcmluZ1xsaW5lXExpbmVXaWR0aC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxyZW5kZXJpbmdcc2hhcGVzXFBvbHlnb25TaGFwZS5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFJhc3RlclNoYXBlLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNcUmVjdGFuZ2xlU2hhcGUuY3Bw
IiAvPgpAQCAtMTk4MTMsNyArMTk4MTMsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cmVuZGVyaW5nXElubGluZVRleHRCb3guaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJlbmRlcmluZ1xMYXlvdXRSZXBhaW50ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJlbmRlcmluZ1xMYXlvdXRTdGF0ZS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccmVuZGVyaW5nXExpbmVXaWR0aC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cmVuZGVyaW5nXE9yZGVySXRlcmF0b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJlbmRlcmluZ1xQYWludEluZm8uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJl
bmRlcmluZ1xQYWludFBoYXNlLmgiIC8+CkBAIC0xOTg5MSw2ICsxOTg5MCw3IEBACiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcbGluZVxMaW5lSW5mby5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXGxpbmVcTGluZUlubGluZUhlYWRlcnMuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xsaW5lXExpbmVMYXlvdXRT
dGF0ZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXGxpbmVcTGlu
ZVdpZHRoLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVz
XFBvbHlnb25TaGFwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5n
XHNoYXBlc1xSYXN0ZXJTaGFwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVu
ZGVyaW5nXHNoYXBlc1xSZWN0YW5nbGVTaGFwZS5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGEyOGY0
MjQuLmI1NGYyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTY5MDQsNyArNjkwNCw3IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGluZGV4ZWRkYlxsZXZlbGRiXElEQkZhY3RvcnlC
YWNrZW5kTGV2ZWxEQi5jcHAiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzXGluZGV4ZWRkYlxsZXZl
bGRiPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxyZW5kZXJpbmdcTGluZVdpZHRoLmNwcCI+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
ZW5kZXJpbmdcbGluZVxMaW5lV2lkdGguY3BwIj4KICAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9G
aWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSlNCZWZvcmVVbmxvYWRFdmVudC5jcHAiPgpAQCAtMTQ2NTcsNiAr
MTQ2NTcsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFJlbmRlckVs
ZW1lbnQuaCI+CiAgICAgICA8RmlsdGVyPnJlbmRlcmluZzwvRmlsdGVyPgogICAgIDwvQ2xJbmNs
dWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXGxpbmVcTGluZVdpZHRo
LmgiPgorICAgICAgPEZpbHRlcj5yZW5kZXJpbmdcbGluZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNs
dWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcRmxvYXRQ
b2x5Z29uLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljczwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgpAQCAtMTQ2ODQsOSArMTQ2ODcsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xSZWN0YW5nbGVTaGFwZS5oIj4KICAgICAgIDxGaWx0
ZXI+cmVuZGVyaW5nXHNoYXBlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXExpbmVXaWR0aC5oIj4KLSAgICAgIDxGaWx0ZXI+
cmVuZGVyaW5nPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxyZW5kZXJpbmdcTGluZUxheW91dFN0YXRlLmgiPgogICAgICAgPEZpbHRlcj5yZW5k
ZXJpbmc8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwZDJkNDczLi4xOWE5NjIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0zNDQyLDggKzM0NDIsNiBAQAogCQlBMDdEMzM1NjE1MkI2MzBFMDAxQjYzOTMgLyogSlNX
ZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTA3RDMzNTQxNTJCNjMwRTAwMUI2MzkzIC8qIEpTV2ViR0xTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQuaCAqLzsgfTsKIAkJQTA3RDMzNTgxNTJCNjMyRDAwMUI2MzkzIC8q
IFdlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMDdEMzM1NzE1MkI2MzJEMDAxQjYzOTMgLyogV2ViR0xTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQuaCAqLzsgfTsKIAkJQTA4Q0YxNTQxNTJCNzdCMzAwOUM1Nzc1IC8q
IFdlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEwOENGMTUzMTUyQjc3QjMwMDlDNTc3NSAvKiBXZWJHTFNo
YWRlclByZWNpc2lvbkZvcm1hdC5jcHAgKi87IH07Ci0JCUEwQ0IwMDI0MTdERjgyNjYwMDE3ODk2
QiAvKiBMaW5lV2lkdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTBDQjAwMjMxN0RGODFBQzAwMTc4OTZCIC8qIExpbmVXaWR0aC5jcHAgKi87IH07
Ci0JCUEwQ0IwMDI1MTdERjgyNkMwMDE3ODk2QiAvKiBMaW5lV2lkdGguaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEwQ0IwMDIxMTdERTlDRDAwMDE3ODk2
QiAvKiBMaW5lV2lkdGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9Owog
CQlBMEVFMERGNTE0NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMEVFMERGMTE0
NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5jcHAgKi87IH07CiAJCUEw
RUUwREY2MTQ0RjgyNTUwMEY4MEIwRCAvKiBXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMEVFMERGMjE0NEY4MjU1
MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oICovOyB9OwogCQlBMEVFMERGNzE0
NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTBFRTBERjMxNDRGODI1NTAwRjgwQjBEIC8q
IFdlYkdMRGVidWdTaGFkZXJzLmNwcCAqLzsgfTsKQEAgLTYzMDUsNiArNjMwMyw4IEBACiAJCUZG
QjY5OENGMTgzNDAyQkIwMDE1OEEzMSAvKiBMaW5lSW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRkI2OThDRDE4MzNGMTc2MDAxNThBMzEgLyog
TGluZUluZm8uY3BwICovOyB9OwogCQlGRkQ1Qjk3QTEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZp
c2liaWxpdHlTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRkQ1Qjk3NzEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5j
cHAgKi87IH07CiAJCUZGRDVCOTdCMTM1Q0M5NzgwMEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRkQ1
Qjk3ODEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZGREJDMDQ3MTgzRDI3Qjcw
MDQwNzEwOSAvKiBMaW5lV2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZGREJDMDQ1MTgzRDI3QjcwMDQwNzEwOSAvKiBMaW5lV2lkdGguaCAqLzsg
fTsKKwkJRkZEQkMwNDgxODNEMjdCNzAwNDA3MTA5IC8qIExpbmVXaWR0aC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRkRCQzA0NjE4M0QyN0I3MDA0
MDcxMDkgLyogTGluZVdpZHRoLmNwcCAqLzsgfTsKIAkJRkZFRkFCMkExODM4MERBMDAwNTE0NTM0
IC8qIExpbmVMYXlvdXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkZFRkFCMjkxODM4MERBMDAwNTE0NTM0IC8qIExpbmVMYXlvdXRTdGF0ZS5o
ICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKQEAgLTEwMjE3LDggKzEw
MjE3LDYgQEAKIAkJQTA3RDMzNTcxNTJCNjMyRDAwMUI2MzkzIC8qIFdlYkdMU2hhZGVyUHJlY2lz
aW9uRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdMU2hhZGVy
UHJlY2lzaW9uRm9ybWF0Lmg7IHBhdGggPSBjYW52YXMvV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTA3RDMzNTkxNTJCNjMzRTAwMUI2
MzkzIC8qIFdlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5h
bWUgPSBXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5pZGw7IHBhdGggPSBjYW52YXMvV2ViR0xT
aGFkZXJQcmVjaXNpb25Gb3JtYXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MDhDRjE1MzE1MkI3N0IzMDA5QzU3NzUgLyogV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViR0xTaGFkZXJQcmVjaXNp
b25Gb3JtYXQuY3BwOyBwYXRoID0gY2FudmFzL1dlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTBDQjAwMjExN0RFOUNEMDAwMTc4OTZC
IC8qIExpbmVXaWR0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5lV2lk
dGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTBDQjAwMjMxN0RGODFBQzAwMTc4
OTZCIC8qIExpbmVXaWR0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBMaW5lV2lkdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMEVFMERFRjE0
NEY4MjMyMDBGODBCMEQgLyogV2ViR0xEZWJ1Z1NoYWRlcnMuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
bmFtZSA9IFdlYkdMRGVidWdTaGFkZXJzLmlkbDsgcGF0aCA9IGNhbnZhcy9XZWJHTERlYnVnU2hh
ZGVycy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEwRUUwREYwMTQ0RjgyNDMw
MEY4MEIwRCAvKiBXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5h
bWUgPSBXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmlkbDsgcGF0aCA9IGNhbnZhcy9XZWJHTERlYnVn
UmVuZGVyZXJJbmZvLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTBFRTBERjEx
NDRGODI1NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdSZW5kZXJlckluZm8uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5jcHA7IHBh
dGggPSBjYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMzQ4NSw2ICsxMzQ4Myw4IEBACiAJCUZGQjY5OENFMTgzM0YxNzYwMDE1
OEEzMSAvKiBMaW5lSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5l
SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRkQ1Qjk3NzEzNUNDOTc4MDBE
NUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQYWdlVmlzaWJpbGl0eVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkZENUI5NzgxMzVDQzk3ODAwRDVFOTJBIC8qIFBhZ2VWaXNpYmlsaXR5U3Rh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZVZpc2liaWxpdHlTdGF0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRkRCQzA0NTE4M0QyN0I3MDA0MDcx
MDkgLyogTGluZVdpZHRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmVX
aWR0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRkRCQzA0NjE4M0QyN0I3MDA0
MDcxMDkgLyogTGluZVdpZHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IExpbmVXaWR0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZGRUZBQjI5
MTgzODBEQTAwMDUxNDUzNCAvKiBMaW5lTGF5b3V0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTGluZUxheW91dFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZGRUZBQjJEMTgzQkNCNkYwMDUxNDUzNCAvKiBMaW5lSW5saW5lSGVhZGVycy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5lSW5saW5lSGVhZGVycy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAq
LwpAQCAtMjA5NjYsOCArMjA5NjYsNiBAQAogCQkJCUExMjBBQ0EwMTNGOTk4MzcwMEZFNEFDNyAv
KiBMYXlvdXRSZXBhaW50ZXIuaCAqLywKIAkJCQkyRDkwNjYwNDBCRTE0MUQ0MDA5NTY5OTggLyog
TGF5b3V0U3RhdGUuY3BwICovLAogCQkJCTJEOTA2NjA1MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlv
dXRTdGF0ZS5oICovLAotCQkJCUEwQ0IwMDIzMTdERjgxQUMwMDE3ODk2QiAvKiBMaW5lV2lkdGgu
Y3BwICovLAotCQkJCUEwQ0IwMDIxMTdERTlDRDAwMDE3ODk2QiAvKiBMaW5lV2lkdGguaCAqLywK
IAkJCQk5QkEyNzNGMzE3MjIwNkJCMDA5N0NFNDcgLyogTG9naWNhbFNlbGVjdGlvbk9mZnNldENh
Y2hlcy5oICovLAogCQkJCTM3NzRBQkEzMEZBMjFFQjQwMEFEN0RFOSAvKiBPdmVybGFwVGVzdFJl
cXVlc3RDbGllbnQuaCAqLywKIAkJCQk5Mzc3QUI5RjE1REVGRUVGMDAzMUZEMDQgLyogUGFnaW5h
dGlvbi5oICovLApAQCAtMjE5MDcsNiArMjE5MDUsOCBAQAogCQlGRkI2OThDODE4MzJGMTBCMDAx
NThBMzEgLyogbGluZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJRkZEQkMwNDUxODNEMjdCNzAwNDA3MTA5IC8qIExpbmVXaWR0aC5oICovLAorCQkJCUZG
REJDMDQ2MTgzRDI3QjcwMDQwNzEwOSAvKiBMaW5lV2lkdGguY3BwICovLAogCQkJCUZGRUZBQjJE
MTgzQkNCNkYwMDUxNDUzNCAvKiBMaW5lSW5saW5lSGVhZGVycy5oICovLAogCQkJCUZGRUZBQjI5
MTgzODBEQTAwMDUxNDUzNCAvKiBMaW5lTGF5b3V0U3RhdGUuaCAqLywKIAkJCQlGRkI2OThDRDE4
MzNGMTc2MDAxNThBMzEgLyogTGluZUluZm8uY3BwICovLApAQCAtMjQ3NDksNiArMjQ3NDksNyBA
QAogCQkJCTA4MTA3NjQ0MTI4Mjg1NTYwMDdDNjNCQSAvKiBTVkdMaXN0UHJvcGVydHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA4OEEwRTA5MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdMaXN0UHJvcGVy
dHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E0MTBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHTG9jYXRhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRkRCQzA0NzE4M0QyN0I3MDA0
MDcxMDkgLyogTGluZVdpZHRoLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzY3MDhFRTEyRDlDQTRC
MDAwNDQyMzQgLyogU1ZHTWFya2VyRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBNDQw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR01hcmtlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyMjI3QTQ3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNYXNrRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNTIxMSw3ICsyNTIxMiw2IEBACiAJCQkJQkUxNkM1OTMxN0NGRTE3MjAwODUyQzA0
IC8qIEluYmFuZEdlbmVyaWNUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJFMTZDNTk1
MTdDRkUxNzIwMDg1MkMwNCAvKiBJbmJhbmRXZWJWVFRUZXh0VHJhY2suaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMTBENzY4MTdEOEVFNzEwMDVFMjYyNiAvKiBSZW5kZXJCbG9ja0Zsb3cuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUEwQ0IwMDI1MTdERjgyNkMwMDE3ODk2QiAvKiBMaW5lV2lkdGguaCBp
biBIZWFkZXJzICovLAogCQkJCUNEM0UyNTFDMTgwNDZCMDYwMEUyN0Y1NiAvKiBHcmlkQ29vcmRp
bmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzRTI1MjQxODA0NkJDRDAwRTI3RjU2IC8qIENT
U0dyaWRUZW1wbGF0ZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREVGNEZENzE3RTg1QzhG
MDBBRUUyNEIgLyogR3JpZExlbmd0aC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODEwMSw2ICsyODEw
MSw3IEBACiAJCQkJQTc2OUU5NkExNjY4OUQwQzAwNUQ0NTI5IC8qIFVzZXJBY3Rpb25FbGVtZW50
U2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1REYzMjYxMDlEMUUxOTkwMDBCRTMyNSAvKiBV
c2VyQWdlbnRTdHlsZVNoZWV0c0RhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBQ0YzQkMx
MDcyOTIxQTAwQzBDOEEzIC8qIFVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlGRkRCQzA0ODE4M0QyN0I3MDA0MDcxMDkgLyogTGluZVdpZHRoLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTI1NDJGNERBMTE2NkMyNUEwMEU4OUE4NiAvKiBVc2VyR2VzdHVyZUluZGlj
YXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0RGMzE3QjExRjhENjgzMDAzQzVCRjggLyog
VXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUZBRkJG
MTgxNUE1RkE2RTAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLApAQCAt
MjgyODgsNyArMjgyODksNiBAQAogCQkJCUJFMTZDNTkyMTdDRkUxNzIwMDg1MkMwNCAvKiBJbmJh
bmRHZW5lcmljVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFMTZDNTk0MTdDRkUx
NzIwMDg1MkMwNCAvKiBJbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkMxMEQ3NjcxN0Q4RUU2RTAwNUUyNjI2IC8qIFJlbmRlckJsb2NrRmxvdy5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQlBMENCMDAyNDE3REY4MjY2MDAxNzg5NkIgLyogTGluZVdpZHRoLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUNEM0UyNTIzMTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVt
cGxhdGVWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREU3RkM0NDE4MTkwNEIxMDAyQkJC
NzcgLyogT3JkZXJJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGluZVdpZHRoLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9MaW5lV2lkdGguY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1
NDE4YTQwLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MaW5lV2lkdGgu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQotICogICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcKLSAqICAgIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lciBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCi0gKiAgICBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTCi0gKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRQotICogQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAotICogSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
LSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKQotICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAotICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAotICog
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJMaW5lV2lkdGguaCIKLQotI2luY2x1ZGUgIlJlbmRlckJsb2NrRmxv
dy5oIgotI2luY2x1ZGUgIlJlbmRlclJ1YnlSdW4uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1MaW5lV2lkdGg6OkxpbmVXaWR0aChSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrLCBib29sIGlzRmly
c3RMaW5lLCBJbmRlbnRUZXh0T3JOb3Qgc2hvdWxkSW5kZW50VGV4dCkKLSAgICA6IG1fYmxvY2so
YmxvY2spCi0gICAgLCBtX3VuY29tbWl0dGVkV2lkdGgoMCkKLSAgICAsIG1fY29tbWl0dGVkV2lk
dGgoMCkKLSAgICAsIG1fb3ZlcmhhbmdXaWR0aCgwKQotICAgICwgbV90cmFpbGluZ1doaXRlc3Bh
Y2VXaWR0aCgwKQotICAgICwgbV90cmFpbGluZ0NvbGxhcHNlZFdoaXRlc3BhY2VXaWR0aCgwKQot
ICAgICwgbV9sZWZ0KDApCi0gICAgLCBtX3JpZ2h0KDApCi0gICAgLCBtX2F2YWlsYWJsZVdpZHRo
KDApCi0jaWYgRU5BQkxFKENTU19TSEFQRVMpCi0gICAgLCBtX3NlZ21lbnQoMCkKLSNlbmRpZgot
ICAgICwgbV9pc0ZpcnN0TGluZShpc0ZpcnN0TGluZSkKLSAgICAsIG1fc2hvdWxkSW5kZW50VGV4
dChzaG91bGRJbmRlbnRUZXh0KQotewotI2lmIEVOQUJMRShDU1NfU0hBUEVTKQotICAgIHVwZGF0
ZUN1cnJlbnRTaGFwZVNlZ21lbnQoKTsKLSNlbmRpZgotICAgIHVwZGF0ZUF2YWlsYWJsZVdpZHRo
KCk7Ci19Ci0KLWJvb2wgTGluZVdpZHRoOjpmaXRzT25MaW5lKGJvb2wgaWdub3JpbmdUcmFpbGlu
Z1NwYWNlKSBjb25zdAotewotICAgIHJldHVybiBpZ25vcmluZ1RyYWlsaW5nU3BhY2UgPyBmaXRz
T25MaW5lRXhjbHVkaW5nVHJhaWxpbmdDb2xsYXBzZWRXaGl0ZXNwYWNlKCkgOiBmaXRzT25MaW5l
SW5jbHVkaW5nRXh0cmFXaWR0aCgwKTsKLX0KLQotYm9vbCBMaW5lV2lkdGg6OmZpdHNPbkxpbmVJ
bmNsdWRpbmdFeHRyYVdpZHRoKGZsb2F0IGV4dHJhKSBjb25zdAotewotICAgIHJldHVybiBjdXJy
ZW50V2lkdGgoKSArIGV4dHJhIDw9IG1fYXZhaWxhYmxlV2lkdGg7Ci19Ci0KLWJvb2wgTGluZVdp
ZHRoOjpmaXRzT25MaW5lRXhjbHVkaW5nVHJhaWxpbmdXaGl0ZXNwYWNlKGZsb2F0IGV4dHJhKSBj
b25zdAotewotICAgIHJldHVybiBjdXJyZW50V2lkdGgoKSAtIG1fdHJhaWxpbmdXaGl0ZXNwYWNl
V2lkdGggKyBleHRyYSA8PSBtX2F2YWlsYWJsZVdpZHRoOwotfQotCi12b2lkIExpbmVXaWR0aDo6
dXBkYXRlQXZhaWxhYmxlV2lkdGgoTGF5b3V0VW5pdCByZXBsYWNlZEhlaWdodCkKLXsKLSAgICBM
YXlvdXRVbml0IGhlaWdodCA9IG1fYmxvY2subG9naWNhbEhlaWdodCgpOwotICAgIExheW91dFVu
aXQgbG9naWNhbEhlaWdodCA9IG1fYmxvY2subWluTGluZUhlaWdodEZvclJlcGxhY2VkUmVuZGVy
ZXIobV9pc0ZpcnN0TGluZSwgcmVwbGFjZWRIZWlnaHQpOwotICAgIG1fbGVmdCA9IG1fYmxvY2su
bG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKGhlaWdodCwgc2hvdWxkSW5kZW50VGV4dCgpLCBsb2dp
Y2FsSGVpZ2h0KTsKLSAgICBtX3JpZ2h0ID0gbV9ibG9jay5sb2dpY2FsUmlnaHRPZmZzZXRGb3JM
aW5lKGhlaWdodCwgc2hvdWxkSW5kZW50VGV4dCgpLCBsb2dpY2FsSGVpZ2h0KTsKLQotI2lmIEVO
QUJMRShDU1NfU0hBUEVTKQotICAgIGlmIChtX3NlZ21lbnQpIHsKLSAgICAgICAgbV9sZWZ0ID0g
c3RkOjptYXg8ZmxvYXQ+KG1fc2VnbWVudC0+bG9naWNhbExlZnQsIG1fbGVmdCk7Ci0gICAgICAg
IG1fcmlnaHQgPSBzdGQ6Om1pbjxmbG9hdD4obV9zZWdtZW50LT5sb2dpY2FsUmlnaHQsIG1fcmln
aHQpOwotICAgIH0KLSNlbmRpZgotCi0gICAgY29tcHV0ZUF2YWlsYWJsZVdpZHRoRnJvbUxlZnRB
bmRSaWdodCgpOwotfQotCi12b2lkIExpbmVXaWR0aDo6c2hyaW5rQXZhaWxhYmxlV2lkdGhGb3JO
ZXdGbG9hdElmTmVlZGVkKEZsb2F0aW5nT2JqZWN0KiBuZXdGbG9hdCkKLXsKLSAgICBMYXlvdXRV
bml0IGhlaWdodCA9IG1fYmxvY2subG9naWNhbEhlaWdodCgpOwotICAgIGlmIChoZWlnaHQgPCBt
X2Jsb2NrLmxvZ2ljYWxUb3BGb3JGbG9hdChuZXdGbG9hdCkgfHwgaGVpZ2h0ID49IG1fYmxvY2su
bG9naWNhbEJvdHRvbUZvckZsb2F0KG5ld0Zsb2F0KSkKLSAgICAgICAgcmV0dXJuOwotCi0jaWYg
RU5BQkxFKENTU19TSEFQRVMpCi0gICAgLy8gV2hlbiBmbG9hdHMgd2l0aCBzaGFwZSBvdXRzaWRl
IGFyZSBzdGFja2VkLCB0aGUgZmxvYXRzIGFyZSBwb3NpdGlvbmVkIGJhc2VkIG9uIHRoZSBtYXJn
aW4gYm94IG9mIHRoZSBmbG9hdCwKLSAgICAvLyBub3QgdGhlIHNoYXBlJ3MgY29udG91ci4gU2lu
Y2Ugd2UgY29tcHV0ZWQgdGhlIHdpZHRoIGJhc2VkIG9uIHRoZSBzaGFwZSBjb250b3VyIHdoZW4g
d2UgYWRkZWQgdGhlIGZsb2F0LAotICAgIC8vIHdoZW4gd2UgYWRkIGEgc3Vic2VxdWVudCBmbG9h
dCBvbiB0aGUgc2FtZSBsaW5lLCB3ZSBuZWVkIHRvIHVuZG8gdGhlIHNoYXBlIGRlbHRhIGluIG9y
ZGVyIHRvIHBvc2l0aW9uCi0gICAgLy8gYmFzZWQgb24gdGhlIG1hcmdpbiBib3guIEluIG9yZGVy
IHRvIGRvIHRoaXMsIHdlIG5lZWQgdG8gd2FsayBiYWNrIHRocm91Z2ggdGhlIGZsb2F0aW5nIG9i
amVjdCBsaXN0IHRvIGZpbmQKLSAgICAvLyB0aGUgZmlyc3QgcHJldmlvdXMgZmxvYXQgdGhhdCBp
cyBvbiB0aGUgc2FtZSBzaWRlIGFzIG91ciBuZXdGbG9hdC4KLSAgICBTaGFwZU91dHNpZGVJbmZv
KiBwcmV2aW91c1NoYXBlT3V0c2lkZUluZm8gPSAwOwotICAgIGNvbnN0IEZsb2F0aW5nT2JqZWN0
U2V0JiBmbG9hdGluZ09iamVjdFNldCA9IG1fYmxvY2subV9mbG9hdGluZ09iamVjdHMtPnNldCgp
OwotICAgIGF1dG8gaXQgPSBmbG9hdGluZ09iamVjdFNldC5lbmQoKTsKLSAgICBhdXRvIGJlZ2lu
ID0gZmxvYXRpbmdPYmplY3RTZXQuYmVnaW4oKTsKLSAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQg
PSBtX2Jsb2NrLmxpbmVIZWlnaHQobV9pc0ZpcnN0TGluZSwgbV9ibG9jay5pc0hvcml6b250YWxX
cml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJ
bnRlcmlvckxpbmVCb3hlcyk7Ci0gICAgZm9yICgtLWl0OyBpdCAhPSBiZWdpbjsgLS1pdCkgewot
ICAgICAgICBGbG9hdGluZ09iamVjdCogcHJldmlvdXNGbG9hdCA9IGl0LT5nZXQoKTsKLSAgICAg
ICAgaWYgKHByZXZpb3VzRmxvYXQgIT0gbmV3RmxvYXQgJiYgcHJldmlvdXNGbG9hdC0+dHlwZSgp
ID09IG5ld0Zsb2F0LT50eXBlKCkpIHsKLSAgICAgICAgICAgIHByZXZpb3VzU2hhcGVPdXRzaWRl
SW5mbyA9IHByZXZpb3VzRmxvYXQtPnJlbmRlcmVyKCkuc2hhcGVPdXRzaWRlSW5mbygpOwotICAg
ICAgICAgICAgaWYgKHByZXZpb3VzU2hhcGVPdXRzaWRlSW5mbykKLSAgICAgICAgICAgICAgICBw
cmV2aW91c1NoYXBlT3V0c2lkZUluZm8tPnVwZGF0ZURlbHRhc0ZvckNvbnRhaW5pbmdCbG9ja0xp
bmUoJm1fYmxvY2ssIHByZXZpb3VzRmxvYXQsIG1fYmxvY2subG9naWNhbEhlaWdodCgpLCBsaW5l
SGVpZ2h0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgU2hh
cGVPdXRzaWRlSW5mbyogc2hhcGVPdXRzaWRlSW5mbyA9IG5ld0Zsb2F0LT5yZW5kZXJlcigpLnNo
YXBlT3V0c2lkZUluZm8oKTsKLSAgICBpZiAoc2hhcGVPdXRzaWRlSW5mbykKLSAgICAgICAgc2hh
cGVPdXRzaWRlSW5mby0+dXBkYXRlRGVsdGFzRm9yQ29udGFpbmluZ0Jsb2NrTGluZSgmbV9ibG9j
aywgbmV3RmxvYXQsIG1fYmxvY2subG9naWNhbEhlaWdodCgpLCBsaW5lSGVpZ2h0KTsKLSNlbmRp
ZgotCi0gICAgaWYgKG5ld0Zsb2F0LT50eXBlKCkgPT0gRmxvYXRpbmdPYmplY3Q6OkZsb2F0TGVm
dCkgewotICAgICAgICBmbG9hdCBuZXdMZWZ0ID0gbV9ibG9jay5sb2dpY2FsUmlnaHRGb3JGbG9h
dChuZXdGbG9hdCk7Ci0jaWYgRU5BQkxFKENTU19TSEFQRVMpCi0gICAgICAgIGlmIChwcmV2aW91
c1NoYXBlT3V0c2lkZUluZm8pCi0gICAgICAgICAgICBuZXdMZWZ0IC09IHByZXZpb3VzU2hhcGVP
dXRzaWRlSW5mby0+cmlnaHRNYXJnaW5Cb3hEZWx0YSgpOwotICAgICAgICBpZiAoc2hhcGVPdXRz
aWRlSW5mbykKLSAgICAgICAgICAgIG5ld0xlZnQgKz0gc2hhcGVPdXRzaWRlSW5mby0+cmlnaHRN
YXJnaW5Cb3hEZWx0YSgpOwotI2VuZGlmCi0KLSAgICAgICAgaWYgKHNob3VsZEluZGVudFRleHQo
KSAmJiBtX2Jsb2NrLnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQotICAgICAgICAg
ICAgbmV3TGVmdCArPSBmbG9vclRvSW50KG1fYmxvY2sudGV4dEluZGVudE9mZnNldCgpKTsKLSAg
ICAgICAgbV9sZWZ0ID0gc3RkOjptYXg8ZmxvYXQ+KG1fbGVmdCwgbmV3TGVmdCk7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgZmxvYXQgbmV3UmlnaHQgPSBtX2Jsb2NrLmxvZ2ljYWxMZWZ0Rm9yRmxv
YXQobmV3RmxvYXQpOwotI2lmIEVOQUJMRShDU1NfU0hBUEVTKQotICAgICAgICBpZiAocHJldmlv
dXNTaGFwZU91dHNpZGVJbmZvKQotICAgICAgICAgICAgbmV3UmlnaHQgLT0gcHJldmlvdXNTaGFw
ZU91dHNpZGVJbmZvLT5sZWZ0TWFyZ2luQm94RGVsdGEoKTsKLSAgICAgICAgaWYgKHNoYXBlT3V0
c2lkZUluZm8pCi0gICAgICAgICAgICBuZXdSaWdodCArPSBzaGFwZU91dHNpZGVJbmZvLT5sZWZ0
TWFyZ2luQm94RGVsdGEoKTsKLSNlbmRpZgotCi0gICAgICAgIGlmIChzaG91bGRJbmRlbnRUZXh0
KCkgJiYgIW1fYmxvY2suc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCi0gICAgICAg
ICAgICBuZXdSaWdodCAtPSBmbG9vclRvSW50KG1fYmxvY2sudGV4dEluZGVudE9mZnNldCgpKTsK
LSAgICAgICAgbV9yaWdodCA9IHN0ZDo6bWluPGZsb2F0PihtX3JpZ2h0LCBuZXdSaWdodCk7Ci0g
ICAgfQotCi0gICAgY29tcHV0ZUF2YWlsYWJsZVdpZHRoRnJvbUxlZnRBbmRSaWdodCgpOwotfQot
Ci12b2lkIExpbmVXaWR0aDo6Y29tbWl0KCkKLXsKLSAgICBtX2NvbW1pdHRlZFdpZHRoICs9IG1f
dW5jb21taXR0ZWRXaWR0aDsKLSAgICBtX3VuY29tbWl0dGVkV2lkdGggPSAwOwotfQotCi12b2lk
IExpbmVXaWR0aDo6YXBwbHlPdmVyaGFuZyhSZW5kZXJSdWJ5UnVuKiBydWJ5UnVuLCBSZW5kZXJP
YmplY3QqIHN0YXJ0UmVuZGVyZXIsIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIpCi17Ci0gICAg
aW50IHN0YXJ0T3Zlcmhhbmc7Ci0gICAgaW50IGVuZE92ZXJoYW5nOwotICAgIHJ1YnlSdW4tPmdl
dE92ZXJoYW5nKG1faXNGaXJzdExpbmUsIHN0YXJ0UmVuZGVyZXIsIGVuZFJlbmRlcmVyLCBzdGFy
dE92ZXJoYW5nLCBlbmRPdmVyaGFuZyk7Ci0KLSAgICBzdGFydE92ZXJoYW5nID0gc3RkOjptaW48
aW50PihzdGFydE92ZXJoYW5nLCBtX2NvbW1pdHRlZFdpZHRoKTsKLSAgICBtX2F2YWlsYWJsZVdp
ZHRoICs9IHN0YXJ0T3Zlcmhhbmc7Ci0KLSAgICBlbmRPdmVyaGFuZyA9IHN0ZDo6bWF4KHN0ZDo6
bWluPGludD4oZW5kT3ZlcmhhbmcsIG1fYXZhaWxhYmxlV2lkdGggLSBjdXJyZW50V2lkdGgoKSks
IDApOwotICAgIG1fYXZhaWxhYmxlV2lkdGggKz0gZW5kT3Zlcmhhbmc7Ci0gICAgbV9vdmVyaGFu
Z1dpZHRoICs9IHN0YXJ0T3ZlcmhhbmcgKyBlbmRPdmVyaGFuZzsKLX0KLQotdm9pZCBMaW5lV2lk
dGg6OmZpdEJlbG93RmxvYXRzKCkKLXsKLSAgICBBU1NFUlQoIW1fY29tbWl0dGVkV2lkdGgpOwot
ICAgIEFTU0VSVCghZml0c09uTGluZSgpKTsKLQotICAgIExheW91dFVuaXQgZmxvYXRMb2dpY2Fs
Qm90dG9tOwotICAgIExheW91dFVuaXQgbGFzdEZsb2F0TG9naWNhbEJvdHRvbSA9IG1fYmxvY2su
bG9naWNhbEhlaWdodCgpOwotICAgIGZsb2F0IG5ld0xpbmVXaWR0aCA9IG1fYXZhaWxhYmxlV2lk
dGg7Ci0gICAgZmxvYXQgbmV3TGluZUxlZnQgPSBtX2xlZnQ7Ci0gICAgZmxvYXQgbmV3TGluZVJp
Z2h0ID0gbV9yaWdodDsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBmbG9hdExvZ2ljYWxC
b3R0b20gPSBtX2Jsb2NrLm5leHRGbG9hdExvZ2ljYWxCb3R0b21CZWxvdyhsYXN0RmxvYXRMb2dp
Y2FsQm90dG9tKTsKLSAgICAgICAgaWYgKGZsb2F0TG9naWNhbEJvdHRvbSA8PSBsYXN0RmxvYXRM
b2dpY2FsQm90dG9tKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgbmV3TGluZUxlZnQg
PSBtX2Jsb2NrLmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShmbG9hdExvZ2ljYWxCb3R0b20sIHNo
b3VsZEluZGVudFRleHQoKSk7Ci0gICAgICAgIG5ld0xpbmVSaWdodCA9IG1fYmxvY2subG9naWNh
bFJpZ2h0T2Zmc2V0Rm9yTGluZShmbG9hdExvZ2ljYWxCb3R0b20sIHNob3VsZEluZGVudFRleHQo
KSk7Ci0gICAgICAgIG5ld0xpbmVXaWR0aCA9IHN0ZDo6bWF4KDAuMGYsIG5ld0xpbmVSaWdodCAt
IG5ld0xpbmVMZWZ0KTsKLSAgICAgICAgbGFzdEZsb2F0TG9naWNhbEJvdHRvbSA9IGZsb2F0TG9n
aWNhbEJvdHRvbTsKLQotI2lmIEVOQUJMRShDU1NfU0hBUEVTKQotICAgICAgICAvLyBGSVhNRTog
VGhpcyBjb2RlIHNob3VsZCBiZSByZWZhY3RvcmVkIHRvIGluY29ycG9yYXRlIHdpdGggdGhlIGNv
ZGUgYWJvdmUuCi0gICAgICAgIFNoYXBlSW5zaWRlSW5mbyogc2hhcGVJbnNpZGVJbmZvID0gbV9i
bG9jay5sYXlvdXRTaGFwZUluc2lkZUluZm8oKTsKLSAgICAgICAgaWYgKHNoYXBlSW5zaWRlSW5m
bykgewotICAgICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsT2Zmc2V0RnJvbVNoYXBlQ29udGFp
bmVyID0gbV9ibG9jay5sb2dpY2FsT2Zmc2V0RnJvbVNoYXBlQW5jZXN0b3JDb250YWluZXIoc2hh
cGVJbnNpZGVJbmZvLT5vd25lcigpKS5oZWlnaHQoKTsKLSAgICAgICAgICAgIExheW91dFVuaXQg
bGluZUhlaWdodCA9IG1fYmxvY2subGluZUhlaWdodChmYWxzZSwgbV9ibG9jay5pc0hvcml6b250
YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9u
T2ZJbnRlcmlvckxpbmVCb3hlcyk7Ci0gICAgICAgICAgICBzaGFwZUluc2lkZUluZm8tPnVwZGF0
ZVNlZ21lbnRzRm9yTGluZShsYXN0RmxvYXRMb2dpY2FsQm90dG9tICsgbG9naWNhbE9mZnNldEZy
b21TaGFwZUNvbnRhaW5lciwgbGluZUhlaWdodCk7Ci0gICAgICAgICAgICB1cGRhdGVDdXJyZW50
U2hhcGVTZWdtZW50KCk7Ci0gICAgICAgICAgICB1cGRhdGVBdmFpbGFibGVXaWR0aCgpOwotICAg
ICAgICB9Ci0jZW5kaWYKLSAgICAgICAgaWYgKG5ld0xpbmVXaWR0aCA+PSBtX3VuY29tbWl0dGVk
V2lkdGgpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBpZiAobmV3TGluZVdpZHRo
ID4gbV9hdmFpbGFibGVXaWR0aCkgewotICAgICAgICBtX2Jsb2NrLnNldExvZ2ljYWxIZWlnaHQo
bGFzdEZsb2F0TG9naWNhbEJvdHRvbSk7Ci0gICAgICAgIG1fYXZhaWxhYmxlV2lkdGggPSBuZXdM
aW5lV2lkdGggKyBtX292ZXJoYW5nV2lkdGg7Ci0gICAgICAgIG1fbGVmdCA9IG5ld0xpbmVMZWZ0
OwotICAgICAgICBtX3JpZ2h0ID0gbmV3TGluZVJpZ2h0OwotICAgIH0KLX0KLQotdm9pZCBMaW5l
V2lkdGg6OnNldFRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoKGZsb2F0IGNvbGxhcHNlZFdoaXRlc3Bh
Y2UsIGZsb2F0IGJvcmRlclBhZGRpbmdNYXJnaW4pCi17Ci0gICAgbV90cmFpbGluZ0NvbGxhcHNl
ZFdoaXRlc3BhY2VXaWR0aCA9IGNvbGxhcHNlZFdoaXRlc3BhY2U7Ci0gICAgbV90cmFpbGluZ1do
aXRlc3BhY2VXaWR0aCA9IGNvbGxhcHNlZFdoaXRlc3BhY2UgKyBib3JkZXJQYWRkaW5nTWFyZ2lu
OwotfQotCi0jaWYgRU5BQkxFKENTU19TSEFQRVMpCi12b2lkIExpbmVXaWR0aDo6dXBkYXRlQ3Vy
cmVudFNoYXBlU2VnbWVudCgpCi17Ci0gICAgaWYgKFNoYXBlSW5zaWRlSW5mbyogc2hhcGVJbnNp
ZGVJbmZvID0gbV9ibG9jay5sYXlvdXRTaGFwZUluc2lkZUluZm8oKSkKLSAgICAgICAgbV9zZWdt
ZW50ID0gc2hhcGVJbnNpZGVJbmZvLT5jdXJyZW50U2VnbWVudCgpOwotfQotI2VuZGlmCi0KLXZv
aWQgTGluZVdpZHRoOjpjb21wdXRlQXZhaWxhYmxlV2lkdGhGcm9tTGVmdEFuZFJpZ2h0KCkKLXsK
LSAgICBtX2F2YWlsYWJsZVdpZHRoID0gc3RkOjptYXg8ZmxvYXQ+KDAsIG1fcmlnaHQgLSBtX2xl
ZnQpICsgbV9vdmVyaGFuZ1dpZHRoOwotfQotCi1ib29sIExpbmVXaWR0aDo6Zml0c09uTGluZUV4
Y2x1ZGluZ1RyYWlsaW5nQ29sbGFwc2VkV2hpdGVzcGFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IGN1cnJlbnRXaWR0aCgpIC0gbV90cmFpbGluZ0NvbGxhcHNlZFdoaXRlc3BhY2VXaWR0aCA8PSBt
X2F2YWlsYWJsZVdpZHRoOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvTGluZVdpZHRoLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGluZVdpZHRoLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3NTIyY2YuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVXaWR0aC5oCisrKyAvZGV2L251bGwKQEAgLTEsOTYg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9y
YXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMKLSAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MKLSAqIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi0gKiBD
T1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
Ci0gKiBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0gKiBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
Ci0gKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECi0gKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBMaW5lV2lkdGhfaAotI2RlZmluZSBMaW5lV2lkdGhfaAot
Ci0jaW5jbHVkZSAiTGF5b3V0VW5pdC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IEZsb2F0aW5nT2JqZWN0OwotY2xhc3MgUmVuZGVyQmxvY2tGbG93OwotY2xhc3MgUmVuZGVyT2Jq
ZWN0OwotY2xhc3MgUmVuZGVyUnVieVJ1bjsKLQotc3RydWN0IExpbmVTZWdtZW50OwotCi1lbnVt
IEluZGVudFRleHRPck5vdCB7IERvTm90SW5kZW50VGV4dCwgSW5kZW50VGV4dCB9OwotCi1jbGFz
cyBMaW5lV2lkdGggewotcHVibGljOgotICAgIExpbmVXaWR0aChSZW5kZXJCbG9ja0Zsb3cmLCBi
b29sIGlzRmlyc3RMaW5lLCBJbmRlbnRUZXh0T3JOb3Qgc2hvdWxkSW5kZW50VGV4dCk7Ci0KLSAg
ICBib29sIGZpdHNPbkxpbmUoYm9vbCBpZ25vcmluZ1RyYWlsaW5nU3BhY2UgPSBmYWxzZSkgY29u
c3Q7Ci0gICAgYm9vbCBmaXRzT25MaW5lSW5jbHVkaW5nRXh0cmFXaWR0aChmbG9hdCBleHRyYSkg
Y29uc3Q7Ci0gICAgYm9vbCBmaXRzT25MaW5lRXhjbHVkaW5nVHJhaWxpbmdXaGl0ZXNwYWNlKGZs
b2F0IGV4dHJhKSBjb25zdDsKLQotICAgIGZsb2F0IGN1cnJlbnRXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29tbWl0dGVkV2lkdGggKyBtX3VuY29tbWl0dGVkV2lkdGg7IH0KLSAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGV2ZW50dWFsbHkgcmVwbGFjZSB0aGVzZSB0aHJlZSBmdW5jdGlvbnMgYnkg
b25lcyB0aGF0IHdvcmsgb24gYSBoaWdoZXIgYWJzdHJhY3Rpb24uCi0gICAgZmxvYXQgdW5jb21t
aXR0ZWRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5jb21taXR0ZWRXaWR0aDsgfQotICAgIGZs
b2F0IGNvbW1pdHRlZFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9jb21taXR0ZWRXaWR0aDsgfQot
ICAgIGZsb2F0IGF2YWlsYWJsZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9hdmFpbGFibGVXaWR0
aDsgfQotCi0gICAgdm9pZCB1cGRhdGVBdmFpbGFibGVXaWR0aChMYXlvdXRVbml0IG1pbmltdW1I
ZWlnaHQgPSAwKTsKLSAgICB2b2lkIHNocmlua0F2YWlsYWJsZVdpZHRoRm9yTmV3RmxvYXRJZk5l
ZWRlZChGbG9hdGluZ09iamVjdCopOwotICAgIHZvaWQgYWRkVW5jb21taXR0ZWRXaWR0aChmbG9h
dCBkZWx0YSkgeyBtX3VuY29tbWl0dGVkV2lkdGggKz0gZGVsdGE7IH0KLSAgICB2b2lkIGNvbW1p
dCgpOwotICAgIHZvaWQgYXBwbHlPdmVyaGFuZyhSZW5kZXJSdWJ5UnVuKiwgUmVuZGVyT2JqZWN0
KiBzdGFydFJlbmRlcmVyLCBSZW5kZXJPYmplY3QqIGVuZFJlbmRlcmVyKTsKLSAgICB2b2lkIGZp
dEJlbG93RmxvYXRzKCk7Ci0gICAgdm9pZCBzZXRUcmFpbGluZ1doaXRlc3BhY2VXaWR0aChmbG9h
dCBjb2xsYXBzZWRXaGl0ZXNwYWNlLCBmbG9hdCBib3JkZXJQYWRkaW5nTWFyZ2luID0gMCk7Ci0K
LSNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLSAgICB2b2lkIHVwZGF0ZUN1cnJlbnRTaGFwZVNlZ21l
bnQoKTsKLSNlbmRpZgotCi0gICAgYm9vbCBzaG91bGRJbmRlbnRUZXh0KCkgY29uc3QgeyByZXR1
cm4gbV9zaG91bGRJbmRlbnRUZXh0ID09IEluZGVudFRleHQ7IH0KLQotcHJpdmF0ZToKLSAgICB2
b2lkIGNvbXB1dGVBdmFpbGFibGVXaWR0aEZyb21MZWZ0QW5kUmlnaHQoKTsKLSAgICBib29sIGZp
dHNPbkxpbmVFeGNsdWRpbmdUcmFpbGluZ0NvbGxhcHNlZFdoaXRlc3BhY2UoKSBjb25zdDsKLQot
ICAgIFJlbmRlckJsb2NrRmxvdyYgbV9ibG9jazsKLSAgICBmbG9hdCBtX3VuY29tbWl0dGVkV2lk
dGg7Ci0gICAgZmxvYXQgbV9jb21taXR0ZWRXaWR0aDsKLSAgICBmbG9hdCBtX292ZXJoYW5nV2lk
dGg7IC8vIFRoZSBhbW91bnQgYnkgd2hpY2ggfG1fYXZhaWxhYmxlV2lkdGh8IGhhcyBiZWVuIGlu
ZmxhdGVkIHRvIGFjY291bnQgZm9yIHBvc3NpYmxlIGNvbnRyYWN0aW9uIGR1ZSB0byBydWJ5IG92
ZXJoYW5nLgotICAgIGZsb2F0IG1fdHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGg7Ci0gICAgZmxvYXQg
bV90cmFpbGluZ0NvbGxhcHNlZFdoaXRlc3BhY2VXaWR0aDsKLSAgICBmbG9hdCBtX2xlZnQ7Ci0g
ICAgZmxvYXQgbV9yaWdodDsKLSAgICBmbG9hdCBtX2F2YWlsYWJsZVdpZHRoOwotI2lmIEVOQUJM
RShDU1NfU0hBUEVTKQotICAgIGNvbnN0IExpbmVTZWdtZW50KiBtX3NlZ21lbnQ7Ci0jZW5kaWYK
LSAgICBib29sIG1faXNGaXJzdExpbmU7Ci0gICAgSW5kZW50VGV4dE9yTm90IG1fc2hvdWxkSW5k
ZW50VGV4dDsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIExpbmVXaWR0aF9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lV2lkdGguY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi41NDE4YTQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcApAQCAtMCwwICsxLDI0MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
CisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNj
bGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAg
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MKKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBDT1BZUklHSFQgSE9MREVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCisgKiBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisgKiBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VECisgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpbmVXaWR0aC5oIgorCisjaW5jbHVkZSAiUmVuZGVy
QmxvY2tGbG93LmgiCisjaW5jbHVkZSAiUmVuZGVyUnVieVJ1bi5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0xpbmVXaWR0aDo6TGluZVdpZHRoKFJlbmRlckJsb2NrRmxvdyYgYmxvY2ssIGJv
b2wgaXNGaXJzdExpbmUsIEluZGVudFRleHRPck5vdCBzaG91bGRJbmRlbnRUZXh0KQorICAgIDog
bV9ibG9jayhibG9jaykKKyAgICAsIG1fdW5jb21taXR0ZWRXaWR0aCgwKQorICAgICwgbV9jb21t
aXR0ZWRXaWR0aCgwKQorICAgICwgbV9vdmVyaGFuZ1dpZHRoKDApCisgICAgLCBtX3RyYWlsaW5n
V2hpdGVzcGFjZVdpZHRoKDApCisgICAgLCBtX3RyYWlsaW5nQ29sbGFwc2VkV2hpdGVzcGFjZVdp
ZHRoKDApCisgICAgLCBtX2xlZnQoMCkKKyAgICAsIG1fcmlnaHQoMCkKKyAgICAsIG1fYXZhaWxh
YmxlV2lkdGgoMCkKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKKyAgICAsIG1fc2VnbWVudCgwKQor
I2VuZGlmCisgICAgLCBtX2lzRmlyc3RMaW5lKGlzRmlyc3RMaW5lKQorICAgICwgbV9zaG91bGRJ
bmRlbnRUZXh0KHNob3VsZEluZGVudFRleHQpCit7CisjaWYgRU5BQkxFKENTU19TSEFQRVMpCisg
ICAgdXBkYXRlQ3VycmVudFNoYXBlU2VnbWVudCgpOworI2VuZGlmCisgICAgdXBkYXRlQXZhaWxh
YmxlV2lkdGgoKTsKK30KKworYm9vbCBMaW5lV2lkdGg6OmZpdHNPbkxpbmUoYm9vbCBpZ25vcmlu
Z1RyYWlsaW5nU3BhY2UpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlnbm9yaW5nVHJhaWxpbmdTcGFj
ZSA/IGZpdHNPbkxpbmVFeGNsdWRpbmdUcmFpbGluZ0NvbGxhcHNlZFdoaXRlc3BhY2UoKSA6IGZp
dHNPbkxpbmVJbmNsdWRpbmdFeHRyYVdpZHRoKDApOworfQorCitib29sIExpbmVXaWR0aDo6Zml0
c09uTGluZUluY2x1ZGluZ0V4dHJhV2lkdGgoZmxvYXQgZXh0cmEpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGN1cnJlbnRXaWR0aCgpICsgZXh0cmEgPD0gbV9hdmFpbGFibGVXaWR0aDsKK30KKworYm9v
bCBMaW5lV2lkdGg6OmZpdHNPbkxpbmVFeGNsdWRpbmdUcmFpbGluZ1doaXRlc3BhY2UoZmxvYXQg
ZXh0cmEpIGNvbnN0Cit7CisgICAgcmV0dXJuIGN1cnJlbnRXaWR0aCgpIC0gbV90cmFpbGluZ1do
aXRlc3BhY2VXaWR0aCArIGV4dHJhIDw9IG1fYXZhaWxhYmxlV2lkdGg7Cit9CisKK3ZvaWQgTGlu
ZVdpZHRoOjp1cGRhdGVBdmFpbGFibGVXaWR0aChMYXlvdXRVbml0IHJlcGxhY2VkSGVpZ2h0KQor
eworICAgIExheW91dFVuaXQgaGVpZ2h0ID0gbV9ibG9jay5sb2dpY2FsSGVpZ2h0KCk7CisgICAg
TGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0ID0gbV9ibG9jay5taW5MaW5lSGVpZ2h0Rm9yUmVwbGFj
ZWRSZW5kZXJlcihtX2lzRmlyc3RMaW5lLCByZXBsYWNlZEhlaWdodCk7CisgICAgbV9sZWZ0ID0g
bV9ibG9jay5sb2dpY2FsTGVmdE9mZnNldEZvckxpbmUoaGVpZ2h0LCBzaG91bGRJbmRlbnRUZXh0
KCksIGxvZ2ljYWxIZWlnaHQpOworICAgIG1fcmlnaHQgPSBtX2Jsb2NrLmxvZ2ljYWxSaWdodE9m
ZnNldEZvckxpbmUoaGVpZ2h0LCBzaG91bGRJbmRlbnRUZXh0KCksIGxvZ2ljYWxIZWlnaHQpOwor
CisjaWYgRU5BQkxFKENTU19TSEFQRVMpCisgICAgaWYgKG1fc2VnbWVudCkgeworICAgICAgICBt
X2xlZnQgPSBzdGQ6Om1heDxmbG9hdD4obV9zZWdtZW50LT5sb2dpY2FsTGVmdCwgbV9sZWZ0KTsK
KyAgICAgICAgbV9yaWdodCA9IHN0ZDo6bWluPGZsb2F0PihtX3NlZ21lbnQtPmxvZ2ljYWxSaWdo
dCwgbV9yaWdodCk7CisgICAgfQorI2VuZGlmCisKKyAgICBjb21wdXRlQXZhaWxhYmxlV2lkdGhG
cm9tTGVmdEFuZFJpZ2h0KCk7Cit9CisKK3ZvaWQgTGluZVdpZHRoOjpzaHJpbmtBdmFpbGFibGVX
aWR0aEZvck5ld0Zsb2F0SWZOZWVkZWQoRmxvYXRpbmdPYmplY3QqIG5ld0Zsb2F0KQoreworICAg
IExheW91dFVuaXQgaGVpZ2h0ID0gbV9ibG9jay5sb2dpY2FsSGVpZ2h0KCk7CisgICAgaWYgKGhl
aWdodCA8IG1fYmxvY2subG9naWNhbFRvcEZvckZsb2F0KG5ld0Zsb2F0KSB8fCBoZWlnaHQgPj0g
bV9ibG9jay5sb2dpY2FsQm90dG9tRm9yRmxvYXQobmV3RmxvYXQpKQorICAgICAgICByZXR1cm47
CisKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKKyAgICAvLyBXaGVuIGZsb2F0cyB3aXRoIHNoYXBl
IG91dHNpZGUgYXJlIHN0YWNrZWQsIHRoZSBmbG9hdHMgYXJlIHBvc2l0aW9uZWQgYmFzZWQgb24g
dGhlIG1hcmdpbiBib3ggb2YgdGhlIGZsb2F0LAorICAgIC8vIG5vdCB0aGUgc2hhcGUncyBjb250
b3VyLiBTaW5jZSB3ZSBjb21wdXRlZCB0aGUgd2lkdGggYmFzZWQgb24gdGhlIHNoYXBlIGNvbnRv
dXIgd2hlbiB3ZSBhZGRlZCB0aGUgZmxvYXQsCisgICAgLy8gd2hlbiB3ZSBhZGQgYSBzdWJzZXF1
ZW50IGZsb2F0IG9uIHRoZSBzYW1lIGxpbmUsIHdlIG5lZWQgdG8gdW5kbyB0aGUgc2hhcGUgZGVs
dGEgaW4gb3JkZXIgdG8gcG9zaXRpb24KKyAgICAvLyBiYXNlZCBvbiB0aGUgbWFyZ2luIGJveC4g
SW4gb3JkZXIgdG8gZG8gdGhpcywgd2UgbmVlZCB0byB3YWxrIGJhY2sgdGhyb3VnaCB0aGUgZmxv
YXRpbmcgb2JqZWN0IGxpc3QgdG8gZmluZAorICAgIC8vIHRoZSBmaXJzdCBwcmV2aW91cyBmbG9h
dCB0aGF0IGlzIG9uIHRoZSBzYW1lIHNpZGUgYXMgb3VyIG5ld0Zsb2F0LgorICAgIFNoYXBlT3V0
c2lkZUluZm8qIHByZXZpb3VzU2hhcGVPdXRzaWRlSW5mbyA9IDA7CisgICAgY29uc3QgRmxvYXRp
bmdPYmplY3RTZXQmIGZsb2F0aW5nT2JqZWN0U2V0ID0gbV9ibG9jay5tX2Zsb2F0aW5nT2JqZWN0
cy0+c2V0KCk7CisgICAgYXV0byBpdCA9IGZsb2F0aW5nT2JqZWN0U2V0LmVuZCgpOworICAgIGF1
dG8gYmVnaW4gPSBmbG9hdGluZ09iamVjdFNldC5iZWdpbigpOworICAgIExheW91dFVuaXQgbGlu
ZUhlaWdodCA9IG1fYmxvY2subGluZUhlaWdodChtX2lzRmlyc3RMaW5lLCBtX2Jsb2NrLmlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9z
aXRpb25PZkludGVyaW9yTGluZUJveGVzKTsKKyAgICBmb3IgKC0taXQ7IGl0ICE9IGJlZ2luOyAt
LWl0KSB7CisgICAgICAgIEZsb2F0aW5nT2JqZWN0KiBwcmV2aW91c0Zsb2F0ID0gaXQtPmdldCgp
OworICAgICAgICBpZiAocHJldmlvdXNGbG9hdCAhPSBuZXdGbG9hdCAmJiBwcmV2aW91c0Zsb2F0
LT50eXBlKCkgPT0gbmV3RmxvYXQtPnR5cGUoKSkgeworICAgICAgICAgICAgcHJldmlvdXNTaGFw
ZU91dHNpZGVJbmZvID0gcHJldmlvdXNGbG9hdC0+cmVuZGVyZXIoKS5zaGFwZU91dHNpZGVJbmZv
KCk7CisgICAgICAgICAgICBpZiAocHJldmlvdXNTaGFwZU91dHNpZGVJbmZvKQorICAgICAgICAg
ICAgICAgIHByZXZpb3VzU2hhcGVPdXRzaWRlSW5mby0+dXBkYXRlRGVsdGFzRm9yQ29udGFpbmlu
Z0Jsb2NrTGluZSgmbV9ibG9jaywgcHJldmlvdXNGbG9hdCwgbV9ibG9jay5sb2dpY2FsSGVpZ2h0
KCksIGxpbmVIZWlnaHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBTaGFwZU91dHNpZGVJbmZvKiBzaGFwZU91dHNpZGVJbmZvID0gbmV3RmxvYXQtPnJlbmRl
cmVyKCkuc2hhcGVPdXRzaWRlSW5mbygpOworICAgIGlmIChzaGFwZU91dHNpZGVJbmZvKQorICAg
ICAgICBzaGFwZU91dHNpZGVJbmZvLT51cGRhdGVEZWx0YXNGb3JDb250YWluaW5nQmxvY2tMaW5l
KCZtX2Jsb2NrLCBuZXdGbG9hdCwgbV9ibG9jay5sb2dpY2FsSGVpZ2h0KCksIGxpbmVIZWlnaHQp
OworI2VuZGlmCisKKyAgICBpZiAobmV3RmxvYXQtPnR5cGUoKSA9PSBGbG9hdGluZ09iamVjdDo6
RmxvYXRMZWZ0KSB7CisgICAgICAgIGZsb2F0IG5ld0xlZnQgPSBtX2Jsb2NrLmxvZ2ljYWxSaWdo
dEZvckZsb2F0KG5ld0Zsb2F0KTsKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKKyAgICAgICAgaWYg
KHByZXZpb3VzU2hhcGVPdXRzaWRlSW5mbykKKyAgICAgICAgICAgIG5ld0xlZnQgLT0gcHJldmlv
dXNTaGFwZU91dHNpZGVJbmZvLT5yaWdodE1hcmdpbkJveERlbHRhKCk7CisgICAgICAgIGlmIChz
aGFwZU91dHNpZGVJbmZvKQorICAgICAgICAgICAgbmV3TGVmdCArPSBzaGFwZU91dHNpZGVJbmZv
LT5yaWdodE1hcmdpbkJveERlbHRhKCk7CisjZW5kaWYKKworICAgICAgICBpZiAoc2hvdWxkSW5k
ZW50VGV4dCgpICYmIG1fYmxvY2suc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCisg
ICAgICAgICAgICBuZXdMZWZ0ICs9IGZsb29yVG9JbnQobV9ibG9jay50ZXh0SW5kZW50T2Zmc2V0
KCkpOworICAgICAgICBtX2xlZnQgPSBzdGQ6Om1heDxmbG9hdD4obV9sZWZ0LCBuZXdMZWZ0KTsK
KyAgICB9IGVsc2UgeworICAgICAgICBmbG9hdCBuZXdSaWdodCA9IG1fYmxvY2subG9naWNhbExl
ZnRGb3JGbG9hdChuZXdGbG9hdCk7CisjaWYgRU5BQkxFKENTU19TSEFQRVMpCisgICAgICAgIGlm
IChwcmV2aW91c1NoYXBlT3V0c2lkZUluZm8pCisgICAgICAgICAgICBuZXdSaWdodCAtPSBwcmV2
aW91c1NoYXBlT3V0c2lkZUluZm8tPmxlZnRNYXJnaW5Cb3hEZWx0YSgpOworICAgICAgICBpZiAo
c2hhcGVPdXRzaWRlSW5mbykKKyAgICAgICAgICAgIG5ld1JpZ2h0ICs9IHNoYXBlT3V0c2lkZUlu
Zm8tPmxlZnRNYXJnaW5Cb3hEZWx0YSgpOworI2VuZGlmCisKKyAgICAgICAgaWYgKHNob3VsZElu
ZGVudFRleHQoKSAmJiAhbV9ibG9jay5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkK
KyAgICAgICAgICAgIG5ld1JpZ2h0IC09IGZsb29yVG9JbnQobV9ibG9jay50ZXh0SW5kZW50T2Zm
c2V0KCkpOworICAgICAgICBtX3JpZ2h0ID0gc3RkOjptaW48ZmxvYXQ+KG1fcmlnaHQsIG5ld1Jp
Z2h0KTsKKyAgICB9CisKKyAgICBjb21wdXRlQXZhaWxhYmxlV2lkdGhGcm9tTGVmdEFuZFJpZ2h0
KCk7Cit9CisKK3ZvaWQgTGluZVdpZHRoOjpjb21taXQoKQoreworICAgIG1fY29tbWl0dGVkV2lk
dGggKz0gbV91bmNvbW1pdHRlZFdpZHRoOworICAgIG1fdW5jb21taXR0ZWRXaWR0aCA9IDA7Cit9
CisKK3ZvaWQgTGluZVdpZHRoOjphcHBseU92ZXJoYW5nKFJlbmRlclJ1YnlSdW4qIHJ1YnlSdW4s
IFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlciwgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJlcikK
K3sKKyAgICBpbnQgc3RhcnRPdmVyaGFuZzsKKyAgICBpbnQgZW5kT3Zlcmhhbmc7CisgICAgcnVi
eVJ1bi0+Z2V0T3ZlcmhhbmcobV9pc0ZpcnN0TGluZSwgc3RhcnRSZW5kZXJlciwgZW5kUmVuZGVy
ZXIsIHN0YXJ0T3ZlcmhhbmcsIGVuZE92ZXJoYW5nKTsKKworICAgIHN0YXJ0T3ZlcmhhbmcgPSBz
dGQ6Om1pbjxpbnQ+KHN0YXJ0T3ZlcmhhbmcsIG1fY29tbWl0dGVkV2lkdGgpOworICAgIG1fYXZh
aWxhYmxlV2lkdGggKz0gc3RhcnRPdmVyaGFuZzsKKworICAgIGVuZE92ZXJoYW5nID0gc3RkOjpt
YXgoc3RkOjptaW48aW50PihlbmRPdmVyaGFuZywgbV9hdmFpbGFibGVXaWR0aCAtIGN1cnJlbnRX
aWR0aCgpKSwgMCk7CisgICAgbV9hdmFpbGFibGVXaWR0aCArPSBlbmRPdmVyaGFuZzsKKyAgICBt
X292ZXJoYW5nV2lkdGggKz0gc3RhcnRPdmVyaGFuZyArIGVuZE92ZXJoYW5nOworfQorCit2b2lk
IExpbmVXaWR0aDo6Zml0QmVsb3dGbG9hdHMoKQoreworICAgIEFTU0VSVCghbV9jb21taXR0ZWRX
aWR0aCk7CisgICAgQVNTRVJUKCFmaXRzT25MaW5lKCkpOworCisgICAgTGF5b3V0VW5pdCBmbG9h
dExvZ2ljYWxCb3R0b207CisgICAgTGF5b3V0VW5pdCBsYXN0RmxvYXRMb2dpY2FsQm90dG9tID0g
bV9ibG9jay5sb2dpY2FsSGVpZ2h0KCk7CisgICAgZmxvYXQgbmV3TGluZVdpZHRoID0gbV9hdmFp
bGFibGVXaWR0aDsKKyAgICBmbG9hdCBuZXdMaW5lTGVmdCA9IG1fbGVmdDsKKyAgICBmbG9hdCBu
ZXdMaW5lUmlnaHQgPSBtX3JpZ2h0OworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGZsb2F0
TG9naWNhbEJvdHRvbSA9IG1fYmxvY2submV4dEZsb2F0TG9naWNhbEJvdHRvbUJlbG93KGxhc3RG
bG9hdExvZ2ljYWxCb3R0b20pOworICAgICAgICBpZiAoZmxvYXRMb2dpY2FsQm90dG9tIDw9IGxh
c3RGbG9hdExvZ2ljYWxCb3R0b20pCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBuZXdM
aW5lTGVmdCA9IG1fYmxvY2subG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKGZsb2F0TG9naWNhbEJv
dHRvbSwgc2hvdWxkSW5kZW50VGV4dCgpKTsKKyAgICAgICAgbmV3TGluZVJpZ2h0ID0gbV9ibG9j
ay5sb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKGZsb2F0TG9naWNhbEJvdHRvbSwgc2hvdWxkSW5k
ZW50VGV4dCgpKTsKKyAgICAgICAgbmV3TGluZVdpZHRoID0gc3RkOjptYXgoMC4wZiwgbmV3TGlu
ZVJpZ2h0IC0gbmV3TGluZUxlZnQpOworICAgICAgICBsYXN0RmxvYXRMb2dpY2FsQm90dG9tID0g
ZmxvYXRMb2dpY2FsQm90dG9tOworCisjaWYgRU5BQkxFKENTU19TSEFQRVMpCisgICAgICAgIC8v
IEZJWE1FOiBUaGlzIGNvZGUgc2hvdWxkIGJlIHJlZmFjdG9yZWQgdG8gaW5jb3Jwb3JhdGUgd2l0
aCB0aGUgY29kZSBhYm92ZS4KKyAgICAgICAgU2hhcGVJbnNpZGVJbmZvKiBzaGFwZUluc2lkZUlu
Zm8gPSBtX2Jsb2NrLmxheW91dFNoYXBlSW5zaWRlSW5mbygpOworICAgICAgICBpZiAoc2hhcGVJ
bnNpZGVJbmZvKSB7CisgICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxPZmZzZXRGcm9tU2hh
cGVDb250YWluZXIgPSBtX2Jsb2NrLmxvZ2ljYWxPZmZzZXRGcm9tU2hhcGVBbmNlc3RvckNvbnRh
aW5lcihzaGFwZUluc2lkZUluZm8tPm93bmVyKCkpLmhlaWdodCgpOworICAgICAgICAgICAgTGF5
b3V0VW5pdCBsaW5lSGVpZ2h0ID0gbV9ibG9jay5saW5lSGVpZ2h0KGZhbHNlLCBtX2Jsb2NrLmlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwg
UG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKTsKKyAgICAgICAgICAgIHNoYXBlSW5zaWRlSW5m
by0+dXBkYXRlU2VnbWVudHNGb3JMaW5lKGxhc3RGbG9hdExvZ2ljYWxCb3R0b20gKyBsb2dpY2Fs
T2Zmc2V0RnJvbVNoYXBlQ29udGFpbmVyLCBsaW5lSGVpZ2h0KTsKKyAgICAgICAgICAgIHVwZGF0
ZUN1cnJlbnRTaGFwZVNlZ21lbnQoKTsKKyAgICAgICAgICAgIHVwZGF0ZUF2YWlsYWJsZVdpZHRo
KCk7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBpZiAobmV3TGluZVdpZHRoID49IG1fdW5j
b21taXR0ZWRXaWR0aCkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChuZXdM
aW5lV2lkdGggPiBtX2F2YWlsYWJsZVdpZHRoKSB7CisgICAgICAgIG1fYmxvY2suc2V0TG9naWNh
bEhlaWdodChsYXN0RmxvYXRMb2dpY2FsQm90dG9tKTsKKyAgICAgICAgbV9hdmFpbGFibGVXaWR0
aCA9IG5ld0xpbmVXaWR0aCArIG1fb3ZlcmhhbmdXaWR0aDsKKyAgICAgICAgbV9sZWZ0ID0gbmV3
TGluZUxlZnQ7CisgICAgICAgIG1fcmlnaHQgPSBuZXdMaW5lUmlnaHQ7CisgICAgfQorfQorCit2
b2lkIExpbmVXaWR0aDo6c2V0VHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGgoZmxvYXQgY29sbGFwc2Vk
V2hpdGVzcGFjZSwgZmxvYXQgYm9yZGVyUGFkZGluZ01hcmdpbikKK3sKKyAgICBtX3RyYWlsaW5n
Q29sbGFwc2VkV2hpdGVzcGFjZVdpZHRoID0gY29sbGFwc2VkV2hpdGVzcGFjZTsKKyAgICBtX3Ry
YWlsaW5nV2hpdGVzcGFjZVdpZHRoID0gY29sbGFwc2VkV2hpdGVzcGFjZSArIGJvcmRlclBhZGRp
bmdNYXJnaW47Cit9CisKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKK3ZvaWQgTGluZVdpZHRoOjp1
cGRhdGVDdXJyZW50U2hhcGVTZWdtZW50KCkKK3sKKyAgICBpZiAoU2hhcGVJbnNpZGVJbmZvKiBz
aGFwZUluc2lkZUluZm8gPSBtX2Jsb2NrLmxheW91dFNoYXBlSW5zaWRlSW5mbygpKQorICAgICAg
ICBtX3NlZ21lbnQgPSBzaGFwZUluc2lkZUluZm8tPmN1cnJlbnRTZWdtZW50KCk7Cit9CisjZW5k
aWYKKwordm9pZCBMaW5lV2lkdGg6OmNvbXB1dGVBdmFpbGFibGVXaWR0aEZyb21MZWZ0QW5kUmln
aHQoKQoreworICAgIG1fYXZhaWxhYmxlV2lkdGggPSBzdGQ6Om1heDxmbG9hdD4oMCwgbV9yaWdo
dCAtIG1fbGVmdCkgKyBtX292ZXJoYW5nV2lkdGg7Cit9CisKK2Jvb2wgTGluZVdpZHRoOjpmaXRz
T25MaW5lRXhjbHVkaW5nVHJhaWxpbmdDb2xsYXBzZWRXaGl0ZXNwYWNlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gY3VycmVudFdpZHRoKCkgLSBtX3RyYWlsaW5nQ29sbGFwc2VkV2hpdGVzcGFjZVdp
ZHRoIDw9IG1fYXZhaWxhYmxlV2lkdGg7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L2xpbmUvTGluZVdpZHRoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc1
MjJjZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xp
bmVXaWR0aC5oCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRv
YmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAg
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRQorICogQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULAorICogSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULAorICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorICogT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTGluZVdpZHRoX2gKKyNk
ZWZpbmUgTGluZVdpZHRoX2gKKworI2luY2x1ZGUgIkxheW91dFVuaXQuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBGbG9hdGluZ09iamVjdDsKK2NsYXNzIFJlbmRlckJsb2NrRmxv
dzsKK2NsYXNzIFJlbmRlck9iamVjdDsKK2NsYXNzIFJlbmRlclJ1YnlSdW47CisKK3N0cnVjdCBM
aW5lU2VnbWVudDsKKworZW51bSBJbmRlbnRUZXh0T3JOb3QgeyBEb05vdEluZGVudFRleHQsIElu
ZGVudFRleHQgfTsKKworY2xhc3MgTGluZVdpZHRoIHsKK3B1YmxpYzoKKyAgICBMaW5lV2lkdGgo
UmVuZGVyQmxvY2tGbG93JiwgYm9vbCBpc0ZpcnN0TGluZSwgSW5kZW50VGV4dE9yTm90IHNob3Vs
ZEluZGVudFRleHQpOworCisgICAgYm9vbCBmaXRzT25MaW5lKGJvb2wgaWdub3JpbmdUcmFpbGlu
Z1NwYWNlID0gZmFsc2UpIGNvbnN0OworICAgIGJvb2wgZml0c09uTGluZUluY2x1ZGluZ0V4dHJh
V2lkdGgoZmxvYXQgZXh0cmEpIGNvbnN0OworICAgIGJvb2wgZml0c09uTGluZUV4Y2x1ZGluZ1Ry
YWlsaW5nV2hpdGVzcGFjZShmbG9hdCBleHRyYSkgY29uc3Q7CisKKyAgICBmbG9hdCBjdXJyZW50
V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2NvbW1pdHRlZFdpZHRoICsgbV91bmNvbW1pdHRlZFdp
ZHRoOyB9CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBldmVudHVhbGx5IHJlcGxhY2UgdGhlc2Ug
dGhyZWUgZnVuY3Rpb25zIGJ5IG9uZXMgdGhhdCB3b3JrIG9uIGEgaGlnaGVyIGFic3RyYWN0aW9u
LgorICAgIGZsb2F0IHVuY29tbWl0dGVkV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3VuY29tbWl0
dGVkV2lkdGg7IH0KKyAgICBmbG9hdCBjb21taXR0ZWRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29tbWl0dGVkV2lkdGg7IH0KKyAgICBmbG9hdCBhdmFpbGFibGVXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fYXZhaWxhYmxlV2lkdGg7IH0KKworICAgIHZvaWQgdXBkYXRlQXZhaWxhYmxlV2lkdGgo
TGF5b3V0VW5pdCBtaW5pbXVtSGVpZ2h0ID0gMCk7CisgICAgdm9pZCBzaHJpbmtBdmFpbGFibGVX
aWR0aEZvck5ld0Zsb2F0SWZOZWVkZWQoRmxvYXRpbmdPYmplY3QqKTsKKyAgICB2b2lkIGFkZFVu
Y29tbWl0dGVkV2lkdGgoZmxvYXQgZGVsdGEpIHsgbV91bmNvbW1pdHRlZFdpZHRoICs9IGRlbHRh
OyB9CisgICAgdm9pZCBjb21taXQoKTsKKyAgICB2b2lkIGFwcGx5T3ZlcmhhbmcoUmVuZGVyUnVi
eVJ1biosIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlciwgUmVuZGVyT2JqZWN0KiBlbmRSZW5k
ZXJlcik7CisgICAgdm9pZCBmaXRCZWxvd0Zsb2F0cygpOworICAgIHZvaWQgc2V0VHJhaWxpbmdX
aGl0ZXNwYWNlV2lkdGgoZmxvYXQgY29sbGFwc2VkV2hpdGVzcGFjZSwgZmxvYXQgYm9yZGVyUGFk
ZGluZ01hcmdpbiA9IDApOworCisjaWYgRU5BQkxFKENTU19TSEFQRVMpCisgICAgdm9pZCB1cGRh
dGVDdXJyZW50U2hhcGVTZWdtZW50KCk7CisjZW5kaWYKKworICAgIGJvb2wgc2hvdWxkSW5kZW50
VGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkSW5kZW50VGV4dCA9PSBJbmRlbnRUZXh0OyB9
CisKK3ByaXZhdGU6CisgICAgdm9pZCBjb21wdXRlQXZhaWxhYmxlV2lkdGhGcm9tTGVmdEFuZFJp
Z2h0KCk7CisgICAgYm9vbCBmaXRzT25MaW5lRXhjbHVkaW5nVHJhaWxpbmdDb2xsYXBzZWRXaGl0
ZXNwYWNlKCkgY29uc3Q7CisKKyAgICBSZW5kZXJCbG9ja0Zsb3cmIG1fYmxvY2s7CisgICAgZmxv
YXQgbV91bmNvbW1pdHRlZFdpZHRoOworICAgIGZsb2F0IG1fY29tbWl0dGVkV2lkdGg7CisgICAg
ZmxvYXQgbV9vdmVyaGFuZ1dpZHRoOyAvLyBUaGUgYW1vdW50IGJ5IHdoaWNoIHxtX2F2YWlsYWJs
ZVdpZHRofCBoYXMgYmVlbiBpbmZsYXRlZCB0byBhY2NvdW50IGZvciBwb3NzaWJsZSBjb250cmFj
dGlvbiBkdWUgdG8gcnVieSBvdmVyaGFuZy4KKyAgICBmbG9hdCBtX3RyYWlsaW5nV2hpdGVzcGFj
ZVdpZHRoOworICAgIGZsb2F0IG1fdHJhaWxpbmdDb2xsYXBzZWRXaGl0ZXNwYWNlV2lkdGg7Cisg
ICAgZmxvYXQgbV9sZWZ0OworICAgIGZsb2F0IG1fcmlnaHQ7CisgICAgZmxvYXQgbV9hdmFpbGFi
bGVXaWR0aDsKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKKyAgICBjb25zdCBMaW5lU2VnbWVudCog
bV9zZWdtZW50OworI2VuZGlmCisgICAgYm9vbCBtX2lzRmlyc3RMaW5lOworICAgIEluZGVudFRl
eHRPck5vdCBtX3Nob3VsZEluZGVudFRleHQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBMaW5lV2lk
dGhfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>