<?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>71712</bug_id>
          
          <creation_ts>2011-11-07 11:36:23 -0800</creation_ts>
          <short_desc>REGRESSION(r99436): Broke SL build (Requested by rniwa on #webkit).</short_desc>
          <delta_ts>2011-11-07 11:41:19 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>71331</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>darin</cc>
    
    <cc>msaboff</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>497336</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-07 11:36:23 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/99436 broke the build:
Broke SL build (Requested by rniwa on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497337</commentid>
    <comment_count>1</comment_count>
      <attachid>113900</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-07 11:36:55 -0800</bug_when>
    <thetext>Created attachment 113900
ROLLOUT of r99436

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497339</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-07 11:41:19 -0800</bug_when>
    <thetext>It appears that only debug build is broken.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113900</attachid>
            <date>2011-11-07 11:36:55 -0800</date>
            <delta_ts>2011-11-07 11:41:06 -0800</delta_ts>
            <desc>ROLLOUT of r99436</desc>
            <filename>bug-71712-20111107193722.patch</filename>
            <type>text/plain</type>
            <size>80992</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk0NTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGI1
ZGQ0NGIyMzJjNWVkMzRmNzg0N2MyOTEyMzAwODM4NDNjM2U3ODQuLmQzNDUwMTczMDNkNWMxMDA4
Y2FiOGJlZGJhMTY3MjA0ODhjMWE2NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDg2IEBACisyMDExLTExLTA3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdt
YWlsLmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByOTk0MzYuCisgICAg
ICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0Lzk5NDM2CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTcxMgorCisgICAgICAgIEJyb2tl
IFNMIGJ1aWxkIChSZXF1ZXN0ZWQgYnkgcm5pd2Egb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBL
ZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5OgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmNhbGxFdmFsKToKKyAgICAgICAg
KiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjo6TGV4ZXIpOgorICAgICAg
ICAoSlNDOjpMZXhlcjo6fkxleGVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OmdldEludmFsaWRD
aGFyTWVzc2FnZSk6CisgICAgICAgIChKU0M6OkxleGVyOjpjdXJyZW50Q2hhcmFjdGVyKToKKyAg
ICAgICAgKEpTQzo6TGV4ZXI6OmN1cnJlbnRPZmZzZXQpOgorICAgICAgICAoSlNDOjpMZXhlcjo6
c2V0Q29kZSk6CisgICAgICAgIChKU0M6OkxleGVyOjppbnRlcm5hbFNoaWZ0KToKKyAgICAgICAg
KEpTQzo6TGV4ZXI6OnNoaWZ0KToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OnBlZWspOgorICAgICAg
ICAoSlNDOjpMZXhlcjo6Z2V0VW5pY29kZUNoYXJhY3Rlcik6CisgICAgICAgIChKU0M6OkxleGVy
OjpzaGlmdExpbmVUZXJtaW5hdG9yKToKKyAgICAgICAgKEpTQzo6TGV4ZXI6Omxhc3RUb2tlbldh
c1Jlc3RyS2V5d29yZCk6CisgICAgICAgIChKU0M6OkxleGVyOjpyZWNvcmQ4KToKKyAgICAgICAg
KEpTQzo6TGV4ZXI6OnJlY29yZDE2KToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OnBhcnNlSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0M6OkxleGVyOjpwYXJzZVN0cmluZyk6CisgICAgICAgIChKU0M6
OkxleGVyOjpwYXJzZUhleCk6CisgICAgICAgIChKU0M6OkxleGVyOjpwYXJzZU9jdGFsKToKKyAg
ICAgICAgKEpTQzo6TGV4ZXI6OnBhcnNlRGVjaW1hbCk6CisgICAgICAgIChKU0M6OkxleGVyOjpw
YXJzZU51bWJlckFmdGVyRGVjaW1hbFBvaW50KToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OnBhcnNl
TnVtYmVyQWZ0ZXJFeHBvbmVudEluZGljYXRvcik6CisgICAgICAgIChKU0M6OkxleGVyOjpwYXJz
ZU11bHRpbGluZUNvbW1lbnQpOgorICAgICAgICAoSlNDOjpMZXhlcjo6bmV4dFRva2VuSXNDb2xv
bik6CisgICAgICAgIChKU0M6OkxleGVyOjpsZXgpOgorICAgICAgICAoSlNDOjpMZXhlcjo6c2Nh
blJlZ0V4cCk6CisgICAgICAgIChKU0M6OkxleGVyOjpza2lwUmVnRXhwKToKKyAgICAgICAgKEpT
Qzo6TGV4ZXI6OmNsZWFyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OnNvdXJjZUNvZGUpOgorICAg
ICAgICAqIHBhcnNlci9MZXhlci5oOgorICAgICAgICAoSlNDOjpMZXhlcjo6Y3VycmVudE9mZnNl
dCk6CisgICAgICAgIChKU0M6OkxleGVyOjppc1doaXRlU3BhY2UpOgorICAgICAgICAoSlNDOjpM
ZXhlcjo6aXNMaW5lVGVybWluYXRvcik6CisgICAgICAgIChKU0M6OkxleGVyOjpjb252ZXJ0SGV4
KToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OmNvbnZlcnRVbmljb2RlKToKKyAgICAgICAgKEpTQzo6
TGV4ZXI6Om1ha2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OmxleEV4cGVjdElk
ZW50aWZpZXIpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQ
YXJzZXI6OlBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjo6cGFyc2VQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKiBw
YXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlBhcnNlcjo6bmV4dCk6CisgICAgICAgIChK
U0M6OlBhcnNlcjo6bmV4dEV4cGVjdElkZW50aWZpZXIpOgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXJBcmVuYS5oOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyQXJlbmE6Om1ha2VJZGVudGlmaWVy
KToKKyAgICAgICAgKiBwYXJzZXIvU291cmNlQ29kZS5oOgorICAgICAgICAoSlNDOjpTb3VyY2VD
b2RlOjpzdWJFeHByZXNzaW9uKToKKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXIuaDoK
KyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZS5oOgorICAgICAgICAqIHBhcnNl
ci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6Omluc2VydFNlbWljb2xvbklmTmVlZGVkKToKKyAgICAgICAgKiBy
dW50aW1lL0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyVGFibGU6On5J
ZGVudGlmaWVyVGFibGUpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyVGFibGU6OmFkZCk6Cisg
ICAgICAgIChKU0M6OklkZW50aWZpZXJVQ2hhckJ1ZmZlclRyYW5zbGF0b3I6Omhhc2gpOgorICAg
ICAgICAoSlNDOjpJZGVudGlmaWVyVUNoYXJCdWZmZXJUcmFuc2xhdG9yOjplcXVhbCk6CisgICAg
ICAgIChKU0M6OklkZW50aWZpZXJVQ2hhckJ1ZmZlclRyYW5zbGF0b3I6OnRyYW5zbGF0ZSk6Cisg
ICAgICAgIChKU0M6OklkZW50aWZpZXI6OmFkZCk6CisgICAgICAgICogcnVudGltZS9JZGVudGlm
aWVyLmg6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OklkZW50aWZpZXIpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpkZWNv
ZGUpOgorICAgICAgICAoSlNDOjpwYXJzZUludE92ZXJmbG93KToKKyAgICAgICAgKEpTQzo6Z2xv
YmFsRnVuY1VuZXNjYXBlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmg6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6TGl0ZXJhbFBhcnNlcjo6dHJ5SlNPTlBQYXJzZSk6CisgICAgICAgIChKU0M6OkxpdGVyYWxQ
YXJzZXI6OkxleGVyOjpsZXhTdHJpbmcpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwu
aDoKKwogMjAxMS0xMS0wNyAgQ2hhbmdTZW9rIE9oICA8c2hpdmFtaWRvd0BnbWFpbC5jb20+CiAK
ICAgICAgICAgW0VGTF0gU3VwcG9ydCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgQVBJCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggM2MwNTJlYzZiYTkwNjEwNGE2M2I2MmFiODJjMjM4NDBiMWM1NjVmMS4uMDg1NTM3ZmMz
Y2VlY2RkYzE0ZWMyYWVhOTcxM2NmNDdmNzE4YjE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDExLTExLTA3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNv
bT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByOTk0MzYuCisgICAgICAgIGh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0Lzk5NDM2CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTcxMgorCisgICAgICAgIEJyb2tlIFNMIGJ1
aWxkIChSZXF1ZXN0ZWQgYnkgcm5pd2Egb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1N0cmluZ1NvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogYnJpZGdlL3F0L3F0X3J1bnRpbWUu
Y3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y29udmVydFFWYXJpYW50VG9WYWx1ZSk6CisK
IDIwMTEtMTEtMDcgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAg
IERvbid0IHVzZSBDU1NPTSdzIENTU1ZhbHVlLmNzc1ZhbHVlVHlwZSBpbnRlcm5hbGx5IGluIFdl
YkNvcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGQxMGM1ODMzMTI1ZjBkODY0YTljMGQ0MTllYmFiNzZj
ODkxNTJlNTkuLmJhODdlZDI2OWJhZjNhNmRiMGIxZTMwZmNhYWRiYjJmZjhlNGQ1ZmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTEtMDcgIFNoZXJpZmYgQm90ICA8d2Vi
a2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHI5OTQzNi4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTk0
MzYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzEy
CisKKyAgICAgICAgQnJva2UgU0wgYnVpbGQgKFJlcXVlc3RlZCBieSBybml3YSBvbiAjd2Via2l0
KS4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjph
ZGRUb0phdmFTY3JpcHRXaW5kb3dPYmplY3QpOgorCiAyMDExLTExLTA3ICBNaWNoYWVsIFNhYm9m
ZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFRvd2FyZHMgOCBCaXQgU3RyaW5nczog
VGVtcGxhdGl6ZSBKU0M6OkxleGVyIGNsYXNzIGJ5IGNoYXJhY3RlciB0eXBlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvS2V5d29yZExvb2t1cEdlbmVyYXRvci5weSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9LZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5CmluZGV4IGRjNzc5ZTBj
NTUzMmMwYTk5ZTI4MGIzZDBmMTI0ZDg5MmU1YTA2YjEuLjQ5ZGE0YzVkNDFiMTMxYWQwZDExN2M1
NDUyNmRmMDAyM2IzYTM1NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9LZXl3
b3JkTG9va3VwR2VuZXJhdG9yLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9LZXl3b3Jk
TG9va3VwR2VuZXJhdG9yLnB5CkBAIC0xMjIsMTIgKzEyMiwxMiBAQCBjbGFzcyBUcmllOgogICAg
ICAgICBzZWxmLmtleXMgPSBbKHRyaWUucHJlZml4LCB0cmllKSBmb3IgdHJpZSBpbiBzb3J0ZWQo
c2VsZi5rZXlzLnZhbHVlcygpLCBrZXk9b3BlcmF0b3IuYXR0cmdldHRlcignd2VpZ2h0JyksIHJl
dmVyc2U9VHJ1ZSldCiAgICAgICAgIHNlbGYud2VpZ2h0ID0gd2VpZ2h0CiAKLSAgICBkZWYgcHJp
bnRTdWJUcmVlQXNDKHNlbGYsIHR5cGVOYW1lLCBpbmRlbnQpOgorICAgIGRlZiBwcmludFN1YlRy
ZWVBc0Moc2VsZiwgaW5kZW50KToKICAgICAgICAgc3RyID0gbWFrZVBhZGRpbmcoaW5kZW50KQog
CiAgICAgICAgIGlmIHNlbGYudmFsdWUgIT0gTm9uZToKICAgICAgICAgICAgIHByaW50KHN0ciAr
ICJpZiAoIWlzSWRlbnRQYXJ0KGNvZGVbJWRdKSkgeyIgJSAobGVuKHNlbGYuZnVsbFByZWZpeCkp
KQotICAgICAgICAgICAgcHJpbnQoc3RyICsgIiAgICBpbnRlcm5hbFNoaWZ0PCVkPigpOyIgJSBs
ZW4oc2VsZi5mdWxsUHJlZml4KSkKKyAgICAgICAgICAgIHByaW50KHN0ciArICIgICAgaW50ZXJu
YWxTaGlmdDwlZCwgRG9Ob3RCb3VuZHNDaGVjaz4oKTsiICUgbGVuKHNlbGYuZnVsbFByZWZpeCkp
CiAgICAgICAgICAgICBwcmludChzdHIgKyAiICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVy
KSIpCiAgICAgICAgICAgICBwcmludChzdHIgKyAoIiAgICAgICAgZGF0YS0+aWRlbnQgPSAmbV9n
bG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT4lc0tleXdvcmQ7IiAlIHNlbGYuZnVsbFByZWZpeCkp
CiAgICAgICAgICAgICBwcmludChzdHIgKyAiICAgIHJldHVybiAiICsgc2VsZi52YWx1ZSArICI7
IikKQEAgLTE0NiwxMyArMTQ2LDEzIEBAIGNsYXNzIFRyaWU6CiAgICAgICAgICAgICAgICAgYmFz
ZSA9ICJjb2RlIgogICAgICAgICAgICAgICAgIGlmIGJhc2VJbmRleCA+IDA6CiAgICAgICAgICAg
ICAgICAgICAgIGJhc2UgPSAiY29kZSArICVkIiAlIGJhc2VJbmRleAotICAgICAgICAgICAgICAg
IGNvbXBhcmlzb24gPSAoIkNPTVBBUkVfJWQlc1MoJXMsICIgJSAobGVuKHRlc3QpLCB0eXBlTmFt
ZSwgYmFzZSkpICsgIiwgIi5qb2luKHRlc3QpICsgIikiCisgICAgICAgICAgICAgICAgY29tcGFy
aXNvbiA9ICgiQ09NUEFSRV9DSEFSQUNURVJTJWQoJXMsICIgJSAobGVuKHRlc3QpLCBiYXNlKSkg
KyAiLCAiLmpvaW4odGVzdCkgKyAiKSIKICAgICAgICAgICAgIGlmIGl0ZW1Db3VudCA9PSAwOgog
ICAgICAgICAgICAgICAgIHByaW50KHN0ciArICJpZiAoIiArIGNvbXBhcmlzb24gKyAiKSB7IikK
ICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcHJpbnQoc3RyICsgIn0gZWxzZSBp
ZiAoIiArIGNvbXBhcmlzb24gKyAiKSB7IikKIAotICAgICAgICAgICAgdHJpZS5wcmludFN1YlRy
ZWVBc0ModHlwZU5hbWUsIGluZGVudCArIDQpCisgICAgICAgICAgICB0cmllLnByaW50U3ViVHJl
ZUFzQyhpbmRlbnQgKyA0KQogICAgICAgICAgICAgaXRlbUNvdW50ID0gaXRlbUNvdW50ICsgMQog
CiAgICAgICAgICAgICBpZiBpdGVtQ291bnQgPT0gbGVuKHNlbGYua2V5cyk6CkBAIC0xNzMsMjMg
KzE3MywxMiBAQCBjbGFzcyBUcmllOgogICAgICAgICAjIG1heCBsZW5ndGggKyAxIHNvIHdlIGRv
bid0IG5lZWQgdG8gZG8gYW55IGJvdW5kcyBjaGVja2luZyBhdCBhbGwKICAgICAgICAgcHJpbnQo
InN0YXRpYyBjb25zdCBpbnQgbWF4VG9rZW5MZW5ndGggPSAlZDsiICUgKHNlbGYubWF4TGVuZ3Ro
KCkgKyAxKSkKICAgICAgICAgcHJpbnQoIiIpCi0gICAgICAgIHByaW50KCJ0ZW1wbGF0ZSA8PiIp
Ci0gICAgICAgIHByaW50KCJ0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBB
TFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cGFyc2VLZXl3b3JkKEpTVG9r
ZW5EYXRhKiBkYXRhKSIpCisgICAgICAgIHByaW50KCJ0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVh
dGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyOjpwYXJzZUtleXdv
cmQoSlNUb2tlbkRhdGEqIGRhdGEpIikKICAgICAgICAgcHJpbnQoInsiKQogICAgICAgICBwcmlu
dCgiICAgIEFTU0VSVChtX2NvZGVFbmQgLSBtX2NvZGUgPj0gbWF4VG9rZW5MZW5ndGgpOyIpCiAg
ICAgICAgIHByaW50KCIiKQogICAgICAgICBwcmludCgiICAgIGNvbnN0IFVDaGFyKiBjb2RlID0g
bV9jb2RlOyIpCi0gICAgICAgIHNlbGYucHJpbnRTdWJUcmVlQXNDKCJVQ0hBUiIsIDQpCi0gICAg
ICAgIHByaW50KCIgICAgcmV0dXJuIElERU5UOyIpCi0gICAgICAgIHByaW50KCJ9IikKLSAgICAg
ICAgcHJpbnQoIiIpCi0gICAgICAgIHByaW50KCJ0ZW1wbGF0ZSA8PiIpCi0gICAgICAgIHByaW50
KCJ0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpT
VG9rZW5UeXBlIExleGVyPExDaGFyPjo6cGFyc2VLZXl3b3JkKEpTVG9rZW5EYXRhKiBkYXRhKSIp
Ci0gICAgICAgIHByaW50KCJ7IikKLSAgICAgICAgcHJpbnQoIiAgICBBU1NFUlQobV9jb2RlRW5k
IC0gbV9jb2RlID49IG1heFRva2VuTGVuZ3RoKTsiKQotICAgICAgICBwcmludCgiIikKLSAgICAg
ICAgcHJpbnQoIiAgICBjb25zdCBMQ2hhciogY29kZSA9IG1fY29kZTsiKQotICAgICAgICBzZWxm
LnByaW50U3ViVHJlZUFzQygiQ0hBUiIsIDQpCisgICAgICAgIHNlbGYucHJpbnRTdWJUcmVlQXND
KDQpCiAgICAgICAgIHByaW50KCIgICAgcmV0dXJuIElERU5UOyIpCiAgICAgICAgIHByaW50KCJ9
IikKICAgICAgICAgcHJpbnQoIiIpCkBAIC0yMDUsODUgKzE5NCw1NyBAQCBwcmludCgiLy8gVGhp
cyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgS2V5d29yZExvb2t1cEdlbmVyYXRvci5weS4gIERvIG5v
dCBlZGl0LiIpCiBwcmludCgiIiIKICNpZiBDUFUoTkVFRFNfQUxJR05FRF9BQ0NFU1MpCiAKLSNk
ZWZpbmUgQ09NUEFSRV8yQ0hBUlMoYWRkcmVzcywgY2hhcjEsIGNoYXIyKSBcXAotICAgICgoKGFk
ZHJlc3MpWzBdID09IGNoYXIxKSAmJiAoKGFkZHJlc3MpWzFdID09IGNoYXIyKSkKLSNkZWZpbmUg
Q09NUEFSRV80Q0hBUlMoYWRkcmVzcywgY2hhcjEsIGNoYXIyLCBjaGFyMywgY2hhcjQpIFxcCi0g
ICAgKENPTVBBUkVfMkNIQVJTKGFkZHJlc3MsIGNoYXIxLCBjaGFyMikgJiYgQ09NUEFSRV8yQ0hB
UlMoKGFkZHJlc3MpICsgMiwgY2hhcjMsIGNoYXI0KSkKLSNkZWZpbmUgQ09NUEFSRV8yVUNIQVJT
KGFkZHJlc3MsIGNoYXIxLCBjaGFyMikgXFwKKyNkZWZpbmUgQ09NUEFSRV9DSEFSQUNURVJTMihh
ZGRyZXNzLCBjaGFyMSwgY2hhcjIpIFxcCiAgICAgKCgoYWRkcmVzcylbMF0gPT0gY2hhcjEpICYm
ICgoYWRkcmVzcylbMV0gPT0gY2hhcjIpKQotI2RlZmluZSBDT01QQVJFXzRVQ0hBUlMoYWRkcmVz
cywgY2hhcjEsIGNoYXIyLCBjaGFyMywgY2hhcjQpIFxcCi0gICAgKENPTVBBUkVfMlVDSEFSUyhh
ZGRyZXNzLCBjaGFyMSwgY2hhcjIpICYmIENPTVBBUkVfMlVDSEFSUygoYWRkcmVzcykgKyAyLCBj
aGFyMywgY2hhcjQpKQorI2RlZmluZSBDT01QQVJFX0NIQVJBQ1RFUlM0KGFkZHJlc3MsIGNoYXIx
LCBjaGFyMiwgY2hhcjMsIGNoYXI0KSBcXAorICAgIChDT01QQVJFX0NIQVJBQ1RFUlMyKGFkZHJl
c3MsIGNoYXIxLCBjaGFyMikgJiYgQ09NUEFSRV9DSEFSQUNURVJTMigoYWRkcmVzcykgKyAyLCBj
aGFyMywgY2hhcjQpKQogCiAjZWxzZSAvLyBDUFUoTkVFRFNfQUxJR05FRF9BQ0NFU1MpCiAKICNp
ZiBDUFUoQklHX0VORElBTikKIAotI2RlZmluZSBDSEFSUEFJUl9UT1VJTlQxNihhLCBiKSBcXAot
ICAgICgoKCh1aW50MTZfdCkoYSkpIDw8IDgpICsgKHVpbnQxNl90KShiKSkKLSNkZWZpbmUgQ0hB
UlFVQURfVE9VSU5UMzIoYSwgYiwgYywgZCkgXFwKLSAgICAoKCgodWludDMyX3QpKENIQVJQQUlS
X1RPVUlOVDE2KGEsIGIpKSkgPDwgMTYpICsgQ0hBUlBBSVJfVE9VSU5UMTYoYywgZCkpCi0jZGVm
aW5lIFVDSEFSUEFJUl9UT1VJTlQzMihhLCBiKSBcXAorI2RlZmluZSBDSEFSUEFJUl9UT1VJTlQz
MihhLCBiKSBcXAogICAgICgoKCh1aW50MzJfdCkoYSkpIDw8IDE2KSArICh1aW50MzJfdCkoYikp
Ci0jZGVmaW5lIFVDSEFSUVVBRF9UT1VJTlQ2NChhLCBiLCBjLCBkKSBcXAotICAgICgoKCh1aW50
NjRfdCkoVUNIQVJRVUFEX1RPVUlOVDY0KGEsIGIpKSkgPDwgMzIpICsgVUNIQVJQQUlSX1RPVUlO
VDMyKGMsIGQpKQorI2RlZmluZSBDSEFSUVVBRF9UT1VJTlQ2NChhLCBiLCBjLCBkKSBcXAorICAg
ICgoKCh1aW50NjRfdCkoQ0hBUlBBSVJfVE9VSU5UMzIoYSwgYikpKSA8PCAzMikgKyBDSEFSUEFJ
Ul9UT1VJTlQzMihjLCBkKSkKIAogI2Vsc2UgLy8gQ1BVKEJJR19FTkRJQU4pCiAKLSNkZWZpbmUg
Q0hBUlBBSVJfVE9VSU5UMTYoYSwgYikgXFwKLSAgICAoKCgodWludDE2X3QpKGIpKSA8PCA4KSAr
ICh1aW50MTZfdCkoYSkpCi0jZGVmaW5lIENIQVJRVUFEX1RPVUlOVDMyKGEsIGIsIGMsIGQpIFxc
Ci0gICAgKCgoKHVpbnQzMl90KShDSEFSUEFJUl9UT1VJTlQxNihjLCBkKSkpIDw8IDE2KSArIENI
QVJQQUlSX1RPVUlOVDE2KGEsIGIpKQotI2RlZmluZSBVQ0hBUlBBSVJfVE9VSU5UMzIoYSwgYikg
XFwKKyNkZWZpbmUgQ0hBUlBBSVJfVE9VSU5UMzIoYSwgYikgXFwKICAgICAoKCgodWludDMyX3Qp
KGIpKSA8PCAxNikgKyAodWludDMyX3QpKGEpKQotI2RlZmluZSBVQ0hBUlFVQURfVE9VSU5UNjQo
YSwgYiwgYywgZCkgXFwKLSAgICAoKCgodWludDY0X3QpKFVDSEFSUEFJUl9UT1VJTlQzMihjLCBk
KSkpIDw8IDMyKSArIFVDSEFSUEFJUl9UT1VJTlQzMihhLCBiKSkKKyNkZWZpbmUgQ0hBUlFVQURf
VE9VSU5UNjQoYSwgYiwgYywgZCkgXFwKKyAgICAoKCgodWludDY0X3QpKENIQVJQQUlSX1RPVUlO
VDMyKGMsIGQpKSkgPDwgMzIpICsgQ0hBUlBBSVJfVE9VSU5UMzIoYSwgYikpCiAKICNlbmRpZiAv
LyBDUFUoQklHX0VORElBTikKIAogCi0jZGVmaW5lIENPTVBBUkVfMkNIQVJTKGFkZHJlc3MsIGNo
YXIxLCBjaGFyMikgXFwKLSAgICAoKCh1aW50MTZfdCopKGFkZHJlc3MpKVswXSA9PSBDSEFSUEFJ
Ul9UT1VJTlQxNihjaGFyMSwgY2hhcjIpKQotI2RlZmluZSBDT01QQVJFXzJVQ0hBUlMoYWRkcmVz
cywgY2hhcjEsIGNoYXIyKSBcXAotICAgICgoKHVpbnQzMl90KikoYWRkcmVzcykpWzBdID09IFVD
SEFSUEFJUl9UT1VJTlQzMihjaGFyMSwgY2hhcjIpKQorI2RlZmluZSBDT01QQVJFX0NIQVJBQ1RF
UlMyKGFkZHJlc3MsIGNoYXIxLCBjaGFyMikgXFwKKyAgICAoKCh1aW50MzJfdCopKGFkZHJlc3Mp
KVswXSA9PSBDSEFSUEFJUl9UT1VJTlQzMihjaGFyMSwgY2hhcjIpKQogCiAjaWYgQ1BVKFg4Nl82
NCkKIAotI2RlZmluZSBDT01QQVJFXzRDSEFSUyhhZGRyZXNzLCBjaGFyMSwgY2hhcjIsIGNoYXIz
LCBjaGFyNCkgXFwKLSAgICAoKCh1aW50MzJfdCopKGFkZHJlc3MpKVswXSA9PSBDSEFSUVVBRF9U
T1VJTlQzMihjaGFyMSwgY2hhcjIsIGNoYXIzLCBjaGFyNCkpCi0jZGVmaW5lIENPTVBBUkVfNFVD
SEFSUyhhZGRyZXNzLCBjaGFyMSwgY2hhcjIsIGNoYXIzLCBjaGFyNCkgXFwKLSAgICAoKCh1aW50
NjRfdCopKGFkZHJlc3MpKVswXSA9PSBVQ0hBUlFVQURfVE9VSU5UNjQoY2hhcjEsIGNoYXIyLCBj
aGFyMywgY2hhcjQpKQorI2RlZmluZSBDT01QQVJFX0NIQVJBQ1RFUlM0KGFkZHJlc3MsIGNoYXIx
LCBjaGFyMiwgY2hhcjMsIGNoYXI0KSBcXAorICAgICgoKHVpbnQ2NF90KikoYWRkcmVzcykpWzBd
ID09IENIQVJRVUFEX1RPVUlOVDY0KGNoYXIxLCBjaGFyMiwgY2hhcjMsIGNoYXI0KSkKIAogI2Vs
c2UgLy8gQ1BVKFg4Nl82NCkKIAotI2RlZmluZSBDT01QQVJFXzRDSEFSUyhhZGRyZXNzLCBjaGFy
MSwgY2hhcjIsIGNoYXIzLCBjaGFyNCkgXFwKLSAgICAoQ09NUEFSRV8yQ0hBUlMoYWRkcmVzcywg
Y2hhcjEsIGNoYXIyKSAmJiBDT01QQVJFXzJDSEFSUygoYWRkcmVzcykgKyAyLCBjaGFyMywgY2hh
cjQpKQotI2RlZmluZSBDT01QQVJFXzRVQ0hBUlMoYWRkcmVzcywgY2hhcjEsIGNoYXIyLCBjaGFy
MywgY2hhcjQpIFxcCi0gICAgKENPTVBBUkVfMlVDSEFSUyhhZGRyZXNzLCBjaGFyMSwgY2hhcjIp
ICYmIENPTVBBUkVfMlVDSEFSUygoYWRkcmVzcykgKyAyLCBjaGFyMywgY2hhcjQpKQorI2RlZmlu
ZSBDT01QQVJFX0NIQVJBQ1RFUlM0KGFkZHJlc3MsIGNoYXIxLCBjaGFyMiwgY2hhcjMsIGNoYXI0
KSBcXAorICAgIChDT01QQVJFX0NIQVJBQ1RFUlMyKGFkZHJlc3MsIGNoYXIxLCBjaGFyMikgJiYg
Q09NUEFSRV9DSEFSQUNURVJTMigoYWRkcmVzcykgKyAyLCBjaGFyMywgY2hhcjQpKQogCiAjZW5k
aWYgLy8gQ1BVKFg4Nl82NCkKIAogI2VuZGlmIC8vIENQVShORUVEU19BTElHTkVEX0FDQ0VTUykK
IAotI2RlZmluZSBDT01QQVJFXzNDSEFSUyhhZGRyZXNzLCBjaGFyMSwgY2hhcjIsIGNoYXIzKSBc
XAotICAgIChDT01QQVJFXzJDSEFSUyhhZGRyZXNzLCBjaGFyMSwgY2hhcjIpICYmICgoYWRkcmVz
cylbMl0gPT0gKGNoYXIzKSkpCi0jZGVmaW5lIENPTVBBUkVfM1VDSEFSUyhhZGRyZXNzLCBjaGFy
MSwgY2hhcjIsIGNoYXIzKSBcXAotICAgIChDT01QQVJFXzJVQ0hBUlMoYWRkcmVzcywgY2hhcjEs
IGNoYXIyKSAmJiAoKGFkZHJlc3MpWzJdID09IChjaGFyMykpKQotI2RlZmluZSBDT01QQVJFXzVD
SEFSUyhhZGRyZXNzLCBjaGFyMSwgY2hhcjIsIGNoYXIzLCBjaGFyNCwgY2hhcjUpIFxcCi0gICAg
KENPTVBBUkVfNENIQVJTKGFkZHJlc3MsIGNoYXIxLCBjaGFyMiwgY2hhcjMsIGNoYXI0KSAmJiAo
KGFkZHJlc3MpWzRdID09IChjaGFyNSkpKQotI2RlZmluZSBDT01QQVJFXzVVQ0hBUlMoYWRkcmVz
cywgY2hhcjEsIGNoYXIyLCBjaGFyMywgY2hhcjQsIGNoYXI1KSBcXAotICAgIChDT01QQVJFXzRV
Q0hBUlMoYWRkcmVzcywgY2hhcjEsIGNoYXIyLCBjaGFyMywgY2hhcjQpICYmICgoYWRkcmVzcylb
NF0gPT0gKGNoYXI1KSkpCi0jZGVmaW5lIENPTVBBUkVfNkNIQVJTKGFkZHJlc3MsIGNoYXIxLCBj
aGFyMiwgY2hhcjMsIGNoYXI0LCBjaGFyNSwgY2hhcjYpIFxcCi0gICAgKENPTVBBUkVfNENIQVJT
KGFkZHJlc3MsIGNoYXIxLCBjaGFyMiwgY2hhcjMsIGNoYXI0KSAmJiBDT01QQVJFXzJDSEFSUyhh
ZGRyZXNzICsgNCwgY2hhcjUsIGNoYXI2KSkKLSNkZWZpbmUgQ09NUEFSRV82VUNIQVJTKGFkZHJl
c3MsIGNoYXIxLCBjaGFyMiwgY2hhcjMsIGNoYXI0LCBjaGFyNSwgY2hhcjYpIFxcCi0gICAgKENP
TVBBUkVfNFVDSEFSUyhhZGRyZXNzLCBjaGFyMSwgY2hhcjIsIGNoYXIzLCBjaGFyNCkgJiYgQ09N
UEFSRV8yVUNIQVJTKGFkZHJlc3MgKyA0LCBjaGFyNSwgY2hhcjYpKQotI2RlZmluZSBDT01QQVJF
XzdDSEFSUyhhZGRyZXNzLCBjaGFyMSwgY2hhcjIsIGNoYXIzLCBjaGFyNCwgY2hhcjUsIGNoYXI2
LCBjaGFyNykgXFwKLSAgICAoQ09NUEFSRV80Q0hBUlMoYWRkcmVzcywgY2hhcjEsIGNoYXIyLCBj
aGFyMywgY2hhcjQpICYmIENPTVBBUkVfNENIQVJTKGFkZHJlc3MgKyAzLCBjaGFyNCwgY2hhcjUs
IGNoYXI2LCBjaGFyNykpCi0jZGVmaW5lIENPTVBBUkVfN1VDSEFSUyhhZGRyZXNzLCBjaGFyMSwg
Y2hhcjIsIGNoYXIzLCBjaGFyNCwgY2hhcjUsIGNoYXI2LCBjaGFyNykgXFwKLSAgICAoQ09NUEFS
RV80VUNIQVJTKGFkZHJlc3MsIGNoYXIxLCBjaGFyMiwgY2hhcjMsIGNoYXI0KSAmJiBDT01QQVJF
XzRVQ0hBUlMoYWRkcmVzcyArIDMsIGNoYXI0LCBjaGFyNSwgY2hhcjYsIGNoYXI3KSkKLSNkZWZp
bmUgQ09NUEFSRV84Q0hBUlMoYWRkcmVzcywgY2hhcjEsIGNoYXIyLCBjaGFyMywgY2hhcjQsIGNo
YXI1LCBjaGFyNiwgY2hhcjcsIGNoYXI4KSBcXAotICAgIChDT01QQVJFXzRDSEFSUyhhZGRyZXNz
LCBjaGFyMSwgY2hhcjIsIGNoYXIzLCBjaGFyNCkgJiYgQ09NUEFSRV80Q0hBUlMoYWRkcmVzcyAr
IDQsIGNoYXI1LCBjaGFyNiwgY2hhcjcsIGNoYXI4KSkKLSNkZWZpbmUgQ09NUEFSRV84VUNIQVJT
KGFkZHJlc3MsIGNoYXIxLCBjaGFyMiwgY2hhcjMsIGNoYXI0LCBjaGFyNSwgY2hhcjYsIGNoYXI3
LCBjaGFyOCkgXFwKLSAgICAoQ09NUEFSRV80VUNIQVJTKGFkZHJlc3MsIGNoYXIxLCBjaGFyMiwg
Y2hhcjMsIGNoYXI0KSAmJiBDT01QQVJFXzRVQ0hBUlMoYWRkcmVzcyArIDQsIGNoYXI1LCBjaGFy
NiwgY2hhcjcsIGNoYXI4KSkKKyNkZWZpbmUgQ09NUEFSRV9DSEFSQUNURVJTMyhhZGRyZXNzLCBj
aGFyMSwgY2hhcjIsIGNoYXIzKSBcXAorICAgIChDT01QQVJFX0NIQVJBQ1RFUlMyKGFkZHJlc3Ms
IGNoYXIxLCBjaGFyMikgJiYgKChhZGRyZXNzKVsyXSA9PSAoY2hhcjMpKSkKKyNkZWZpbmUgQ09N
UEFSRV9DSEFSQUNURVJTNShhZGRyZXNzLCBjaGFyMSwgY2hhcjIsIGNoYXIzLCBjaGFyNCwgY2hh
cjUpIFxcCisgICAgKENPTVBBUkVfQ0hBUkFDVEVSUzQoYWRkcmVzcywgY2hhcjEsIGNoYXIyLCBj
aGFyMywgY2hhcjQpICYmICgoYWRkcmVzcylbNF0gPT0gKGNoYXI1KSkpCisjZGVmaW5lIENPTVBB
UkVfQ0hBUkFDVEVSUzYoYWRkcmVzcywgY2hhcjEsIGNoYXIyLCBjaGFyMywgY2hhcjQsIGNoYXI1
LCBjaGFyNikgXFwKKyAgICAoQ09NUEFSRV9DSEFSQUNURVJTNChhZGRyZXNzLCBjaGFyMSwgY2hh
cjIsIGNoYXIzLCBjaGFyNCkgJiYgQ09NUEFSRV9DSEFSQUNURVJTMihhZGRyZXNzICsgNCwgY2hh
cjUsIGNoYXI2KSkKKyNkZWZpbmUgQ09NUEFSRV9DSEFSQUNURVJTNyhhZGRyZXNzLCBjaGFyMSwg
Y2hhcjIsIGNoYXIzLCBjaGFyNCwgY2hhcjUsIGNoYXI2LCBjaGFyNykgXFwKKyAgICAoQ09NUEFS
RV9DSEFSQUNURVJTNChhZGRyZXNzLCBjaGFyMSwgY2hhcjIsIGNoYXIzLCBjaGFyNCkgJiYgQ09N
UEFSRV9DSEFSQUNURVJTNChhZGRyZXNzICsgMywgY2hhcjQsIGNoYXI1LCBjaGFyNiwgY2hhcjcp
KQorI2RlZmluZSBDT01QQVJFX0NIQVJBQ1RFUlM4KGFkZHJlc3MsIGNoYXIxLCBjaGFyMiwgY2hh
cjMsIGNoYXI0LCBjaGFyNSwgY2hhcjYsIGNoYXI3LCBjaGFyOCkgXFwKKyAgICAoQ09NUEFSRV9D
SEFSQUNURVJTNChhZGRyZXNzLCBjaGFyMSwgY2hhcjIsIGNoYXIzLCBjaGFyNCkgJiYgQ09NUEFS
RV9DSEFSQUNURVJTNChhZGRyZXNzICsgNCwgY2hhcjUsIGNoYXI2LCBjaGFyNywgY2hhcjgpKQog
IiIiKQogCiB0cmllLnByaW50QXNDKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDczNDQyMmVhMTgzMDFkYTliN2Q5NjRmYWYy
ZTM5OTQ2MjEzNTFhOGIuLjliZDk3YTViNzBjNzlkYzg4MWU5ZDBiZmU5NzYxZTExODFiYmU3MzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcApAQCAtNDQ1LDcgKzQ0NSw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIEludGVycHJldGVy
OjpjYWxsRXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUmVnaXN0ZXJGaWxlKiByCiAgICAgICAg
IGlmICghY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6
IFdlIGNhbiB1c2UgdGhlIHByZXBhcnNlciBpbiBzdHJpY3QgbW9kZSwgd2UganVzdCBuZWVkIGFk
ZGl0aW9uYWwgbG9naWMKICAgICAgICAgICAgIC8vIHRvIHByZXZlbnQgZHVwbGljYXRlcy4KLSAg
ICAgICAgICAgIExpdGVyYWxQYXJzZXIgcHJlcGFyc2VyKGNhbGxGcmFtZSwgcHJvZ3JhbVNvdXJj
ZS5jaGFyYWN0ZXJzKCksIHByb2dyYW1Tb3VyY2UubGVuZ3RoKCksIExpdGVyYWxQYXJzZXI6Ok5v
blN0cmljdEpTT04pOworICAgICAgICAgICAgTGl0ZXJhbFBhcnNlciBwcmVwYXJzZXIoY2FsbEZy
YW1lLCBwcm9ncmFtU291cmNlLmNoYXJhY3RlcnMxNigpLCBwcm9ncmFtU291cmNlLmxlbmd0aCgp
LCBMaXRlcmFsUGFyc2VyOjpOb25TdHJpY3RKU09OKTsKICAgICAgICAgICAgIGlmIChKU1ZhbHVl
IHBhcnNlZE9iamVjdCA9IHByZXBhcnNlci50cnlMaXRlcmFsUGFyc2UoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gcGFyc2VkT2JqZWN0OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuY3BwCmluZGV4IGVhYmEzZWE2MzgyNThjZTJhMjZjZjc5N2EwYWI5NTdkMzYx
YTYyMmYuLmM3NmMyYTRlNjIxNzNmNDhjYjJkNjkwYzVmYTBjNjhkMmUzNThmMmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC0yMjYsMjAgKzIyNiwxNyBAQCBzdGF0
aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgdHlwZXNPZkFTQ0lJQ2hhcmFjdGVyc1sxMjhdID0gewog
LyogMTI3IC0gRGVsZXRlICAgICAgICAgICAgICovIENoYXJhY3RlckludmFsaWQsCiB9OwogCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUxleGVyPFQ+OjpMZXhlcihKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEpCitMZXhlcjo6TGV4ZXIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogICAgIDogbV9p
c1JlcGFyc2luZyhmYWxzZSkKICAgICAsIG1fZ2xvYmFsRGF0YShnbG9iYWxEYXRhKQogewogfQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUxleGVyPFQ+Ojp+TGV4ZXIoKQorTGV4ZXI6On5MZXhl
cigpCiB7CiB9Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotVVN0cmluZyBMZXhlcjxUPjo6Z2V0
SW52YWxpZENoYXJNZXNzYWdlKCkKKyAgICAKK1VTdHJpbmcgTGV4ZXI6OmdldEludmFsaWRDaGFy
TWVzc2FnZSgpCiB7CiAgICAgc3dpdGNoIChtX2N1cnJlbnQpIHsKICAgICBjYXNlIDA6CkBAIC0y
NjEsMzkgKzI1OCwzOCBAQCBVU3RyaW5nIExleGVyPFQ+OjpnZXRJbnZhbGlkQ2hhck1lc3NhZ2Uo
KQogICAgIH0KIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIGNvbnN0
IFQqIExleGVyPFQ+OjpjdXJyZW50Q2hhcmFjdGVyKCkgY29uc3QKK0FMV0FZU19JTkxJTkUgY29u
c3QgVUNoYXIqIExleGVyOjpjdXJyZW50Q2hhcmFjdGVyKCkgY29uc3QKIHsKICAgICBBU1NFUlQo
bV9jb2RlIDw9IG1fY29kZUVuZCk7CiAgICAgcmV0dXJuIG1fY29kZTsKIH0KIAotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci12b2lkIExleGVyPFQ+OjpzZXRDb2RlKGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgUGFyc2VyQXJlbmEqIGFyZW5hKQorQUxXQVlTX0lOTElORSBpbnQgTGV4ZXI6OmN1cnJl
bnRPZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBjdXJyZW50Q2hhcmFjdGVyKCkgLSBtX2Nv
ZGVTdGFydDsKK30KKwordm9pZCBMZXhlcjo6c2V0Q29kZShjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIFBhcnNlckFyZW5hKiBhcmVuYSkKIHsKICAgICBtX2FyZW5hID0gJmFyZW5hLT5pZGVudGlm
aWVyQXJlbmEoKTsKLSAgICAKKwogICAgIG1fbGluZU51bWJlciA9IHNvdXJjZS5maXJzdExpbmUo
KTsKICAgICBtX2RlbGltaXRlZCA9IGZhbHNlOwogICAgIG1fbGFzdFRva2VuID0gLTE7Ci0gICAg
Ci0gICAgY29uc3QgU3RyaW5nSW1wbCogc291cmNlU3RyaW5nID0gc291cmNlLnByb3ZpZGVyKCkt
PnN0cmluZ0RhdGEoKTsKIAotICAgIGlmIChzb3VyY2VTdHJpbmcpCi0gICAgICAgIHNldENvZGVT
dGFydChzb3VyY2VTdHJpbmcpOwotICAgIGVsc2UKLSAgICAgICAgbV9jb2RlU3RhcnQgPSAwOwor
ICAgIGNvbnN0IFVDaGFyKiBkYXRhID0gc291cmNlLnByb3ZpZGVyKCktPmRhdGEoKTsKIAogICAg
IG1fc291cmNlID0gJnNvdXJjZTsKLSAgICBtX2NvZGUgPSBtX2NvZGVTdGFydCArIHNvdXJjZS5z
dGFydE9mZnNldCgpOwotICAgIG1fY29kZUVuZCA9IG1fY29kZVN0YXJ0ICsgc291cmNlLmVuZE9m
ZnNldCgpOworICAgIG1fY29kZVN0YXJ0ID0gZGF0YTsKKyAgICBtX2NvZGUgPSBkYXRhICsgc291
cmNlLnN0YXJ0T2Zmc2V0KCk7CisgICAgbV9jb2RlRW5kID0gZGF0YSArIHNvdXJjZS5lbmRPZmZz
ZXQoKTsKICAgICBtX2Vycm9yID0gZmFsc2U7CiAgICAgbV9hdExpbmVTdGFydCA9IHRydWU7CiAg
ICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBVU3RyaW5nKCk7Ci0gICAgCisKICAgICBtX2J1ZmZlcjgu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbml0aWFsUmVhZEJ1ZmZlckNhcGFjaXR5KTsKICAgICBt
X2J1ZmZlcjE2LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoKG1fY29kZUVuZCAtIG1fY29kZSkgLyAy
KTsKLSAgICAKKwogICAgIGlmIChMSUtFTFkobV9jb2RlIDwgbV9jb2RlRW5kKSkKICAgICAgICAg
bV9jdXJyZW50ID0gKm1fY29kZTsKICAgICBlbHNlCkBAIC0zMDEsMzUgKzI5NywzNSBAQCB2b2lk
IExleGVyPFQ+OjpzZXRDb2RlKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyQXJlbmEq
IGFyZW5hKQogICAgIEFTU0VSVChjdXJyZW50T2Zmc2V0KCkgPT0gc291cmNlLnN0YXJ0T2Zmc2V0
KCkpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXRlbXBsYXRlIDxpbnQgc2hpZnRBbW91
bnQ+IEFMV0FZU19JTkxJTkUgdm9pZCBMZXhlcjxUPjo6aW50ZXJuYWxTaGlmdCgpCit0ZW1wbGF0
ZSA8aW50IHNoaWZ0QW1vdW50LCBMZXhlcjo6U2hpZnRUeXBlIHNob3VsZEJvdW5kc0NoZWNrPiBB
TFdBWVNfSU5MSU5FIHZvaWQgTGV4ZXI6OmludGVybmFsU2hpZnQoKQogewotICAgIG1fY29kZSAr
PSBzaGlmdEFtb3VudDsKLSAgICBtX2N1cnJlbnQgPSAqbV9jb2RlOworICAgIGlmIChzaG91bGRC
b3VuZHNDaGVjayA9PSBEb0JvdW5kc0NoZWNrKSB7CisgICAgICAgIC8vIEZhc3RlciB0aGFuIGFu
IGlmLWVsc2Ugc2VxdWVuY2UKKyAgICAgICAgQVNTRVJUKG1fY3VycmVudCAhPSAtMSk7CisgICAg
ICAgIG1fY3VycmVudCA9IC0xOworICAgICAgICBtX2NvZGUgKz0gc2hpZnRBbW91bnQ7CisgICAg
ICAgIGlmIChMSUtFTFkobV9jb2RlIDwgbV9jb2RlRW5kKSkKKyAgICAgICAgICAgIG1fY3VycmVu
dCA9ICptX2NvZGU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9jb2RlICs9IHNoaWZ0QW1vdW50
OworICAgICAgICBtX2N1cnJlbnQgPSAqbV9jb2RlOworICAgIH0KIH0KIAotdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIHZvaWQgTGV4ZXI8VD46OnNoaWZ0KCkKK0FMV0FZU19J
TkxJTkUgdm9pZCBMZXhlcjo6c2hpZnQoKQogewotICAgIC8vIEZhc3RlciB0aGFuIGFuIGlmLWVs
c2Ugc2VxdWVuY2UKLSAgICBBU1NFUlQobV9jdXJyZW50ICE9IC0xKTsKLSAgICBtX2N1cnJlbnQg
PSAtMTsKLSAgICBtX2NvZGUrKzsKLSAgICBpZiAoTElLRUxZKG1fY29kZSA8IG1fY29kZUVuZCkp
Ci0gICAgICAgIG1fY3VycmVudCA9ICptX2NvZGU7CisgICAgaW50ZXJuYWxTaGlmdDwxLCBEb0Jv
dW5kc0NoZWNrPigpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUg
aW50IExleGVyPFQ+OjpwZWVrKGludCBvZmZzZXQpCitBTFdBWVNfSU5MSU5FIGludCBMZXhlcjo6
cGVlayhpbnQgb2Zmc2V0KQogewogICAgIC8vIE9ubHkgdXNlIGlmIG5lY2Vzc2FyeQogICAgIEFT
U0VSVChvZmZzZXQgPiAwICYmIG9mZnNldCA8IDUpOwotICAgIGNvbnN0IFQqIGNvZGUgPSBtX2Nv
ZGUgKyBvZmZzZXQ7CisgICAgY29uc3QgVUNoYXIqIGNvZGUgPSBtX2NvZGUgKyBvZmZzZXQ7CiAg
ICAgcmV0dXJuIChjb2RlIDwgbV9jb2RlRW5kKSA/ICpjb2RlIDogLTE7CiB9CiAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBUPgotaW50IExleGVyPFQ+OjpnZXRVbmljb2RlQ2hhcmFjdGVyKCkKK2ludCBM
ZXhlcjo6Z2V0VW5pY29kZUNoYXJhY3RlcigpCiB7CiAgICAgaW50IGNoYXIxID0gcGVlaygxKTsK
ICAgICBpbnQgY2hhcjIgPSBwZWVrKDIpOwpAQCAtMzQ2LDggKzM0Miw3IEBAIGludCBMZXhlcjxU
Pjo6Z2V0VW5pY29kZUNoYXJhY3RlcigpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci12b2lkIExleGVyPFQ+OjpzaGlmdExpbmVUZXJtaW5hdG9yKCkKK3Zv
aWQgTGV4ZXI6OnNoaWZ0TGluZVRlcm1pbmF0b3IoKQogewogICAgIEFTU0VSVChpc0xpbmVUZXJt
aW5hdG9yKG1fY3VycmVudCkpOwogCkBAIC0zNjEsOCArMzU2LDcgQEAgdm9pZCBMZXhlcjxUPjo6
c2hpZnRMaW5lVGVybWluYXRvcigpCiAgICAgKyttX2xpbmVOdW1iZXI7CiB9CiAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBUPgotQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpsYXN0VG9rZW5XYXNS
ZXN0cktleXdvcmQoKSBjb25zdAorQUxXQVlTX0lOTElORSBib29sIExleGVyOjpsYXN0VG9rZW5X
YXNSZXN0cktleXdvcmQoKSBjb25zdAogewogICAgIHJldHVybiBtX2xhc3RUb2tlbiA9PSBDT05U
SU5VRSB8fCBtX2xhc3RUb2tlbiA9PSBCUkVBSyB8fCBtX2xhc3RUb2tlbiA9PSBSRVRVUk4gfHwg
bV9sYXN0VG9rZW4gPT0gVEhST1c7CiB9CkBAIC00MTcsMTExICs0MTEsMjkgQEAgc3RhdGljIGlu
bGluZSBpbnQgc2luZ2xlRXNjYXBlKGludCBjKQogICAgIH0KIH0KIAotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1pbmxpbmUgdm9pZCBMZXhlcjxUPjo6cmVjb3JkOChpbnQgYykKK2lubGluZSB2b2lk
IExleGVyOjpyZWNvcmQ4KGludCBjKQogewogICAgIEFTU0VSVChjID49IDApOwogICAgIEFTU0VS
VChjIDw9IDB4RkYpOwotICAgIG1fYnVmZmVyOC5hcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KGMp
KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCBMZXhlcjxUPjo6YXBw
ZW5kOChjb25zdCBUKiBwLCBzaXplX3QgbGVuZ3RoKQotewotICAgIC8vIEZJWE1FOiBDaGFuZ2Ug
dGhyZWUgb2NjdXJyYW5jZXMgb2YgbV9idWZmZXIxNiB0byBtX2J1ZmZlcjggYW5kCi0gICAgLy8g
VUNoYXIgdG8gTENoYXIgd2hlbiA4IGJpdCBzdHJpbmdzIGFyZSB0dXJuZWQgb24uCi0gICAgc2l6
ZV90IGN1cnJlbnRTaXplID0gbV9idWZmZXIxNi5zaXplKCk7Ci0gICAgbV9idWZmZXIxNi5ncm93
KGN1cnJlbnRTaXplICsgbGVuZ3RoKTsKLSAgICBVQ2hhciogcmF3QnVmZmVyID0gbV9idWZmZXIx
Ni5kYXRhKCkgKyBjdXJyZW50U2l6ZTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVu
Z3RoOyBpKyspIHsKLSAgICAgICAgVCBjID0gcFtpXTsKLSAgICAgICAgQVNTRVJUKGMgPj0gMCk7
Ci0gICAgICAgIEFTU0VSVChjIDw9IDB4RkYpOwotICAgICAgICByYXdCdWZmZXJbaV0gPSBjOwot
ICAgIH0KLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCBMZXhlcjxUPjo6
YXBwZW5kMTYoY29uc3QgTENoYXIqIHAsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgc2l6ZV90IGN1
cnJlbnRTaXplID0gbV9idWZmZXIxNi5zaXplKCk7Ci0gICAgbV9idWZmZXIxNi5ncm93KGN1cnJl
bnRTaXplICsgbGVuZ3RoKTsKLSAgICBVQ2hhciogcmF3QnVmZmVyID0gbV9idWZmZXIxNi5kYXRh
KCkgKyBjdXJyZW50U2l6ZTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyBp
KyspCi0gICAgICAgIHJhd0J1ZmZlcltpXSA9IHBbaV07CisgICAgbV9idWZmZXI4LmFwcGVuZChz
dGF0aWNfY2FzdDxjaGFyPihjKSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5l
IHZvaWQgTGV4ZXI8VD46OnJlY29yZDE2KFQgYykKK2lubGluZSB2b2lkIExleGVyOjpyZWNvcmQx
NihVQ2hhciBjKQogewogICAgIG1fYnVmZmVyMTYuYXBwZW5kKGMpOwogfQogCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLWlubGluZSB2b2lkIExleGVyPFQ+OjpyZWNvcmQxNihpbnQgYykKK2lubGlu
ZSB2b2lkIExleGVyOjpyZWNvcmQxNihpbnQgYykKIHsKICAgICBBU1NFUlQoYyA+PSAwKTsKICAg
ICBBU1NFUlQoYyA8PSBVU0hSVF9NQVgpOwotICAgIG1fYnVmZmVyMTYuYXBwZW5kKHN0YXRpY19j
YXN0PFVDaGFyPihjKSk7CisgICAgcmVjb3JkMTYoVUNoYXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQg
c2hvcnQ+KGMpKSk7CiB9CiAKLXRlbXBsYXRlIDw+Ci0gICAgdGVtcGxhdGUgPGJvb2wgc2hvdWxk
Q3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46
OnBhcnNlSWRlbnRpZmllcihKU1Rva2VuRGF0YSogdG9rZW5EYXRhLCB1bnNpZ25lZCBsZXhlckZs
YWdzLCBib29sIHN0cmljdE1vZGUpCit0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlm
aWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyOjpwYXJzZUlkZW50aWZpZXIoSlNU
b2tlbkRhdGEqIHRva2VuRGF0YSwgdW5zaWduZWQgbGV4VHlwZSwgYm9vbCBzdHJpY3RNb2RlKQog
ewogICAgIGNvbnN0IHB0cmRpZmZfdCByZW1haW5pbmcgPSBtX2NvZGVFbmQgLSBtX2NvZGU7Ci0g
ICAgaWYgKChyZW1haW5pbmcgPj0gbWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExl
eGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkgewotICAgICAgICBKU1Rva2VuVHlwZSBrZXl3
b3JkID0gcGFyc2VLZXl3b3JkPHNob3VsZENyZWF0ZUlkZW50aWZpZXI+KHRva2VuRGF0YSk7Ci0g
ICAgICAgIGlmIChrZXl3b3JkICE9IElERU5UKSB7Ci0gICAgICAgICAgICBBU1NFUlQoKCFzaG91
bGRDcmVhdGVJZGVudGlmaWVyKSB8fCB0b2tlbkRhdGEtPmlkZW50KTsKLSAgICAgICAgICAgIHJl
dHVybiBrZXl3b3JkID09IFJFU0VSVkVEX0lGX1NUUklDVCAmJiAhc3RyaWN0TW9kZSA/IElERU5U
IDoga2V5d29yZDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGNvbnN0IExDaGFyKiBpZGVudGlm
aWVyU3RhcnQgPSBjdXJyZW50Q2hhcmFjdGVyKCk7Ci0gICAgCi0gICAgd2hpbGUgKGlzSWRlbnRQ
YXJ0KG1fY3VycmVudCkpCi0gICAgICAgIHNoaWZ0KCk7Ci0gICAgCi0gICAgaWYgKFVOTElLRUxZ
KG1fY3VycmVudCA9PSAnXFwnKSkgewotICAgICAgICBzZXRPZmZzZXRGcm9tQ2hhck9mZnNldChp
ZGVudGlmaWVyU3RhcnQpOwotICAgICAgICByZXR1cm4gcGFyc2VJZGVudGlmaWVyU2xvd0Nhc2U8
c2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4odG9rZW5EYXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2Rl
KTsKLSAgICB9Ci0KLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IDA7Ci0gICAgCi0gICAg
aWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpIHsKLSAgICAgICAgaW50IGlkZW50aWZpZXJMZW5n
dGggPSBjdXJyZW50Q2hhcmFjdGVyKCkgLSBpZGVudGlmaWVyU3RhcnQ7Ci0gICAgICAgIGlkZW50
ID0gbWFrZUlkZW50aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsKLQot
ICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gaWRlbnQ7Ci0gICAgfSBlbHNlCi0gICAgICAgIHRv
a2VuRGF0YS0+aWRlbnQgPSAwOwotCi0gICAgbV9kZWxpbWl0ZWQgPSBmYWxzZTsKLQotICAgIGlm
IChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAm
IExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkpIHsKLSAgICAgICAgQVNTRVJUKHNob3Vs
ZENyZWF0ZUlkZW50aWZpZXIpOwotICAgICAgICBpZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5n
dGgpIHsKLSAgICAgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSBtX2dsb2JhbERhdGEt
PmtleXdvcmRzLT5nZXRLZXl3b3JkKCppZGVudCk7Ci0gICAgICAgICAgICBBU1NFUlQoKHJlbWFp
bmluZyA8IG1heFRva2VuTGVuZ3RoKSB8fCAhZW50cnkpOwotICAgICAgICAgICAgaWYgKCFlbnRy
eSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSURFTlQ7Ci0gICAgICAgICAgICBKU1Rva2VuVHlw
ZSB0b2tlbiA9IHN0YXRpY19jYXN0PEpTVG9rZW5UeXBlPihlbnRyeS0+bGV4ZXJWYWx1ZSgpKTsK
LSAgICAgICAgICAgIHJldHVybiAodG9rZW4gIT0gUkVTRVJWRURfSUZfU1RSSUNUKSB8fCBzdHJp
Y3RNb2RlID8gdG9rZW4gOiBJREVOVDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gSURFTlQ7
Ci0gICAgfQotCi0gICAgcmV0dXJuIElERU5UOwotfQotCi10ZW1wbGF0ZSA8PgotdGVtcGxhdGUg
PGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBM
ZXhlcjxVQ2hhcj46OnBhcnNlSWRlbnRpZmllcihKU1Rva2VuRGF0YSogdG9rZW5EYXRhLCB1bnNp
Z25lZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCi17Ci0gICAgY29uc3QgcHRyZGlmZl90
IHJlbWFpbmluZyA9IG1fY29kZUVuZCAtIG1fY29kZTsKLSAgICBpZiAoKHJlbWFpbmluZyA+PSBt
YXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVk
V29yZHMpKSB7CisgICAgaWYgKChyZW1haW5pbmcgPj0gbWF4VG9rZW5MZW5ndGgpICYmICEobGV4
VHlwZSAmIElnbm9yZVJlc2VydmVkV29yZHMpKSB7CiAgICAgICAgIEpTVG9rZW5UeXBlIGtleXdv
cmQgPSBwYXJzZUtleXdvcmQ8c2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4odG9rZW5EYXRhKTsKICAg
ICAgICAgaWYgKGtleXdvcmQgIT0gSURFTlQpIHsKICAgICAgICAgICAgIEFTU0VSVCgoIXNob3Vs
ZENyZWF0ZUlkZW50aWZpZXIpIHx8IHRva2VuRGF0YS0+aWRlbnQpOwpAQCAtNTI5LDYyICs0NDEs
NiBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5F
IEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgICAgICB9CiAgICAgfQogICAgIGNvbnN0
IFVDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50Q2hhcmFjdGVyKCk7Ci0KLSAgICBVQ2hh
ciBvckFsbENoYXJzID0gMDsKLSAgICAKLSAgICB3aGlsZSAoaXNJZGVudFBhcnQobV9jdXJyZW50
KSkgewotICAgICAgICBvckFsbENoYXJzIHw9IG1fY3VycmVudDsKLSAgICAgICAgc2hpZnQoKTsK
LSAgICB9Ci0gICAgCi0gICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAnXFwnKSkgewotICAg
ICAgICBzZXRPZmZzZXRGcm9tQ2hhck9mZnNldChpZGVudGlmaWVyU3RhcnQpOwotICAgICAgICBy
ZXR1cm4gcGFyc2VJZGVudGlmaWVyU2xvd0Nhc2U8c2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4odG9r
ZW5EYXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsKLSAgICB9Ci0KLSAgICBib29sIGlzQWxs
OEJpdCA9IGZhbHNlOwotCi0jaWYgMCAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgI2lmIHdoZW4gOCBi
aXQgc3RyaW5ncyBhcmUgdHVybmVkIG9uLgotICAgIGlmICghKG9yQWxsQ2hhcnMgJiB+MHhmZikp
Ci0gICAgICAgIGlzQWxsOEJpdCA9IHRydWU7Ci0jZW5kaWYKLQotICAgIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50ID0gMDsKLSAgICAKLSAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikgewot
ICAgICAgICBpbnQgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJlbnRDaGFyYWN0ZXIoKSAtIGlkZW50
aWZpZXJTdGFydDsKLSAgICAgICAgaWYgKGlzQWxsOEJpdCkKLSAgICAgICAgICAgIGlkZW50ID0g
bWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJM
ZW5ndGgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVy
KGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7Ci0gICAgICAgIAotICAgICAgICB0
b2tlbkRhdGEtPmlkZW50ID0gaWRlbnQ7Ci0gICAgfSBlbHNlCi0gICAgICAgIHRva2VuRGF0YS0+
aWRlbnQgPSAwOwotICAgIAotICAgIG1fZGVsaW1pdGVkID0gZmFsc2U7Ci0gICAgCi0gICAgaWYg
KFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYg
TGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSkgewotICAgICAgICBBU1NFUlQoc2hvdWxk
Q3JlYXRlSWRlbnRpZmllcik7Ci0gICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0
aCkgewotICAgICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IG1fZ2xvYmFsRGF0YS0+
a2V5d29yZHMtPmdldEtleXdvcmQoKmlkZW50KTsKLSAgICAgICAgICAgIEFTU0VSVCgocmVtYWlu
aW5nIDwgbWF4VG9rZW5MZW5ndGgpIHx8ICFlbnRyeSk7Ci0gICAgICAgICAgICBpZiAoIWVudHJ5
KQotICAgICAgICAgICAgICAgIHJldHVybiBJREVOVDsKLSAgICAgICAgICAgIEpTVG9rZW5UeXBl
IHRva2VuID0gc3RhdGljX2Nhc3Q8SlNUb2tlblR5cGU+KGVudHJ5LT5sZXhlclZhbHVlKCkpOwot
ICAgICAgICAgICAgcmV0dXJuICh0b2tlbiAhPSBSRVNFUlZFRF9JRl9TVFJJQ1QpIHx8IHN0cmlj
dE1vZGUgPyB0b2tlbiA6IElERU5UOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBJREVOVDsK
LSAgICB9Ci0KLSAgICByZXR1cm4gSURFTlQ7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
dGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gSlNUb2tlblR5cGUgTGV4ZXI8
VD46OnBhcnNlSWRlbnRpZmllclNsb3dDYXNlKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsIHVuc2ln
bmVkIGxleGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkKLXsKLSAgICBjb25zdCBwdHJkaWZmX3Qg
cmVtYWluaW5nID0gbV9jb2RlRW5kIC0gbV9jb2RlOwotICAgIGNvbnN0IFQqIGlkZW50aWZpZXJT
dGFydCA9IGN1cnJlbnRDaGFyYWN0ZXIoKTsKICAgICBib29sIGJ1ZmZlclJlcXVpcmVkID0gZmFs
c2U7CiAKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtNjA4LDMwICs0NjQsMzEgQEAgdGVtcGxhdGUg
PGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gSlNUb2tlblR5cGUgTGV4ZXI8VD46OnBhcnNl
SWRlbnRpZmllclNsb3cKICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKICAgICAgICAgaWYg
KFVOTElLRUxZKG1fYnVmZmVyMTYuc2l6ZSgpID8gIWlzSWRlbnRQYXJ0KGNoYXJhY3RlcikgOiAh
aXNJZGVudFN0YXJ0KGNoYXJhY3RlcikpKQogICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOwot
ICAgICAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikKKyAgICAgICAgaWYgIChzaG91bGRD
cmVhdGVJZGVudGlmaWVyKQogICAgICAgICAgICAgcmVjb3JkMTYoY2hhcmFjdGVyKTsKICAgICAg
ICAgaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudENoYXJhY3RlcigpOwogICAgIH0KLQorICAgIAog
ICAgIGludCBpZGVudGlmaWVyTGVuZ3RoOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0g
MDsKICAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikgewotICAgICAgICBpZiAoIWJ1ZmZl
clJlcXVpcmVkKSB7CisgICAgICAgIGlmICghYnVmZmVyUmVxdWlyZWQpCiAgICAgICAgICAgICBp
ZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudENoYXJhY3RlcigpIC0gaWRlbnRpZmllclN0YXJ0Owot
ICAgICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyU3RhcnQsIGlkZW50
aWZpZXJMZW5ndGgpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIGlmIChpZGVudGlmaWVyU3RhcnQgIT0gY3VycmVudENoYXJhY3RlcigpKQogICAgICAgICAg
ICAgICAgIG1fYnVmZmVyMTYuYXBwZW5kKGlkZW50aWZpZXJTdGFydCwgY3VycmVudENoYXJhY3Rl
cigpIC0gaWRlbnRpZmllclN0YXJ0KTsKLSAgICAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZp
ZXIobV9idWZmZXIxNi5kYXRhKCksIG1fYnVmZmVyMTYuc2l6ZSgpKTsKKyAgICAgICAgICAgIGlk
ZW50aWZpZXJTdGFydCA9IG1fYnVmZmVyMTYuZGF0YSgpOworICAgICAgICAgICAgaWRlbnRpZmll
ckxlbmd0aCA9IG1fYnVmZmVyMTYuc2l6ZSgpOwogICAgICAgICB9CiAKKyAgICAgICAgaWRlbnQg
PSBtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwogICAg
ICAgICB0b2tlbkRhdGEtPmlkZW50ID0gaWRlbnQ7CiAgICAgfSBlbHNlCiAgICAgICAgIHRva2Vu
RGF0YS0+aWRlbnQgPSAwOwogCiAgICAgbV9kZWxpbWl0ZWQgPSBmYWxzZTsKIAotICAgIGlmIChM
SUtFTFkoIWJ1ZmZlclJlcXVpcmVkICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVS
ZXNlcnZlZFdvcmRzKSkpIHsKKyAgICBpZiAoTElLRUxZKCFidWZmZXJSZXF1aXJlZCAmJiAhKGxl
eFR5cGUgJiBJZ25vcmVSZXNlcnZlZFdvcmRzKSkpIHsKICAgICAgICAgQVNTRVJUKHNob3VsZENy
ZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICAvLyBLZXl3b3JkcyBtdXN0IG5vdCBiZSByZWNvZ25p
emVkIGlmIHRoZXJlIHdhcyBhbiBcdVhYWFggaW4gdGhlIGlkZW50aWZpZXIuCiAgICAgICAgIGlm
IChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgewpAQCAtNjQ5LDk2ICs1MDYsMjUgQEAgdGVt
cGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gSlNUb2tlblR5cGUgTGV4ZXI8VD46
OnBhcnNlSWRlbnRpZmllclNsb3cKICAgICByZXR1cm4gSURFTlQ7CiB9CiAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdzPiBBTFdBWVNfSU5M
SU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlU3RyaW5nKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsIGJv
b2wgc3RyaWN0TW9kZSkKLXsKLSAgICAvLyBGSVhNRTogQ2hhbmdlIHJlY29yZDE2IGFuZCBtX2J1
ZmZlcjE2IHRvIHJlY29yZDggYW5kIG1fYnVmZmVyOCBiZWxvdyB3aGVuCi0gICAgLy8gOCBiaXQg
c3RyaW5ncyBhcmUgdHVybmVkIG9uLgotICAgIGludCBzdGFydGluZ09mZnNldCA9IGN1cnJlbnRP
ZmZzZXQoKTsKLSAgICBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyID0gbGluZU51bWJlcigpOwotICAg
IGludCBzdHJpbmdRdW90ZUNoYXJhY3RlciA9IG1fY3VycmVudDsKLSAgICBzaGlmdCgpOwotCi0g
ICAgY29uc3QgVCogc3RyaW5nU3RhcnQgPSBjdXJyZW50Q2hhcmFjdGVyKCk7Ci0KLSAgICB3aGls
ZSAobV9jdXJyZW50ICE9IHN0cmluZ1F1b3RlQ2hhcmFjdGVyKSB7Ci0gICAgICAgIGlmIChVTkxJ
S0VMWSgobV9jdXJyZW50ID09ICdcXCcpKSkgewotICAgICAgICAgICAgaWYgKHN0cmluZ1N0YXJ0
ICE9IGN1cnJlbnRDaGFyYWN0ZXIoKSAmJiBzaG91bGRCdWlsZFN0cmluZ3MpCi0gICAgICAgICAg
ICAgICAgYXBwZW5kOChzdHJpbmdTdGFydCwgY3VycmVudENoYXJhY3RlcigpIC0gc3RyaW5nU3Rh
cnQpOwotICAgICAgICAgICAgc2hpZnQoKTsKLQotICAgICAgICAgICAgaW50IGVzY2FwZSA9IHNp
bmdsZUVzY2FwZShtX2N1cnJlbnQpOwotCi0gICAgICAgICAgICAvLyBNb3N0IGNvbW1vbiBlc2Nh
cGUgc2VxdWVuY2VzIGZpcnN0Ci0gICAgICAgICAgICBpZiAoZXNjYXBlKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHNob3VsZEJ1aWxkU3RyaW5ncykKLSAgICAgICAgICAgICAgICAgICAgcmVjb3Jk
MTYoZXNjYXBlKTsgLy8gRklYTUU6IENoYW5nZSB0byByZWNvcmQ4Ci0gICAgICAgICAgICAgICAg
c2hpZnQoKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoVU5MSUtFTFkoaXNMaW5lVGVybWluYXRv
cihtX2N1cnJlbnQpKSkKLSAgICAgICAgICAgICAgICBzaGlmdExpbmVUZXJtaW5hdG9yKCk7Ci0g
ICAgICAgICAgICBlbHNlIGlmIChtX2N1cnJlbnQgPT0gJ3gnKSB7Ci0gICAgICAgICAgICAgICAg
c2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoaXNBU0NJSUhleERpZ2l0KG1fY3VycmVudCkg
JiYgaXNBU0NJSUhleERpZ2l0KHBlZWsoMSkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGludCBw
cmV2ID0gbV9jdXJyZW50OwotICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoc2hvdWxkQnVpbGRTdHJpbmdzKQotICAgICAgICAgICAgICAgICAgICAg
ICAgcmVjb3JkMTYoY29udmVydEhleChwcmV2LCBtX2N1cnJlbnQpKTsgLy8gRklYTUU6IENoYW5n
ZSB0byByZWNvcmQ4Ci0gICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAg
ICAgfSBlbHNlIGlmIChzaG91bGRCdWlsZFN0cmluZ3MpCi0gICAgICAgICAgICAgICAgICAgIHJl
Y29yZDE2KCd4Jyk7IC8vIEZJWE1FOiBDaGFuZ2UgdG8gcmVjb3JkOAotICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBzZXRPZmZzZXQoc3RhcnRpbmdPZmZzZXQpOwotICAgICAg
ICAgICAgICAgIHNldExpbmVOdW1iZXIoc3RhcnRpbmdMaW5lTnVtYmVyKTsKLSAgICAgICAgICAg
ICAgICBtX2J1ZmZlcjE2LnJlc2l6ZSgwKTsgLy8gRklYTUU6IENoYW5nZSB0byBtX2J1ZmZlcjgK
LSAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VTdHJpbmdTbG93Q2FzZTxzaG91bGRCdWlsZFN0
cmluZ3M+KHRva2VuRGF0YSwgc3RyaWN0TW9kZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBzdHJpbmdTdGFydCA9IGN1cnJlbnRDaGFyYWN0ZXIoKTsKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKFVOTElLRUxZKCgobV9jdXJyZW50ID4gMHhmZikg
fHwgKG1fY3VycmVudCA8IDB4ZSkpKSkgewotICAgICAgICAgICAgc2V0T2Zmc2V0KHN0YXJ0aW5n
T2Zmc2V0KTsKLSAgICAgICAgICAgIHNldExpbmVOdW1iZXIoc3RhcnRpbmdMaW5lTnVtYmVyKTsK
LSAgICAgICAgICAgIG1fYnVmZmVyMTYucmVzaXplKDApOyAvLyBGSVhNRTogQ2hhbmdlIHRvIG1f
YnVmZmVyOAotICAgICAgICAgICAgcmV0dXJuIHBhcnNlU3RyaW5nU2xvd0Nhc2U8c2hvdWxkQnVp
bGRTdHJpbmdzPih0b2tlbkRhdGEsIHN0cmljdE1vZGUpOwotICAgICAgICB9Ci0KLSAgICAgICAg
c2hpZnQoKTsKLSAgICB9Ci0KLSAgICBpZiAoY3VycmVudENoYXJhY3RlcigpICE9IHN0cmluZ1N0
YXJ0ICYmIHNob3VsZEJ1aWxkU3RyaW5ncykKLSAgICAgICAgYXBwZW5kOChzdHJpbmdTdGFydCwg
Y3VycmVudENoYXJhY3RlcigpIC0gc3RyaW5nU3RhcnQpOwotICAgIGlmIChzaG91bGRCdWlsZFN0
cmluZ3MpIHsKLSAgICAgICAgLy8gRklYTUU6IENoYW5nZSB0byBtX2J1ZmZlcjgKLSAgICAgICAg
dG9rZW5EYXRhLT5pZGVudCA9IG1ha2VJZGVudGlmaWVyKG1fYnVmZmVyMTYuZGF0YSgpLCBtX2J1
ZmZlcjE2LnNpemUoKSk7Ci0gICAgICAgIC8vIEZJWE1FOiBDaGFuZ2UgdG8gbV9idWZmZXI4Ci0g
ICAgICAgIG1fYnVmZmVyMTYucmVzaXplKDApOwotICAgIH0gZWxzZQotICAgICAgICB0b2tlbkRh
dGEtPmlkZW50ID0gMDsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLXRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gYm9vbCBMZXhlcjxUPjo6
cGFyc2VTdHJpbmdTbG93Q2FzZShKU1Rva2VuRGF0YSogdG9rZW5EYXRhLCBib29sIHN0cmljdE1v
ZGUpCit0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IEFMV0FZU19JTkxJTkUgYm9v
bCBMZXhlcjo6cGFyc2VTdHJpbmcoSlNUb2tlbkRhdGEqIHRva2VuRGF0YSwgYm9vbCBzdHJpY3RN
b2RlKQogewogICAgIGludCBzdHJpbmdRdW90ZUNoYXJhY3RlciA9IG1fY3VycmVudDsKICAgICBz
aGlmdCgpOwogCi0gICAgY29uc3QgVCogc3RyaW5nU3RhcnQgPSBjdXJyZW50Q2hhcmFjdGVyKCk7
CisgICAgY29uc3QgVUNoYXIqIHN0cmluZ1N0YXJ0ID0gY3VycmVudENoYXJhY3RlcigpOwogCiAg
ICAgd2hpbGUgKG1fY3VycmVudCAhPSBzdHJpbmdRdW90ZUNoYXJhY3RlcikgewogICAgICAgICBp
ZiAoVU5MSUtFTFkobV9jdXJyZW50ID09ICdcXCcpKSB7CiAgICAgICAgICAgICBpZiAoc3RyaW5n
U3RhcnQgIT0gY3VycmVudENoYXJhY3RlcigpICYmIHNob3VsZEJ1aWxkU3RyaW5ncykKLSAgICAg
ICAgICAgICAgICBhcHBlbmQxNihzdHJpbmdTdGFydCwgY3VycmVudENoYXJhY3RlcigpIC0gc3Ry
aW5nU3RhcnQpOworICAgICAgICAgICAgICAgIG1fYnVmZmVyMTYuYXBwZW5kKHN0cmluZ1N0YXJ0
LCBjdXJyZW50Q2hhcmFjdGVyKCkgLSBzdHJpbmdTdGFydCk7CiAgICAgICAgICAgICBzaGlmdCgp
OwogCiAgICAgICAgICAgICBpbnQgZXNjYXBlID0gc2luZ2xlRXNjYXBlKG1fY3VycmVudCk7CiAK
ICAgICAgICAgICAgIC8vIE1vc3QgY29tbW9uIGVzY2FwZSBzZXF1ZW5jZXMgZmlyc3QKICAgICAg
ICAgICAgIGlmIChlc2NhcGUpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2hvdWxkQnVpbGRTdHJp
bmdzKQotICAgICAgICAgICAgICAgICAgICByZWNvcmQxNihlc2NhcGUpOworICAgICAgICAgICAg
ICAgICBpZiAoc2hvdWxkQnVpbGRTdHJpbmdzKQorICAgICAgICAgICAgICAgICAgICAgcmVjb3Jk
MTYoZXNjYXBlKTsKICAgICAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICAgICAgfSBlbHNl
IGlmIChVTkxJS0VMWShpc0xpbmVUZXJtaW5hdG9yKG1fY3VycmVudCkpKQogICAgICAgICAgICAg
ICAgIHNoaWZ0TGluZVRlcm1pbmF0b3IoKTsKQEAgLTgyMiw3ICs2MDgsNyBAQCB0ZW1wbGF0ZSA8
Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IGJvb2wgTGV4ZXI8VD46OnBhcnNlU3RyaW5nU2xvd0Nh
c2UoSlNUb2tlbkRhdAogICAgIH0KIAogICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyKCkgIT0gc3Ry
aW5nU3RhcnQgJiYgc2hvdWxkQnVpbGRTdHJpbmdzKQotICAgICAgICBhcHBlbmQxNihzdHJpbmdT
dGFydCwgY3VycmVudENoYXJhY3RlcigpIC0gc3RyaW5nU3RhcnQpOworICAgICAgICBtX2J1ZmZl
cjE2LmFwcGVuZChzdHJpbmdTdGFydCwgY3VycmVudENoYXJhY3RlcigpIC0gc3RyaW5nU3RhcnQp
OwogICAgIGlmIChzaG91bGRCdWlsZFN0cmluZ3MpCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQg
PSBtYWtlSWRlbnRpZmllcihtX2J1ZmZlcjE2LmRhdGEoKSwgbV9idWZmZXIxNi5zaXplKCkpOwog
ICAgIGVsc2UKQEAgLTgzMiw4ICs2MTgsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0
cmluZ3M+IGJvb2wgTGV4ZXI8VD46OnBhcnNlU3RyaW5nU2xvd0Nhc2UoSlNUb2tlbkRhdAogICAg
IHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUg
dm9pZCBMZXhlcjxUPjo6cGFyc2VIZXgoZG91YmxlJiByZXR1cm5WYWx1ZSkKK0FMV0FZU19JTkxJ
TkUgdm9pZCBMZXhlcjo6cGFyc2VIZXgoZG91YmxlJiByZXR1cm5WYWx1ZSkKIHsKICAgICAvLyBP
cHRpbWl6YXRpb246IG1vc3QgaGV4YWRlY2ltYWwgdmFsdWVzIGZpdCBpbnRvIDQgYnl0ZXMuCiAg
ICAgdWludDMyX3QgaGV4VmFsdWUgPSAwOwpAQCAtODcyLDE1ICs2NTcsMTQgQEAgQUxXQVlTX0lO
TElORSB2b2lkIExleGVyPFQ+OjpwYXJzZUhleChkb3VibGUmIHJldHVyblZhbHVlKQogICAgIHJl
dHVyblZhbHVlID0gcGFyc2VJbnRPdmVyZmxvdyhtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjgu
c2l6ZSgpLCAxNik7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotQUxXQVlTX0lOTElORSBi
b29sIExleGVyPFQ+OjpwYXJzZU9jdGFsKGRvdWJsZSYgcmV0dXJuVmFsdWUpCitBTFdBWVNfSU5M
SU5FIGJvb2wgTGV4ZXI6OnBhcnNlT2N0YWwoZG91YmxlJiByZXR1cm5WYWx1ZSkKIHsKICAgICAv
LyBPcHRpbWl6YXRpb246IG1vc3Qgb2N0YWwgdmFsdWVzIGZpdCBpbnRvIDQgYnl0ZXMuCiAgICAg
dWludDMyX3Qgb2N0YWxWYWx1ZSA9IDA7CiAgICAgaW50IG1heGltdW1EaWdpdHMgPSA5OwogICAg
IC8vIFRlbXBvcmFyeSBidWZmZXIgZm9yIHRoZSBkaWdpdHMuIE1ha2VzIGVhc2llcgogICAgIC8v
IHRvIHJlY29uc3RydWN0IHRoZSBpbnB1dCBjaGFyYWN0ZXJzIHdoZW4gbmVlZGVkLgotICAgIExD
aGFyIGRpZ2l0c1sxMF07CisgICAgY2hhciBkaWdpdHNbMTBdOwogCiAgICAgZG8gewogICAgICAg
ICBvY3RhbFZhbHVlID0gb2N0YWxWYWx1ZSAqIDggKyAobV9jdXJyZW50IC0gJzAnKTsKQEAgLTkw
OSw4ICs2OTMsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlT2N0YWwoZG91
YmxlJiByZXR1cm5WYWx1ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlRGVjaW1hbChkb3VibGUm
IHJldHVyblZhbHVlKQorQUxXQVlTX0lOTElORSBib29sIExleGVyOjpwYXJzZURlY2ltYWwoZG91
YmxlJiByZXR1cm5WYWx1ZSkKIHsKICAgICAvLyBPcHRpbWl6YXRpb246IG1vc3QgZGVjaW1hbCB2
YWx1ZXMgZml0IGludG8gNCBieXRlcy4KICAgICB1aW50MzJfdCBkZWNpbWFsVmFsdWUgPSAwOwpA
QCAtOTIxLDcgKzcwNCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VEZWNp
bWFsKGRvdWJsZSYgcmV0dXJuVmFsdWUpCiAgICAgICAgIGludCBtYXhpbXVtRGlnaXRzID0gOTsK
ICAgICAgICAgLy8gVGVtcG9yYXJ5IGJ1ZmZlciBmb3IgdGhlIGRpZ2l0cy4gTWFrZXMgZWFzaWVy
CiAgICAgICAgIC8vIHRvIHJlY29uc3RydWN0IHRoZSBpbnB1dCBjaGFyYWN0ZXJzIHdoZW4gbmVl
ZGVkLgotICAgICAgICBMQ2hhciBkaWdpdHNbMTBdOworICAgICAgICBjaGFyIGRpZ2l0c1sxMF07
CiAKICAgICAgICAgZG8gewogICAgICAgICAgICAgZGVjaW1hbFZhbHVlID0gZGVjaW1hbFZhbHVl
ICogMTAgKyAobV9jdXJyZW50IC0gJzAnKTsKQEAgLTk0Nyw4ICs3MzAsNyBAQCBBTFdBWVNfSU5M
SU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlRGVjaW1hbChkb3VibGUmIHJldHVyblZhbHVlKQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5F
IHZvaWQgTGV4ZXI8VD46OnBhcnNlTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQoKQorQUxXQVlTX0lO
TElORSB2b2lkIExleGVyOjpwYXJzZU51bWJlckFmdGVyRGVjaW1hbFBvaW50KCkKIHsKICAgICBy
ZWNvcmQ4KCcuJyk7CiAgICAgd2hpbGUgKGlzQVNDSUlEaWdpdChtX2N1cnJlbnQpKSB7CkBAIC05
NTcsOCArNzM5LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIExleGVyPFQ+OjpwYXJzZU51bWJlckFm
dGVyRGVjaW1hbFBvaW50KCkKICAgICB9CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotQUxX
QVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZU51bWJlckFmdGVyRXhwb25lbnRJbmRpY2F0
b3IoKQorQUxXQVlTX0lOTElORSBib29sIExleGVyOjpwYXJzZU51bWJlckFmdGVyRXhwb25lbnRJ
bmRpY2F0b3IoKQogewogICAgIHJlY29yZDgoJ2UnKTsKICAgICBzaGlmdCgpOwpAQCAtOTc3LDgg
Kzc1OCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VOdW1iZXJBZnRlckV4
cG9uZW50SW5kaWNhdG9yKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlTXVsdGlsaW5lQ29tbWVu
dCgpCitBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI6OnBhcnNlTXVsdGlsaW5lQ29tbWVudCgpCiB7
CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgd2hpbGUgKFVOTElLRUxZKG1fY3VycmVudCA9
PSAnKicpKSB7CkBAIC0xMDAwLDE4ICs3ODAsMTYgQEAgQUxXQVlTX0lOTElORSBib29sIExleGVy
PFQ+OjpwYXJzZU11bHRpbGluZUNvbW1lbnQoKQogICAgIH0KIH0KIAotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1ib29sIExleGVyPFQ+OjpuZXh0VG9rZW5Jc0NvbG9uKCkKK2Jvb2wgTGV4ZXI6Om5l
eHRUb2tlbklzQ29sb24oKQogewotICAgIGNvbnN0IFQqIGNvZGUgPSBtX2NvZGU7CisgICAgY29u
c3QgVUNoYXIqIGNvZGUgPSBtX2NvZGU7CiAgICAgd2hpbGUgKGNvZGUgPCBtX2NvZGVFbmQgJiYg
KGlzV2hpdGVTcGFjZSgqY29kZSkgfHwgaXNMaW5lVGVybWluYXRvcigqY29kZSkpKQogICAgICAg
ICBjb2RlKys7Ci0gICAgCisgICAgICAgIAogICAgIHJldHVybiBjb2RlIDwgbV9jb2RlRW5kICYm
ICpjb2RlID09ICc6JzsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1KU1Rva2VuVHlwZSBM
ZXhlcjxUPjo6bGV4KEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsIEpTVG9rZW5JbmZvKiB0b2tlbklu
Zm8sIHVuc2lnbmVkIGxleGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkKK0pTVG9rZW5UeXBlIExl
eGVyOjpsZXgoSlNUb2tlbkRhdGEqIHRva2VuRGF0YSwgSlNUb2tlbkluZm8qIHRva2VuSW5mbywg
dW5zaWduZWQgbGV4VHlwZSwgYm9vbCBzdHJpY3RNb2RlKQogewogICAgIEFTU0VSVCghbV9lcnJv
cik7CiAgICAgQVNTRVJUKG1fYnVmZmVyOC5pc0VtcHR5KCkpOwpAQCAtMTMxNyw3ICsxMDk1LDcg
QEAgaW5OdW1iZXJBZnRlckRlY2ltYWxQb2ludDoKICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIC8vIE51bGwtdGVybWluYXRlIHN0cmluZyBmb3Igc3RydG9kLgogICAgICAg
ICAgICAgICAgIG1fYnVmZmVyOC5hcHBlbmQoJ1wwJyk7Ci0gICAgICAgICAgICAgICAgdG9rZW5E
YXRhLT5kb3VibGVWYWx1ZSA9IFdURjo6c3RydG9kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KG1fYnVmZmVyOC5kYXRhKCkpLCAwKTsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRv
dWJsZVZhbHVlID0gV1RGOjpzdHJ0b2QobV9idWZmZXI4LmRhdGEoKSwgMCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB0b2tlbiA9IE5VTUJFUjsKICAgICAgICAgfQpAQCAtMTMzMSw3ICsx
MTA5LDcgQEAgaW5OdW1iZXJBZnRlckRlY2ltYWxQb2ludDoKICAgICAgICAgbV9kZWxpbWl0ZWQg
PSBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDaGFyYWN0ZXJRdW90ZToKLSAgICAg
ICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzRG9udEJ1aWxkU3RyaW5ncykgeworICAgICAg
ICBpZiAobGV4VHlwZSAmIERvbnRCdWlsZFN0cmluZ3MpIHsKICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWSghcGFyc2VTdHJpbmc8ZmFsc2U+KHRva2VuRGF0YSwgc3RyaWN0TW9kZSkpKQogICAgICAg
ICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xMzQ2LDEw
ICsxMTI0LDEwIEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIEFTU0VSVChp
c0lkZW50U3RhcnQobV9jdXJyZW50KSk7CiAgICAgICAgIC8vIEZhbGwgdGhyb3VnaCBpbnRvIENo
YXJhY3RlckJhY2tTbGFzaC4KICAgICBjYXNlIENoYXJhY3RlckJhY2tTbGFzaDoKLSAgICAgICAg
aWYgKGxleGVyRmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1aWxkS2V5d29yZHMpCi0gICAgICAgICAg
ICB0b2tlbiA9IHBhcnNlSWRlbnRpZmllcjxmYWxzZT4odG9rZW5EYXRhLCBsZXhlckZsYWdzLCBz
dHJpY3RNb2RlKTsKKyAgICAgICAgaWYgKGxleFR5cGUgJiBEb250QnVpbGRLZXl3b3JkcykKKyAg
ICAgICAgICAgIHRva2VuID0gcGFyc2VJZGVudGlmaWVyPGZhbHNlPih0b2tlbkRhdGEsIGxleFR5
cGUsIHN0cmljdE1vZGUpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB0b2tlbiA9IHBhcnNl
SWRlbnRpZmllcjx0cnVlPih0b2tlbkRhdGEsIGxleGVyRmxhZ3MsIHN0cmljdE1vZGUpOworICAg
ICAgICAgICAgdG9rZW4gPSBwYXJzZUlkZW50aWZpZXI8dHJ1ZT4odG9rZW5EYXRhLCBsZXhUeXBl
LCBzdHJpY3RNb2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDaGFyYWN0ZXJMaW5lVGVy
bWluYXRvcjoKICAgICAgICAgQVNTRVJUKGlzTGluZVRlcm1pbmF0b3IobV9jdXJyZW50KSk7CkBA
IC0xNDAwLDggKzExNzgsNyBAQCByZXR1cm5FcnJvcjoKICAgICByZXR1cm4gRVJST1JUT0s7CiB9
CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotYm9vbCBMZXhlcjxUPjo6c2NhblJlZ0V4cChjb25z
dCBJZGVudGlmaWVyKiYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciomIGZsYWdzLCBVQ2hhciBw
YXR0ZXJuUHJlZml4KQorYm9vbCBMZXhlcjo6c2NhblJlZ0V4cChjb25zdCBJZGVudGlmaWVyKiYg
cGF0dGVybiwgY29uc3QgSWRlbnRpZmllciomIGZsYWdzLCBVQ2hhciBwYXR0ZXJuUHJlZml4KQog
ewogICAgIEFTU0VSVChtX2J1ZmZlcjE2LmlzRW1wdHkoKSk7CiAKQEAgLTE0NjIsOCArMTIzOSw3
IEBAIGJvb2wgTGV4ZXI8VD46OnNjYW5SZWdFeHAoY29uc3QgSWRlbnRpZmllciomIHBhdHRlcm4s
IGNvbnN0IElkZW50aWZpZXIqJiBmbGFncywKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1ib29sIExleGVyPFQ+Ojpza2lwUmVnRXhwKCkKK2Jvb2wgTGV4ZXI6
OnNraXBSZWdFeHAoKQogewogICAgIGJvb2wgbGFzdFdhc0VzY2FwZSA9IGZhbHNlOwogICAgIGJv
b2wgaW5CcmFja2V0cyA9IGZhbHNlOwpAQCAtMTUwMywxMiArMTI3OSwxMSBAQCBib29sIExleGVy
PFQ+Ojpza2lwUmVnRXhwKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci12b2lkIExleGVyPFQ+OjpjbGVhcigpCit2b2lkIExleGVyOjpjbGVhcigpCiB7CiAg
ICAgbV9hcmVuYSA9IDA7CiAKLSAgICBWZWN0b3I8TENoYXI+IG5ld0J1ZmZlcjg7CisgICAgVmVj
dG9yPGNoYXI+IG5ld0J1ZmZlcjg7CiAgICAgbV9idWZmZXI4LnN3YXAobmV3QnVmZmVyOCk7CiAK
ICAgICBWZWN0b3I8VUNoYXI+IG5ld0J1ZmZlcjE2OwpAQCAtMTUxNywxNiArMTI5MiwxMSBAQCB2
b2lkIExleGVyPFQ+OjpjbGVhcigpCiAgICAgbV9pc1JlcGFyc2luZyA9IGZhbHNlOwogfQogCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLVNvdXJjZUNvZGUgTGV4ZXI8VD46OnNvdXJjZUNvZGUoaW50
IG9wZW5CcmFjZSwgaW50IGNsb3NlQnJhY2UsIGludCBmaXJzdExpbmUpCitTb3VyY2VDb2RlIExl
eGVyOjpzb3VyY2VDb2RlKGludCBvcGVuQnJhY2UsIGludCBjbG9zZUJyYWNlLCBpbnQgZmlyc3RM
aW5lKQogewogICAgIEFTU0VSVChtX3NvdXJjZS0+cHJvdmlkZXIoKS0+ZGF0YSgpW29wZW5CcmFj
ZV0gPT0gJ3snKTsKICAgICBBU1NFUlQobV9zb3VyY2UtPnByb3ZpZGVyKCktPmRhdGEoKVtjbG9z
ZUJyYWNlXSA9PSAnfScpOwogICAgIHJldHVybiBTb3VyY2VDb2RlKG1fc291cmNlLT5wcm92aWRl
cigpLCBvcGVuQnJhY2UsIGNsb3NlQnJhY2UgKyAxLCBmaXJzdExpbmUpOwogfQogCi0vLyBJbnN0
YW50aWF0ZSB0aGUgdHdvIGZsYXZvcnMgb2YgTGV4ZXIgd2UgbmVlZCBpbnN0ZWFkIG9mIHB1dHRp
bmcgbW9zdCBvZiB0aGlzIGZpbGUgaW4gTGV4ZXIuaAotdGVtcGxhdGUgY2xhc3MgTGV4ZXI8TENo
YXI+OwotdGVtcGxhdGUgY2xhc3MgTGV4ZXI8VUNoYXI+OwotCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAppbmRleCBjNjBhM2NmMTg4NjFmMmE4YmRi
OTkyOTViYzU3ODA2ZTYzZGU5MDZkLi45YzBiNjM5ZGFkZDJkYTY5NzdkZTU1ODNhOGJmMjdmMmYw
ZmQ3N2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCkBAIC02MSwxNSArNjEs
OCBAQCBwcml2YXRlOgogICAgIGNvbnN0IEhhc2hUYWJsZSBtX2tleXdvcmRUYWJsZTsKIH07CiAK
LWVudW0gTGV4ZXJGbGFncyB7Ci0gICAgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMgPSAx
LCAKLSAgICBMZXhlckZsYWdzRG9udEJ1aWxkU3RyaW5ncyA9IDIsCi0gICAgTGV4ZXhGbGFnc0Rv
bnRCdWlsZEtleXdvcmRzID0gNAotfTsKLQogY2xhc3MgUmVnRXhwOwogCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KIGNsYXNzIExleGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMZXhlcik7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC04OSw2ICs4MiwxMiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRJc1JlcGFyc2luZygpIHsgbV9pc1JlcGFyc2luZyA9IHRydWU7IH0KICAg
ICBib29sIGlzUmVwYXJzaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1JlcGFyc2luZzsgfQogCisg
ICAgLy8gRnVuY3Rpb25zIGZvciB0aGUgcGFyc2VyIGl0c2VsZi4KKyAgICBlbnVtIExleFR5cGUg
eworICAgICAgICBJZ25vcmVSZXNlcnZlZFdvcmRzID0gMSwgCisgICAgICAgIERvbnRCdWlsZFN0
cmluZ3MgPSAyLAorICAgICAgICBEb250QnVpbGRLZXl3b3JkcyA9IDQKKyAgICB9OwogICAgIEpT
VG9rZW5UeXBlIGxleChKU1Rva2VuRGF0YSosIEpTVG9rZW5JbmZvKiwgdW5zaWduZWQsIGJvb2wg
c3RyaWN0TW9kZSk7CiAgICAgYm9vbCBuZXh0VG9rZW5Jc0NvbG9uKCk7CiAgICAgaW50IGxpbmVO
dW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2xpbmVOdW1iZXI7IH0KQEAgLTEwMyw2ICsxMDIsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBzYXdFcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0K
ICAgICBVU3RyaW5nIGdldEVycm9yTWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4RXJyb3JN
ZXNzYWdlOyB9CiAgICAgdm9pZCBjbGVhcigpOworICAgIGludCBjdXJyZW50T2Zmc2V0KCkgeyBy
ZXR1cm4gbV9jb2RlIC0gbV9jb2RlU3RhcnQ7IH0KICAgICB2b2lkIHNldE9mZnNldChpbnQgb2Zm
c2V0KQogICAgIHsKICAgICAgICAgbV9lcnJvciA9IDA7CkBAIC0xMjEsMTYgKzEyMSwxNyBAQCBw
dWJsaWM6CiAgICAgfQogCiAgICAgU291cmNlUHJvdmlkZXIqIHNvdXJjZVByb3ZpZGVyKCkgY29u
c3QgeyByZXR1cm4gbV9zb3VyY2UtPnByb3ZpZGVyKCk7IH0KLQorICAgIAogICAgIEpTVG9rZW5U
eXBlIGxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbkRhdGEqLCBKU1Rva2VuSW5mbyosIHVuc2ln
bmVkLCBib29sIHN0cmljdE1vZGUpOwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBKU0ds
b2JhbERhdGE7CisKICAgICB2b2lkIHJlY29yZDgoaW50KTsKLSAgICB2b2lkIGFwcGVuZDgoY29u
c3QgVCosIHNpemVfdCk7CiAgICAgdm9pZCByZWNvcmQxNihpbnQpOwotICAgIHZvaWQgcmVjb3Jk
MTYoVCk7Ci0gICAgdm9pZCBhcHBlbmQxNihjb25zdCBMQ2hhciosIHNpemVfdCk7Ci0gICAgdm9p
ZCBhcHBlbmQxNihjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkgeyBtX2J1
ZmZlcjE2LmFwcGVuZChjaGFyYWN0ZXJzLCBsZW5ndGgpOyB9CisgICAgdm9pZCByZWNvcmQxNihV
Q2hhcik7CisKKyAgICB2b2lkIGNvcHlDb2RlV2l0aG91dEJPTXMoKTsKIAogICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzaGlmdCgpOwogICAgIEFMV0FZU19JTkxJTkUgaW50IHBlZWsoaW50IG9mZnNl
dCk7CkBAIC0xMzgsMjQgKzEzOSwxOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2hpZnRMaW5lVGVy
bWluYXRvcigpOwogCiAgICAgVVN0cmluZyBnZXRJbnZhbGlkQ2hhck1lc3NhZ2UoKTsKLSAgICBB
TFdBWVNfSU5MSU5FIGNvbnN0IFQqIGN1cnJlbnRDaGFyYWN0ZXIoKSBjb25zdDsKLSAgICBBTFdB
WVNfSU5MSU5FIGludCBjdXJyZW50T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlIC0gbV9j
b2RlU3RhcnQ7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0T2Zmc2V0RnJvbUNoYXJPZmZz
ZXQoY29uc3QgVCogY2hhck9mZnNldCkgeyBzZXRPZmZzZXQoY2hhck9mZnNldCAtIG1fY29kZVN0
YXJ0KTsgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldENvZGVTdGFydChjb25zdCBTdHJp
bmdJbXBsKik7CisgICAgQUxXQVlTX0lOTElORSBjb25zdCBVQ2hhciogY3VycmVudENoYXJhY3Rl
cigpIGNvbnN0OworICAgIEFMV0FZU19JTkxJTkUgaW50IGN1cnJlbnRPZmZzZXQoKSBjb25zdDsK
IAotICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciogbWFrZUlkZW50aWZpZXIoY29u
c3QgTENoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpOwogICAgIEFMV0FZU19JTkxJTkUg
Y29uc3QgSWRlbnRpZmllciogbWFrZUlkZW50aWZpZXIoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMs
IHNpemVfdCBsZW5ndGgpOwotICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciogbWFr
ZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcihjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90
IGxlbmd0aCk7CiAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbGFzdFRva2VuV2FzUmVzdHJLZXl3
b3JkKCkgY29uc3Q7CiAKLSAgICB0ZW1wbGF0ZSA8aW50IHNoaWZ0QW1vdW50PiB2b2lkIGludGVy
bmFsU2hpZnQoKTsKKyAgICBlbnVtIFNoaWZ0VHlwZSB7IERvQm91bmRzQ2hlY2ssIERvTm90Qm91
bmRzQ2hlY2sgfTsKKyAgICB0ZW1wbGF0ZSA8aW50IHNoaWZ0QW1vdW50LCBTaGlmdFR5cGUgc2hv
dWxkQm91bmRzQ2hlY2s+IHZvaWQgaW50ZXJuYWxTaGlmdCgpOwogICAgIHRlbXBsYXRlIDxib29s
IHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgcGFyc2VL
ZXl3b3JkKEpTVG9rZW5EYXRhKik7Ci0gICAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRJZGVu
dGlmaWVycz4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBwYXJzZUlkZW50aWZpZXIoSlNUb2tl
bkRhdGEqLCB1bnNpZ25lZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpOwotICAgIHRlbXBs
YXRlIDxib29sIHNob3VsZEJ1aWxkSWRlbnRpZmllcnM+IE5FVkVSX0lOTElORSBKU1Rva2VuVHlw
ZSBwYXJzZUlkZW50aWZpZXJTbG93Q2FzZShKU1Rva2VuRGF0YSosIHVuc2lnbmVkIGxleGVyRmxh
Z3MsIGJvb2wgc3RyaWN0TW9kZSk7CisgICAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRJZGVu
dGlmaWVycz4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBwYXJzZUlkZW50aWZpZXIoSlNUb2tl
bkRhdGEqLCB1bnNpZ25lZCwgYm9vbCBzdHJpY3RNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Ym9vbCBz
aG91bGRCdWlsZFN0cmluZ3M+IEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZVN0cmluZyhKU1Rva2Vu
RGF0YSosIGJvb2wgc3RyaWN0TW9kZSk7Ci0gICAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRT
dHJpbmdzPiBORVZFUl9JTkxJTkUgYm9vbCBwYXJzZVN0cmluZ1Nsb3dDYXNlKEpTVG9rZW5EYXRh
KiwgYm9vbCBzdHJpY3RNb2RlKTsKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcGFyc2VIZXgoZG91
YmxlJiByZXR1cm5WYWx1ZSk7CiAgICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlT2N0YWwoZG91
YmxlJiByZXR1cm5WYWx1ZSk7CiAgICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlRGVjaW1hbChk
b3VibGUmIHJldHVyblZhbHVlKTsKQEAgLTE2OCwxNiArMTYzLDE2IEBAIHByaXZhdGU6CiAgICAg
aW50IG1fbGluZU51bWJlcjsKICAgICBpbnQgbV9sYXN0TGluZU51bWJlcjsKIAotICAgIFZlY3Rv
cjxMQ2hhcj4gbV9idWZmZXI4OworICAgIFZlY3RvcjxjaGFyPiBtX2J1ZmZlcjg7CiAgICAgVmVj
dG9yPFVDaGFyPiBtX2J1ZmZlcjE2OwogICAgIGJvb2wgbV90ZXJtaW5hdG9yOwogICAgIGJvb2wg
bV9kZWxpbWl0ZWQ7IC8vIGVuY291bnRlcmVkIGRlbGltaXRlciBsaWtlICInIiBhbmQgIn0iIG9u
IGxhc3QgcnVuCiAgICAgaW50IG1fbGFzdFRva2VuOwogCiAgICAgY29uc3QgU291cmNlQ29kZSog
bV9zb3VyY2U7Ci0gICAgY29uc3QgVCogbV9jb2RlOwotICAgIGNvbnN0IFQqIG1fY29kZVN0YXJ0
OwotICAgIGNvbnN0IFQqIG1fY29kZUVuZDsKKyAgICBjb25zdCBVQ2hhciogbV9jb2RlOworICAg
IGNvbnN0IFVDaGFyKiBtX2NvZGVTdGFydDsKKyAgICBjb25zdCBVQ2hhciogbV9jb2RlRW5kOwog
ICAgIGJvb2wgbV9pc1JlcGFyc2luZzsKICAgICBib29sIG1fYXRMaW5lU3RhcnQ7CiAgICAgYm9v
bCBtX2Vycm9yOwpAQCAtMTkxLDY5ICsxODYsMzcgQEAgcHJpdmF0ZToKICAgICBKU0dsb2JhbERh
dGEqIG1fZ2xvYmFsRGF0YTsKIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotQUxXQVlTX0lO
TElORSBib29sIExleGVyPFQ+Ojppc1doaXRlU3BhY2UoaW50IGNoKQorQUxXQVlTX0lOTElORSBi
b29sIExleGVyOjppc1doaXRlU3BhY2UoaW50IGNoKQogewogICAgIHJldHVybiBpc0FTQ0lJKGNo
KSA/IChjaCA9PSAnICcgfHwgY2ggPT0gJ1x0JyB8fCBjaCA9PSAweEIgfHwgY2ggPT0gMHhDKSA6
IChXVEY6OlVuaWNvZGU6OmlzU2VwYXJhdG9yU3BhY2UoY2gpIHx8IGNoID09IDB4RkVGRik7CiB9
CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+Ojpp
c0xpbmVUZXJtaW5hdG9yKGludCBjaCkKK0FMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjo6aXNMaW5l
VGVybWluYXRvcihpbnQgY2gpCiB7CiAgICAgcmV0dXJuIGNoID09ICdccicgfHwgY2ggPT0gJ1xu
JyB8fCAoY2ggJiB+MSkgPT0gMHgyMDI4OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlu
bGluZSB1bnNpZ25lZCBjaGFyIExleGVyPFQ+Ojpjb252ZXJ0SGV4KGludCBjMSwgaW50IGMyKQor
aW5saW5lIHVuc2lnbmVkIGNoYXIgTGV4ZXI6OmNvbnZlcnRIZXgoaW50IGMxLCBpbnQgYzIpCiB7
CiAgICAgcmV0dXJuICh0b0FTQ0lJSGV4VmFsdWUoYzEpIDw8IDQpIHwgdG9BU0NJSUhleFZhbHVl
KGMyKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgVUNoYXIgTGV4ZXI8VD46
OmNvbnZlcnRVbmljb2RlKGludCBjMSwgaW50IGMyLCBpbnQgYzMsIGludCBjNCkKK2lubGluZSBV
Q2hhciBMZXhlcjo6Y29udmVydFVuaWNvZGUoaW50IGMxLCBpbnQgYzIsIGludCBjMywgaW50IGM0
KQogewogICAgIHJldHVybiAoY29udmVydEhleChjMSwgYzIpIDw8IDgpIHwgY29udmVydEhleChj
MywgYzQpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUgY29uc3Qg
SWRlbnRpZmllciogTGV4ZXI8VD46Om1ha2VJZGVudGlmaWVyKGNvbnN0IExDaGFyKiBjaGFyYWN0
ZXJzLCBzaXplX3QgbGVuZ3RoKQorQUxXQVlTX0lOTElORSBjb25zdCBJZGVudGlmaWVyKiBMZXhl
cjo6bWFrZUlkZW50aWZpZXIoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgp
CiB7CiAgICAgcmV0dXJuICZtX2FyZW5hLT5tYWtlSWRlbnRpZmllcihtX2dsb2JhbERhdGEsIGNo
YXJhY3RlcnMsIGxlbmd0aCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotQUxXQVlTX0lO
TElORSBjb25zdCBJZGVudGlmaWVyKiBMZXhlcjxUPjo6bWFrZUlkZW50aWZpZXIoY29uc3QgVUNo
YXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuICZtX2FyZW5hLT5t
YWtlSWRlbnRpZmllcihtX2dsb2JhbERhdGEsIGNoYXJhY3RlcnMsIGxlbmd0aCk7Ci19Ci0KLXRl
bXBsYXRlIDw+Ci1BTFdBWVNfSU5MSU5FIHZvaWQgTGV4ZXI8TENoYXI+OjpzZXRDb2RlU3RhcnQo
Y29uc3QgU3RyaW5nSW1wbCogc291cmNlU3RyaW5nKQotewotICAgIEFTU0VSVChzb3VyY2VTdHJp
bmctPmlzOEJpdCgpKTsKLSAgICBtX2NvZGVTdGFydCA9IHNvdXJjZVN0cmluZy0+Y2hhcmFjdGVy
czgoKTsKLX0KLQotdGVtcGxhdGUgPD4KLUFMV0FZU19JTkxJTkUgdm9pZCBMZXhlcjxVQ2hhcj46
OnNldENvZGVTdGFydChjb25zdCBTdHJpbmdJbXBsKiBzb3VyY2VTdHJpbmcpCi17Ci0gICAgQVNT
RVJUKCFzb3VyY2VTdHJpbmctPmlzOEJpdCgpKTsKLSAgICBtX2NvZGVTdGFydCA9IHNvdXJjZVN0
cmluZy0+Y2hhcmFjdGVyczE2KCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotQUxXQVlT
X0lOTElORSBjb25zdCBJZGVudGlmaWVyKiBMZXhlcjxUPjo6bWFrZUlkZW50aWZpZXJMQ2hhckZy
b21VQ2hhcihjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBy
ZXR1cm4gJm1fYXJlbmEtPm1ha2VJZGVudGlmaWVyTENoYXJGcm9tVUNoYXIobV9nbG9iYWxEYXRh
LCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZ
U19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tl
bkRhdGEqIHRva2VuRGF0YSwgSlNUb2tlbkluZm8qIHRva2VuSW5mbywgdW5zaWduZWQgbGV4ZXJG
bGFncywgYm9vbCBzdHJpY3RNb2RlKQorQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjo6
bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuRGF0YSogdG9rZW5EYXRhLCBKU1Rva2VuSW5mbyog
dG9rZW5JbmZvLCB1bnNpZ25lZCBsZXhUeXBlLCBib29sIHN0cmljdE1vZGUpCiB7Ci0gICAgQVNT
RVJUKChsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKTsKLSAgICBj
b25zdCBUKiBzdGFydCA9IG1fY29kZTsKLSAgICBjb25zdCBUKiBwdHIgPSBzdGFydDsKLSAgICBj
b25zdCBUKiBlbmQgPSBtX2NvZGVFbmQ7CisgICAgQVNTRVJUKChsZXhUeXBlICYgSWdub3JlUmVz
ZXJ2ZWRXb3JkcykpOworICAgIGNvbnN0IFVDaGFyKiBzdGFydCA9IG1fY29kZTsKKyAgICBjb25z
dCBVQ2hhciogcHRyID0gc3RhcnQ7CisgICAgY29uc3QgVUNoYXIqIGVuZCA9IG1fY29kZUVuZDsK
ICAgICBpZiAocHRyID49IGVuZCkgewogICAgICAgICBBU1NFUlQocHRyID09IGVuZCk7CiAgICAg
ICAgIGdvdG8gc2xvd0Nhc2U7CkBAIC0yNzgsNyArMjQxLDcgQEAgQUxXQVlTX0lOTElORSBKU1Rv
a2VuVHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuRGF0YSogdG9rZW5E
YXRhLAogICAgIG1fY29kZSA9IHB0cjsKIAogICAgIC8vIENyZWF0ZSB0aGUgaWRlbnRpZmllciBp
ZiBuZWVkZWQKLSAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3Jk
cykKKyAgICBpZiAobGV4VHlwZSAmIERvbnRCdWlsZEtleXdvcmRzKQogICAgICAgICB0b2tlbkRh
dGEtPmlkZW50ID0gMDsKICAgICBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBtYWtl
SWRlbnRpZmllcihzdGFydCwgcHRyIC0gc3RhcnQpOwpAQCAtMjg5LDcgKzI1Miw3IEBAIEFMV0FZ
U19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tl
bkRhdGEqIHRva2VuRGF0YSwKICAgICByZXR1cm4gSURFTlQ7CiAgICAgCiBzbG93Q2FzZToKLSAg
ICByZXR1cm4gbGV4KHRva2VuRGF0YSwgdG9rZW5JbmZvLCBsZXhlckZsYWdzLCBzdHJpY3RNb2Rl
KTsKKyAgICByZXR1cm4gbGV4KHRva2VuRGF0YSwgdG9rZW5JbmZvLCBsZXhUeXBlLCBzdHJpY3RN
b2RlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAKaW5kZXggNjdjNGU0NjEzMmNkNDFkZjMyM2Y5ZTI3ZGNhODgxMWRjZTg1MDY3
My4uMjRjODczZTNmNjM0MmFlYjAxNGViMTc3MDZkOGY2OGVjY2Q2OGYyOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtNTcsNyArNTcsNyBAQCBQYXJzZXI6OlBh
cnNlcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
RnVuY3Rpb25QYXJhbQogICAgICwgbV9sYXN0SWRlbnRpZmllcigwKQogICAgICwgbV9zb3VyY2VF
bGVtZW50cygwKQogewotICAgIG1fbGV4ZXIgPSBuZXcgTGV4ZXI8VUNoYXI+KGdsb2JhbERhdGEp
OworICAgIG1fbGV4ZXIgPSBuZXcgTGV4ZXIoZ2xvYmFsRGF0YSk7CiAgICAgbV9hcmVuYSA9IG1f
Z2xvYmFsRGF0YS0+cGFyc2VyQXJlbmE7CiAgICAgbV9sZXhlci0+c2V0Q29kZShzb3VyY2UsIG1f
YXJlbmEpOwogCkBAIC0xMTU4LDkgKzExNTgsOSBAQCB0ZW1wbGF0ZSA8Ym9vbCBjb21wbGV0ZSwg
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBQYXJzZXI6OnBhcnNlUHJvcGVydHkoVAog
ICAgIGNhc2UgU1RSSU5HOiB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90
b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIGlmIChjb21wbGV0ZSB8fCAod2FzSWRlbnQgJiYg
KCppZGVudCA9PSBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmdldCB8fCAqaWRlbnQgPT0g
bV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5zZXQpKSkKLSAgICAgICAgICAgIG5leHRFeHBl
Y3RJZGVudGlmaWVyKExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKTsKKyAgICAgICAgICAg
IG5leHRFeHBlY3RJZGVudGlmaWVyKExleGVyOjpJZ25vcmVSZXNlcnZlZFdvcmRzKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbmV4dEV4cGVjdElkZW50aWZpZXIoTGV4ZXJGbGFnc0lnbm9y
ZVJlc2VydmVkV29yZHMgfCBUcmVlQnVpbGRlcjo6RG9udEJ1aWxkS2V5d29yZHMpOworICAgICAg
ICAgICAgbmV4dEV4cGVjdElkZW50aWZpZXIoTGV4ZXI6Oklnbm9yZVJlc2VydmVkV29yZHMgfCBU
cmVlQnVpbGRlcjo6RG9udEJ1aWxkS2V5d29yZHMpOwogICAgICAgICAKICAgICAgICAgaWYgKG1h
dGNoKENPTE9OKSkgewogICAgICAgICAgICAgbmV4dCgpOwpAQCAtMTQ4OSw3ICsxNDg5LDcgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI6OnBhcnNl
TWVtYmVyRXhwcmVzc2lvbihUcmVlQnUKICAgICAgICAgY2FzZSBET1Q6IHsKICAgICAgICAgICAg
IG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgICAgICAgICAgaW50IGV4cHJlc3Np
b25FbmQgPSBsYXN0VG9rZW5FbmQoKTsKLSAgICAgICAgICAgIG5leHRFeHBlY3RJZGVudGlmaWVy
KExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzIHwgVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZEtl
eXdvcmRzKTsKKyAgICAgICAgICAgIG5leHRFeHBlY3RJZGVudGlmaWVyKExleGVyOjpJZ25vcmVS
ZXNlcnZlZFdvcmRzIHwgVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZEtleXdvcmRzKTsKICAgICAgICAg
ICAgIG1hdGNoT3JGYWlsKElERU5UKTsKICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0
ZURvdEFjY2VzcyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBiYXNlLCBtX3Rva2VuLm1fZGF0
YS5pZGVudCwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZCgpKTsKICAg
ICAgICAgICAgIG5leHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4
IDc1Mzc2ZDI4ZTQ2YWFjNDE0YmMwMDdjNWRhYzIxMDJhZWVjZTA3ZTcuLjMwNzMyYzgyNzFkMmI1
YjMwNjlkYjZhYWRkZjVjN2M1N2M3N2Q3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaApAQCAtNDg5LDIwICs0ODksMjAgQEAgcHJpdmF0ZToKICAgICBib29sIGlzRnVuY3Rp
b25Cb2R5Tm9kZShGdW5jdGlvbkJvZHlOb2RlKikgeyByZXR1cm4gdHJ1ZTsgfQogCiAKLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgbmV4dCh1bnNpZ25lZCBsZXhlckZsYWdzID0gMCkKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgbmV4dCh1bnNpZ25lZCBsZXhUeXBlID0gMCkKICAgICB7CiAgICAgICAg
IG1fbGFzdExpbmUgPSBtX3Rva2VuLm1faW5mby5saW5lOwogICAgICAgICBtX2xhc3RUb2tlbkVu
ZCA9IG1fdG9rZW4ubV9pbmZvLmVuZE9mZnNldDsKICAgICAgICAgbV9sZXhlci0+c2V0TGFzdExp
bmVOdW1iZXIobV9sYXN0TGluZSk7Ci0gICAgICAgIG1fdG9rZW4ubV90eXBlID0gbV9sZXhlci0+
bGV4KCZtX3Rva2VuLm1fZGF0YSwgJm1fdG9rZW4ubV9pbmZvLCBsZXhlckZsYWdzLCBzdHJpY3RN
b2RlKCkpOworICAgICAgICBtX3Rva2VuLm1fdHlwZSA9IG1fbGV4ZXItPmxleCgmbV90b2tlbi5t
X2RhdGEsICZtX3Rva2VuLm1faW5mbywgbGV4VHlwZSwgc3RyaWN0TW9kZSgpKTsKICAgICB9CiAK
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbmV4dEV4cGVjdElkZW50aWZpZXIodW5zaWduZWQgbGV4
ZXJGbGFncyA9IDApCisgICAgQUxXQVlTX0lOTElORSB2b2lkIG5leHRFeHBlY3RJZGVudGlmaWVy
KHVuc2lnbmVkIGxleFR5cGUgPSAwKQogICAgIHsKICAgICAgICAgbV9sYXN0TGluZSA9IG1fdG9r
ZW4ubV9pbmZvLmxpbmU7CiAgICAgICAgIG1fbGFzdFRva2VuRW5kID0gbV90b2tlbi5tX2luZm8u
ZW5kT2Zmc2V0OwogICAgICAgICBtX2xleGVyLT5zZXRMYXN0TGluZU51bWJlcihtX2xhc3RMaW5l
KTsKLSAgICAgICAgbV90b2tlbi5tX3R5cGUgPSBtX2xleGVyLT5sZXhFeHBlY3RJZGVudGlmaWVy
KCZtX3Rva2VuLm1fZGF0YSwgJm1fdG9rZW4ubV9pbmZvLCBsZXhlckZsYWdzLCBzdHJpY3RNb2Rl
KCkpOworICAgICAgICBtX3Rva2VuLm1fdHlwZSA9IG1fbGV4ZXItPmxleEV4cGVjdElkZW50aWZp
ZXIoJm1fdG9rZW4ubV9kYXRhLCAmbV90b2tlbi5tX2luZm8sIGxleFR5cGUsIHN0cmljdE1vZGUo
KSk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBib29sIG5leHRUb2tlbklzQ29sb24oKQpA
QCAtOTIwLDcgKzkyMCw3IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBjb25zdCBKU0dsb2JhbERh
dGEqIG1fZ2xvYmFsRGF0YTsKICAgICBjb25zdCBTb3VyY2VDb2RlKiBtX3NvdXJjZTsKICAgICBQ
YXJzZXJBcmVuYSogbV9hcmVuYTsKLSAgICBMZXhlcjxVQ2hhcj4qIG1fbGV4ZXI7CisgICAgTGV4
ZXIqIG1fbGV4ZXI7CiAgICAgCiAgICAgU3RhY2tCb3VuZHMgbV9zdGFjazsKICAgICBib29sIG1f
ZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFy
ZW5hLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKaW5kZXgg
MzU2NzRiNjA0ZmYyZjNjNDY4MzhkZDM4MmY1NzUwN2E3MGI4ODgwNi4uMTY3NGExNjFiNmQ1NTRj
MmRiMmZhNDY1NmRlMGE3NDVkZTg0ODFkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyQXJlbmEuaApAQCAtNDIsMTAgKzQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICBjbGVhcigpOwogICAgICAgICB9CiAKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci0gICAgICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciYgbWFrZUlkZW50aWZp
ZXIoSlNHbG9iYWxEYXRhKiwgY29uc3QgVCogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCk7Ci0g
ICAgICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciYgbWFrZUlkZW50aWZpZXJMQ2hh
ckZyb21VQ2hhcihKU0dsb2JhbERhdGEqLCBjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90
IGxlbmd0aCk7Ci0KKyAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBJZGVudGlmaWVyJiBtYWtl
SWRlbnRpZmllcihKU0dsb2JhbERhdGEqLCBjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90
IGxlbmd0aCk7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1ha2VOdW1lcmljSWRlbnRpZmll
cihKU0dsb2JhbERhdGEqLCBkb3VibGUgbnVtYmVyKTsKIAogICAgICAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJzLmlzRW1wdHkoKTsgfQpAQCAtNjgsOCArNjUs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRml4ZWRBcnJheTxJZGVudGlmaWVyKiwgTWF4
aW11bUNhY2hhYmxlQ2hhcmFjdGVyPiBtX3JlY2VudElkZW50aWZpZXJzOwogICAgIH07CiAKLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IElkZW50aWZp
ZXImIElkZW50aWZpZXJBcmVuYTo6bWFrZUlkZW50aWZpZXIoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBjb25zdCBUKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKQorICAgIEFMV0FZU19JTkxJ
TkUgY29uc3QgSWRlbnRpZmllciYgSWRlbnRpZmllckFyZW5hOjptYWtlSWRlbnRpZmllcihKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVu
Z3RoKQogICAgIHsKICAgICAgICAgaWYgKGNoYXJhY3RlcnNbMF0gPj0gTWF4aW11bUNhY2hhYmxl
Q2hhcmFjdGVyKSB7CiAgICAgICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVy
KGdsb2JhbERhdGEsIGNoYXJhY3RlcnMsIGxlbmd0aCkpOwpAQCAtOTAsMjcgKzg2LDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxhc3QoKTsKICAgICB9
CiAKLSAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IElkZW50aWZpZXImIElkZW50aWZpZXJBcmVuYTo6
bWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNv
bnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKQotICAgIHsKLSAgICAgICAgaWYg
KGNoYXJhY3RlcnNbMF0gPj0gTWF4aW11bUNhY2hhYmxlQ2hhcmFjdGVyKSB7Ci0gICAgICAgICAg
ICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpjcmVhdGVMQ2hhckZyb21VQ2hhcihn
bG9iYWxEYXRhLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKLSAgICAgICAgICAgIHJldHVybiBtX2lk
ZW50aWZpZXJzLmxhc3QoKTsKLSAgICAgICAgfQotICAgICAgICBpZiAobGVuZ3RoID09IDEpIHsK
LSAgICAgICAgICAgIGlmIChJZGVudGlmaWVyKiBpZGVudCA9IG1fc2hvcnRJZGVudGlmaWVyc1tj
aGFyYWN0ZXJzWzBdXSkKLSAgICAgICAgICAgICAgICByZXR1cm4gKmlkZW50OwotICAgICAgICAg
ICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcihnbG9iYWxEYXRhLCBjaGFyYWN0ZXJz
LCBsZW5ndGgpKTsKLSAgICAgICAgICAgIG1fc2hvcnRJZGVudGlmaWVyc1tjaGFyYWN0ZXJzWzBd
XSA9ICZtX2lkZW50aWZpZXJzLmxhc3QoKTsKLSAgICAgICAgICAgIHJldHVybiBtX2lkZW50aWZp
ZXJzLmxhc3QoKTsKLSAgICAgICAgfQotICAgICAgICBJZGVudGlmaWVyKiBpZGVudCA9IG1fcmVj
ZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV07Ci0gICAgICAgIGlmIChpZGVudCAmJiBJZGVu
dGlmaWVyOjplcXVhbChpZGVudC0+aW1wbCgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKQotICAgICAg
ICAgICAgcmV0dXJuICppZGVudDsKLSAgICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRp
Zmllcjo6Y3JlYXRlTENoYXJGcm9tVUNoYXIoZ2xvYmFsRGF0YSwgY2hhcmFjdGVycywgbGVuZ3Ro
KSk7Ci0gICAgICAgIG1fcmVjZW50SWRlbnRpZmllcnNbY2hhcmFjdGVyc1swXV0gPSAmbV9pZGVu
dGlmaWVycy5sYXN0KCk7Ci0gICAgICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxhc3QoKTsKLSAg
ICB9Ci0gICAgCiAgICAgaW5saW5lIGNvbnN0IElkZW50aWZpZXImIElkZW50aWZpZXJBcmVuYTo6
bWFrZU51bWVyaWNJZGVudGlmaWVyKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgZG91YmxlIG51
bWJlcikKICAgICB7CiAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXIoZ2xv
YmFsRGF0YSwgVVN0cmluZzo6bnVtYmVyKG51bWJlcikpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Tb3VyY2VDb2RlLmgKaW5kZXggZDgxNDE0ZDUwMTIzNGVkMzU2Y2NkZWQ4NWE3Y2E5
NmQ5OGY0MzFhMi4uNDQ5YTU4YmJkMTA0NjMzMDk0YTE4MzZjY2Q4OGMxM2IyNmE5MjU3NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmgKQEAgLTc1LDcgKzc1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IFVDaGFyKiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcm92aWRlci0+ZGF0YSgpICsgbV9zdGFydENoYXI7IH0KICAgICAgICAgaW50IGxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kQ2hhciAtIG1fc3RhcnRDaGFyOyB9CiAgICAgICAg
IAotICAgICAgICBTb3VyY2VDb2RlIHN1YkV4cHJlc3Npb24odW5zaWduZWQgb3BlbkJyYWNlLCB1
bnNpZ25lZCBjbG9zZUJyYWNlLCBpbnQgZmlyc3RMaW5lKTsKKyAgICAgICAgU291cmNlQ29kZSBz
dWJFeHByZXNzaW9uKGludCwgaW50LCBpbnQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVm
UHRyPFNvdXJjZVByb3ZpZGVyPiBtX3Byb3ZpZGVyOwpAQCAtODgsOCArODgsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICB7CiAgICAgICAgIHJldHVybiBTb3VyY2VDb2RlKFVTdHJpbmdTb3VyY2VQ
cm92aWRlcjo6Y3JlYXRlKHNvdXJjZSwgdXJsLCBzdGFydFBvc2l0aW9uKSwgc3RhcnRQb3NpdGlv
bi5tX2xpbmUub25lQmFzZWRJbnQoKSk7CiAgICAgfQotCi0gICAgaW5saW5lIFNvdXJjZUNvZGUg
U291cmNlQ29kZTo6c3ViRXhwcmVzc2lvbih1bnNpZ25lZCBvcGVuQnJhY2UsIHVuc2lnbmVkIGNs
b3NlQnJhY2UsIGludCBmaXJzdExpbmUpCisgICAgCisgICAgaW5saW5lIFNvdXJjZUNvZGUgU291
cmNlQ29kZTo6c3ViRXhwcmVzc2lvbihpbnQgb3BlbkJyYWNlLCBpbnQgY2xvc2VCcmFjZSwgaW50
IGZpcnN0TGluZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChwcm92aWRlcigpLT5kYXRhKClbb3Bl
bkJyYWNlXSA9PSAneycpOwogICAgICAgICBBU1NFUlQocHJvdmlkZXIoKS0+ZGF0YSgpW2Nsb3Nl
QnJhY2VdID09ICd9Jyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1NvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVBy
b3ZpZGVyLmgKaW5kZXggMTllZjJkZmU5ZjdhMDU0OTcxODRjYWMzNjYwODgzYzc3MTg0NjIxMC4u
ZjI2YTkyZDI4ZWVmZjQxOTdjZTk0NzY2Yjg3NTJmNWZlYjk5NWZkMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaApAQCAtNTcsNyArNTcsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2aXJ0dWFsIFVTdHJpbmcgZ2V0UmFuZ2UoaW50IHN0
YXJ0LCBpbnQgZW5kKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgVUNoYXIqIGRh
dGEoKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nSW1wbCogc3RyaW5n
RGF0YSgpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBpbnQgbGVuZ3RoKCkgY29uc3QgPSAw
OwogICAgICAgICAKICAgICAgICAgY29uc3QgVVN0cmluZyYgdXJsKCkgeyByZXR1cm4gbV91cmw7
IH0KQEAgLTkyLDcgKzkxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4g
bV9zb3VyY2Uuc3Vic3RyaW5nU2hhcmluZ0ltcGwoc3RhcnQsIGVuZCAtIHN0YXJ0KTsKICAgICAg
ICAgfQogICAgICAgICBjb25zdCBVQ2hhciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsg
fQotICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmdEYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9zb3VyY2UuaW1wbCgpOyB9CiAgICAgICAgIGludCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZS5sZW5ndGgoKTsgfQogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlLmgKaW5kZXggYzdmMzMyZDM4N2Vi
MmRjNzUzZGI5MjdiYzczYTQxNjliZDYyYTgzYS4uZGVhZmMyNDFhYzQxZjkyZGM0YjA3OTBjMmU2
MjFmMzQ3Njg4ZmViMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9T
b3VyY2VQcm92aWRlckNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9T
b3VyY2VQcm92aWRlckNhY2hlLmgKQEAgLTIzLDkgKzIzLDYgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFNvdXJjZVByb3ZpZGVyQ2FjaGVfaAot
I2RlZmluZSBTb3VyY2VQcm92aWRlckNhY2hlX2gKLQogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIApAQCAtNDksNSArNDYsMyBAQCBwcml2YXRl
OgogfTsKIAogfQotCi0jZW5kaWYgLy8gU291cmNlUHJvdmlkZXJDYWNoZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDI3MGM4MjM4NTNjOWIx
Mzk3NWZjYTk4MmE5YzA1YTUwZmRjYjBmODcuLmM2OGIwMWY4NTIxYTkwZmMyZWMyMmE2ZmZjNTll
YTdiODFlYzgxNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3lu
dGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hl
Y2tlci5oCkBAIC0xMTUsOCArMTE1LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29s
IENyZWF0ZXNBU1QgPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBOZWVkc0ZyZWVWYXJp
YWJsZUluZm8gPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBDYW5Vc2VGdW5jdGlvbkNh
Y2hlID0gdHJ1ZTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRG9udEJ1aWxkS2V5d29yZHMg
PSBMZXhleEZsYWdzRG9udEJ1aWxkS2V5d29yZHM7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IERvbnRCdWlsZFN0cmluZ3MgPSBMZXhlckZsYWdzRG9udEJ1aWxkU3RyaW5nczsKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgRG9udEJ1aWxkS2V5d29yZHMgPSBMZXhlcjo6RG9udEJ1aWxkS2V5
d29yZHM7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIERvbnRCdWlsZFN0cmluZ3MgPSBMZXhl
cjo6RG9udEJ1aWxkU3RyaW5nczsKIAogICAgIGludCBjcmVhdGVTb3VyY2VFbGVtZW50cygpIHsg
cmV0dXJuIDE7IH0KICAgICBFeHByZXNzaW9uVHlwZSBtYWtlRnVuY3Rpb25DYWxsTm9kZShpbnQs
IGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBDYWxsRXhwcjsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCmluZGV4
IDhlZGNiMjY3M2E3YmQxOTVjM2M3YjQ1Yjg0OWQwODdmYmVlMDE4MjEuLmI4MzFkNWRjMDBjMDUx
YzExMzFhMzE1NTFhNGE1NWY1NDlhNjJlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgc3Rh
dGljIGlubGluZSB2b2lkIGluc2VydFNlbWljb2xvbklmTmVlZGVkKFVTdHJpbmcmIGZ1bmN0aW9u
Qm9keSkKIAogICAgIGZvciAoc2l6ZV90IGkgPSBmdW5jdGlvbkJvZHkubGVuZ3RoKCkgLSAyOyBp
ID4gMDsgLS1pKSB7CiAgICAgICAgIFVDaGFyIGNoID0gZnVuY3Rpb25Cb2R5W2ldOwotICAgICAg
ICBpZiAoIUxleGVyPFVDaGFyPjo6aXNXaGl0ZVNwYWNlKGNoKSAmJiAhTGV4ZXI8VUNoYXI+Ojpp
c0xpbmVUZXJtaW5hdG9yKGNoKSkgeworICAgICAgICBpZiAoIUxleGVyOjppc1doaXRlU3BhY2Uo
Y2gpICYmICFMZXhlcjo6aXNMaW5lVGVybWluYXRvcihjaCkpIHsKICAgICAgICAgICAgIGlmIChj
aCAhPSAnOycgJiYgY2ggIT0gJ30nKQogICAgICAgICAgICAgICAgIGZ1bmN0aW9uQm9keSA9IG1h
a2VVU3RyaW5nKGZ1bmN0aW9uQm9keS5zdWJzdHJpbmdTaGFyaW5nSW1wbCgwLCBpICsgMSksICI7
IiwgZnVuY3Rpb25Cb2R5LnN1YnN0cmluZ1NoYXJpbmdJbXBsKGkgKyAxLCBmdW5jdGlvbkJvZHku
bGVuZ3RoKCkgLSAoaSArIDEpKSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCmluZGV4IDRmY2FmMjA0ZTk5NTVjNjNk
NzU1YzI1Nzg4YWZhOWUzMzYwMzQ2MTYuLmM0ZWQ4N2I2MjA1YTA0NWI2YjgzNjg2OTA4ZjBlYzJh
MjNmMDdlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50
aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIu
Y3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNs
dWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVk
ZSA8d3RmL1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CiAKIHVzaW5nIFdURjo6VGhyZWFkU3BlY2lmaWM7CkBAIC00MiwxMyArNDMsMTkgQEAgSWRlbnRp
ZmllclRhYmxlOjp+SWRlbnRpZmllclRhYmxlKCkKICAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nSW1w
bCo+OjppdGVyYXRvciBpdGVyID0gbV90YWJsZS5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVy
KQogICAgICAgICAoKml0ZXIpLT5zZXRJc0lkZW50aWZpZXIoZmFsc2UpOwogfQotCiBzdGQ6OnBh
aXI8SGFzaFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiBJZGVudGlmaWVyVGFibGU6
OmFkZChTdHJpbmdJbXBsKiB2YWx1ZSkKIHsKICAgICBzdGQ6OnBhaXI8SGFzaFNldDxTdHJpbmdJ
bXBsKj46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3RhYmxlLmFkZCh2YWx1ZSk7CiAgICAg
KCpyZXN1bHQuZmlyc3QpLT5zZXRJc0lkZW50aWZpZXIodHJ1ZSk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KK3RlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CitzdGQ6OnBhaXI8SGFzaFNl
dDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiBJZGVudGlmaWVyVGFibGU6OmFkZChVIHZh
bHVlKQoreworICAgIHN0ZDo6cGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJv
b2w+IHJlc3VsdCA9IG1fdGFibGUuYWRkPFUsIFY+KHZhbHVlKTsKKyAgICAoKnJlc3VsdC5maXJz
dCktPnNldElzSWRlbnRpZmllcih0cnVlKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQogCiBJZGVu
dGlmaWVyVGFibGUqIGNyZWF0ZUlkZW50aWZpZXJUYWJsZSgpCiB7CkBAIC04MywzMSArOTAsNiBA
QCBzdHJ1Y3QgSWRlbnRpZmllckNTdHJpbmdUcmFuc2xhdG9yIHsKICAgICB9CiB9OwogCi1zdHJ1
Y3QgSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyVHJhbnNsYXRvciB7Ci0gICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgQ2hhckJ1ZmZlcjxVQ2hhcj4mIGJ1ZikKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoPFVDaGFyPihidWYucywgYnVmLmxlbmd0aCk7
Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBib29sIGVxdWFsKFN0cmluZ0ltcGwqIHN0ciwgY29u
c3QgQ2hhckJ1ZmZlcjxVQ2hhcj4mIGJ1ZikKLSAgICB7Ci0gICAgICAgIHJldHVybiBJZGVudGlm
aWVyOjplcXVhbChzdHIsIGJ1Zi5zLCBidWYubGVuZ3RoKTsKLSAgICB9Ci0gICAgCi0gICAgc3Rh
dGljIHZvaWQgdHJhbnNsYXRlKFN0cmluZ0ltcGwqJiBsb2NhdGlvbiwgY29uc3QgQ2hhckJ1ZmZl
cjxVQ2hhcj4mIGJ1ZiwgdW5zaWduZWQgaGFzaCkKLSAgICB7Ci0gICAgICAgIExDaGFyKiBkOwot
ICAgICAgICBTdHJpbmdJbXBsKiByID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChi
dWYubGVuZ3RoLCBkKS5sZWFrUmVmKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
IT0gYnVmLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICBVQ2hhciBjID0gYnVmLnNbaV07Ci0g
ICAgICAgICAgICBBU1NFUlQoYyA8PSAweGZmKTsKLSAgICAgICAgICAgIGRbaV0gPSBjOwotICAg
ICAgICB9Ci0gICAgICAgIHItPnNldEhhc2goaGFzaCk7Ci0gICAgICAgIGxvY2F0aW9uID0gcjsg
Ci0gICAgfQotfTsKLQogUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBJZGVudGlmaWVyOjphZGQoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBjaGFyKiBjKQogewogICAgIGlmICghYykKQEAg
LTE0MCwyNCArMTIyLDMyIEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRk
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogYykKICAgICByZXR1cm4gYWRkKCZleGVjLT5n
bG9iYWxEYXRhKCksIGMpOwogfQogCi1QYXNzUmVmUHRyPFN0cmluZ0ltcGw+IElkZW50aWZpZXI6
OmFkZDgoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVQ2hhciogcywgaW50IGxlbmd0
aCkKLXsKLSAgICBpZiAobGVuZ3RoID09IDEpIHsKLSAgICAgICAgVUNoYXIgYyA9IHNbMF07Ci0g
ICAgICAgIEFTU0VSVChjIDw9IDB4ZmYpOwotICAgICAgICBpZiAoY2FuVXNlU2luZ2xlQ2hhcmFj
dGVyU3RyaW5nKGMpKQotICAgICAgICAgICAgcmV0dXJuIGFkZChnbG9iYWxEYXRhLCBnbG9iYWxE
YXRhLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKGMpKTsKK3N0cnVjdCBV
Q2hhckJ1ZmZlciB7CisgICAgY29uc3QgVUNoYXIqIHM7CisgICAgdW5zaWduZWQgaW50IGxlbmd0
aDsKK307CisKK3N0cnVjdCBJZGVudGlmaWVyVUNoYXJCdWZmZXJUcmFuc2xhdG9yIHsKKyAgICBz
dGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBVQ2hhckJ1ZmZlciYgYnVmKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2g8VUNoYXI+KGJ1Zi5zLCBidWYubGVu
Z3RoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChTdHJpbmdJbXBsKiBzdHIsIGNv
bnN0IFVDaGFyQnVmZmVyJiBidWYpCisgICAgeworICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6
ZXF1YWwoc3RyLCBidWYucywgYnVmLmxlbmd0aCk7CiAgICAgfQotICAgIAotICAgIGlmICghbGVu
Z3RoKQotICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6ZW1wdHkoKTsKLSAgICBDaGFyQnVmZmVy
PFVDaGFyPiBidWYgPSB7cywgbGVuZ3RofTsgCi0gICAgcGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwq
Pjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IGdsb2JhbERhdGEtPmlkZW50aWZpZXJUYWJs
ZS0+YWRkPENoYXJCdWZmZXI8VUNoYXI+LCBJZGVudGlmaWVyTENoYXJGcm9tVUNoYXJUcmFuc2xh
dG9yID4oYnVmKTsKLSAgICAKLSAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIG5ld2x5LXRyYW5zbGF0
ZWQsIHRoZW4gd2UgbmVlZCB0byBhZG9wdCBpdC4KLSAgICAvLyBUaGUgYm9vbGVhbiBpbiB0aGUg
cGFpciB0ZWxscyB1cyBpZiB0aGF0IGlzIHNvLgotICAgIHJldHVybiBhZGRSZXN1bHQuc2Vjb25k
ID8gYWRvcHRSZWYoKmFkZFJlc3VsdC5maXJzdCkgOiAqYWRkUmVzdWx0LmZpcnN0OwotfQorCisg
ICAgc3RhdGljIHZvaWQgdHJhbnNsYXRlKFN0cmluZ0ltcGwqJiBsb2NhdGlvbiwgY29uc3QgVUNo
YXJCdWZmZXImIGJ1ZiwgdW5zaWduZWQgaGFzaCkKKyAgICB7CisgICAgICAgIFVDaGFyKiBkOwor
ICAgICAgICBTdHJpbmdJbXBsKiByID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChi
dWYubGVuZ3RoLCBkKS5sZWFrUmVmKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
IT0gYnVmLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgZFtpXSA9IGJ1Zi5zW2ldOworICAgICAg
ICByLT5zZXRIYXNoKGhhc2gpOworICAgICAgICBsb2NhdGlvbiA9IHI7IAorICAgIH0KK307CiAK
IHVpbnQzMl90IElkZW50aWZpZXI6OnRvVUludDMyKGNvbnN0IFVTdHJpbmcmIHN0cmluZywgYm9v
bCYgb2spCiB7CkBAIC0yMDMsNiArMTkzLDI4IEBAIHVpbnQzMl90IElkZW50aWZpZXI6OnRvVUlu
dDMyKGNvbnN0IFVTdHJpbmcmIHN0cmluZywgYm9vbCYgb2spCiAgICAgcmV0dXJuIHZhbHVlOwog
fQogCitQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IElkZW50aWZpZXI6OmFkZChKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKQoreworICAgIGlmIChsZW5n
dGggPT0gMSkgeworICAgICAgICBVQ2hhciBjID0gc1swXTsKKyAgICAgICAgaWYgKGMgPD0gbWF4
U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQorICAgICAgICAgICAgcmV0dXJuIGFkZChnbG9iYWxEYXRh
LCBnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKGMpKTsK
KyAgICB9CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjplbXB0
eSgpOworICAgIFVDaGFyQnVmZmVyIGJ1ZiA9IHtzLCBsZW5ndGh9OyAKKyAgICBwYWlyPEhhc2hT
ZXQ8U3RyaW5nSW1wbCo+OjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0ID0gZ2xvYmFsRGF0YS0+
aWRlbnRpZmllclRhYmxlLT5hZGQ8VUNoYXJCdWZmZXIsIElkZW50aWZpZXJVQ2hhckJ1ZmZlclRy
YW5zbGF0b3I+KGJ1Zik7CisKKyAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIG5ld2x5LXRyYW5zbGF0
ZWQsIHRoZW4gd2UgbmVlZCB0byBhZG9wdCBpdC4KKyAgICAvLyBUaGUgYm9vbGVhbiBpbiB0aGUg
cGFpciB0ZWxscyB1cyBpZiB0aGF0IGlzIHNvLgorICAgIHJldHVybiBhZGRSZXN1bHQuc2Vjb25k
ID8gYWRvcHRSZWYoKmFkZFJlc3VsdC5maXJzdCkgOiAqYWRkUmVzdWx0LmZpcnN0OworfQorCitQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IElkZW50aWZpZXI6OmFkZChFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKQoreworICAgIHJldHVybiBhZGQoJmV4ZWMtPmdsb2Jh
bERhdGEoKSwgcywgbGVuZ3RoKTsKK30KKwogUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBJZGVudGlm
aWVyOjphZGRTbG93Q2FzZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFN0cmluZ0ltcGwqIHIp
CiB7CiAgICAgQVNTRVJUKCFyLT5pc0lkZW50aWZpZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JZGVudGlmaWVyLmgKaW5kZXggYmNhMjFiY2NjNTc3YTcwYjllODBlMWVhYmE1
OGY3NjE4OTU5OWI5NS4uNzRmYzQ1M2E1NTdmYjIzODU5YTExYjZhNmZhM2QzZWQ0NTg5NmNiOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaApAQCAtMjQsNyAr
MjQsNiBAQAogI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgogI2luY2x1ZGUgIlRocmVhZFNwZWNp
ZmljLmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRh
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAg
LTM3LDExICszNiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSWRlbnRpZmllcigpIHsg
fQogCiAgICAgICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBzKSA6
IG1fc3RyaW5nKGFkZChleGVjLCBzKSkgeyB9IC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0cmlu
ZyBsaXRlcmFscy4KKyAgICAgICAgSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVD
aGFyKiBzLCBpbnQgbGVuZ3RoKSA6IG1fc3RyaW5nKGFkZChleGVjLCBzLCBsZW5ndGgpKSB7IH0K
ICAgICAgICAgSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZ0ltcGwqIHJlcCkgOiBt
X3N0cmluZyhhZGQoZXhlYywgcmVwKSkgeyB9IAogICAgICAgICBJZGVudGlmaWVyKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgVVN0cmluZyYgcykgOiBtX3N0cmluZyhhZGQoZXhlYywgcy5pbXBsKCkp
KSB7IH0KIAogICAgICAgICBJZGVudGlmaWVyKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29u
c3QgY2hhciogcykgOiBtX3N0cmluZyhhZGQoZ2xvYmFsRGF0YSwgcykpIHsgfSAvLyBPbmx5IHRv
IGJlIHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMuCi0gICAgICAgIElkZW50aWZpZXIoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBMQ2hhciogcywgaW50IGxlbmd0aCkgOiBtX3N0cmlu
ZyhhZGQoZ2xvYmFsRGF0YSwgcywgbGVuZ3RoKSkgeyB9CiAgICAgICAgIElkZW50aWZpZXIoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVQ2hhciogcywgaW50IGxlbmd0aCkgOiBtX3N0
cmluZyhhZGQoZ2xvYmFsRGF0YSwgcywgbGVuZ3RoKSkgeyB9CiAgICAgICAgIElkZW50aWZpZXIo
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTdHJpbmdJbXBsKiByZXApIDogbV9zdHJpbmcoYWRk
KGdsb2JhbERhdGEsIHJlcCkpIHsgfSAKICAgICAgICAgSWRlbnRpZmllcihKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHMpIDogbV9zdHJpbmcoYWRkKGdsb2JhbERhdGEs
IHMuaW1wbCgpKSkgeyB9CkBAIC01Myw5ICs1Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcubGVuZ3RoKCk7IH0KICAgICAg
ICAgCiAgICAgICAgIENTdHJpbmcgYXNjaWkoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5hc2Np
aSgpOyB9Ci0KLSAgICAgICAgc3RhdGljIElkZW50aWZpZXIgY3JlYXRlTENoYXJGcm9tVUNoYXIo
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVQ2hhciogcywgaW50IGxlbmd0aCkgeyBy
ZXR1cm4gSWRlbnRpZmllcihnbG9iYWxEYXRhLCBhZGQ4KGdsb2JhbERhdGEsIHMsIGxlbmd0aCkp
OyB9Ci0KKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCB5KTsKICAgICAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShFeGVj
U3RhdGUqIGV4ZWMsIGludCB5KTsKICAgICAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShFeGVj
U3RhdGUqIGV4ZWMsIGRvdWJsZSB5KTsKQEAgLTgwLDcgKzc3LDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgCiAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25z
dCBMQ2hhciopOwogICAgICAgICBzdGF0aWMgaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5n
SW1wbCphLCBjb25zdCBjaGFyKmIpIHsgcmV0dXJuIElkZW50aWZpZXI6OmVxdWFsKGEsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihiKSk7IH07Ci0gICAgICAgIHN0YXRpYyBib29sIGVx
dWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAg
ICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBVQ2hhcios
IHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmlu
Z0ltcGwqIGEsIGNvbnN0IFN0cmluZ0ltcGwqIGIpIHsgcmV0dXJuIDo6ZXF1YWwoYSwgYik7IH0K
IApAQCAtOTMsOSArODksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wg
ZXF1YWwoY29uc3QgSWRlbnRpZmllciYgYSwgY29uc3QgSWRlbnRpZmllciYgYikgeyByZXR1cm4g
YS5tX3N0cmluZy5pbXBsKCkgPT0gYi5tX3N0cmluZy5pbXBsKCk7IH0KICAgICAgICAgc3RhdGlj
IGJvb2wgZXF1YWwoY29uc3QgSWRlbnRpZmllciYgYSwgY29uc3QgTENoYXIqIGIpIHsgcmV0dXJu
IGVxdWFsKGEubV9zdHJpbmcuaW1wbCgpLCBiKTsgfQogCi0gICAgICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoSlNHbG9iYWxEYXRhKiwg
Y29uc3QgVCosIGludCBsZW5ndGgpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBhZGQ4KEpTR2xvYmFsRGF0YSosIGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCk7Ci0gICAg
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGNhblVz
ZVNpbmdsZUNoYXJhY3RlclN0cmluZyhUKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3Ry
aW5nSW1wbD4gYWRkKEV4ZWNTdGF0ZSosIGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCk7CisgICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChKU0dsb2JhbERhdGEqLCBjb25z
dCBVQ2hhciosIGludCBsZW5ndGgpOwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IGFkZChFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZ0ltcGwqIHIpCiAgICAgICAgIHsKQEAg
LTEyMiw2NiArMTE3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIGNo
ZWNrQ3VycmVudElkZW50aWZpZXJUYWJsZShFeGVjU3RhdGUqKTsKICAgICAgICAgc3RhdGljIHZv
aWQgY2hlY2tDdXJyZW50SWRlbnRpZmllclRhYmxlKEpTR2xvYmFsRGF0YSopOwogICAgIH07Ci0K
LSAgICB0ZW1wbGF0ZSA8PiBBTFdBWVNfSU5MSU5FIGJvb2wgSWRlbnRpZmllcjo6Y2FuVXNlU2lu
Z2xlQ2hhcmFjdGVyU3RyaW5nKExDaGFyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1heFNpbmds
ZUNoYXJhY3RlclN0cmluZyA9PSAweGZmKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
Ci0gICAgdGVtcGxhdGUgPD4gQUxXQVlTX0lOTElORSBib29sIElkZW50aWZpZXI6OmNhblVzZVNp
bmdsZUNoYXJhY3RlclN0cmluZyhVQ2hhciBjKQotICAgIHsKLSAgICAgICAgcmV0dXJuIChjIDw9
IG1heFNpbmdsZUNoYXJhY3RlclN0cmluZyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci0gICAgc3RydWN0IENoYXJCdWZmZXIgewotICAgICAgICBjb25zdCBUKiBzOwotICAg
ICAgICB1bnNpZ25lZCBpbnQgbGVuZ3RoOwotICAgIH07CiAgICAgCi0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci0gICAgc3RydWN0IElkZW50aWZpZXJDaGFyQnVmZmVyVHJhbnNsYXRvciB7Ci0g
ICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IENoYXJCdWZmZXI8VD4mIGJ1ZikKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2g8VD4o
YnVmLnMsIGJ1Zi5sZW5ndGgpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMg
Ym9vbCBlcXVhbChTdHJpbmdJbXBsKiBzdHIsIGNvbnN0IENoYXJCdWZmZXI8VD4mIGJ1ZikKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OmVxdWFsKHN0ciwgYnVmLnMs
IGJ1Zi5sZW5ndGgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgdHJhbnNsYXRl
KFN0cmluZ0ltcGwqJiBsb2NhdGlvbiwgY29uc3QgQ2hhckJ1ZmZlcjxUPiYgYnVmLCB1bnNpZ25l
ZCBoYXNoKQotICAgICAgICB7Ci0gICAgICAgICAgICBUKiBkOwotICAgICAgICAgICAgU3RyaW5n
SW1wbCogciA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoYnVmLmxlbmd0aCwgZCku
bGVha1JlZigpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBidWYubGVu
Z3RoOyBpKyspCi0gICAgICAgICAgICAgICAgZFtpXSA9IGJ1Zi5zW2ldOwotICAgICAgICAgICAg
ci0+c2V0SGFzaChoYXNoKTsKLSAgICAgICAgICAgIGxvY2F0aW9uID0gcjsgCi0gICAgICAgIH0K
LSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiBJZGVudGlmaWVyOjphZGQoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBU
KiBzLCBpbnQgbGVuZ3RoKQotICAgIHsKLSAgICAgICAgaWYgKGxlbmd0aCA9PSAxKSB7Ci0gICAg
ICAgICAgICBUIGMgPSBzWzBdOwotICAgICAgICAgICAgaWYgKGNhblVzZVNpbmdsZUNoYXJhY3Rl
clN0cmluZyhjKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gYWRkKGdsb2JhbERhdGEsIGdsb2Jh
bERhdGEtPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmdSZXAoYykpOwotICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiBT
dHJpbmdJbXBsOjplbXB0eSgpOwotICAgICAgICBDaGFyQnVmZmVyPFQ+IGJ1ZiA9IHtzLCBsZW5n
dGh9OyAKLSAgICAgICAgcGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+
IGFkZFJlc3VsdCA9IGdsb2JhbERhdGEtPmlkZW50aWZpZXJUYWJsZS0+YWRkPENoYXJCdWZmZXI8
VD4sIElkZW50aWZpZXJDaGFyQnVmZmVyVHJhbnNsYXRvcjxUPiA+KGJ1Zik7Ci0gICAgICAgIAot
ICAgICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIG5ld2x5LXRyYW5zbGF0ZWQsIHRoZW4gd2UgbmVl
ZCB0byBhZG9wdCBpdC4KLSAgICAgICAgLy8gVGhlIGJvb2xlYW4gaW4gdGhlIHBhaXIgdGVsbHMg
dXMgaWYgdGhhdCBpcyBzby4KLSAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5zZWNvbmQgPyBhZG9w
dFJlZigqYWRkUmVzdWx0LmZpcnN0KSA6ICphZGRSZXN1bHQuZmlyc3Q7Ci0gICAgfQotCiAgICAg
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJZGVudGlmaWVyJiBhLCBjb25zdCBJZGVudGlm
aWVyJiBiKQogICAgIHsKICAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OmVxdWFsKGEsIGIpOwpA
QCAtMjE2LDEyICsxNTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgICAgIHJldHVy
biBXVEY6OmVxdWFsKHIsIHMpOwogICAgIH0KLQotICAgIGlubGluZSBib29sIElkZW50aWZpZXI6
OmVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqIHIsIGNvbnN0IExDaGFyKiBzLCB1bnNpZ25lZCBsZW5n
dGgpCi0gICAgewotICAgICAgICByZXR1cm4gV1RGOjplcXVhbChyLCBzLCBsZW5ndGgpOwotICAg
IH0KLQorICAgIAogICAgIGlubGluZSBib29sIElkZW50aWZpZXI6OmVxdWFsKGNvbnN0IFN0cmlu
Z0ltcGwqIHIsIGNvbnN0IFVDaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgewogICAgICAg
ICByZXR1cm4gV1RGOjplcXVhbChyLCBzLCBsZW5ndGgpOwpAQCAtMjQ2LDE0ICsxNzcsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4s
IGludCwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFN0cmluZ0ltcGw+ID4s
IElkZW50aWZpZXJNYXBJbmRleEhhc2hUcmFpdHM+IElkZW50aWZpZXJNYXA7CiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIHN0ZDo6cGFpcjxIYXNoU2V0PFN0cmlu
Z0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IElkZW50aWZpZXJUYWJsZTo6YWRkKFUgdmFsdWUpCi0g
ICAgewotICAgICAgICBzdGQ6OnBhaXI8SGFzaFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBi
b29sPiByZXN1bHQgPSBtX3RhYmxlLmFkZDxVLCBWPih2YWx1ZSk7Ci0gICAgICAgICgqcmVzdWx0
LmZpcnN0KS0+c2V0SXNJZGVudGlmaWVyKHRydWUpOwotICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgIH0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBJZGVudGlmaWVyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmNwcAppbmRleCA3ODlkZGEwNjU2Nzc2Mjg0YmRlNDlhODI4YWRmNjkxNWEzY2Iy
M2ExLi4zMjVhMjA2OWY4MThhZmZhNmI0YzIzMTZmNDdjMjA1NjA1NzI4MTcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHN0YXRpYyBKU1ZhbHVlIGRlY29kZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IGNoYXIqIGRvTm90VW5lc2NhcGUsIGJvb2wgc3RyaWN0KQogICAgICAg
ICBpZiAoYyA9PSAnJScpIHsKICAgICAgICAgICAgIGludCBjaGFyTGVuID0gMDsKICAgICAgICAg
ICAgIGlmIChrIDw9IGxlbiAtIDMgJiYgaXNBU0NJSUhleERpZ2l0KHBbMV0pICYmIGlzQVNDSUlI
ZXhEaWdpdChwWzJdKSkgewotICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgYjAgPSBMZXhlcjxV
Q2hhcj46OmNvbnZlcnRIZXgocFsxXSwgcFsyXSk7CisgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciBiMCA9IExleGVyOjpjb252ZXJ0SGV4KHBbMV0sIHBbMl0pOwogICAgICAgICAgICAgICAgIGNv
bnN0IGludCBzZXF1ZW5jZUxlbiA9IFVURjhTZXF1ZW5jZUxlbmd0aChiMCk7CiAgICAgICAgICAg
ICAgICAgaWYgKHNlcXVlbmNlTGVuICE9IDAgJiYgayA8PSBsZW4gLSBzZXF1ZW5jZUxlbiAqIDMp
IHsKICAgICAgICAgICAgICAgICAgICAgY2hhckxlbiA9IHNlcXVlbmNlTGVuICogMzsKQEAgLTk0
LDcgKzk0LDcgQEAgc3RhdGljIEpTVmFsdWUgZGVjb2RlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
Y2hhciogZG9Ob3RVbmVzY2FwZSwgYm9vbCBzdHJpY3QpCiAgICAgICAgICAgICAgICAgICAgIGZv
ciAoaW50IGkgPSAxOyBpIDwgc2VxdWVuY2VMZW47ICsraSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVUNoYXIqIHEgPSBwICsgaSAqIDM7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAocVswXSA9PSAnJScgJiYgaXNBU0NJSUhleERpZ2l0KHFbMV0pICYmIGlzQVNDSUlIZXhE
aWdpdChxWzJdKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZVtpXSA9IExl
eGVyPFVDaGFyPjo6Y29udmVydEhleChxWzFdLCBxWzJdKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXF1ZW5jZVtpXSA9IExleGVyOjpjb252ZXJ0SGV4KHFbMV0sIHFbMl0pOwogICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhckxlbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjMs
NyArMTIzLDcgQEAgc3RhdGljIEpTVmFsdWUgZGVjb2RlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
Y2hhciogZG9Ob3RVbmVzY2FwZSwgYm9vbCBzdHJpY3QpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAmJiBpc0FTQ0lJSGV4RGlnaXQocFsyXSkgJiYgaXNBU0NJSUhleERpZ2l0KHBbM10pCiAgICAg
ICAgICAgICAgICAgICAgICAgICAmJiBpc0FTQ0lJSGV4RGlnaXQocFs0XSkgJiYgaXNBU0NJSUhl
eERpZ2l0KHBbNV0pKSB7CiAgICAgICAgICAgICAgICAgICAgIGNoYXJMZW4gPSA2OwotICAgICAg
ICAgICAgICAgICAgICB1ID0gTGV4ZXI8VUNoYXI+Ojpjb252ZXJ0VW5pY29kZShwWzJdLCBwWzNd
LCBwWzRdLCBwWzVdKTsKKyAgICAgICAgICAgICAgICAgICAgdSA9IExleGVyOjpjb252ZXJ0VW5p
Y29kZShwWzJdLCBwWzNdLCBwWzRdLCBwWzVdKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBpZiAoY2hhckxlbiAmJiAodSA9PSAwIHx8IHUgPj0gMTI4IHx8
ICFzdHJjaHIoZG9Ob3RVbmVzY2FwZSwgdSkpKSB7CkBAIC0xNzMsMTIgKzE3MywxMiBAQCBzdGF0
aWMgaW50IHBhcnNlRGlnaXQodW5zaWduZWQgc2hvcnQgYywgaW50IHJhZGl4KQogICAgIHJldHVy
biBkaWdpdDsKIH0KIAotZG91YmxlIHBhcnNlSW50T3ZlcmZsb3coY29uc3QgTENoYXIqIHMsIGlu
dCBsZW5ndGgsIGludCByYWRpeCkKK2RvdWJsZSBwYXJzZUludE92ZXJmbG93KGNvbnN0IGNoYXIq
IHMsIGludCBsZW5ndGgsIGludCByYWRpeCkKIHsKICAgICBkb3VibGUgbnVtYmVyID0gMC4wOwog
ICAgIGRvdWJsZSByYWRpeE11bHRpcGxpZXIgPSAxLjA7CiAKLSAgICBmb3IgKGNvbnN0IExDaGFy
KiBwID0gcyArIGxlbmd0aCAtIDE7IHAgPj0gczsgcC0tKSB7CisgICAgZm9yIChjb25zdCBjaGFy
KiBwID0gcyArIGxlbmd0aCAtIDE7IHAgPj0gczsgcC0tKSB7CiAgICAgICAgIGlmIChyYWRpeE11
bHRpcGxpZXIgPT0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSB7CiAg
ICAgICAgICAgICBpZiAoKnAgIT0gJzAnKSB7CiAgICAgICAgICAgICAgICAgbnVtYmVyID0gc3Rk
OjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOwpAQCAtNTc4LDEyICs1NzgsMTIg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVW5lc2NhcGUoRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICBVQ2hhciB1OwogICAgICAgICBpZiAoY1swXSA9PSAnJScgJiYg
ayA8PSBsZW4gLSA2ICYmIGNbMV0gPT0gJ3UnKSB7CiAgICAgICAgICAgICBpZiAoaXNBU0NJSUhl
eERpZ2l0KGNbMl0pICYmIGlzQVNDSUlIZXhEaWdpdChjWzNdKSAmJiBpc0FTQ0lJSGV4RGlnaXQo
Y1s0XSkgJiYgaXNBU0NJSUhleERpZ2l0KGNbNV0pKSB7Ci0gICAgICAgICAgICAgICAgdSA9IExl
eGVyPFVDaGFyPjo6Y29udmVydFVuaWNvZGUoY1syXSwgY1szXSwgY1s0XSwgY1s1XSk7CisgICAg
ICAgICAgICAgICAgdSA9IExleGVyOjpjb252ZXJ0VW5pY29kZShjWzJdLCBjWzNdLCBjWzRdLCBj
WzVdKTsKICAgICAgICAgICAgICAgICBjID0gJnU7CiAgICAgICAgICAgICAgICAgayArPSA1Owog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGNbMF0gPT0gJyUnICYmIGsgPD0gbGVu
IC0gMyAmJiBpc0FTQ0lJSGV4RGlnaXQoY1sxXSkgJiYgaXNBU0NJSUhleERpZ2l0KGNbMl0pKSB7
Ci0gICAgICAgICAgICB1ID0gVUNoYXIoTGV4ZXI8VUNoYXI+Ojpjb252ZXJ0SGV4KGNbMV0sIGNb
Ml0pKTsKKyAgICAgICAgICAgIHUgPSBVQ2hhcihMZXhlcjo6Y29udmVydEhleChjWzFdLCBjWzJd
KSk7CiAgICAgICAgICAgICBjID0gJnU7CiAgICAgICAgICAgICBrICs9IDI7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5oCmluZGV4IDExODNkZmFjNWI0NTkyZGRlMTA2NDc5NDM0YzFhY2ZhMjFiYmUy
OGYuLmFiY2Y0NWY0ZWRlNTk2ZTYxYjQxMjJlMmI2ZDNhMTZiMmYzMjllMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuaApAQCAtNTAsOCArNTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqKTsKIAog
ICAgIHN0YXRpYyBjb25zdCBkb3VibGUgbWFudGlzc2FPdmVyZmxvd0xvd2VyQm91bmQgPSA5MDA3
MTk5MjU0NzQwOTkyLjA7Ci0gICAgZG91YmxlIHBhcnNlSW50T3ZlcmZsb3coY29uc3QgTENoYXIq
LCBpbnQgbGVuZ3RoLCBpbnQgcmFkaXgpOwotICAgIEFMV0FZU19JTkxJTkUgZG91YmxlIHBhcnNl
SW50T3ZlcmZsb3coY29uc3QgY2hhciogcywgaW50IGxlbmd0aCwgaW50IHJhZGl4KSB7IHJldHVy
biBwYXJzZUludE92ZXJmbG93KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSwgbGVu
Z3RoLCByYWRpeCk7IH0KKyAgICBkb3VibGUgcGFyc2VJbnRPdmVyZmxvdyhjb25zdCBjaGFyKiwg
aW50IGxlbmd0aCwgaW50IHJhZGl4KTsKICAgICBkb3VibGUgcGFyc2VJbnRPdmVyZmxvdyhjb25z
dCBVQ2hhciosIGludCBsZW5ndGgsIGludCByYWRpeCk7CiAgICAgYm9vbCBpc1N0cldoaXRlU3Bh
Y2UoVUNoYXIpOwogICAgIGRvdWJsZSBqc1RvTnVtYmVyKGNvbnN0IFVTdHJpbmcmIHMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAppbmRleCBi
ZDNiYThhNjZmYzg5OGJkNjZmN2M1MjExNWU3YTJlOGMwNmQ3ZjI2Li5kNWNlOTA4ZDM3MTUyODEw
MjY2MzU4YmQyNmJlNjU4MGE4Mzg3ZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcApAQCAtNTAsMTcgKzUwLDE3IEBAIGJvb2wgTGl0ZXJh
bFBhcnNlcjo6dHJ5SlNPTlBQYXJzZShWZWN0b3I8SlNPTlBEYXRhPiYgcmVzdWx0cywgYm9vbCBu
ZWVkc0Z1bGxTb3VyCiAgICAgZG8gewogICAgICAgICBWZWN0b3I8SlNPTlBQYXRoRW50cnk+IHBh
dGg7CiAgICAgICAgIC8vIFVuZ3VhcmRlZCBuZXh0IHRvIHN0YXJ0IG9mZiB0aGUgbGV4ZXIKLSAg
ICAgICAgSWRlbnRpZmllciBuYW1lID0gSWRlbnRpZmllcigmbV9leGVjLT5nbG9iYWxEYXRhKCks
IG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuZW5k
IC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7CisgICAgICAgIElkZW50aWZpZXIgbmFt
ZSA9IElkZW50aWZpZXIobV9leGVjLCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0LCBtX2xl
eGVyLmN1cnJlbnRUb2tlbigpLmVuZCAtIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQpOwog
ICAgICAgICBKU09OUFBhdGhFbnRyeSBlbnRyeTsKICAgICAgICAgaWYgKG5hbWUgPT0gbV9leGVj
LT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+dmFyS2V5d29yZCkgewogICAgICAgICAgICAg
aWYgKG1fbGV4ZXIubmV4dCgpICE9IFRva0lkZW50aWZpZXIpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgZW50cnkubV90eXBlID0gSlNPTlBQYXRoRW50cnlUeXBl
RGVjbGFyZTsKLSAgICAgICAgICAgIGVudHJ5Lm1fcGF0aEVudHJ5TmFtZSA9IElkZW50aWZpZXIo
Jm1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0LCBtX2xl
eGVyLmN1cnJlbnRUb2tlbigpLmVuZCAtIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQpOwor
ICAgICAgICAgICAgZW50cnkubV9wYXRoRW50cnlOYW1lID0gSWRlbnRpZmllcihtX2V4ZWMsIG1f
bGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0g
bV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7CiAgICAgICAgICAgICBwYXRoLmFwcGVuZChl
bnRyeSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBlbnRyeS5tX3R5cGUgPSBKU09O
UFBhdGhFbnRyeVR5cGVEb3Q7Ci0gICAgICAgICAgICBlbnRyeS5tX3BhdGhFbnRyeU5hbWUgPSBJ
ZGVudGlmaWVyKCZtX2V4ZWMtPmdsb2JhbERhdGEoKSwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5z
dGFydCwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5lbmQgLSBtX2xleGVyLmN1cnJlbnRUb2tlbigp
LnN0YXJ0KTsKKyAgICAgICAgICAgIGVudHJ5Lm1fcGF0aEVudHJ5TmFtZSA9IElkZW50aWZpZXIo
bV9leGVjLCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0YXJ0LCBtX2xleGVyLmN1cnJlbnRUb2tl
bigpLmVuZCAtIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQpOwogICAgICAgICAgICAgcGF0
aC5hcHBlbmQoZW50cnkpOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX2V4ZWMtPmdsb2JhbERh
dGEoKS5rZXl3b3Jkcy0+aXNLZXl3b3JkKGVudHJ5Lm1fcGF0aEVudHJ5TmFtZSkpCkBAIC04NSw3
ICs4NSw3IEBAIGJvb2wgTGl0ZXJhbFBhcnNlcjo6dHJ5SlNPTlBQYXJzZShWZWN0b3I8SlNPTlBE
YXRhPiYgcmVzdWx0cywgYm9vbCBuZWVkc0Z1bGxTb3VyCiAgICAgICAgICAgICAgICAgZW50cnku
bV90eXBlID0gSlNPTlBQYXRoRW50cnlUeXBlRG90OwogICAgICAgICAgICAgICAgIGlmIChtX2xl
eGVyLm5leHQoKSAhPSBUb2tJZGVudGlmaWVyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICAgICAgZW50cnkubV9wYXRoRW50cnlOYW1lID0gSWRlbnRpZmll
cigmbV9leGVjLT5nbG9iYWxEYXRhKCksIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1f
bGV4ZXIuY3VycmVudFRva2VuKCkuZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7
CisgICAgICAgICAgICAgICAgZW50cnkubV9wYXRoRW50cnlOYW1lID0gSWRlbnRpZmllcihtX2V4
ZWMsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RhcnQsIG1fbGV4ZXIuY3VycmVudFRva2VuKCku
ZW5kIC0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdGFydCk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFRva0xQYXJlbjogewpAQCAtMzQw
LDcgKzM0MCw3IEBAIHRlbXBsYXRlIDxMaXRlcmFsUGFyc2VyOjpQYXJzZXJNb2RlIG1vZGUsIFVD
aGFyIHRlcm1pbmF0b3I+IGlubGluZSBMaXRlcmFsUGFyc2VyCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIFRva0Vycm9yOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEpT
Qzo6TGV4ZXI8VUNoYXI+Ojpjb252ZXJ0VW5pY29kZShtX3B0clsxXSwgbV9wdHJbMl0sIG1fcHRy
WzNdLCBtX3B0cls0XSkpOworICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChKU0M6
OkxleGVyOjpjb252ZXJ0VW5pY29kZShtX3B0clsxXSwgbV9wdHJbMl0sIG1fcHRyWzNdLCBtX3B0
cls0XSkpOwogICAgICAgICAgICAgICAgICAgICBtX3B0ciArPSA1OwogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBs
LmgKaW5kZXggMDBmNjEwOGYxNTlkNWVkNzBkMTM2ZjhjZWExZWNiMzYxNjlmNDhjMi4uMjViZDc0
YjA2Nzg1MWM1YWRhYjk0OGYyNTZiOTY1NThhYmI4YWJiNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC00NCw4ICs0NCw4IEBAIHR5cGVkZWYgY29u
c3Qgc3RydWN0IF9fQ0ZTdHJpbmcgKiBDRlN0cmluZ1JlZjsKIC8vIExhbmRpbmcgdGhlIGZpbGUg
bW92ZXMgaW4gb25lIHBhdGNoLCB3aWxsIGZvbGxvdyBvbiB3aXRoIHBhdGNoZXMgdG8gY2hhbmdl
IHRoZSBuYW1lc3BhY2VzLgogbmFtZXNwYWNlIEpTQyB7CiBzdHJ1Y3QgSWRlbnRpZmllckNTdHJp
bmdUcmFuc2xhdG9yOwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJZGVudGlmaWVyQ2hh
ckJ1ZmZlclRyYW5zbGF0b3I7Ci1zdHJ1Y3QgSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyVHJhbnNs
YXRvcjsKK3N0cnVjdCBJZGVudGlmaWVyQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CitzdHJ1Y3QgSWRl
bnRpZmllclVDaGFyQnVmZmVyVHJhbnNsYXRvcjsKIH0KIAogbmFtZXNwYWNlIFdURiB7CkBAIC02
Myw5ICs2Myw4IEBAIHR5cGVkZWYgYm9vbCAoKklzV2hpdGVTcGFjZUZ1bmN0aW9uUHRyKShVQ2hh
cik7CiBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHJpbmdJ
bXBsKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgZnJpZW5kIHN0cnVjdCBKU0M6Oklk
ZW50aWZpZXJDU3RyaW5nVHJhbnNsYXRvcjsKLSAgICBmcmllbmQgc3RydWN0IEpTQzo6SWRlbnRp
ZmllckNoYXJCdWZmZXJUcmFuc2xhdG9yPExDaGFyPjsKLSAgICBmcmllbmQgc3RydWN0IEpTQzo6
SWRlbnRpZmllckNoYXJCdWZmZXJUcmFuc2xhdG9yPFVDaGFyPjsKLSAgICBmcmllbmQgc3RydWN0
IEpTQzo6SWRlbnRpZmllckxDaGFyRnJvbVVDaGFyVHJhbnNsYXRvcjsKKyAgICBmcmllbmQgc3Ry
dWN0IEpTQzo6SWRlbnRpZmllckNoYXJCdWZmZXJUcmFuc2xhdG9yOworICAgIGZyaWVuZCBzdHJ1
Y3QgSlNDOjpJZGVudGlmaWVyVUNoYXJCdWZmZXJUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1
Y3QgV1RGOjpDU3RyaW5nVHJhbnNsYXRvcjsKICAgICBmcmllbmQgc3RydWN0IFdURjo6SGFzaEFu
ZENoYXJhY3RlcnNUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpIYXNoQW5kVVRG
OENoYXJhY3RlcnNUcmFuc2xhdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgKaW5kZXggODZjNjU3MzA2ZDViM2E3
MTFiNDUwNWExNDQxZjBhOTg5Yjg5OTNmMy4uZTRlNzMyNmVhYmRlYzAwZDEzMDE2MmJhYjVmOWU4
MWFhOGU5MTQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVk
U2NyaXB0U291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9D
YWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oCkBAIC00Nyw3ICs0Nyw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgICAgICBKU0M6OlVTdHJpbmcgZ2V0UmFuZ2UoaW50IHN0YXJ0LCBpbnQg
ZW5kKSBjb25zdCB7IHJldHVybiBKU0M6OlVTdHJpbmcobV9jYWNoZWRTY3JpcHQtPnNjcmlwdCgp
LmNoYXJhY3RlcnMoKSArIHN0YXJ0LCBlbmQgLSBzdGFydCk7IH0KICAgICAgICAgY29uc3QgVUNo
YXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFNjcmlwdC0+c2NyaXB0KCkuY2hhcmFj
dGVycygpOyB9Ci0gICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZ0RhdGEoKSBjb25zdCB7
IHJldHVybiBtX2NhY2hlZFNjcmlwdC0+c2NyaXB0KCkuaW1wbCgpOyB9CiAgICAgICAgIGludCBs
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFNjcmlwdC0+c2NyaXB0KCkubGVuZ3RoKCk7
IH0KICAgICAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hl
ZFNjcmlwdC0+c2NyaXB0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU3RyaW5nU291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1N0cmluZ1NvdXJjZVByb3ZpZGVyLmgKaW5kZXggM2UxMGYwNzY3YTgxMGZkODE4NGUwY2ZiMjAy
ODM1NmQxMGExYjhhMy4uNGMwYTdjNDJiMWM1ODExMjk5MTJhMzdiMDdmODUzZmE3OGVmZmJlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RyaW5nU291cmNlUHJvdmlk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJpbmdTb3VyY2VQcm92aWRl
ci5oCkBAIC00NCw3ICs0NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBKU0M6
OlVTdHJpbmcgZ2V0UmFuZ2UoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdCB7IHJldHVybiBKU0M6
OlVTdHJpbmcobV9zb3VyY2UuY2hhcmFjdGVycygpICsgc3RhcnQsIGVuZCAtIHN0YXJ0KTsgfQog
ICAgICAgICBjb25zdCBVQ2hhciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmNoYXJh
Y3RlcnMoKTsgfQotICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmdEYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9zb3VyY2UuaW1wbCgpOyB9CiAgICAgICAgIGludCBsZW5ndGgoKSBjb25zdCB7
IHJldHVybiBtX3NvdXJjZS5sZW5ndGgoKTsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIHNvdXJj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9x
dF9ydW50aW1lLmNwcAppbmRleCAwODQ3Yzc1YjUzNGFkOWM1MDE0MWNkZmFkMTc5MjM2ZGUzY2Y1
ZTIwLi4xOGMyNGMyN2NhMjY1ODRmODYyZGVlYzU2Y2RiM2JhYmQyYTc2MjJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCkBAIC05NjAsNyArOTYwLDcgQEAgSlNWYWx1
ZSBjb252ZXJ0UVZhcmlhbnRUb1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUGFzc1JlZlB0cjxSb290
T2JqZWN0PiByb290LCBjb24KICAgICAgICAgICAgIEpTVmFsdWUgdmFsID0gY29udmVydFFWYXJp
YW50VG9WYWx1ZShleGVjLCByb290LmdldCgpLCBpLnZhbHVlKCkpOwogICAgICAgICAgICAgaWYg
KHZhbCkgewogICAgICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OwotICAgICAgICAg
ICAgICAgIHJldC0+bWV0aG9kVGFibGUoKS0+cHV0KHJldCwgZXhlYywgSWRlbnRpZmllcigmZXhl
Yy0+Z2xvYmFsRGF0YSgpLCByZWludGVycHJldF9jYXN0X3B0cjxjb25zdCBVQ2hhciAqPihzLmNv
bnN0RGF0YSgpKSwgcy5sZW5ndGgoKSksIHZhbCwgc2xvdCk7CisgICAgICAgICAgICAgICAgcmV0
LT5tZXRob2RUYWJsZSgpLT5wdXQocmV0LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHJlaW50ZXJw
cmV0X2Nhc3RfcHRyPGNvbnN0IFVDaGFyICo+KHMuY29uc3REYXRhKCkpLCBzLmxlbmd0aCgpKSwg
dmFsLCBzbG90KTsKICAgICAgICAgICAgICAgICAvLyAjIyMgZXJyb3IgY2FzZT8KICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICsraTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJmcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCmluZGV4
IDA1YzExMDczYmJmOWZhYzdiNjhkNGI2ZTBjZDU5Yjk4YjEzZTcxYmQuLmNiM2M3YWU2YzRlZjVh
Yjc0NjJmY2Q3MTkxY2EyMTE4MmY4ZGJhMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQv
QXBpL3F3ZWJmcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNw
cApAQCAtNjg4LDcgKzY4OCw3IEBAIHZvaWQgUVdlYkZyYW1lOjphZGRUb0phdmFTY3JpcHRXaW5k
b3dPYmplY3QoY29uc3QgUVN0cmluZyAmbmFtZSwgUU9iamVjdCAqb2JqZWN0CiAgICAgICAgICAg
ICBKU0M6OkJpbmRpbmdzOjpRdEluc3RhbmNlOjpnZXRRdEluc3RhbmNlKG9iamVjdCwgcm9vdCwg
b3duZXJzaGlwKS0+Y3JlYXRlUnVudGltZU9iamVjdChleGVjKTsKIAogICAgIEpTQzo6UHV0UHJv
cGVydHlTbG90IHNsb3Q7Ci0gICAgd2luZG93LT5tZXRob2RUYWJsZSgpLT5wdXQod2luZG93LCBl
eGVjLCBKU0M6OklkZW50aWZpZXIoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcmVpbnRlcnByZXRfY2Fz
dF9wdHI8Y29uc3QgVUNoYXIqPihuYW1lLmNvbnN0RGF0YSgpKSwgbmFtZS5sZW5ndGgoKSksIHJ1
bnRpbWVPYmplY3QsIHNsb3QpOworICAgIHdpbmRvdy0+bWV0aG9kVGFibGUoKS0+cHV0KHdpbmRv
dywgZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNvbnN0
IFVDaGFyKj4obmFtZS5jb25zdERhdGEoKSksIG5hbWUubGVuZ3RoKCkpLCBydW50aW1lT2JqZWN0
LCBzbG90KTsKICNlbGlmIFVTRShWOCkKICAgICBRU2NyaXB0RW5naW5lKiBlbmdpbmUgPSBkLT5m
cmFtZS0+c2NyaXB0KCktPnF0U2NyaXB0RW5naW5lKCk7CiAgICAgaWYgKCFlbmdpbmUpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>