<?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>171980</bug_id>
          
          <creation_ts>2017-05-11 10:51:17 -0700</creation_ts>
          <short_desc>Offer SPI to notify clients that GC has happened</short_desc>
          <delta_ts>2017-05-11 12:59:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>buildbot</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1307322</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-05-11 10:51:17 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307323</commentid>
    <comment_count>1</comment_count>
      <attachid>309725</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-05-11 10:51:51 -0700</bug_when>
    <thetext>Created attachment 309725
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307359</commentid>
    <comment_count>2</comment_count>
      <attachid>309735</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-05-11 11:35:17 -0700</bug_when>
    <thetext>Created attachment 309735
it seems to work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307363</commentid>
    <comment_count>3</comment_count>
      <attachid>309735</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-05-11 11:42:09 -0700</bug_when>
    <thetext>Comment on attachment 309735
it seems to work

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307365</commentid>
    <comment_count>4</comment_count>
      <attachid>309737</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-05-11 11:42:40 -0700</bug_when>
    <thetext>Created attachment 309737
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307366</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-11 11:45:35 -0700</bug_when>
    <thetext>Attachment 309737 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSHeapFinalizerPrivate.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307382</commentid>
    <comment_count>6</comment_count>
      <attachid>309746</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-05-11 12:07:14 -0700</bug_when>
    <thetext>Created attachment 309746
patch for landing

I think that I fixed the build issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307383</commentid>
    <comment_count>7</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-11 12:08:58 -0700</bug_when>
    <thetext>Attachment 309746 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSHeapFinalizerPrivate.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307401</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-05-11 12:59:22 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/216689/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309725</attachid>
            <date>2017-05-11 10:51:51 -0700</date>
            <delta_ts>2017-05-11 11:35:17 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>20587</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNIZWFwRmluYWxpemVyUHJpdmF0ZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0hlYXBGaW5hbGl6
ZXJQcml2YXRlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTSGVhcEZpbmFsaXplclByaXZhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0hlYXBGaW5hbGl6ZXJQcml2YXRlLmgiCisKKyNp
bmNsdWRlICJBUElDYXN0LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCit1c2luZyBuYW1l
c3BhY2UgSlNDOworCit2b2lkIEpTQ29udGV4dEdyb3VwQWRkSGVhcEZpbmFsaXplcihKU0NvbnRl
eHRHcm91cFJlZiBncm91cCwgSlNIZWFwRmluYWxpemVyIGZpbmFsaXplciwgdm9pZCAqdXNlckRh
dGEpCit7CisgICAgVk0qIHZtID0gdG9KUyhncm91cCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tl
cih2bSk7CisgICAgdm0tPmhlYXAuYWRkSGVhcEZpbmFsaXplckNhbGxiYWNrKEhlYXBGaW5hbGl6
ZXJDYWxsYmFjayhmaW5hbGl6ZXIsIHVzZXJEYXRhKSk7Cit9CisKK3ZvaWQgSlNDb250ZXh0R3Jv
dXBSZW1vdmVIZWFwRmluYWxpemVyKEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwLCBKU0hlYXBGaW5h
bGl6ZXIgZmluYWxpemVyLCB2b2lkICp1c2VyRGF0YSkKK3sKKyAgICBWTSogdm0gPSB0b0pTKGdy
b3VwKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKKyAgICB2bS0+aGVhcC5yZW1vdmVI
ZWFwRmluYWxpemVyQ2FsbGJhY2soSGVhcEZpbmFsaXplckNhbGxiYWNrKGZpbmFsaXplciwgdXNl
ckRhdGEpKTsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNIZWFwRmluYWxp
emVyUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNI
ZWFwRmluYWxpemVyUHJpdmF0ZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNIZWFwRmluYWxpemVyUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgSlNIZWFwRmluYWxpemVyUHJpdmF0ZV9oCisjZGVmaW5lIEpTSGVhcEZpbmFsaXpl
clByaXZhdGVfaAorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVmLmg+Cisj
aW5jbHVkZSA8c3RkYm9vbC5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgewor
I2VuZGlmCisKK3R5cGVkZWYgdm9pZCAoKkpTSGVhcEZpbmFsaXplcikoSlNDb250ZXh0R3JvdXBS
ZWYsIHZvaWQgKnVzZXJEYXRhKTsKKworSlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBBZGRI
ZWFwRmluYWxpemVyKEpTQ29udGV4dEdyb3VwUmVmLCBKU0hlYXBGaW5hbGl6ZXIsIHZvaWQgKnVz
ZXJEYXRhKTsKK0pTX0VYUE9SVCB2b2lkIEpTQ29udGV4dEdyb3VwUmVtb3ZlSGVhcEZpbmFsaXpl
cihKU0NvbnRleHRHcm91cFJlZiwgSlNIZWFwRmluYWxpemVyLCB2b2lkICp1c2VyRGF0YSk7CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBKU0hlYXBGaW5hbGl6
ZXJQcml2YXRlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLmMJKHJldmlzaW9uIDIxNjYyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVz
dHMvdGVzdGFwaS5jCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
SmF2YVNjcmlwdENvcmUuaCIKICNpbmNsdWRlICJKU0Jhc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAi
SlNDb250ZXh0UmVmUHJpdmF0ZS5oIgorI2luY2x1ZGUgIkpTSGVhcEZpbmFsaXplclByaXZhdGUu
aCIKICNpbmNsdWRlICJKU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5oIgogI2luY2x1ZGUgIkpT
T2JqZWN0UmVmUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkpTU2NyaXB0UmVmUHJpdmF0ZS5oIgpAQCAt
MTE0Myw3ICsxMTQ0LDE2IEBAIHN0YXRpYyB2b2lkIG1hcmtpbmdDb25zdHJhaW50KEpTTWFya2Vy
UmUKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIHRlc3RNYXJraW5nQ29uc3RyYWludHModm9pZCkK
K3N0YXRpYyBib29sIGRpZFJ1bkhlYXBGaW5hbGl6ZXI7CisKK3N0YXRpYyB2b2lkIGhlYXBGaW5h
bGl6ZXIodm9pZCAqdXNlckRhdGEpCit7CisgICAgYXNzZXJ0VHJ1ZSgodWludHB0cl90KSA9PSAo
dWludHB0cl90KTQyLCAiQ29ycmVjdCB1c2VyRGF0YSB3YXMgcGFzc2VkIik7CisgICAgCisgICAg
ZGlkUnVuSGVhcEZpbmFsaXplciA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RNYXJraW5n
Q29uc3RyYWludHNBbmRIZWFwRmluYWxpemVycyh2b2lkKQogewogICAgIEpTQ29udGV4dEdyb3Vw
UmVmIGdyb3VwOwogICAgIEpTQ29udGV4dFJlZiBjb250ZXh0OwpAQCAtMTE1OSwxMSArMTE2OSwx
MyBAQCBzdGF0aWMgdm9pZCB0ZXN0TWFya2luZ0NvbnN0cmFpbnRzKHZvaWQpCiAgICAgd2Vha1Jl
ZnMgPSAoSlNXZWFrUmVmKiljYWxsb2MobnVtV2Vha1JlZnMsIHNpemVvZihKU1dlYWtSZWYpKTsK
IAogICAgIEpTQ29udGV4dEdyb3VwQWRkTWFya2luZ0NvbnN0cmFpbnQoZ3JvdXAsIG1hcmtpbmdD
b25zdHJhaW50LCB3ZWFrUmVmcyk7CisgICAgSlNDb250ZXh0R3JvdXBBZGRIZWFwRmluYWxpemVy
KGdyb3VwLCBoZWFwRmluYWxpemVyLCAodm9pZCopKHVpbnRwdHJfdCk0Mik7CiAgICAgCiAgICAg
Zm9yIChpID0gbnVtV2Vha1JlZnM7IGktLTspCiAgICAgICAgIHdlYWtSZWZzW2ldID0gSlNXZWFr
Q3JlYXRlKGNvbnRleHQsIEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIE5VTEwsIE5VTEwp
KTsKICAgICAKICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoY29u
dGV4dCk7CisgICAgYXNzZXJ0VHJ1ZShkaWRSdW5IZWFwRmluYWxpemVyLCAiRGlkIHJ1biBoZWFw
IGZpbmFsaXplciIpOwogICAgIAogICAgIGRlYWRDb3VudCA9IDA7CiAgICAgZm9yIChpID0gMDsg
aSA8IG51bVdlYWtSZWZzOyBpICs9IDIpIHsKQEAgLTExNzcsOSArMTE4OSwxOSBAQCBzdGF0aWMg
dm9pZCB0ZXN0TWFya2luZ0NvbnN0cmFpbnRzKHZvaWQpCiAgICAgZm9yIChpID0gbnVtV2Vha1Jl
ZnM7IGktLTspCiAgICAgICAgIEpTV2Vha1JlbGVhc2UoY29udGV4dCwgd2Vha1JlZnNbaV0pOwog
ICAgIAorICAgIGRpZFJ1bkhlYXBGaW5hbGl6ZXIgPSBmYWxzZTsKKyAgICBKU1N5bmNocm9ub3Vz
R2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoY29udGV4dCk7CisgICAgYXNzZXJ0VHJ1ZShkaWRS
dW5IZWFwRmluYWxpemVyLCAiRGlkIHJ1biBoZWFwIGZpbmFsaXplciIpOworCisgICAgSlNDb250
ZXh0R3JvdXBSZW1vdmVIZWFwRmluYWxpemVyKGdyb3VwLCBoZWFwRmluYWxpemVyLCAodm9pZCop
KHVpbnRwdHJfdCk0Mik7CisKKyAgICBkaWRSdW5IZWFwRmluYWxpemVyID0gZmFsc2U7CisgICAg
SlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKGNvbnRleHQpOworICAgIGFz
c2VydFRydWUoIWRpZFJ1bkhlYXBGaW5hbGl6ZXIsICJEaWQgbm90IHJ1biBoZWFwIGZpbmFsaXpl
ciIpOworICAgIAogICAgIEpTQ29udGV4dEdyb3VwUmVsZWFzZShncm91cCk7CiAKLSAgICBwcmlu
dGYoIlBBU1M6IE1hcmtpbmcgQ29uc3RyYWludHMuXG4iKTsKKyAgICBwcmludGYoIlBBU1M6IE1h
cmtpbmcgQ29uc3RyYWludHMgYW5kIEhlYXAgRmluYWxpemVycy5cbiIpOwogfQogCiBpbnQgbWFp
bihpbnQgYXJnYywgY2hhciogYXJndltdKQpAQCAtMTIxMiw3ICsxMjM0LDcgQEAgaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKIAogICAgIEFTU0VSVChCYXNlX2RpZEZpbmFsaXplKTsK
IAotICAgIHRlc3RNYXJraW5nQ29uc3RyYWludHMoKTsKKyAgICB0ZXN0TWFya2luZ0NvbnN0cmFp
bnRzQW5kSGVhcEZpbmFsaXplcnMoKTsKIAogICAgIEpTQ2xhc3NEZWZpbml0aW9uIGdsb2JhbE9i
amVjdENsYXNzRGVmaW5pdGlvbiA9IGtKU0NsYXNzRGVmaW5pdGlvbkVtcHR5OwogICAgIGdsb2Jh
bE9iamVjdENsYXNzRGVmaW5pdGlvbi5pbml0aWFsaXplID0gZ2xvYmFsT2JqZWN0X2luaXRpYWxp
emU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjE2NjI1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYsMTAgQEAKIAkJMEYwQjgzQjAx
NEJDRjcxNjAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBRTE0QkNGNzE0MDA4ODVCNEYgLyogQ2Fs
bExpbmtJbmZvLmNwcCAqLzsgfTsKIAkJMEYwQjgzQjExNEJDRjcxODAwODg1QjRGIC8qIENhbGxM
aW5rSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYwQjgzQUYxNEJDRjcxNDAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0I5MTRCQ0Y5NUYwMDg4
NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRG
IC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQ0FFRkIxRUM0REE2ODAwOTcwRDEy
IC8qIEpTSGVhcEZpbmFsaXplclByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQ0FFRjkxRUM0REE2MjAwOTcwRDEyIC8qIEpTSGVhcEZp
bmFsaXplclByaXZhdGUuY3BwICovOyB9OworCQkwRjBDQUVGQzFFQzREQTZCMDA5NzBEMTIgLyog
SlNIZWFwRmluYWxpemVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYwQ0FFRkExRUM0REE2MjAwOTcwRDEyIC8qIEpTSGVhcEZpbmFsaXpl
clByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwRjBDQUVGRjFFQzREQTg4MDA5NzBEMTIgLyogSGVhcEZpbmFsaXplckNhbGxiYWNrLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBDQUVGRTFF
QzREQTg1MDA5NzBEMTIgLyogSGVhcEZpbmFsaXplckNhbGxiYWNrLmggKi87IH07CisJCTBGMENB
RjAwMUVDNERBOEIwMDk3MEQxMiAvKiBIZWFwRmluYWxpemVyQ2FsbGJhY2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQ0FFRkQxRUM0REE4NTAw
OTcwRDEyIC8qIEhlYXBGaW5hbGl6ZXJDYWxsYmFjay5jcHAgKi87IH07CiAJCTBGMENENEMyMTVG
MUE2MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMENENEMwMTVGMUE2MDQwMDMyRjFDMCAvKiBQ
dXREaXJlY3RJbmRleE1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjBDRDRDNDE1RjZCNkJCMDAzMkYxQzAgLyogU3BhcnNlQXJyYXlWYWx1
ZU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjBDRDRDMzE1RjZCNkI1MDAzMkYxQzAgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAgKi87IH07
CiAJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwRkM0NTgxNEJEMTVG
MTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI2ODIsNiArMjY4NiwxMCBAQAogCQkwRjBCODNB
RTE0QkNGNzE0MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxMaW5rSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGMEI4M0FGMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbExpbmtJbmZvLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJu
T2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjBDQUVGOTFFQzREQTYyMDA5NzBEMTIgLyogSlNIZWFwRmluYWxpemVyUHJp
dmF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hlYXBGaW5h
bGl6ZXJQcml2YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQ0FFRkEx
RUM0REE2MjAwOTcwRDEyIC8qIEpTSGVhcEZpbmFsaXplclByaXZhdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIZWFwRmluYWxpemVyUHJpdmF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjBDQUVGRDFFQzREQTg1MDA5NzBEMTIgLyogSGVhcEZpbmFs
aXplckNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhl
YXBGaW5hbGl6ZXJDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
MENBRUZFMUVDNERBODUwMDk3MEQxMiAvKiBIZWFwRmluYWxpemVyQ2FsbGJhY2suaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcEZpbmFsaXplckNhbGxiYWNrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMENENEMwMTVGMUE2MDQwMDMyRjFDMCAvKiBQdXRE
aXJlY3RJbmRleE1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0RGly
ZWN0SW5kZXhNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMENENEMzMTVG
NkI2QjUwMDMyRjFDMCAvKiBTcGFyc2VBcnJheVZhbHVlTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwYXJzZUFycmF5VmFsdWVNYXAuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxs
TGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTExJbnRDYWxsTGlu
a0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYwNDQsNiArNjA1Miw4IEBA
CiAJCQkJREMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCAqLywKIAkJCQlE
QzNEMkIwOTFEMzQzMTYxMDBCQTkxOEMgLyogSGVhcENlbGwuaCAqLywKIAkJCQkwRjA3MEE0NDFE
NTQzQTg5MDA2RTcyMzIgLyogSGVhcENlbGxJbmxpbmVzLmggKi8sCisJCQkJMEYwQ0FFRkQxRUM0
REE4NTAwOTcwRDEyIC8qIEhlYXBGaW5hbGl6ZXJDYWxsYmFjay5jcHAgKi8sCisJCQkJMEYwQ0FF
RkUxRUM0REE4NTAwOTcwRDEyIC8qIEhlYXBGaW5hbGl6ZXJDYWxsYmFjay5oICovLAogCQkJCTBG
MzJCRDBFMUJCMzRGMTkwMDkzQTU3RiAvKiBIZWFwSGVscGVyUG9vbC5jcHAgKi8sCiAJCQkJMEYz
MkJEMEYxQkIzNEYxOTAwOTNBNTdGIC8qIEhlYXBIZWxwZXJQb29sLmggKi8sCiAJCQkJQzJEQTc3
ODIxOEUyNTk5OTAwNjZGQ0I2IC8qIEhlYXBJbmxpbmVzLmggKi8sCkBAIC02MTcxLDYgKzYxODEs
OCBAQAogCQkJCUE3MjAyOEI0MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMu
Y3BwICovLAogCQkJCUE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRp
bHMuaCAqLywKIAkJCQk4NkUzQzYwQTE2N0JBQjg3MDA2RDc2MEEgLyogSlNFeHBvcnQuaCAqLywK
KwkJCQkwRjBDQUVGOTFFQzREQTYyMDA5NzBEMTIgLyogSlNIZWFwRmluYWxpemVyUHJpdmF0ZS5j
cHAgKi8sCisJCQkJMEYwQ0FFRkExRUM0REE2MjAwOTcwRDEyIC8qIEpTSGVhcEZpbmFsaXplclBy
aXZhdGUuaCAqLywKIAkJCQlDMjVENzA5QTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFs
dWUuaCAqLywKIAkJCQlDMjVENzA5OTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUu
bW0gKi8sCiAJCQkJMkE0QkI3RjIxOEE0MTE3OTAwOEEwRkNEIC8qIEpTTWFuYWdlZFZhbHVlSW50
ZXJuYWwuaCAqLywKQEAgLTg0MzQsNiArODQ0Niw3IEBACiAJCQkJNTM0NjM4NzUxRTcwRERFQzAw
RjEyQUMxIC8qIFByb21pc2VEZWZlcnJlZFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2MkVD
OUJCNzFCN0VCMDdDMDAzMDNBRDEgLyogQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRjRCNEJEMUU4ODQ0OUEwMERCQkU4NiAvKiBBaXJSZWdMaXZlbmVzcy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEYwQ0FFRkYxRUM0REE4ODAwOTcwRDEyIC8qIEhlYXBGaW5hbGl6
ZXJDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjJENzU1RDcxQjg0RkI0QTAwMTgwMUZB
IC8qIENhbGxGcmFtZVNodWZmbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNCMTE0QkNG
NzE4MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMzI5
RTE0Q0E3REM1MDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCBpbiBIZWFkZXJzICovLApAQCAt
ODgyMCw2ICs4ODMzLDcgQEAKIAkJCQkwRjAzMzJDODE4QjU0NkVDMDA1Rjk3OUEgLyogRlRMV2Vp
Z2h0ZWRUYXJnZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjY2RUMxMTgzNTY2RjkwMEQwMTdG
MSAvKiBGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkE4MzYzOEEx
OEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGMENBRUZDMUVDNERBNkIwMDk3MEQxMiAvKiBKU0hlYXBGaW5hbGl6ZXJQcml2YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEFEOTEwRDFEQ0E5Mjk0MDAxNEY5RkUgLyogRnVuY3Rp
b25Db2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDA0MEUxNkY1Q0QwMEIzNDQ2
MCAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDczNDFEODFE
QzAyRjk5MDBBQTI5QkEgLyogRnVuY3Rpb25FeGVjdXRhYmxlLmggaW4gSGVhZGVycyAqLywKQEAg
LTEwODEwLDYgKzEwODI0LDcgQEAKIAkJCQlEQzY5QUE2NjFDRjdBMUYyMDBDNjI3MkYgLyogTWF0
Y2hSZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM0MEE0ODQxQTkwNTFBRjAwRDczQ0NB
IC8qIE1hdGhDb21tb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlEREYxMDdFQzdFNzAw
NjUwNDQ2IC8qIE1hdGhPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYwQ0FFRkIxRUM0
REE2ODAwOTcwRDEyIC8qIEpTSGVhcEZpbmFsaXplclByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTAyMTNFM0QxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZCNTQ2N0QxNEY1Q0ZENjAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0
dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTM3OTRFNzUxQjc3RUI5
NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTA5MDEs
NiArMTA5MTYsNyBAQAogCQkJCTk5OEVENjc0MUJFRDcwQUMwMEREODAxNyAvKiBSZW1vdGVDb250
cm9sbGFibGVUYXJnZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM0NjM4NzcxRTcxRTA2RTAw
RjEyQUMxIC8qIFByb21pc2VEZWZlcnJlZFRpbWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1
OTQ1NThGMTgyNDVFRkQwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTBGMENBRjAwMUVDNERBOEIwMDk3MEQxMiAvKiBIZWFwRmluYWxpemVy
Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTk1NTY2ODYxRTRFOEIwRjAwQUFFMTND
IC8qIFJlbW90ZUluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5OTJGNTZCNTFFNEU4
NEE4MDAzNTk1M0IgLyogUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk5OTJGNTZCNjFFNEU4NEFCMDAzNTk1M0IgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bi5tbSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJ
KHJldmlzaW9uIDIxNjYyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTc2LDYgKzE5NzYsOSBAQCB2b2lkIEhlYXA6OmZpbmFsaXpl
KCkKICAgICBpZiAoSGFzT3duUHJvcGVydHlDYWNoZSogY2FjaGUgPSB2bSgpLT5oYXNPd25Qcm9w
ZXJ0eUNhY2hlKCkpCiAgICAgICAgIGNhY2hlLT5jbGVhcigpOwogICAgIAorICAgIGZvciAoY29u
c3QgSGVhcEZpbmFsaXplckNhbGxiYWNrJiBjYWxsYmFjayA6IG1faGVhcEZpbmFsaXplckNhbGxi
YWNrcykKKyAgICAgICAgY2FsbGJhY2sucnVuKCk7CisgICAgCiAgICAgaWYgKE9wdGlvbnM6OnN3
ZWVwU3luY2hyb25vdXNseSgpKQogICAgICAgICBzd2VlcFN5bmNocm9ub3VzbHkoKTsKIApAQCAt
MjgxNyw0ICsyODIwLDE0IEBAIHZvaWQgSGVhcDo6cGVyZm9ybUluY3JlbWVudChzaXplX3QgYnl0
ZXMKICAgICBtX2luY3JlbWVudEJhbGFuY2UgLT0gYnl0ZXNWaXNpdGVkOwogfQogCit2b2lkIEhl
YXA6OmFkZEhlYXBGaW5hbGl6ZXJDYWxsYmFjayhjb25zdCBIZWFwRmluYWxpemVyQ2FsbGJhY2sm
IGNhbGxiYWNrKQoreworICAgIG1faGVhcEZpbmFsaXplckNhbGxiYWNrcy5hcHBlbmQoY2FsbGJh
Y2spOworfQorCit2b2lkIEhlYXA6OnJlbW92ZUhlYXBGaW5hbGl6ZXJDYWxsYmFjayhjb25zdCBI
ZWFwRmluYWxpemVyQ2FsbGJhY2smIGNhbGxiYWNrKQoreworICAgIG1faGVhcEZpbmFsaXplckNh
bGxiYWNrcy5yZW1vdmVGaXJzdChjYWxsYmFjayk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMjE2NjI1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiR0NSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSGFuZGxlU2V0LmgiCiAj
aW5jbHVkZSAiSGFuZGxlU3RhY2suaCIKKyNpbmNsdWRlICJIZWFwRmluYWxpemVyQ2FsbGJhY2su
aCIKICNpbmNsdWRlICJIZWFwT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJMaXN0YWJsZUhhbmRsZXIu
aCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgpAQCAtMzc0LDYgKzM3NSw5IEBAIHB1YmxpYzoK
ICNlbmRpZiAvLyBVU0UoQ0YpCiAKICAgICBIZWFwVmVyaWZpZXIqIHZlcmlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV92ZXJpZmllci5nZXQoKTsgfQorICAgIAorICAgIHZvaWQgYWRkSGVhcEZpbmFs
aXplckNhbGxiYWNrKGNvbnN0IEhlYXBGaW5hbGl6ZXJDYWxsYmFjayYpOworICAgIHZvaWQgcmVt
b3ZlSGVhcEZpbmFsaXplckNhbGxiYWNrKGNvbnN0IEhlYXBGaW5hbGl6ZXJDYWxsYmFjayYpOwog
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBBbGxvY2F0aW5nU2NvcGU7CkBAIC02MjAsNyAr
NjI0LDkgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U3RvcElmTmVjZXNzYXJ5VGltZXI+IG1fc3Rv
cElmTmVjZXNzYXJ5VGltZXI7CiAKICAgICBWZWN0b3I8SGVhcE9ic2VydmVyKj4gbV9vYnNlcnZl
cnM7Ci0KKyAgICAKKyAgICBWZWN0b3I8SGVhcEZpbmFsaXplckNhbGxiYWNrPiBtX2hlYXBGaW5h
bGl6ZXJDYWxsYmFja3M7CisgICAgCiAgICAgdW5zaWduZWQgbV9kZWZlcnJhbERlcHRoOwogICAg
IGJvb2wgbV9kaWREZWZlckdDV29yayB7IGZhbHNlIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBGaW5hbGl6ZXJDYWxsYmFjay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcEZpbmFsaXplckNhbGxiYWNrLmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwRmluYWxpemVyQ2FsbGJh
Y2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJIZWFwRmluYWxpemVyQ2FsbGJhY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQg
SGVhcEZpbmFsaXplckNhbGxiYWNrOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7Cisg
ICAgb3V0LnByaW50KFJhd1BvaW50ZXIoZmluYWxpemVyKSwgIjoiLCBSYXdQb2ludGVyKHVzZXJE
YXRhKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBGaW5hbGl6ZXJDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBGaW5hbGl6ZXJDYWxsYmFjay5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBGaW5hbGl6ZXJDYWxsYmFjay5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNIZWFw
RmluYWxpemVyUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworc3RydWN0IEhlYXBGaW5hbGl6ZXJDYWxsYmFjayB7CisgICAgSGVhcEZp
bmFsaXplckNhbGxiYWNrKEpTSGVhcEZpbmFsaXplciBmaW5hbGl6ZXIgPSBudWxscHRyLCB2b2lk
ICp1c2VyRGF0YSA9IG51bGxwdHIpCisgICAgICAgIDogZmluYWxpemVyKGZpbmFsaXplcikKKyAg
ICAgICAgLCB1c2VyRGF0YSh1c2VyRGF0YSkKKyAgICB7CisgICAgfQorICAgIAorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBIZWFwRmluYWxpemVyQ2FsbGJhY2smIG90aGVyKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIGZpbmFsaXplciA9PSBvdGhlci5maW5hbGl6ZXIKKyAgICAgICAg
ICAgICYmIHVzZXJEYXRhID09IG90aGVyLnVzZXJEYXRhOworICAgIH0KKyAgICAKKyAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgSGVhcEZpbmFsaXplckNhbGxiYWNrJiBvdGhlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9CisgICAgCisgICAg
ZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gdGhp
cyAhPSBIZWFwRmluYWxpemVyQ2FsbGJhY2soKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBkdW1w
KFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgCisgICAgdm9pZCBydW4oKSBjb25zdAorICAgIHsK
KyAgICAgICAgZmluYWxpemVyKHVzZXJEYXRhKTsKKyAgICB9CisgICAgCisgICAgSlNIZWFwRmlu
YWxpemVyIGZpbmFsaXplcjsKKyAgICB2b2lkICp1c2VyRGF0YTsKK307CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309735</attachid>
            <date>2017-05-11 11:35:17 -0700</date>
            <delta_ts>2017-05-11 11:42:40 -0700</delta_ts>
            <desc>it seems to work</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>24311</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE2NjgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDE3LTA1LTExICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
T2ZmZXIgU1BJIHRvIG5vdGlmeSBjbGllbnRzIHRoYXQgR0MgaGFzIGhhcHBlbmVkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE5ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFNvbWV0aW1l
cyB3aGVuIHlvdSdyZSBwcm9ncmFtbWluZyB3aXRoIHdlYWsgcmVmZXJlbmNlcywgaXQncyBtb3N0
IGNvbnZlbmllbnQgaWYgdGhlIEdDIHRlbGxzCisgICAgICAgIHlvdSB3aGVuIGl0IGZpbmlzaGVz
LiBUaGlzIGFkZHMgZXhhY3RseSBzdWNoIGFuIEFQSS4gVGhpcyBBUEkgaXMgY2FsbGVkIGF0IHRo
ZSAqZmxpcCo6IHRoZQorICAgICAgICBtb21lbnQgd2hlbiB0aGUgR0Mga25vd3MgZm9yIHN1cmUg
d2hpY2ggb2JqZWN0cyBhcmUgZGVhZCBhbmQgaGFzIGRlZmluaXRlbHkgbm90IGFsbG9jYXRlZCBh
bnkKKyAgICAgICAgbmV3IG9iamVjdHMgb3IgZXhlY3V0ZWQgYW55IEpTIGNvZGUuIFRoZSBmaW5h
bGl6YXRpb24gcGFydCBvZiB0aGUgZmxpcCwgd2hpY2ggaXMgd2hlcmUgdGhpcworICAgICAgICBj
YWxsYmFjayBnZXRzIGNhbGxlZCwgcnVucyBvbiB0aGUgIm1haW4iIHRocmVhZCAtIGkuZS4gc29t
ZSB0aHJlYWQgdGhhdCBpcyBhdHRlbXB0aW5nIHRvCisgICAgICAgIGV4ZWN1dGUgSlMgY29kZSBh
bmQgaG9sZHMgdGhlIEpTIGxvY2suIFRoaXMgd2lsbCB1c3VhbGx5IHJ1biBhcyBhIHNpZGUtZWZm
ZWN0IG9mIHNvbWUKKyAgICAgICAgYWxsb2NhdGlvbiBvciBmcm9tIHRoZSBydW5sb29wLgorICAg
ICAgICAKKyAgICAgICAgVGhpcyBtZWFucywgZm9yIGV4YW1wbGUsIHRoYXQgaWYgeW91IGltcGxl
bWVudGVkIGEgdmVjdG9yIG9mIHdlYWsgcmVmZXJlbmNlcyBhbmQgcmVnaXN0ZXJlZCBhCisgICAg
ICAgIGNhbGxiYWNrIHRvIHBydW5lIHRoZSB2ZWN0b3Igb2YgbnVsbCB3ZWFrIHJlZmVyZW5jZXMs
IHRoZW4gYXNpZGUgZnJvbSB0aGUgY2FsbGJhY2ssIG5vYm9keQorICAgICAgICB3b3VsZCBldmVy
IHNlZSBhIG51bGwgd2VhayByZWZlcmVuY2UgaW4gdGhlIHZlY3Rvci4KKworICAgICAgICAqIEFQ
SS9KU0hlYXBGaW5hbGl6ZXJQcml2YXRlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0NvbnRleHRH
cm91cEFkZEhlYXBGaW5hbGl6ZXIpOgorICAgICAgICAoSlNDb250ZXh0R3JvdXBSZW1vdmVIZWFw
RmluYWxpemVyKToKKyAgICAgICAgKiBBUEkvSlNIZWFwRmluYWxpemVyUHJpdmF0ZS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5jOgorICAgICAgICAoaGVhcEZpbmFsaXpl
cik6CisgICAgICAgICh0ZXN0TWFya2luZ0NvbnN0cmFpbnRzQW5kSGVhcEZpbmFsaXplcnMpOgor
ICAgICAgICAobWFpbik6CisgICAgICAgICh0ZXN0TWFya2luZ0NvbnN0cmFpbnRzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAg
ICAgIChKU0M6OkhlYXA6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWRkSGVhcEZp
bmFsaXplckNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6SGVhcDo6cmVtb3ZlSGVhcEZpbmFsaXpl
ckNhbGxiYWNrKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL0hlYXBG
aW5hbGl6ZXJDYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpIZWFwRmluYWxpemVy
Q2FsbGJhY2s6OmR1bXApOgorICAgICAgICAqIGhlYXAvSGVhcEZpbmFsaXplckNhbGxiYWNrLmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpIZWFwRmluYWxpemVyQ2FsbGJhY2s6OkhlYXBGaW5hbGl6
ZXJDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkhlYXBGaW5hbGl6ZXJDYWxsYmFjazo6b3BlcmF0
b3I9PSk6CisgICAgICAgIChKU0M6OkhlYXBGaW5hbGl6ZXJDYWxsYmFjazo6b3BlcmF0b3IhPSk6
CisgICAgICAgIChKU0M6OkhlYXBGaW5hbGl6ZXJDYWxsYmFjazo6b3BlcmF0b3IgYm9vbCk6Cisg
ICAgICAgIChKU0M6OkhlYXBGaW5hbGl6ZXJDYWxsYmFjazo6cnVuKToKKwogMjAxNy0wNS0xMSAg
TWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgV29ya2VyVGhyZWFkOjpz
dG9wKCkgc2hvdWxkIGNhbGwgc2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbigpIGxhc3QuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMTY2MjUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTU1LDYgKzU1LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBBUEkvSlNDYWxs
YmFja09iamVjdC5jcHAKICAgICBBUEkvSlNDbGFzc1JlZi5jcHAKICAgICBBUEkvSlNDb250ZXh0
UmVmLmNwcAorICAgIEFQSS9KU0hlYXBGaW5hbGl6ZXJDYWxsYmFjay5jcHAKICAgICBBUEkvSlNN
YXJraW5nQ29uc3RyYWludFByaXZhdGUuY3BwCiAgICAgQVBJL0pTT2JqZWN0UmVmLmNwcAogICAg
IEFQSS9KU1R5cGVkQXJyYXkuY3BwCkBAIC01MDcsNiArNTA4LDcgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX1NPVVJDRVMKICAgICBoZWFwL0hhbmRsZVN0YWNrLmNwcAogICAgIGhlYXAvSGVhcC5jcHAK
ICAgICBoZWFwL0hlYXBDZWxsLmNwcAorICAgIGhlYXAvSGVhcEZpbmFsaXplckNhbGxiYWNrLmNw
cAogICAgIGhlYXAvSGVhcEhlbHBlclBvb2wuY3BwCiAgICAgaGVhcC9IZWFwUHJvZmlsZXIuY3Bw
CiAgICAgaGVhcC9IZWFwU25hcHNob3QuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTSGVhcEZpbmFsaXplclByaXZhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNIZWFwRmluYWxpemVyUHJpdmF0ZS5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0hlYXBGaW5hbGl6ZXJQcml2YXRlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNI
ZWFwRmluYWxpemVyUHJpdmF0ZS5oIgorCisjaW5jbHVkZSAiQVBJQ2FzdC5oIgorI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwordm9pZCBKU0NvbnRleHRH
cm91cEFkZEhlYXBGaW5hbGl6ZXIoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpTSGVhcEZpbmFs
aXplciBmaW5hbGl6ZXIsIHZvaWQgKnVzZXJEYXRhKQoreworICAgIFZNKiB2bSA9IHRvSlMoZ3Jv
dXApOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOworICAgIHZtLT5oZWFwLmFkZEhlYXBG
aW5hbGl6ZXJDYWxsYmFjayhIZWFwRmluYWxpemVyQ2FsbGJhY2soZmluYWxpemVyLCB1c2VyRGF0
YSkpOworfQorCit2b2lkIEpTQ29udGV4dEdyb3VwUmVtb3ZlSGVhcEZpbmFsaXplcihKU0NvbnRl
eHRHcm91cFJlZiBncm91cCwgSlNIZWFwRmluYWxpemVyIGZpbmFsaXplciwgdm9pZCAqdXNlckRh
dGEpCit7CisgICAgVk0qIHZtID0gdG9KUyhncm91cCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tl
cih2bSk7CisgICAgdm0tPmhlYXAucmVtb3ZlSGVhcEZpbmFsaXplckNhbGxiYWNrKEhlYXBGaW5h
bGl6ZXJDYWxsYmFjayhmaW5hbGl6ZXIsIHVzZXJEYXRhKSk7Cit9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTSGVhcEZpbmFsaXplclByaXZhdGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTSGVhcEZpbmFsaXplclByaXZhdGUuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTSGVhcEZpbmFsaXplclByaXZh
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEpTSGVhcEZpbmFsaXplclByaXZh
dGVfaAorI2RlZmluZSBKU0hlYXBGaW5hbGl6ZXJQcml2YXRlX2gKKworI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ29udGV4dFJlZi5oPgorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKworI2lmZGVm
IF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCit0eXBlZGVmIHZvaWQgKCpKU0hl
YXBGaW5hbGl6ZXIpKEpTQ29udGV4dEdyb3VwUmVmLCB2b2lkICp1c2VyRGF0YSk7CisKK0pTX0VY
UE9SVCB2b2lkIEpTQ29udGV4dEdyb3VwQWRkSGVhcEZpbmFsaXplcihKU0NvbnRleHRHcm91cFJl
ZiwgSlNIZWFwRmluYWxpemVyLCB2b2lkICp1c2VyRGF0YSk7CitKU19FWFBPUlQgdm9pZCBKU0Nv
bnRleHRHcm91cFJlbW92ZUhlYXBGaW5hbGl6ZXIoSlNDb250ZXh0R3JvdXBSZWYsIEpTSGVhcEZp
bmFsaXplciwgdm9pZCAqdXNlckRhdGEpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRp
ZgorCisjZW5kaWYgLy8gSlNIZWFwRmluYWxpemVyUHJpdmF0ZV9oCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCShyZXZpc2lvbiAyMTY2MjUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwkod29ya2luZyBjb3B5KQpA
QCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkphdmFTY3JpcHRDb3JlLmgiCiAjaW5jbHVkZSAi
SlNCYXNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkpTQ29udGV4dFJlZlByaXZhdGUuaCIKKyNpbmNs
dWRlICJKU0hlYXBGaW5hbGl6ZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiSlNNYXJraW5nQ29uc3Ry
YWludFByaXZhdGUuaCIKICNpbmNsdWRlICJKU09iamVjdFJlZlByaXZhdGUuaCIKICNpbmNsdWRl
ICJKU1NjcmlwdFJlZlByaXZhdGUuaCIKQEAgLTExNDMsNyArMTE0NCwxOCBAQCBzdGF0aWMgdm9p
ZCBtYXJraW5nQ29uc3RyYWludChKU01hcmtlclJlCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCB0
ZXN0TWFya2luZ0NvbnN0cmFpbnRzKHZvaWQpCitzdGF0aWMgYm9vbCBkaWRSdW5IZWFwRmluYWxp
emVyOworc3RhdGljIEpTQ29udGV4dEdyb3VwUmVmIGV4cGVjdGVkQ29udGV4dEdyb3VwOworCitz
dGF0aWMgdm9pZCBoZWFwRmluYWxpemVyKEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwLCB2b2lkICp1
c2VyRGF0YSkKK3sKKyAgICBhc3NlcnRUcnVlKCh1aW50cHRyX3QpdXNlckRhdGEgPT0gKHVpbnRw
dHJfdCk0MiwgIkNvcnJlY3QgdXNlckRhdGEgd2FzIHBhc3NlZCIpOworICAgIGFzc2VydFRydWUo
Z3JvdXAgPT0gZXhwZWN0ZWRDb250ZXh0R3JvdXAsICJDb3JyZWN0IGNvbnRleHQgZ3JvdXAiKTsK
KyAgICAKKyAgICBkaWRSdW5IZWFwRmluYWxpemVyID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQg
dGVzdE1hcmtpbmdDb25zdHJhaW50c0FuZEhlYXBGaW5hbGl6ZXJzKHZvaWQpCiB7CiAgICAgSlND
b250ZXh0R3JvdXBSZWYgZ3JvdXA7CiAgICAgSlNDb250ZXh0UmVmIGNvbnRleHQ7CkBAIC0xMTU0
LDE2ICsxMTY2LDIwIEBAIHN0YXRpYyB2b2lkIHRlc3RNYXJraW5nQ29uc3RyYWludHModm9pZCkK
ICAgICBwcmludGYoIlRlc3RpbmcgTWFya2luZyBDb25zdHJhaW50cy5cbiIpOwogICAgIAogICAg
IGdyb3VwID0gSlNDb250ZXh0R3JvdXBDcmVhdGUoKTsKKyAgICBleHBlY3RlZENvbnRleHRHcm91
cCA9IGdyb3VwOworICAgIAogICAgIGNvbnRleHQgPSBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdy
b3VwKGdyb3VwLCBOVUxMKTsKIAogICAgIHdlYWtSZWZzID0gKEpTV2Vha1JlZiopY2FsbG9jKG51
bVdlYWtSZWZzLCBzaXplb2YoSlNXZWFrUmVmKSk7CiAKICAgICBKU0NvbnRleHRHcm91cEFkZE1h
cmtpbmdDb25zdHJhaW50KGdyb3VwLCBtYXJraW5nQ29uc3RyYWludCwgd2Vha1JlZnMpOworICAg
IEpTQ29udGV4dEdyb3VwQWRkSGVhcEZpbmFsaXplcihncm91cCwgaGVhcEZpbmFsaXplciwgKHZv
aWQqKSh1aW50cHRyX3QpNDIpOwogICAgIAogICAgIGZvciAoaSA9IG51bVdlYWtSZWZzOyBpLS07
KQogICAgICAgICB3ZWFrUmVmc1tpXSA9IEpTV2Vha0NyZWF0ZShjb250ZXh0LCBKU09iamVjdE1h
a2VBcnJheShjb250ZXh0LCAwLCBOVUxMLCBOVUxMKSk7CiAgICAgCiAgICAgSlNTeW5jaHJvbm91
c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKGNvbnRleHQpOworICAgIGFzc2VydFRydWUoZGlk
UnVuSGVhcEZpbmFsaXplciwgIkRpZCBydW4gaGVhcCBmaW5hbGl6ZXIiKTsKICAgICAKICAgICBk
ZWFkQ291bnQgPSAwOwogICAgIGZvciAoaSA9IDA7IGkgPCBudW1XZWFrUmVmczsgaSArPSAyKSB7
CkBAIC0xMTc3LDkgKzExOTMsMTkgQEAgc3RhdGljIHZvaWQgdGVzdE1hcmtpbmdDb25zdHJhaW50
cyh2b2lkKQogICAgIGZvciAoaSA9IG51bVdlYWtSZWZzOyBpLS07KQogICAgICAgICBKU1dlYWtS
ZWxlYXNlKGNvbnRleHQsIHdlYWtSZWZzW2ldKTsKICAgICAKKyAgICBkaWRSdW5IZWFwRmluYWxp
emVyID0gZmFsc2U7CisgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5n
KGNvbnRleHQpOworICAgIGFzc2VydFRydWUoZGlkUnVuSGVhcEZpbmFsaXplciwgIkRpZCBydW4g
aGVhcCBmaW5hbGl6ZXIiKTsKKworICAgIEpTQ29udGV4dEdyb3VwUmVtb3ZlSGVhcEZpbmFsaXpl
cihncm91cCwgaGVhcEZpbmFsaXplciwgKHZvaWQqKSh1aW50cHRyX3QpNDIpOworCisgICAgZGlk
UnVuSGVhcEZpbmFsaXplciA9IGZhbHNlOworICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVj
dEZvckRlYnVnZ2luZyhjb250ZXh0KTsKKyAgICBhc3NlcnRUcnVlKCFkaWRSdW5IZWFwRmluYWxp
emVyLCAiRGlkIG5vdCBydW4gaGVhcCBmaW5hbGl6ZXIiKTsKKyAgICAKICAgICBKU0NvbnRleHRH
cm91cFJlbGVhc2UoZ3JvdXApOwogCi0gICAgcHJpbnRmKCJQQVNTOiBNYXJraW5nIENvbnN0cmFp
bnRzLlxuIik7CisgICAgcHJpbnRmKCJQQVNTOiBNYXJraW5nIENvbnN0cmFpbnRzIGFuZCBIZWFw
IEZpbmFsaXplcnMuXG4iKTsKIH0KIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkK
QEAgLTEyMTIsNyArMTIzOCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAK
ICAgICBBU1NFUlQoQmFzZV9kaWRGaW5hbGl6ZSk7CiAKLSAgICB0ZXN0TWFya2luZ0NvbnN0cmFp
bnRzKCk7CisgICAgdGVzdE1hcmtpbmdDb25zdHJhaW50c0FuZEhlYXBGaW5hbGl6ZXJzKCk7CiAK
ICAgICBKU0NsYXNzRGVmaW5pdGlvbiBnbG9iYWxPYmplY3RDbGFzc0RlZmluaXRpb24gPSBrSlND
bGFzc0RlZmluaXRpb25FbXB0eTsKICAgICBnbG9iYWxPYmplY3RDbGFzc0RlZmluaXRpb24uaW5p
dGlhbGl6ZSA9IGdsb2JhbE9iamVjdF9pbml0aWFsaXplOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDIxNjYyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDYsNiArMTA2LDEwIEBACiAJCTBGMEI4M0IwMTRCQ0Y3MTYwMDg4NUI0RiAvKiBDYWxsTGlu
a0luZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYwQjgzQUUxNEJDRjcxNDAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAgKi87IH07CiAJCTBG
MEI4M0IxMTRCQ0Y3MTgwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0FGMTRCQ0Y3MTQwMDg4NUI0RiAv
KiBDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRv
Qnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRl
Y29kZU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGMENBRUZCMUVDNERBNjgwMDk3MEQxMiAvKiBKU0hlYXBGaW5hbGl6ZXJQcml2YXRl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMENB
RUY5MUVDNERBNjIwMDk3MEQxMiAvKiBKU0hlYXBGaW5hbGl6ZXJQcml2YXRlLmNwcCAqLzsgfTsK
KwkJMEYwQ0FFRkMxRUM0REE2QjAwOTcwRDEyIC8qIEpTSGVhcEZpbmFsaXplclByaXZhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMENBRUZBMUVD
NERBNjIwMDk3MEQxMiAvKiBKU0hlYXBGaW5hbGl6ZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQ0FFRkYxRUM0REE4ODAwOTcw
RDEyIC8qIEhlYXBGaW5hbGl6ZXJDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQ0FFRkUxRUM0REE4NTAwOTcwRDEyIC8qIEhlYXBGaW5h
bGl6ZXJDYWxsYmFjay5oICovOyB9OworCQkwRjBDQUYwMDFFQzREQThCMDA5NzBEMTIgLyogSGVh
cEZpbmFsaXplckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMENBRUZEMUVDNERBODUwMDk3MEQxMiAvKiBIZWFwRmluYWxpemVyQ2Fs
bGJhY2suY3BwICovOyB9OwogCQkwRjBDRDRDMjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0
SW5kZXhNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjBDRDRDMDE1RjFBNjA0MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQ0Q0QzQxNUY2
QjZCQjAwMzJGMUMwIC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQ0Q0QzMxNUY2QjZCNTAwMzJGMUMwIC8q
IFNwYXJzZUFycmF5VmFsdWVNYXAuY3BwICovOyB9OwogCQkwRjBGQzQ1QTE0QkQxNUY1MDBCODEx
NTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5r
SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0yNjgyLDYgKzI2ODYsMTAgQEAKIAkJMEYwQjgzQUUxNEJDRjcxNDAwODg1QjRGIC8qIENhbGxM
aW5rSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsTGlu
a0luZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBRjE0QkNGNzE0
MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENhbGxMaW5rSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNC
ODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNv
ZGVPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQ0FFRjkxRUM0REE2
MjAwOTcwRDEyIC8qIEpTSGVhcEZpbmFsaXplclByaXZhdGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNIZWFwRmluYWxpemVyUHJpdmF0ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMENBRUZBMUVDNERBNjIwMDk3MEQxMiAvKiBKU0hlYXBG
aW5hbGl6ZXJQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSGVh
cEZpbmFsaXplclByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQ0FF
RkQxRUM0REE4NTAwOTcwRDEyIC8qIEhlYXBGaW5hbGl6ZXJDYWxsYmFjay5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwRmluYWxpemVyQ2FsbGJhY2suY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBDQUVGRTFFQzREQTg1MDA5NzBEMTIgLyog
SGVhcEZpbmFsaXplckNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEhlYXBGaW5hbGl6ZXJDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjBDRDRDMDE1RjFBNjA0MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1dERpcmVjdEluZGV4TW9kZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjBDRDRDMzE1RjZCNkI1MDAzMkYxQzAgLyogU3BhcnNlQXJy
YXlWYWx1ZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGFy
c2VBcnJheVZhbHVlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwRkM0
NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50Q2FsbExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC02MDQ0LDYgKzYwNTIsOCBAQAogCQkJCURDM0QyQjBCMUQzNDM3NkUwMEJB
OTE4QyAvKiBIZWFwQ2VsbC5jcHAgKi8sCiAJCQkJREMzRDJCMDkxRDM0MzE2MTAwQkE5MThDIC8q
IEhlYXBDZWxsLmggKi8sCiAJCQkJMEYwNzBBNDQxRDU0M0E4OTAwNkU3MjMyIC8qIEhlYXBDZWxs
SW5saW5lcy5oICovLAorCQkJCTBGMENBRUZEMUVDNERBODUwMDk3MEQxMiAvKiBIZWFwRmluYWxp
emVyQ2FsbGJhY2suY3BwICovLAorCQkJCTBGMENBRUZFMUVDNERBODUwMDk3MEQxMiAvKiBIZWFw
RmluYWxpemVyQ2FsbGJhY2suaCAqLywKIAkJCQkwRjMyQkQwRTFCQjM0RjE5MDA5M0E1N0YgLyog
SGVhcEhlbHBlclBvb2wuY3BwICovLAogCQkJCTBGMzJCRDBGMUJCMzRGMTkwMDkzQTU3RiAvKiBI
ZWFwSGVscGVyUG9vbC5oICovLAogCQkJCUMyREE3NzgyMThFMjU5OTkwMDY2RkNCNiAvKiBIZWFw
SW5saW5lcy5oICovLApAQCAtNjE3MSw2ICs2MTgxLDggQEAKIAkJCQlBNzIwMjhCNDE3OTc2MDFF
MDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCAqLywKIAkJCQlBNzIwMjhCNTE3OTc2
MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggKi8sCiAJCQkJODZFM0M2MEExNjdC
QUI4NzAwNkQ3NjBBIC8qIEpTRXhwb3J0LmggKi8sCisJCQkJMEYwQ0FFRjkxRUM0REE2MjAwOTcw
RDEyIC8qIEpTSGVhcEZpbmFsaXplclByaXZhdGUuY3BwICovLAorCQkJCTBGMENBRUZBMUVDNERB
NjIwMDk3MEQxMiAvKiBKU0hlYXBGaW5hbGl6ZXJQcml2YXRlLmggKi8sCiAJCQkJQzI1RDcwOUEx
NkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLmggKi8sCiAJCQkJQzI1RDcwOTkxNkRF
OTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tICovLAogCQkJCTJBNEJCN0YyMThBNDEx
NzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUludGVybmFsLmggKi8sCkBAIC04NDM0LDYgKzg0
NDYsNyBAQAogCQkJCTUzNDYzODc1MUU3MERERUMwMEYxMkFDMSAvKiBQcm9taXNlRGVmZXJyZWRU
aW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjJFQzlCQjcxQjdFQjA3QzAwMzAzQUQxIC8qIENh
bGxGcmFtZVNodWZmbGVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY0QjRCRDFFODg0NDlB
MDBEQkJFODYgLyogQWlyUmVnTGl2ZW5lc3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMENBRUZG
MUVDNERBODgwMDk3MEQxMiAvKiBIZWFwRmluYWxpemVyQ2FsbGJhY2suaCBpbiBIZWFkZXJzICov
LAogCQkJCTYyRDc1NUQ3MUI4NEZCNEEwMDE4MDFGQSAvKiBDYWxsRnJhbWVTaHVmZmxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjExNEJDRjcxODAwODg1QjRGIC8qIENhbGxMaW5rSW5m
by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyOUUxNENBN0RDNTAwODVGM0M2IC8qIENhbGxM
aW5rU3RhdHVzLmggaW4gSGVhZGVycyAqLywKQEAgLTg4MjAsNiArODgzMyw3IEBACiAJCQkJMEYw
MzMyQzgxOEI1NDZFQzAwNUY5NzlBIC8qIEZUTFdlaWdodGVkVGFyZ2V0LmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjY2NkVDMTE4MzU2NkY5MDBEMDE3RjEgLyogRnVsbEJ5dGVjb2RlTGl2ZW5lc3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJBODM2MzhBMThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NB
Y3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBDQUVGQzFFQzREQTZCMDA5
NzBEMTIgLyogSlNIZWFwRmluYWxpemVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRB
RDkxMEQxRENBOTI5NDAwMTRGOUZFIC8qIEZ1bmN0aW9uQ29kZUJsb2NrLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzE4QzQwNDBFMTZGNUNEMDBCMzQ0NjAgLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3MzQxRDgxREMwMkY5OTAwQUEyOUJBIC8qIEZ1bmN0aW9u
RXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDgxMCw2ICsxMDgyNCw3IEBACiAJCQkJ
REM2OUFBNjYxQ0Y3QTFGMjAwQzYyNzJGIC8qIE1hdGNoUmVzdWx0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQzNDBBNDg0MUE5MDUxQUYwMEQ3M0NDQSAvKiBNYXRoQ29tbW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0NDY5RERGMTA3RUM3RTcwMDY1MDQ0NiAvKiBNYXRoT2JqZWN0LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTBGMENBRUZCMUVDNERBNjgwMDk3MEQxMiAvKiBKU0hlYXBGaW5h
bGl6ZXJQcml2YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkwMjEzRTNEMTIzQTQwQzIwMEQ0
MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQjU0NjdE
MTRGNUNGRDYwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUUzNzk0RTc1MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXpl
ci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwOTAxLDYgKzEwOTE2LDcgQEAKIAkJCQk5OThFRDY3
NDFCRUQ3MEFDMDBERDgwMTcgLyogUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUzNDYzODc3MUU3MUUwNkUwMEYxMkFDMSAvKiBQcm9taXNlRGVmZXJyZWRU
aW1lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTk0NTU4RjE4MjQ1RUZEMDBDQzM4NDMgLyog
UmVtb3RlSW5zcGVjdGlvblRhcmdldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBDQUYwMDFF
QzREQThCMDA5NzBEMTIgLyogSGVhcEZpbmFsaXplckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTk5NTU2Njg2MUU0RThCMEYwMEFBRTEzQyAvKiBSZW1vdGVJbnNwZWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTkyRjU2QjUxRTRFODRBODAwMzU5NTNCIC8qIFJlbW90ZUluc3Bl
Y3RvckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTkyRjU2QjYxRTRFODRBQjAwMzU5NTNC
IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAyMTY2MjUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3Niw2
ICsxOTc2LDkgQEAgdm9pZCBIZWFwOjpmaW5hbGl6ZSgpCiAgICAgaWYgKEhhc093blByb3BlcnR5
Q2FjaGUqIGNhY2hlID0gdm0oKS0+aGFzT3duUHJvcGVydHlDYWNoZSgpKQogICAgICAgICBjYWNo
ZS0+Y2xlYXIoKTsKICAgICAKKyAgICBmb3IgKGNvbnN0IEhlYXBGaW5hbGl6ZXJDYWxsYmFjayYg
Y2FsbGJhY2sgOiBtX2hlYXBGaW5hbGl6ZXJDYWxsYmFja3MpCisgICAgICAgIGNhbGxiYWNrLnJ1
bigqdm0oKSk7CisgICAgCiAgICAgaWYgKE9wdGlvbnM6OnN3ZWVwU3luY2hyb25vdXNseSgpKQog
ICAgICAgICBzd2VlcFN5bmNocm9ub3VzbHkoKTsKIApAQCAtMjgxNyw0ICsyODIwLDE0IEBAIHZv
aWQgSGVhcDo6cGVyZm9ybUluY3JlbWVudChzaXplX3QgYnl0ZXMKICAgICBtX2luY3JlbWVudEJh
bGFuY2UgLT0gYnl0ZXNWaXNpdGVkOwogfQogCit2b2lkIEhlYXA6OmFkZEhlYXBGaW5hbGl6ZXJD
YWxsYmFjayhjb25zdCBIZWFwRmluYWxpemVyQ2FsbGJhY2smIGNhbGxiYWNrKQoreworICAgIG1f
aGVhcEZpbmFsaXplckNhbGxiYWNrcy5hcHBlbmQoY2FsbGJhY2spOworfQorCit2b2lkIEhlYXA6
OnJlbW92ZUhlYXBGaW5hbGl6ZXJDYWxsYmFjayhjb25zdCBIZWFwRmluYWxpemVyQ2FsbGJhY2sm
IGNhbGxiYWNrKQoreworICAgIG1faGVhcEZpbmFsaXplckNhbGxiYWNrcy5yZW1vdmVGaXJzdChj
YWxsYmFjayk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuaAkocmV2aXNpb24gMjE2NjI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiR0NS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSGFuZGxlU2V0LmgiCiAjaW5jbHVkZSAiSGFuZGxlU3RhY2su
aCIKKyNpbmNsdWRlICJIZWFwRmluYWxpemVyQ2FsbGJhY2suaCIKICNpbmNsdWRlICJIZWFwT2Jz
ZXJ2ZXIuaCIKICNpbmNsdWRlICJMaXN0YWJsZUhhbmRsZXIuaCIKICNpbmNsdWRlICJNYXJrZWRC
bG9jay5oIgpAQCAtMzc0LDYgKzM3NSw5IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBVU0UoQ0YpCiAK
ICAgICBIZWFwVmVyaWZpZXIqIHZlcmlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV92ZXJpZmllci5n
ZXQoKTsgfQorICAgIAorICAgIHZvaWQgYWRkSGVhcEZpbmFsaXplckNhbGxiYWNrKGNvbnN0IEhl
YXBGaW5hbGl6ZXJDYWxsYmFjayYpOworICAgIHZvaWQgcmVtb3ZlSGVhcEZpbmFsaXplckNhbGxi
YWNrKGNvbnN0IEhlYXBGaW5hbGl6ZXJDYWxsYmFjayYpOwogCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBBbGxvY2F0aW5nU2NvcGU7CkBAIC02MjAsNyArNjI0LDkgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8U3RvcElmTmVjZXNzYXJ5VGltZXI+IG1fc3RvcElmTmVjZXNzYXJ5VGltZXI7CiAK
ICAgICBWZWN0b3I8SGVhcE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7Ci0KKyAgICAKKyAgICBWZWN0
b3I8SGVhcEZpbmFsaXplckNhbGxiYWNrPiBtX2hlYXBGaW5hbGl6ZXJDYWxsYmFja3M7CisgICAg
CiAgICAgdW5zaWduZWQgbV9kZWZlcnJhbERlcHRoOwogICAgIGJvb2wgbV9kaWREZWZlckdDV29y
ayB7IGZhbHNlIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBGaW5h
bGl6ZXJDYWxsYmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcEZpbmFsaXplckNhbGxiYWNrLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwRmluYWxpemVyQ2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIZWFwRmluYWxpemVyQ2Fs
bGJhY2suaCIKKworI2luY2x1ZGUgIkFQSUNhc3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3Zv
aWQgSGVhcEZpbmFsaXplckNhbGxiYWNrOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7
CisgICAgb3V0LnByaW50KFJhd1BvaW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihtX2ZpbmFsaXpl
cikpLCAiOiIsIFJhd1BvaW50ZXIobV91c2VyRGF0YSkpOworfQorCit2b2lkIEhlYXBGaW5hbGl6
ZXJDYWxsYmFjazo6cnVuKFZNJiB2bSkgY29uc3QKK3sKKyAgICBtX2ZpbmFsaXplcih0b1JlZigm
dm0pLCBtX3VzZXJEYXRhKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcEZpbmFsaXplckNhbGxiYWNrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcEZpbmFsaXplckNhbGxiYWNrLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcEZpbmFsaXpl
ckNhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJKU0hlYXBGaW5hbGl6ZXJQcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFt
Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBWTTsKKworY2xhc3MgSGVhcEZpbmFsaXpl
ckNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICBIZWFwRmluYWxpemVyQ2FsbGJhY2soSlNIZWFwRmlu
YWxpemVyIGZpbmFsaXplciA9IG51bGxwdHIsIHZvaWQgKnVzZXJEYXRhID0gbnVsbHB0cikKKyAg
ICAgICAgOiBtX2ZpbmFsaXplcihmaW5hbGl6ZXIpCisgICAgICAgICwgbV91c2VyRGF0YSh1c2Vy
RGF0YSkKKyAgICB7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIZWFw
RmluYWxpemVyQ2FsbGJhY2smIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
ZmluYWxpemVyID09IG90aGVyLm1fZmluYWxpemVyCisgICAgICAgICAgICAmJiBtX3VzZXJEYXRh
ID09IG90aGVyLm1fdXNlckRhdGE7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBIZWFwRmluYWxpemVyQ2FsbGJhY2smIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKyAgICAKKyAgICBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAqdGhpcyAhPSBIZWFwRmlu
YWxpemVyQ2FsbGJhY2soKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7CisgICAgCisgICAgdm9pZCBydW4oVk0mKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6
CisgICAgSlNIZWFwRmluYWxpemVyIG1fZmluYWxpemVyOworICAgIHZvaWQgKm1fdXNlckRhdGE7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwo=
</data>
<flag name="review"
          id="330908"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309737</attachid>
            <date>2017-05-11 11:42:40 -0700</date>
            <delta_ts>2017-05-11 12:07:14 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>24321</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE2Njg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDE3LTA1LTExICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
T2ZmZXIgU1BJIHRvIG5vdGlmeSBjbGllbnRzIHRoYXQgR0MgaGFzIGhhcHBlbmVkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE5ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFNvbWV0aW1l
cyB3aGVuIHlvdSdyZSBwcm9ncmFtbWluZyB3aXRoIHdlYWsgcmVmZXJlbmNlcywgaXQncyBtb3N0
IGNvbnZlbmllbnQgaWYgdGhlIEdDIHRlbGxzCisgICAgICAgIHlvdSB3aGVuIGl0IGZpbmlzaGVz
LiBUaGlzIGFkZHMgZXhhY3RseSBzdWNoIGFuIEFQSS4gVGhpcyBBUEkgaXMgY2FsbGVkIGF0IHRo
ZSAqZmxpcCo6IHRoZQorICAgICAgICBtb21lbnQgd2hlbiB0aGUgR0Mga25vd3MgZm9yIHN1cmUg
d2hpY2ggb2JqZWN0cyBhcmUgZGVhZCBhbmQgaGFzIGRlZmluaXRlbHkgbm90IGFsbG9jYXRlZCBh
bnkKKyAgICAgICAgbmV3IG9iamVjdHMgb3IgZXhlY3V0ZWQgYW55IEpTIGNvZGUuIFRoZSBmaW5h
bGl6YXRpb24gcGFydCBvZiB0aGUgZmxpcCwgd2hpY2ggaXMgd2hlcmUgdGhpcworICAgICAgICBj
YWxsYmFjayBnZXRzIGNhbGxlZCwgcnVucyBvbiB0aGUgIm1haW4iIHRocmVhZCAtIGkuZS4gc29t
ZSB0aHJlYWQgdGhhdCBpcyBhdHRlbXB0aW5nIHRvCisgICAgICAgIGV4ZWN1dGUgSlMgY29kZSBh
bmQgaG9sZHMgdGhlIEpTIGxvY2suIFRoaXMgd2lsbCB1c3VhbGx5IHJ1biBhcyBhIHNpZGUtZWZm
ZWN0IG9mIHNvbWUKKyAgICAgICAgYWxsb2NhdGlvbiBvciBmcm9tIHRoZSBydW5sb29wLgorICAg
ICAgICAKKyAgICAgICAgVGhpcyBtZWFucywgZm9yIGV4YW1wbGUsIHRoYXQgaWYgeW91IGltcGxl
bWVudGVkIGEgdmVjdG9yIG9mIHdlYWsgcmVmZXJlbmNlcyBhbmQgcmVnaXN0ZXJlZCBhCisgICAg
ICAgIGNhbGxiYWNrIHRvIHBydW5lIHRoZSB2ZWN0b3Igb2YgbnVsbCB3ZWFrIHJlZmVyZW5jZXMs
IHRoZW4gYXNpZGUgZnJvbSB0aGUgY2FsbGJhY2ssIG5vYm9keQorICAgICAgICB3b3VsZCBldmVy
IHNlZSBhIG51bGwgd2VhayByZWZlcmVuY2UgaW4gdGhlIHZlY3Rvci4KKworICAgICAgICAqIEFQ
SS9KU0hlYXBGaW5hbGl6ZXJQcml2YXRlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0NvbnRleHRH
cm91cEFkZEhlYXBGaW5hbGl6ZXIpOgorICAgICAgICAoSlNDb250ZXh0R3JvdXBSZW1vdmVIZWFw
RmluYWxpemVyKToKKyAgICAgICAgKiBBUEkvSlNIZWFwRmluYWxpemVyUHJpdmF0ZS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5jOgorICAgICAgICAoaGVhcEZpbmFsaXpl
cik6CisgICAgICAgICh0ZXN0TWFya2luZ0NvbnN0cmFpbnRzQW5kSGVhcEZpbmFsaXplcnMpOgor
ICAgICAgICAobWFpbik6CisgICAgICAgICh0ZXN0TWFya2luZ0NvbnN0cmFpbnRzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAg
ICAgIChKU0M6OkhlYXA6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWRkSGVhcEZp
bmFsaXplckNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6SGVhcDo6cmVtb3ZlSGVhcEZpbmFsaXpl
ckNhbGxiYWNrKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL0hlYXBG
aW5hbGl6ZXJDYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpIZWFwRmluYWxpemVy
Q2FsbGJhY2s6OmR1bXApOgorICAgICAgICAqIGhlYXAvSGVhcEZpbmFsaXplckNhbGxiYWNrLmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpIZWFwRmluYWxpemVyQ2FsbGJhY2s6OkhlYXBGaW5hbGl6
ZXJDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkhlYXBGaW5hbGl6ZXJDYWxsYmFjazo6b3BlcmF0
b3I9PSk6CisgICAgICAgIChKU0M6OkhlYXBGaW5hbGl6ZXJDYWxsYmFjazo6b3BlcmF0b3IhPSk6
CisgICAgICAgIChKU0M6OkhlYXBGaW5hbGl6ZXJDYWxsYmFjazo6b3BlcmF0b3IgYm9vbCk6Cisg
ICAgICAgIChKU0M6OkhlYXBGaW5hbGl6ZXJDYWxsYmFjazo6cnVuKToKKwogMjAxNy0wNS0xMSAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEpTV2Vha0NyZWF0ZS9S
ZXRhaW4vUmVsZWFzZSBzaG91bGQgdGFrZSBhIEpTQ29udGV4dEdyb3VwUmVmIGFuZCBub3QgYSBK
U0NvbnRleHRSZWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlz
aW9uIDIxNjY4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNTUsNiArNTUsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwog
ICAgIEFQSS9KU0NhbGxiYWNrT2JqZWN0LmNwcAogICAgIEFQSS9KU0NsYXNzUmVmLmNwcAogICAg
IEFQSS9KU0NvbnRleHRSZWYuY3BwCisgICAgQVBJL0pTSGVhcEZpbmFsaXplckNhbGxiYWNrLmNw
cAogICAgIEFQSS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHAKICAgICBBUEkvSlNPYmpl
Y3RSZWYuY3BwCiAgICAgQVBJL0pTVHlwZWRBcnJheS5jcHAKQEAgLTUwNyw2ICs1MDgsNyBAQCBz
ZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGhlYXAvSGFuZGxlU3RhY2suY3BwCiAgICAg
aGVhcC9IZWFwLmNwcAogICAgIGhlYXAvSGVhcENlbGwuY3BwCisgICAgaGVhcC9IZWFwRmluYWxp
emVyQ2FsbGJhY2suY3BwCiAgICAgaGVhcC9IZWFwSGVscGVyUG9vbC5jcHAKICAgICBoZWFwL0hl
YXBQcm9maWxlci5jcHAKICAgICBoZWFwL0hlYXBTbmFwc2hvdC5jcHAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNIZWFwRmluYWxpemVyUHJpdmF0ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0hlYXBGaW5hbGl6ZXJQcml2YXRlLmNwcAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTSGVhcEZpbmFsaXpl
clByaXZhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJKU0hlYXBGaW5hbGl6ZXJQcml2YXRlLmgiCisKKyNpbmNsdWRlICJBUElDYXN0
LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCit2
b2lkIEpTQ29udGV4dEdyb3VwQWRkSGVhcEZpbmFsaXplcihKU0NvbnRleHRHcm91cFJlZiBncm91
cCwgSlNIZWFwRmluYWxpemVyIGZpbmFsaXplciwgdm9pZCAqdXNlckRhdGEpCit7CisgICAgVk0q
IHZtID0gdG9KUyhncm91cCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CisgICAgdm0t
PmhlYXAuYWRkSGVhcEZpbmFsaXplckNhbGxiYWNrKEhlYXBGaW5hbGl6ZXJDYWxsYmFjayhmaW5h
bGl6ZXIsIHVzZXJEYXRhKSk7Cit9CisKK3ZvaWQgSlNDb250ZXh0R3JvdXBSZW1vdmVIZWFwRmlu
YWxpemVyKEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwLCBKU0hlYXBGaW5hbGl6ZXIgZmluYWxpemVy
LCB2b2lkICp1c2VyRGF0YSkKK3sKKyAgICBWTSogdm0gPSB0b0pTKGdyb3VwKTsKKyAgICBKU0xv
Y2tIb2xkZXIgbG9ja2VyKHZtKTsKKyAgICB2bS0+aGVhcC5yZW1vdmVIZWFwRmluYWxpemVyQ2Fs
bGJhY2soSGVhcEZpbmFsaXplckNhbGxiYWNrKGZpbmFsaXplciwgdXNlckRhdGEpKTsKK30KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNIZWFwRmluYWxpemVyUHJpdmF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNIZWFwRmluYWxpemVyUHJp
dmF0ZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNIZWFw
RmluYWxpemVyUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSlNIZWFw
RmluYWxpemVyUHJpdmF0ZV9oCisjZGVmaW5lIEpTSGVhcEZpbmFsaXplclByaXZhdGVfaAorCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVmLmg+CisjaW5jbHVkZSA8c3RkYm9v
bC5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK3R5cGVk
ZWYgdm9pZCAoKkpTSGVhcEZpbmFsaXplcikoSlNDb250ZXh0R3JvdXBSZWYsIHZvaWQgKnVzZXJE
YXRhKTsKKworSlNfRVhQT1JUIHZvaWQgSlNDb250ZXh0R3JvdXBBZGRIZWFwRmluYWxpemVyKEpT
Q29udGV4dEdyb3VwUmVmLCBKU0hlYXBGaW5hbGl6ZXIsIHZvaWQgKnVzZXJEYXRhKTsKK0pTX0VY
UE9SVCB2b2lkIEpTQ29udGV4dEdyb3VwUmVtb3ZlSGVhcEZpbmFsaXplcihKU0NvbnRleHRHcm91
cFJlZiwgSlNIZWFwRmluYWxpemVyLCB2b2lkICp1c2VyRGF0YSk7CisKKyNpZmRlZiBfX2NwbHVz
cGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBKU0hlYXBGaW5hbGl6ZXJQcml2YXRlX2gKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMJKHJldmlzaW9u
IDIxNjY4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiSmF2YVNjcmlwdENvcmUu
aCIKICNpbmNsdWRlICJKU0Jhc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiSlNDb250ZXh0UmVmUHJp
dmF0ZS5oIgorI2luY2x1ZGUgIkpTSGVhcEZpbmFsaXplclByaXZhdGUuaCIKICNpbmNsdWRlICJK
U01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0UmVmUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIkpTU2NyaXB0UmVmUHJpdmF0ZS5oIgpAQCAtMTE0Myw3ICsxMTQ0LDE4
IEBAIHN0YXRpYyB2b2lkIG1hcmtpbmdDb25zdHJhaW50KEpTTWFya2VyUmUKICAgICB9CiB9CiAK
LXN0YXRpYyB2b2lkIHRlc3RNYXJraW5nQ29uc3RyYWludHModm9pZCkKK3N0YXRpYyBib29sIGRp
ZFJ1bkhlYXBGaW5hbGl6ZXI7CitzdGF0aWMgSlNDb250ZXh0R3JvdXBSZWYgZXhwZWN0ZWRDb250
ZXh0R3JvdXA7CisKK3N0YXRpYyB2b2lkIGhlYXBGaW5hbGl6ZXIoSlNDb250ZXh0R3JvdXBSZWYg
Z3JvdXAsIHZvaWQgKnVzZXJEYXRhKQoreworICAgIGFzc2VydFRydWUoKHVpbnRwdHJfdCl1c2Vy
RGF0YSA9PSAodWludHB0cl90KTQyLCAiQ29ycmVjdCB1c2VyRGF0YSB3YXMgcGFzc2VkIik7Cisg
ICAgYXNzZXJ0VHJ1ZShncm91cCA9PSBleHBlY3RlZENvbnRleHRHcm91cCwgIkNvcnJlY3QgY29u
dGV4dCBncm91cCIpOworICAgIAorICAgIGRpZFJ1bkhlYXBGaW5hbGl6ZXIgPSB0cnVlOworfQor
CitzdGF0aWMgdm9pZCB0ZXN0TWFya2luZ0NvbnN0cmFpbnRzQW5kSGVhcEZpbmFsaXplcnModm9p
ZCkKIHsKICAgICBKU0NvbnRleHRHcm91cFJlZiBncm91cDsKICAgICBKU0NvbnRleHRSZWYgY29u
dGV4dDsKQEAgLTExNTQsMTYgKzExNjYsMjAgQEAgc3RhdGljIHZvaWQgdGVzdE1hcmtpbmdDb25z
dHJhaW50cyh2b2lkKQogICAgIHByaW50ZigiVGVzdGluZyBNYXJraW5nIENvbnN0cmFpbnRzLlxu
Iik7CiAgICAgCiAgICAgZ3JvdXAgPSBKU0NvbnRleHRHcm91cENyZWF0ZSgpOworICAgIGV4cGVj
dGVkQ29udGV4dEdyb3VwID0gZ3JvdXA7CisgICAgCiAgICAgY29udGV4dCA9IEpTR2xvYmFsQ29u
dGV4dENyZWF0ZUluR3JvdXAoZ3JvdXAsIE5VTEwpOwogCiAgICAgd2Vha1JlZnMgPSAoSlNXZWFr
UmVmKiljYWxsb2MobnVtV2Vha1JlZnMsIHNpemVvZihKU1dlYWtSZWYpKTsKIAogICAgIEpTQ29u
dGV4dEdyb3VwQWRkTWFya2luZ0NvbnN0cmFpbnQoZ3JvdXAsIG1hcmtpbmdDb25zdHJhaW50LCB3
ZWFrUmVmcyk7CisgICAgSlNDb250ZXh0R3JvdXBBZGRIZWFwRmluYWxpemVyKGdyb3VwLCBoZWFw
RmluYWxpemVyLCAodm9pZCopKHVpbnRwdHJfdCk0Mik7CiAgICAgCiAgICAgZm9yIChpID0gbnVt
V2Vha1JlZnM7IGktLTspCiAgICAgICAgIHdlYWtSZWZzW2ldID0gSlNXZWFrQ3JlYXRlKGdyb3Vw
LCBKU09iamVjdE1ha2VBcnJheShjb250ZXh0LCAwLCBOVUxMLCBOVUxMKSk7CiAgICAgCiAgICAg
SlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKGNvbnRleHQpOworICAgIGFz
c2VydFRydWUoZGlkUnVuSGVhcEZpbmFsaXplciwgIkRpZCBydW4gaGVhcCBmaW5hbGl6ZXIiKTsK
ICAgICAKICAgICBkZWFkQ291bnQgPSAwOwogICAgIGZvciAoaSA9IDA7IGkgPCBudW1XZWFrUmVm
czsgaSArPSAyKSB7CkBAIC0xMTc3LDkgKzExOTMsMTkgQEAgc3RhdGljIHZvaWQgdGVzdE1hcmtp
bmdDb25zdHJhaW50cyh2b2lkKQogICAgIGZvciAoaSA9IG51bVdlYWtSZWZzOyBpLS07KQogICAg
ICAgICBKU1dlYWtSZWxlYXNlKGdyb3VwLCB3ZWFrUmVmc1tpXSk7CiAgICAgCisgICAgZGlkUnVu
SGVhcEZpbmFsaXplciA9IGZhbHNlOworICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZv
ckRlYnVnZ2luZyhjb250ZXh0KTsKKyAgICBhc3NlcnRUcnVlKGRpZFJ1bkhlYXBGaW5hbGl6ZXIs
ICJEaWQgcnVuIGhlYXAgZmluYWxpemVyIik7CisKKyAgICBKU0NvbnRleHRHcm91cFJlbW92ZUhl
YXBGaW5hbGl6ZXIoZ3JvdXAsIGhlYXBGaW5hbGl6ZXIsICh2b2lkKikodWludHB0cl90KTQyKTsK
KworICAgIGRpZFJ1bkhlYXBGaW5hbGl6ZXIgPSBmYWxzZTsKKyAgICBKU1N5bmNocm9ub3VzR2Fy
YmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoY29udGV4dCk7CisgICAgYXNzZXJ0VHJ1ZSghZGlkUnVu
SGVhcEZpbmFsaXplciwgIkRpZCBub3QgcnVuIGhlYXAgZmluYWxpemVyIik7CisgICAgCiAgICAg
SlNDb250ZXh0R3JvdXBSZWxlYXNlKGdyb3VwKTsKIAotICAgIHByaW50ZigiUEFTUzogTWFya2lu
ZyBDb25zdHJhaW50cy5cbiIpOworICAgIHByaW50ZigiUEFTUzogTWFya2luZyBDb25zdHJhaW50
cyBhbmQgSGVhcCBGaW5hbGl6ZXJzLlxuIik7CiB9CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFy
KiBhcmd2W10pCkBAIC0xMjEyLDcgKzEyMzgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciog
YXJndltdKQogCiAgICAgQVNTRVJUKEJhc2VfZGlkRmluYWxpemUpOwogCi0gICAgdGVzdE1hcmtp
bmdDb25zdHJhaW50cygpOworICAgIHRlc3RNYXJraW5nQ29uc3RyYWludHNBbmRIZWFwRmluYWxp
emVycygpOwogCiAgICAgSlNDbGFzc0RlZmluaXRpb24gZ2xvYmFsT2JqZWN0Q2xhc3NEZWZpbml0
aW9uID0ga0pTQ2xhc3NEZWZpbml0aW9uRW1wdHk7CiAgICAgZ2xvYmFsT2JqZWN0Q2xhc3NEZWZp
bml0aW9uLmluaXRpYWxpemUgPSBnbG9iYWxPYmplY3RfaW5pdGlhbGl6ZTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTY2ODcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiwxMCBAQAogCQkwRjBCODNCMDE0QkNGNzE2MDA4ODVCNEYg
LyogQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMEI4M0FFMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwICov
OyB9OwogCQkwRjBCODNCMTE0QkNGNzE4MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBRjE0QkNGNzE0
MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1
cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9m
ZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjBDQUVGQjFFQzREQTY4MDA5NzBEMTIgLyogSlNIZWFwRmluYWxp
emVyUHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjBDQUVGOTFFQzREQTYyMDA5NzBEMTIgLyogSlNIZWFwRmluYWxpemVyUHJpdmF0ZS5j
cHAgKi87IH07CisJCTBGMENBRUZDMUVDNERBNkIwMDk3MEQxMiAvKiBKU0hlYXBGaW5hbGl6ZXJQ
cml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjBDQUVGQTFFQzREQTYyMDA5NzBEMTIgLyogSlNIZWFwRmluYWxpemVyUHJpdmF0ZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMENBRUZGMUVD
NERBODgwMDk3MEQxMiAvKiBIZWFwRmluYWxpemVyQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMENBRUZFMUVDNERBODUwMDk3MEQxMiAv
KiBIZWFwRmluYWxpemVyQ2FsbGJhY2suaCAqLzsgfTsKKwkJMEYwQ0FGMDAxRUM0REE4QjAwOTcw
RDEyIC8qIEhlYXBGaW5hbGl6ZXJDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBDQUVGRDFFQzREQTg1MDA5NzBEMTIgLyogSGVhcEZp
bmFsaXplckNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJMEYwQ0Q0QzIxNUYxQTYwNzAwMzJGMUMwIC8q
IFB1dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYwQ0Q0QzAxNUYxQTYwNDAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9k
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
MENENEM0MTVGNkI2QkIwMDMyRjFDMCAvKiBTcGFyc2VBcnJheVZhbHVlTWFwLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMENENEMzMTVGNkI2QjUw
MDMyRjFDMCAvKiBTcGFyc2VBcnJheVZhbHVlTWFwLmNwcCAqLzsgfTsKIAkJMEYwRkM0NUExNEJE
MTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJ
bnRDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMjY4Miw2ICsyNjg2LDEwIEBACiAJCTBGMEI4M0FFMTRCQ0Y3MTQwMDg4NUI0
RiAvKiBDYWxsTGlua0luZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ2FsbExpbmtJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgz
QUYxNEJDRjcxNDAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2Rl
T2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxSZXR1cm5PZmZz
ZXRUb0J5dGVjb2RlT2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMENB
RUY5MUVDNERBNjIwMDk3MEQxMiAvKiBKU0hlYXBGaW5hbGl6ZXJQcml2YXRlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSGVhcEZpbmFsaXplclByaXZhdGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBDQUVGQTFFQzREQTYyMDA5NzBEMTIg
LyogSlNIZWFwRmluYWxpemVyUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0hlYXBGaW5hbGl6ZXJQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGMENBRUZEMUVDNERBODUwMDk3MEQxMiAvKiBIZWFwRmluYWxpemVyQ2FsbGJhY2suY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcEZpbmFsaXplckNhbGxi
YWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQ0FFRkUxRUM0REE4NTAw
OTcwRDEyIC8qIEhlYXBGaW5hbGl6ZXJDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBIZWFwRmluYWxpemVyQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEYwQ0Q0QzAxNUYxQTYwNDAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXREaXJlY3RJbmRleE1vZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQ0Q0QzMxNUY2QjZCNTAwMzJGMUMwIC8q
IFNwYXJzZUFycmF5VmFsdWVNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMTEludENhbGxMaW5rSW5mby5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjA0NCw2ICs2MDUyLDggQEAKIAkJCQlEQzNEMkIwQjFE
MzQzNzZFMDBCQTkxOEMgLyogSGVhcENlbGwuY3BwICovLAogCQkJCURDM0QyQjA5MUQzNDMxNjEw
MEJBOTE4QyAvKiBIZWFwQ2VsbC5oICovLAogCQkJCTBGMDcwQTQ0MUQ1NDNBODkwMDZFNzIzMiAv
KiBIZWFwQ2VsbElubGluZXMuaCAqLywKKwkJCQkwRjBDQUVGRDFFQzREQTg1MDA5NzBEMTIgLyog
SGVhcEZpbmFsaXplckNhbGxiYWNrLmNwcCAqLywKKwkJCQkwRjBDQUVGRTFFQzREQTg1MDA5NzBE
MTIgLyogSGVhcEZpbmFsaXplckNhbGxiYWNrLmggKi8sCiAJCQkJMEYzMkJEMEUxQkIzNEYxOTAw
OTNBNTdGIC8qIEhlYXBIZWxwZXJQb29sLmNwcCAqLywKIAkJCQkwRjMyQkQwRjFCQjM0RjE5MDA5
M0E1N0YgLyogSGVhcEhlbHBlclBvb2wuaCAqLywKIAkJCQlDMkRBNzc4MjE4RTI1OTk5MDA2NkZD
QjYgLyogSGVhcElubGluZXMuaCAqLywKQEAgLTYxNzEsNiArNjE4MSw4IEBACiAJCQkJQTcyMDI4
QjQxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgKi8sCiAJCQkJQTcy
MDI4QjUxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oICovLAogCQkJCTg2
RTNDNjBBMTY3QkFCODcwMDZENzYwQSAvKiBKU0V4cG9ydC5oICovLAorCQkJCTBGMENBRUY5MUVD
NERBNjIwMDk3MEQxMiAvKiBKU0hlYXBGaW5hbGl6ZXJQcml2YXRlLmNwcCAqLywKKwkJCQkwRjBD
QUVGQTFFQzREQTYyMDA5NzBEMTIgLyogSlNIZWFwRmluYWxpemVyUHJpdmF0ZS5oICovLAogCQkJ
CUMyNUQ3MDlBMTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5oICovLAogCQkJCUMy
NUQ3MDk5MTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5tbSAqLywKIAkJCQkyQTRC
QjdGMjE4QTQxMTc5MDA4QTBGQ0QgLyogSlNNYW5hZ2VkVmFsdWVJbnRlcm5hbC5oICovLApAQCAt
ODQzNCw2ICs4NDQ2LDcgQEAKIAkJCQk1MzQ2Mzg3NTFFNzBEREVDMDBGMTJBQzEgLyogUHJvbWlz
ZURlZmVycmVkVGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTYyRUM5QkI3MUI3RUIwN0MwMDMw
M0FEMSAvKiBDYWxsRnJhbWVTaHVmZmxlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNEI0
QkQxRTg4NDQ5QTAwREJCRTg2IC8qIEFpclJlZ0xpdmVuZXNzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjBDQUVGRjFFQzREQTg4MDA5NzBEMTIgLyogSGVhcEZpbmFsaXplckNhbGxiYWNrLmggaW4g
SGVhZGVycyAqLywKIAkJCQk2MkQ3NTVENzFCODRGQjRBMDAxODAxRkEgLyogQ2FsbEZyYW1lU2h1
ZmZsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0IxMTRCQ0Y3MTgwMDg4NUI0RiAvKiBD
YWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMjlFMTRDQTdEQzUwMDg1RjND
NiAvKiBDYWxsTGlua1N0YXR1cy5oIGluIEhlYWRlcnMgKi8sCkBAIC04ODIwLDYgKzg4MzMsNyBA
QAogCQkJCTBGMDMzMkM4MThCNTQ2RUMwMDVGOTc5QSAvKiBGVExXZWlnaHRlZFRhcmdldC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY2NjZFQzExODM1NjZGOTAwRDAxN0YxIC8qIEZ1bGxCeXRlY29k
ZUxpdmVuZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQTgzNjM4QTE4RDdEMEZFMDAwMEVCQ0Mg
LyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwQ0FFRkMx
RUM0REE2QjAwOTcwRDEyIC8qIEpTSGVhcEZpbmFsaXplclByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0QUQ5MTBEMURDQTkyOTQwMDE0RjlGRSAvKiBGdW5jdGlvbkNvZGVCbG9jay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MDQwRTE2RjVDRDAwQjM0NDYwIC8qIEZ1bmN0aW9uQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzM0MUQ4MURDMDJGOTkwMEFBMjlCQSAv
KiBGdW5jdGlvbkV4ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovLApAQCAtMTA4MTAsNiArMTA4MjQs
NyBAQAogCQkJCURDNjlBQTY2MUNGN0ExRjIwMEM2MjcyRiAvKiBNYXRjaFJlc3VsdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0MzQwQTQ4NDFBOTA1MUFGMDBENzNDQ0EgLyogTWF0aENvbW1vbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURERjEwN0VDN0U3MDA2NTA0NDYgLyogTWF0aE9i
amVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBDQUVGQjFFQzREQTY4MDA5NzBEMTIgLyog
SlNIZWFwRmluYWxpemVyUHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MDIxM0UzRDEy
M0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkI1NDY3RDE0RjVDRkQ2MDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzc5NEU3NTFCNzdFQjk3MDA1NTQzQUUgLyogTW9k
dWxlQW5hbHl6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDkwMSw2ICsxMDkxNiw3IEBACiAJ
CQkJOTk4RUQ2NzQxQkVENzBBQzAwREQ4MDE3IC8qIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzQ2Mzg3NzFFNzFFMDZFMDBGMTJBQzEgLyogUHJvbWlz
ZURlZmVycmVkVGltZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5NDU1OEYxODI0NUVGRDAw
Q0MzODQzIC8qIFJlbW90ZUluc3BlY3Rpb25UYXJnZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MEYwQ0FGMDAxRUM0REE4QjAwOTcwRDEyIC8qIEhlYXBGaW5hbGl6ZXJDYWxsYmFjay5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5OTU1NjY4NjFFNEU4QjBGMDBBQUUxM0MgLyogUmVtb3RlSW5zcGVj
dG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk5MkY1NkI1MUU0RTg0QTgwMDM1OTUzQiAvKiBS
ZW1vdGVJbnNwZWN0b3JDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk5MkY1NkI2MUU0RTg0
QUIwMDM1OTUzQiAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMjE2Njg3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE5NzYsNiArMTk3Niw5IEBAIHZvaWQgSGVhcDo6ZmluYWxpemUoKQogICAgIGlmIChIYXNP
d25Qcm9wZXJ0eUNhY2hlKiBjYWNoZSA9IHZtKCktPmhhc093blByb3BlcnR5Q2FjaGUoKSkKICAg
ICAgICAgY2FjaGUtPmNsZWFyKCk7CiAgICAgCisgICAgZm9yIChjb25zdCBIZWFwRmluYWxpemVy
Q2FsbGJhY2smIGNhbGxiYWNrIDogbV9oZWFwRmluYWxpemVyQ2FsbGJhY2tzKQorICAgICAgICBj
YWxsYmFjay5ydW4oKnZtKCkpOworICAgIAogICAgIGlmIChPcHRpb25zOjpzd2VlcFN5bmNocm9u
b3VzbHkoKSkKICAgICAgICAgc3dlZXBTeW5jaHJvbm91c2x5KCk7CiAKQEAgLTI4MTcsNCArMjgy
MCwxNCBAQCB2b2lkIEhlYXA6OnBlcmZvcm1JbmNyZW1lbnQoc2l6ZV90IGJ5dGVzCiAgICAgbV9p
bmNyZW1lbnRCYWxhbmNlIC09IGJ5dGVzVmlzaXRlZDsKIH0KIAordm9pZCBIZWFwOjphZGRIZWFw
RmluYWxpemVyQ2FsbGJhY2soY29uc3QgSGVhcEZpbmFsaXplckNhbGxiYWNrJiBjYWxsYmFjaykK
K3sKKyAgICBtX2hlYXBGaW5hbGl6ZXJDYWxsYmFja3MuYXBwZW5kKGNhbGxiYWNrKTsKK30KKwor
dm9pZCBIZWFwOjpyZW1vdmVIZWFwRmluYWxpemVyQ2FsbGJhY2soY29uc3QgSGVhcEZpbmFsaXpl
ckNhbGxiYWNrJiBjYWxsYmFjaykKK3sKKyAgICBtX2hlYXBGaW5hbGl6ZXJDYWxsYmFja3MucmVt
b3ZlRmlyc3QoY2FsbGJhY2spOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDIxNjY4NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIkdDUmVxdWVzdC5oIgogI2luY2x1ZGUgIkhhbmRsZVNldC5oIgogI2luY2x1ZGUgIkhh
bmRsZVN0YWNrLmgiCisjaW5jbHVkZSAiSGVhcEZpbmFsaXplckNhbGxiYWNrLmgiCiAjaW5jbHVk
ZSAiSGVhcE9ic2VydmVyLmgiCiAjaW5jbHVkZSAiTGlzdGFibGVIYW5kbGVyLmgiCiAjaW5jbHVk
ZSAiTWFya2VkQmxvY2suaCIKQEAgLTM3NCw2ICszNzUsOSBAQCBwdWJsaWM6CiAjZW5kaWYgLy8g
VVNFKENGKQogCiAgICAgSGVhcFZlcmlmaWVyKiB2ZXJpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
dmVyaWZpZXIuZ2V0KCk7IH0KKyAgICAKKyAgICB2b2lkIGFkZEhlYXBGaW5hbGl6ZXJDYWxsYmFj
ayhjb25zdCBIZWFwRmluYWxpemVyQ2FsbGJhY2smKTsKKyAgICB2b2lkIHJlbW92ZUhlYXBGaW5h
bGl6ZXJDYWxsYmFjayhjb25zdCBIZWFwRmluYWxpemVyQ2FsbGJhY2smKTsKIAogcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgQWxsb2NhdGluZ1Njb3BlOwpAQCAtNjIwLDcgKzYyNCw5IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPFN0b3BJZk5lY2Vzc2FyeVRpbWVyPiBtX3N0b3BJZk5lY2Vzc2Fy
eVRpbWVyOwogCiAgICAgVmVjdG9yPEhlYXBPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOwotCisgICAg
CisgICAgVmVjdG9yPEhlYXBGaW5hbGl6ZXJDYWxsYmFjaz4gbV9oZWFwRmluYWxpemVyQ2FsbGJh
Y2tzOworICAgIAogICAgIHVuc2lnbmVkIG1fZGVmZXJyYWxEZXB0aDsKICAgICBib29sIG1fZGlk
RGVmZXJHQ1dvcmsgeyBmYWxzZSB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwRmluYWxpemVyQ2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBGaW5hbGl6ZXJDYWxsYmFjay5jcHAJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcEZpbmFsaXplckNhbGxiYWNrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSGVhcEZp
bmFsaXplckNhbGxiYWNrLmgiCisKKyNpbmNsdWRlICJBUElDYXN0LmgiCisKK25hbWVzcGFjZSBK
U0MgeworCit2b2lkIEhlYXBGaW5hbGl6ZXJDYWxsYmFjazo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAoreworICAgIG91dC5wcmludChSYXdQb2ludGVyKGJpdHdpc2VfY2FzdDx2b2lkKj4o
bV9maW5hbGl6ZXIpKSwgIjoiLCBSYXdQb2ludGVyKG1fdXNlckRhdGEpKTsKK30KKwordm9pZCBI
ZWFwRmluYWxpemVyQ2FsbGJhY2s6OnJ1bihWTSYgdm0pIGNvbnN0Cit7CisgICAgbV9maW5hbGl6
ZXIodG9SZWYoJnZtKSwgbV91c2VyRGF0YSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBGaW5hbGl6ZXJDYWxsYmFjay5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBGaW5hbGl6ZXJD
YWxsYmFjay5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBGaW5hbGl6ZXJDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiSlNIZWFwRmluYWxpemVyUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9Q
cmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVk07CisKK2NsYXNzIEhl
YXBGaW5hbGl6ZXJDYWxsYmFjayB7CitwdWJsaWM6CisgICAgSGVhcEZpbmFsaXplckNhbGxiYWNr
KEpTSGVhcEZpbmFsaXplciBmaW5hbGl6ZXIgPSBudWxscHRyLCB2b2lkICp1c2VyRGF0YSA9IG51
bGxwdHIpCisgICAgICAgIDogbV9maW5hbGl6ZXIoZmluYWxpemVyKQorICAgICAgICAsIG1fdXNl
ckRhdGEodXNlckRhdGEpCisgICAgeworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgSGVhcEZpbmFsaXplckNhbGxiYWNrJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2ZpbmFsaXplciA9PSBvdGhlci5tX2ZpbmFsaXplcgorICAgICAgICAgICAgJiYg
bV91c2VyRGF0YSA9PSBvdGhlci5tX3VzZXJEYXRhOworICAgIH0KKyAgICAKKyAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgSGVhcEZpbmFsaXplckNhbGxiYWNrJiBvdGhlcikgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9CisgICAgCisgICAgZXhw
bGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gKnRoaXMg
IT0gSGVhcEZpbmFsaXplckNhbGxiYWNrKCk7CisgICAgfQorICAgIAorICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYpIGNvbnN0OworICAgIAorICAgIHZvaWQgcnVuKFZNJikgY29uc3Q7CisgICAg
Citwcml2YXRlOgorICAgIEpTSGVhcEZpbmFsaXplciBtX2ZpbmFsaXplcjsKKyAgICB2b2lkICpt
X3VzZXJEYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309746</attachid>
            <date>2017-05-11 12:07:14 -0700</date>
            <delta_ts>2017-05-11 12:07:14 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>24361</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE2Njg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDE3LTA1LTExICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
T2ZmZXIgU1BJIHRvIG5vdGlmeSBjbGllbnRzIHRoYXQgR0MgaGFzIGhhcHBlbmVkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE5ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKyAgICAgICAgCisgICAgICAgIFNvbWV0aW1l
cyB3aGVuIHlvdSdyZSBwcm9ncmFtbWluZyB3aXRoIHdlYWsgcmVmZXJlbmNlcywgaXQncyBtb3N0
IGNvbnZlbmllbnQgaWYgdGhlIEdDIHRlbGxzCisgICAgICAgIHlvdSB3aGVuIGl0IGZpbmlzaGVz
LiBUaGlzIGFkZHMgZXhhY3RseSBzdWNoIGFuIEFQSS4gVGhpcyBBUEkgaXMgY2FsbGVkIGF0IHRo
ZSAqZmxpcCo6IHRoZQorICAgICAgICBtb21lbnQgd2hlbiB0aGUgR0Mga25vd3MgZm9yIHN1cmUg
d2hpY2ggb2JqZWN0cyBhcmUgZGVhZCBhbmQgaGFzIGRlZmluaXRlbHkgbm90IGFsbG9jYXRlZCBh
bnkKKyAgICAgICAgbmV3IG9iamVjdHMgb3IgZXhlY3V0ZWQgYW55IEpTIGNvZGUuIFRoZSBmaW5h
bGl6YXRpb24gcGFydCBvZiB0aGUgZmxpcCwgd2hpY2ggaXMgd2hlcmUgdGhpcworICAgICAgICBj
YWxsYmFjayBnZXRzIGNhbGxlZCwgcnVucyBvbiB0aGUgIm1haW4iIHRocmVhZCAtIGkuZS4gc29t
ZSB0aHJlYWQgdGhhdCBpcyBhdHRlbXB0aW5nIHRvCisgICAgICAgIGV4ZWN1dGUgSlMgY29kZSBh
bmQgaG9sZHMgdGhlIEpTIGxvY2suIFRoaXMgd2lsbCB1c3VhbGx5IHJ1biBhcyBhIHNpZGUtZWZm
ZWN0IG9mIHNvbWUKKyAgICAgICAgYWxsb2NhdGlvbiBvciBmcm9tIHRoZSBydW5sb29wLgorICAg
ICAgICAKKyAgICAgICAgVGhpcyBtZWFucywgZm9yIGV4YW1wbGUsIHRoYXQgaWYgeW91IGltcGxl
bWVudGVkIGEgdmVjdG9yIG9mIHdlYWsgcmVmZXJlbmNlcyBhbmQgcmVnaXN0ZXJlZCBhCisgICAg
ICAgIGNhbGxiYWNrIHRvIHBydW5lIHRoZSB2ZWN0b3Igb2YgbnVsbCB3ZWFrIHJlZmVyZW5jZXMs
IHRoZW4gYXNpZGUgZnJvbSB0aGUgY2FsbGJhY2ssIG5vYm9keQorICAgICAgICB3b3VsZCBldmVy
IHNlZSBhIG51bGwgd2VhayByZWZlcmVuY2UgaW4gdGhlIHZlY3Rvci4KKworICAgICAgICAqIEFQ
SS9KU0hlYXBGaW5hbGl6ZXJQcml2YXRlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0NvbnRleHRH
cm91cEFkZEhlYXBGaW5hbGl6ZXIpOgorICAgICAgICAoSlNDb250ZXh0R3JvdXBSZW1vdmVIZWFw
RmluYWxpemVyKToKKyAgICAgICAgKiBBUEkvSlNIZWFwRmluYWxpemVyUHJpdmF0ZS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5jOgorICAgICAgICAoaGVhcEZpbmFsaXpl
cik6CisgICAgICAgICh0ZXN0TWFya2luZ0NvbnN0cmFpbnRzQW5kSGVhcEZpbmFsaXplcnMpOgor
ICAgICAgICAobWFpbik6CisgICAgICAgICh0ZXN0TWFya2luZ0NvbnN0cmFpbnRzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAg
ICAgIChKU0M6OkhlYXA6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWRkSGVhcEZp
bmFsaXplckNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6SGVhcDo6cmVtb3ZlSGVhcEZpbmFsaXpl
ckNhbGxiYWNrKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL0hlYXBG
aW5hbGl6ZXJDYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpIZWFwRmluYWxpemVy
Q2FsbGJhY2s6OmR1bXApOgorICAgICAgICAqIGhlYXAvSGVhcEZpbmFsaXplckNhbGxiYWNrLmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpIZWFwRmluYWxpemVyQ2FsbGJhY2s6OkhlYXBGaW5hbGl6
ZXJDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkhlYXBGaW5hbGl6ZXJDYWxsYmFjazo6b3BlcmF0
b3I9PSk6CisgICAgICAgIChKU0M6OkhlYXBGaW5hbGl6ZXJDYWxsYmFjazo6b3BlcmF0b3IhPSk6
CisgICAgICAgIChKU0M6OkhlYXBGaW5hbGl6ZXJDYWxsYmFjazo6b3BlcmF0b3IgYm9vbCk6Cisg
ICAgICAgIChKU0M6OkhlYXBGaW5hbGl6ZXJDYWxsYmFjazo6cnVuKToKKwogMjAxNy0wNS0xMSAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEpTV2Vha0NyZWF0ZS9S
ZXRhaW4vUmVsZWFzZSBzaG91bGQgdGFrZSBhIEpTQ29udGV4dEdyb3VwUmVmIGFuZCBub3QgYSBK
U0NvbnRleHRSZWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlz
aW9uIDIxNjY4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNTUsNiArNTUsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwog
ICAgIEFQSS9KU0NhbGxiYWNrT2JqZWN0LmNwcAogICAgIEFQSS9KU0NsYXNzUmVmLmNwcAogICAg
IEFQSS9KU0NvbnRleHRSZWYuY3BwCisgICAgQVBJL0pTSGVhcEZpbmFsaXplclByaXZhdGUuY3Bw
CiAgICAgQVBJL0pTTWFya2luZ0NvbnN0cmFpbnRQcml2YXRlLmNwcAogICAgIEFQSS9KU09iamVj
dFJlZi5jcHAKICAgICBBUEkvSlNUeXBlZEFycmF5LmNwcApAQCAtNTA3LDYgKzUwOCw3IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaGVhcC9IYW5kbGVTdGFjay5jcHAKICAgICBo
ZWFwL0hlYXAuY3BwCiAgICAgaGVhcC9IZWFwQ2VsbC5jcHAKKyAgICBoZWFwL0hlYXBGaW5hbGl6
ZXJDYWxsYmFjay5jcHAKICAgICBoZWFwL0hlYXBIZWxwZXJQb29sLmNwcAogICAgIGhlYXAvSGVh
cFByb2ZpbGVyLmNwcAogICAgIGhlYXAvSGVhcFNuYXBzaG90LmNwcApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0hlYXBGaW5hbGl6ZXJQcml2YXRlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTSGVhcEZpbmFsaXplclByaXZhdGUuY3BwCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNIZWFwRmluYWxpemVy
UHJpdmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkpTSGVhcEZpbmFsaXplclByaXZhdGUuaCIKKworI2luY2x1ZGUgIkFQSUNhc3Qu
aCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK3Zv
aWQgSlNDb250ZXh0R3JvdXBBZGRIZWFwRmluYWxpemVyKEpTQ29udGV4dEdyb3VwUmVmIGdyb3Vw
LCBKU0hlYXBGaW5hbGl6ZXIgZmluYWxpemVyLCB2b2lkICp1c2VyRGF0YSkKK3sKKyAgICBWTSog
dm0gPSB0b0pTKGdyb3VwKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKKyAgICB2bS0+
aGVhcC5hZGRIZWFwRmluYWxpemVyQ2FsbGJhY2soSGVhcEZpbmFsaXplckNhbGxiYWNrKGZpbmFs
aXplciwgdXNlckRhdGEpKTsKK30KKwordm9pZCBKU0NvbnRleHRHcm91cFJlbW92ZUhlYXBGaW5h
bGl6ZXIoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpTSGVhcEZpbmFsaXplciBmaW5hbGl6ZXIs
IHZvaWQgKnVzZXJEYXRhKQoreworICAgIFZNKiB2bSA9IHRvSlMoZ3JvdXApOworICAgIEpTTG9j
a0hvbGRlciBsb2NrZXIodm0pOworICAgIHZtLT5oZWFwLnJlbW92ZUhlYXBGaW5hbGl6ZXJDYWxs
YmFjayhIZWFwRmluYWxpemVyQ2FsbGJhY2soZmluYWxpemVyLCB1c2VyRGF0YSkpOworfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0hlYXBGaW5hbGl6ZXJQcml2YXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0hlYXBGaW5hbGl6ZXJQcml2
YXRlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0hlYXBG
aW5hbGl6ZXJQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBKU0hlYXBG
aW5hbGl6ZXJQcml2YXRlX2gKKyNkZWZpbmUgSlNIZWFwRmluYWxpemVyUHJpdmF0ZV9oCisKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NvbnRleHRSZWYuaD4KKyNpbmNsdWRlIDxzdGRib29s
Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwordHlwZWRl
ZiB2b2lkICgqSlNIZWFwRmluYWxpemVyKShKU0NvbnRleHRHcm91cFJlZiwgdm9pZCAqdXNlckRh
dGEpOworCitKU19FWFBPUlQgdm9pZCBKU0NvbnRleHRHcm91cEFkZEhlYXBGaW5hbGl6ZXIoSlND
b250ZXh0R3JvdXBSZWYsIEpTSGVhcEZpbmFsaXplciwgdm9pZCAqdXNlckRhdGEpOworSlNfRVhQ
T1JUIHZvaWQgSlNDb250ZXh0R3JvdXBSZW1vdmVIZWFwRmluYWxpemVyKEpTQ29udGV4dEdyb3Vw
UmVmLCBKU0hlYXBGaW5hbGl6ZXIsIHZvaWQgKnVzZXJEYXRhKTsKKworI2lmZGVmIF9fY3BsdXNw
bHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIEpTSGVhcEZpbmFsaXplclByaXZhdGVfaAorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwkocmV2aXNpb24g
MjE2Njg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJKYXZhU2NyaXB0Q29yZS5o
IgogI2luY2x1ZGUgIkpTQmFzZVByaXZhdGUuaCIKICNpbmNsdWRlICJKU0NvbnRleHRSZWZQcml2
YXRlLmgiCisjaW5jbHVkZSAiSlNIZWFwRmluYWxpemVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkpT
TWFya2luZ0NvbnN0cmFpbnRQcml2YXRlLmgiCiAjaW5jbHVkZSAiSlNPYmplY3RSZWZQcml2YXRl
LmgiCiAjaW5jbHVkZSAiSlNTY3JpcHRSZWZQcml2YXRlLmgiCkBAIC0xMTQzLDcgKzExNDQsMTgg
QEAgc3RhdGljIHZvaWQgbWFya2luZ0NvbnN0cmFpbnQoSlNNYXJrZXJSZQogICAgIH0KIH0KIAot
c3RhdGljIHZvaWQgdGVzdE1hcmtpbmdDb25zdHJhaW50cyh2b2lkKQorc3RhdGljIGJvb2wgZGlk
UnVuSGVhcEZpbmFsaXplcjsKK3N0YXRpYyBKU0NvbnRleHRHcm91cFJlZiBleHBlY3RlZENvbnRl
eHRHcm91cDsKKworc3RhdGljIHZvaWQgaGVhcEZpbmFsaXplcihKU0NvbnRleHRHcm91cFJlZiBn
cm91cCwgdm9pZCAqdXNlckRhdGEpCit7CisgICAgYXNzZXJ0VHJ1ZSgodWludHB0cl90KXVzZXJE
YXRhID09ICh1aW50cHRyX3QpNDIsICJDb3JyZWN0IHVzZXJEYXRhIHdhcyBwYXNzZWQiKTsKKyAg
ICBhc3NlcnRUcnVlKGdyb3VwID09IGV4cGVjdGVkQ29udGV4dEdyb3VwLCAiQ29ycmVjdCBjb250
ZXh0IGdyb3VwIik7CisgICAgCisgICAgZGlkUnVuSGVhcEZpbmFsaXplciA9IHRydWU7Cit9CisK
K3N0YXRpYyB2b2lkIHRlc3RNYXJraW5nQ29uc3RyYWludHNBbmRIZWFwRmluYWxpemVycyh2b2lk
KQogewogICAgIEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwOwogICAgIEpTQ29udGV4dFJlZiBjb250
ZXh0OwpAQCAtMTE1NCwxNiArMTE2NiwyMCBAQCBzdGF0aWMgdm9pZCB0ZXN0TWFya2luZ0NvbnN0
cmFpbnRzKHZvaWQpCiAgICAgcHJpbnRmKCJUZXN0aW5nIE1hcmtpbmcgQ29uc3RyYWludHMuXG4i
KTsKICAgICAKICAgICBncm91cCA9IEpTQ29udGV4dEdyb3VwQ3JlYXRlKCk7CisgICAgZXhwZWN0
ZWRDb250ZXh0R3JvdXAgPSBncm91cDsKKyAgICAKICAgICBjb250ZXh0ID0gSlNHbG9iYWxDb250
ZXh0Q3JlYXRlSW5Hcm91cChncm91cCwgTlVMTCk7CiAKICAgICB3ZWFrUmVmcyA9IChKU1dlYWtS
ZWYqKWNhbGxvYyhudW1XZWFrUmVmcywgc2l6ZW9mKEpTV2Vha1JlZikpOwogCiAgICAgSlNDb250
ZXh0R3JvdXBBZGRNYXJraW5nQ29uc3RyYWludChncm91cCwgbWFya2luZ0NvbnN0cmFpbnQsIHdl
YWtSZWZzKTsKKyAgICBKU0NvbnRleHRHcm91cEFkZEhlYXBGaW5hbGl6ZXIoZ3JvdXAsIGhlYXBG
aW5hbGl6ZXIsICh2b2lkKikodWludHB0cl90KTQyKTsKICAgICAKICAgICBmb3IgKGkgPSBudW1X
ZWFrUmVmczsgaS0tOykKICAgICAgICAgd2Vha1JlZnNbaV0gPSBKU1dlYWtDcmVhdGUoZ3JvdXAs
IEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIE5VTEwsIE5VTEwpKTsKICAgICAKICAgICBK
U1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoY29udGV4dCk7CisgICAgYXNz
ZXJ0VHJ1ZShkaWRSdW5IZWFwRmluYWxpemVyLCAiRGlkIHJ1biBoZWFwIGZpbmFsaXplciIpOwog
ICAgIAogICAgIGRlYWRDb3VudCA9IDA7CiAgICAgZm9yIChpID0gMDsgaSA8IG51bVdlYWtSZWZz
OyBpICs9IDIpIHsKQEAgLTExNzcsOSArMTE5MywxOSBAQCBzdGF0aWMgdm9pZCB0ZXN0TWFya2lu
Z0NvbnN0cmFpbnRzKHZvaWQpCiAgICAgZm9yIChpID0gbnVtV2Vha1JlZnM7IGktLTspCiAgICAg
ICAgIEpTV2Vha1JlbGVhc2UoZ3JvdXAsIHdlYWtSZWZzW2ldKTsKICAgICAKKyAgICBkaWRSdW5I
ZWFwRmluYWxpemVyID0gZmFsc2U7CisgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9y
RGVidWdnaW5nKGNvbnRleHQpOworICAgIGFzc2VydFRydWUoZGlkUnVuSGVhcEZpbmFsaXplciwg
IkRpZCBydW4gaGVhcCBmaW5hbGl6ZXIiKTsKKworICAgIEpTQ29udGV4dEdyb3VwUmVtb3ZlSGVh
cEZpbmFsaXplcihncm91cCwgaGVhcEZpbmFsaXplciwgKHZvaWQqKSh1aW50cHRyX3QpNDIpOwor
CisgICAgZGlkUnVuSGVhcEZpbmFsaXplciA9IGZhbHNlOworICAgIEpTU3luY2hyb25vdXNHYXJi
YWdlQ29sbGVjdEZvckRlYnVnZ2luZyhjb250ZXh0KTsKKyAgICBhc3NlcnRUcnVlKCFkaWRSdW5I
ZWFwRmluYWxpemVyLCAiRGlkIG5vdCBydW4gaGVhcCBmaW5hbGl6ZXIiKTsKKyAgICAKICAgICBK
U0NvbnRleHRHcm91cFJlbGVhc2UoZ3JvdXApOwogCi0gICAgcHJpbnRmKCJQQVNTOiBNYXJraW5n
IENvbnN0cmFpbnRzLlxuIik7CisgICAgcHJpbnRmKCJQQVNTOiBNYXJraW5nIENvbnN0cmFpbnRz
IGFuZCBIZWFwIEZpbmFsaXplcnMuXG4iKTsKIH0KIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIq
IGFyZ3ZbXSkKQEAgLTEyMTIsNyArMTIzOCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBh
cmd2W10pCiAKICAgICBBU1NFUlQoQmFzZV9kaWRGaW5hbGl6ZSk7CiAKLSAgICB0ZXN0TWFya2lu
Z0NvbnN0cmFpbnRzKCk7CisgICAgdGVzdE1hcmtpbmdDb25zdHJhaW50c0FuZEhlYXBGaW5hbGl6
ZXJzKCk7CiAKICAgICBKU0NsYXNzRGVmaW5pdGlvbiBnbG9iYWxPYmplY3RDbGFzc0RlZmluaXRp
b24gPSBrSlNDbGFzc0RlZmluaXRpb25FbXB0eTsKICAgICBnbG9iYWxPYmplY3RDbGFzc0RlZmlu
aXRpb24uaW5pdGlhbGl6ZSA9IGdsb2JhbE9iamVjdF9pbml0aWFsaXplOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIxNjY4NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDYsNiArMTA2LDEwIEBACiAJCTBGMEI4M0IwMTRCQ0Y3MTYwMDg4NUI0RiAv
KiBDYWxsTGlua0luZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYwQjgzQUUxNEJDRjcxNDAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAgKi87
IH07CiAJCTBGMEI4M0IxMTRCQ0Y3MTgwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0FGMTRCQ0Y3MTQw
MDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVy
bk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zm
c2V0VG9CeXRlY29kZU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGMENBRUZCMUVDNERBNjgwMDk3MEQxMiAvKiBKU0hlYXBGaW5hbGl6
ZXJQcml2YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMENBRUY5MUVDNERBNjIwMDk3MEQxMiAvKiBKU0hlYXBGaW5hbGl6ZXJQcml2YXRlLmNw
cCAqLzsgfTsKKwkJMEYwQ0FFRkMxRUM0REE2QjAwOTcwRDEyIC8qIEpTSGVhcEZpbmFsaXplclBy
aXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MENBRUZBMUVDNERBNjIwMDk3MEQxMiAvKiBKU0hlYXBGaW5hbGl6ZXJQcml2YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQ0FFRkYxRUM0
REE4ODAwOTcwRDEyIC8qIEhlYXBGaW5hbGl6ZXJDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQ0FFRkUxRUM0REE4NTAwOTcwRDEyIC8q
IEhlYXBGaW5hbGl6ZXJDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGMENBRjAwMUVDNERBOEIwMDk3MEQxMiAvKiBIZWFwRmluYWxp
emVyQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYwQ0FFRkQxRUM0REE4NTAwOTcwRDEyIC8qIEhlYXBGaW5hbGl6ZXJDYWxsYmFjay5j
cHAgKi87IH07CiAJCTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1v
ZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMENE
NEMwMTVGMUE2MDQwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBDRDRDNDE1RjZCNkJCMDAz
MkYxQzAgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBDRDRDMzE1RjZCNkI1MDAzMkYxQzAgLyogU3BhcnNl
QXJyYXlWYWx1ZU1hcC5jcHAgKi87IH07CiAJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBM
TEludENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI2ODIs
NiArMjY4NiwxMCBAQAogCQkwRjBCODNBRTE0QkNGNzE0MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZv
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxMaW5rSW5mby5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0FGMTRCQ0Y3MTQwMDg4NUI0
RiAvKiBDYWxsTGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2Fs
bExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0I4MTRCQ0Y5
NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNl
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBDQUVGOTFFQzREQTYyMDA5NzBE
MTIgLyogSlNIZWFwRmluYWxpemVyUHJpdmF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0hlYXBGaW5hbGl6ZXJQcml2YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYwQ0FFRkExRUM0REE2MjAwOTcwRDEyIC8qIEpTSGVhcEZpbmFsaXpl
clByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIZWFwRmluYWxp
emVyUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBDQUVGRDFFQzRE
QTg1MDA5NzBEMTIgLyogSGVhcEZpbmFsaXplckNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBGaW5hbGl6ZXJDYWxsYmFjay5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMENBRUZFMUVDNERBODUwMDk3MEQxMiAvKiBIZWFwRmlu
YWxpemVyQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcEZp
bmFsaXplckNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMENENEMw
MTVGMUE2MDQwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUHV0RGlyZWN0SW5kZXhNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMENENEMzMTVGNkI2QjUwMDMyRjFDMCAvKiBTcGFyc2VBcnJheVZhbHVl
TWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwYXJzZUFycmF5
VmFsdWVNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBGQzQ1ODE0QkQx
NUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTExJbnRDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTYwNDQsNiArNjA1Miw4IEBACiAJCQkJREMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8q
IEhlYXBDZWxsLmNwcCAqLywKIAkJCQlEQzNEMkIwOTFEMzQzMTYxMDBCQTkxOEMgLyogSGVhcENl
bGwuaCAqLywKIAkJCQkwRjA3MEE0NDFENTQzQTg5MDA2RTcyMzIgLyogSGVhcENlbGxJbmxpbmVz
LmggKi8sCisJCQkJMEYwQ0FFRkQxRUM0REE4NTAwOTcwRDEyIC8qIEhlYXBGaW5hbGl6ZXJDYWxs
YmFjay5jcHAgKi8sCisJCQkJMEYwQ0FFRkUxRUM0REE4NTAwOTcwRDEyIC8qIEhlYXBGaW5hbGl6
ZXJDYWxsYmFjay5oICovLAogCQkJCTBGMzJCRDBFMUJCMzRGMTkwMDkzQTU3RiAvKiBIZWFwSGVs
cGVyUG9vbC5jcHAgKi8sCiAJCQkJMEYzMkJEMEYxQkIzNEYxOTAwOTNBNTdGIC8qIEhlYXBIZWxw
ZXJQb29sLmggKi8sCiAJCQkJQzJEQTc3ODIxOEUyNTk5OTAwNjZGQ0I2IC8qIEhlYXBJbmxpbmVz
LmggKi8sCkBAIC02MTcxLDYgKzYxODEsOCBAQAogCQkJCUE3MjAyOEI0MTc5NzYwMUUwMDk4MDI4
QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwICovLAogCQkJCUE3MjAyOEI1MTc5NzYwMUUwMDk4
MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCAqLywKIAkJCQk4NkUzQzYwQTE2N0JBQjg3MDA2
RDc2MEEgLyogSlNFeHBvcnQuaCAqLywKKwkJCQkwRjBDQUVGOTFFQzREQTYyMDA5NzBEMTIgLyog
SlNIZWFwRmluYWxpemVyUHJpdmF0ZS5jcHAgKi8sCisJCQkJMEYwQ0FFRkExRUM0REE2MjAwOTcw
RDEyIC8qIEpTSGVhcEZpbmFsaXplclByaXZhdGUuaCAqLywKIAkJCQlDMjVENzA5QTE2REU5OUY0
MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCAqLywKIAkJCQlDMjVENzA5OTE2REU5OUY0MDBG
Q0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUubW0gKi8sCiAJCQkJMkE0QkI3RjIxOEE0MTE3OTAwOEEw
RkNEIC8qIEpTTWFuYWdlZFZhbHVlSW50ZXJuYWwuaCAqLywKQEAgLTg0MzQsNiArODQ0Niw3IEBA
CiAJCQkJNTM0NjM4NzUxRTcwRERFQzAwRjEyQUMxIC8qIFByb21pc2VEZWZlcnJlZFRpbWVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2MkVDOUJCNzFCN0VCMDdDMDAzMDNBRDEgLyogQ2FsbEZyYW1l
U2h1ZmZsZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjRCNEJEMUU4ODQ0OUEwMERCQkU4
NiAvKiBBaXJSZWdMaXZlbmVzcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwQ0FFRkYxRUM0REE4
ODAwOTcwRDEyIC8qIEhlYXBGaW5hbGl6ZXJDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NjJENzU1RDcxQjg0RkI0QTAwMTgwMUZBIC8qIENhbGxGcmFtZVNodWZmbGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjBCODNCMTE0QkNGNzE4MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjkzMzI5RTE0Q0E3REM1MDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0
dXMuaCBpbiBIZWFkZXJzICovLApAQCAtODgyMCw2ICs4ODMzLDcgQEAKIAkJCQkwRjAzMzJDODE4
QjU0NkVDMDA1Rjk3OUEgLyogRlRMV2VpZ2h0ZWRUYXJnZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNjY2RUMxMTgzNTY2RjkwMEQwMTdGMSAvKiBGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkE4MzYzOEExOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5
Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMENBRUZDMUVDNERBNkIwMDk3MEQxMiAv
KiBKU0hlYXBGaW5hbGl6ZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEFEOTEwRDFE
Q0E5Mjk0MDAxNEY5RkUgLyogRnVuY3Rpb25Db2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDNDA0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxNDczNDFEODFEQzAyRjk5MDBBQTI5QkEgLyogRnVuY3Rpb25FeGVjdXRh
YmxlLmggaW4gSGVhZGVycyAqLywKQEAgLTEwODEwLDYgKzEwODI0LDcgQEAKIAkJCQlEQzY5QUE2
NjFDRjdBMUYyMDBDNjI3MkYgLyogTWF0Y2hSZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDM0MEE0ODQxQTkwNTFBRjAwRDczQ0NBIC8qIE1hdGhDb21tb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQ0NjlEREYxMDdFQzdFNzAwNjUwNDQ2IC8qIE1hdGhPYmplY3QuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEYwQ0FFRkIxRUM0REE2ODAwOTcwRDEyIC8qIEpTSGVhcEZpbmFsaXplclBy
aXZhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTAyMTNFM0QxMjNBNDBDMjAwRDQyMkYzIC8q
IE1lbW9yeVN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCNTQ2N0QxNEY1Q0ZE
NjAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTM3OTRFNzUxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMTA5MDEsNiArMTA5MTYsNyBAQAogCQkJCTk5OEVENjc0MUJFRDcw
QUMwMEREODAxNyAvKiBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTM0NjM4NzcxRTcxRTA2RTAwRjEyQUMxIC8qIFByb21pc2VEZWZlcnJlZFRpbWVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTQ1NThGMTgyNDVFRkQwMENDMzg0MyAvKiBSZW1vdGVJ
bnNwZWN0aW9uVGFyZ2V0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMENBRjAwMUVDNERBOEIw
MDk3MEQxMiAvKiBIZWFwRmluYWxpemVyQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTk1NTY2ODYxRTRFOEIwRjAwQUFFMTNDIC8qIFJlbW90ZUluc3BlY3Rvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5OTJGNTZCNTFFNEU4NEE4MDAzNTk1M0IgLyogUmVtb3RlSW5zcGVjdG9yQ29j
b2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk5OTJGNTZCNjFFNEU4NEFCMDAzNTk1M0IgLyogUmVt
b3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDIxNjY4NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTc2LDYgKzE5NzYs
OSBAQCB2b2lkIEhlYXA6OmZpbmFsaXplKCkKICAgICBpZiAoSGFzT3duUHJvcGVydHlDYWNoZSog
Y2FjaGUgPSB2bSgpLT5oYXNPd25Qcm9wZXJ0eUNhY2hlKCkpCiAgICAgICAgIGNhY2hlLT5jbGVh
cigpOwogICAgIAorICAgIGZvciAoY29uc3QgSGVhcEZpbmFsaXplckNhbGxiYWNrJiBjYWxsYmFj
ayA6IG1faGVhcEZpbmFsaXplckNhbGxiYWNrcykKKyAgICAgICAgY2FsbGJhY2sucnVuKCp2bSgp
KTsKKyAgICAKICAgICBpZiAoT3B0aW9uczo6c3dlZXBTeW5jaHJvbm91c2x5KCkpCiAgICAgICAg
IHN3ZWVwU3luY2hyb25vdXNseSgpOwogCkBAIC0yODE3LDQgKzI4MjAsMTQgQEAgdm9pZCBIZWFw
OjpwZXJmb3JtSW5jcmVtZW50KHNpemVfdCBieXRlcwogICAgIG1faW5jcmVtZW50QmFsYW5jZSAt
PSBieXRlc1Zpc2l0ZWQ7CiB9CiAKK3ZvaWQgSGVhcDo6YWRkSGVhcEZpbmFsaXplckNhbGxiYWNr
KGNvbnN0IEhlYXBGaW5hbGl6ZXJDYWxsYmFjayYgY2FsbGJhY2spCit7CisgICAgbV9oZWFwRmlu
YWxpemVyQ2FsbGJhY2tzLmFwcGVuZChjYWxsYmFjayk7Cit9CisKK3ZvaWQgSGVhcDo6cmVtb3Zl
SGVhcEZpbmFsaXplckNhbGxiYWNrKGNvbnN0IEhlYXBGaW5hbGl6ZXJDYWxsYmFjayYgY2FsbGJh
Y2spCit7CisgICAgbV9oZWFwRmluYWxpemVyQ2FsbGJhY2tzLnJlbW92ZUZpcnN0KGNhbGxiYWNr
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5oCShyZXZpc2lvbiAyMTY2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHQ1JlcXVlc3Qu
aCIKICNpbmNsdWRlICJIYW5kbGVTZXQuaCIKICNpbmNsdWRlICJIYW5kbGVTdGFjay5oIgorI2lu
Y2x1ZGUgIkhlYXBGaW5hbGl6ZXJDYWxsYmFjay5oIgogI2luY2x1ZGUgIkhlYXBPYnNlcnZlci5o
IgogI2luY2x1ZGUgIkxpc3RhYmxlSGFuZGxlci5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgi
CkBAIC0zNzQsNiArMzc1LDkgQEAgcHVibGljOgogI2VuZGlmIC8vIFVTRShDRikKIAogICAgIEhl
YXBWZXJpZmllciogdmVyaWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3ZlcmlmaWVyLmdldCgpOyB9
CisgICAgCisgICAgdm9pZCBhZGRIZWFwRmluYWxpemVyQ2FsbGJhY2soY29uc3QgSGVhcEZpbmFs
aXplckNhbGxiYWNrJik7CisgICAgdm9pZCByZW1vdmVIZWFwRmluYWxpemVyQ2FsbGJhY2soY29u
c3QgSGVhcEZpbmFsaXplckNhbGxiYWNrJik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IEFsbG9jYXRpbmdTY29wZTsKQEAgLTYyMCw3ICs2MjQsOSBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxTdG9wSWZOZWNlc3NhcnlUaW1lcj4gbV9zdG9wSWZOZWNlc3NhcnlUaW1lcjsKIAogICAgIFZl
Y3RvcjxIZWFwT2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKLQorICAgIAorICAgIFZlY3RvcjxIZWFw
RmluYWxpemVyQ2FsbGJhY2s+IG1faGVhcEZpbmFsaXplckNhbGxiYWNrczsKKyAgICAKICAgICB1
bnNpZ25lZCBtX2RlZmVycmFsRGVwdGg7CiAgICAgYm9vbCBtX2RpZERlZmVyR0NXb3JrIHsgZmFs
c2UgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcEZpbmFsaXplckNh
bGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
RmluYWxpemVyQ2FsbGJhY2suY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXBGaW5hbGl6ZXJDYWxsYmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhlYXBGaW5hbGl6ZXJDYWxsYmFjay5o
IgorCisjaW5jbHVkZSAiQVBJQ2FzdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBIZWFw
RmluYWxpemVyQ2FsbGJhY2s6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBv
dXQucHJpbnQoUmF3UG9pbnRlcihiaXR3aXNlX2Nhc3Q8dm9pZCo+KG1fZmluYWxpemVyKSksICI6
IiwgUmF3UG9pbnRlcihtX3VzZXJEYXRhKSk7Cit9CisKK3ZvaWQgSGVhcEZpbmFsaXplckNhbGxi
YWNrOjpydW4oVk0mIHZtKSBjb25zdAoreworICAgIG1fZmluYWxpemVyKHRvUmVmKCZ2bSksIG1f
dXNlckRhdGEpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwRmluYWxpemVyQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwRmluYWxpemVyQ2FsbGJhY2suaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwRmluYWxpemVyQ2FsbGJh
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpT
SGVhcEZpbmFsaXplclByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFZNOworCitjbGFzcyBIZWFwRmluYWxpemVyQ2FsbGJh
Y2sgeworcHVibGljOgorICAgIEhlYXBGaW5hbGl6ZXJDYWxsYmFjayhKU0hlYXBGaW5hbGl6ZXIg
ZmluYWxpemVyID0gbnVsbHB0ciwgdm9pZCAqdXNlckRhdGEgPSBudWxscHRyKQorICAgICAgICA6
IG1fZmluYWxpemVyKGZpbmFsaXplcikKKyAgICAgICAgLCBtX3VzZXJEYXRhKHVzZXJEYXRhKQor
ICAgIHsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhlYXBGaW5hbGl6
ZXJDYWxsYmFjayYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9maW5hbGl6
ZXIgPT0gb3RoZXIubV9maW5hbGl6ZXIKKyAgICAgICAgICAgICYmIG1fdXNlckRhdGEgPT0gb3Ro
ZXIubV91c2VyRGF0YTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEhl
YXBGaW5hbGl6ZXJDYWxsYmFjayYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorICAgIAorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJv
b2woKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICp0aGlzICE9IEhlYXBGaW5hbGl6ZXJD
YWxsYmFjaygpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25z
dDsKKyAgICAKKyAgICB2b2lkIHJ1bihWTSYpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBK
U0hlYXBGaW5hbGl6ZXIgbV9maW5hbGl6ZXI7CisgICAgdm9pZCAqbV91c2VyRGF0YTsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>