<?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>186582</bug_id>
          
          <creation_ts>2018-06-12 17:21:00 -0700</creation_ts>
          <short_desc>[WinCairo] Move unrelated features of WorkQueueWin into IPC::Connection</short_desc>
          <delta_ts>2018-06-15 12:37:23 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Basuke Suzuki">basuke</reporter>
          <assigned_to name="Basuke Suzuki">basuke</assigned_to>
          <cc>achristensen</cc>
    
    <cc>basuke</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1432532</commentid>
    <comment_count>0</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-06-12 17:21:00 -0700</bug_when>
    <thetext>The following feature is not related to WorkQueue&apos;s purpose and only used in IPC::Connection for WebKit Windows. It should be moved there until others actually need that feature.

&gt;         (WTF::WorkQueue::handleCallback):
&gt;         (WTF::WorkQueue::registerHandle):
&gt;         (WTF::WorkQueue::unregisterAndCloseHandle):</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1432888</commentid>
    <comment_count>1</comment_count>
      <attachid>342715</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-06-13 18:03:14 -0700</bug_when>
    <thetext>Created attachment 342715
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1432889</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-13 18:04:39 -0700</bug_when>
    <thetext>Attachment 342715 did not pass style-queue:


ERROR: Source/WebKit/Platform/IPC/win/ConnectionWin.cpp:357:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/Platform/IPC/win/ConnectionWin.cpp:357:  Missing space inside { }.  [whitespace/braces] [5]
Total errors found: 2 in 4 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>1432948</commentid>
    <comment_count>3</comment_count>
      <attachid>342715</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-14 00:42:07 -0700</bug_when>
    <thetext>Comment on attachment 342715
PATCH

View in context: https://bugs.webkit.org/attachment.cgi?id=342715&amp;action=review

Looks nice to me. I want Windows reviewer&apos;s r+ too.

&gt; Source/WebKit/Platform/IPC/win/ConnectionWin.cpp:345
&gt; +    // Connection::platformInvalidate.

=&gt; EventListener::close().

&gt; Source/WebKit/Platform/IPC/win/ConnectionWin.cpp:348
&gt; +    // And do not ::CloseHandle(waitHandle).

=&gt; m_waitHandle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433070</commentid>
    <comment_count>4</comment_count>
      <attachid>342751</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-06-14 11:56:39 -0700</bug_when>
    <thetext>Created attachment 342751
PATCH

Thanks Yusuke.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433133</commentid>
    <comment_count>5</comment_count>
      <attachid>342764</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-06-14 15:06:00 -0700</bug_when>
    <thetext>Created attachment 342764
FIX</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433495</commentid>
    <comment_count>6</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-06-15 12:09:22 -0700</bug_when>
    <thetext>Looks good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433503</commentid>
    <comment_count>7</comment_count>
      <attachid>342764</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-15 12:36:07 -0700</bug_when>
    <thetext>Comment on attachment 342764
FIX

Clearing flags on attachment: 342764

Committed r232888: &lt;https://trac.webkit.org/changeset/232888&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433504</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-15 12:36:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433505</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-06-15 12:37:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/41168126&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342715</attachid>
            <date>2018-06-13 18:03:14 -0700</date>
            <delta_ts>2018-06-14 11:56:39 -0700</delta_ts>
            <desc>PATCH</desc>
            <filename>186582.diff</filename>
            <type>text/plain</type>
            <size>21428</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYzJjODNjZmJlNDEuLmJkMWVjNDM2NGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE4
LTA2LTEzICBCYXN1a2UgU3V6dWtpICA8QmFzdWtlLlN1enVraUBzb255LmNvbT4KKworICAgICAg
ICBbV2luQ2Fpcm9dIE1vdmUgdW5yZWxhdGVkIGZlYXR1cmVzIG9mIFdvcmtRdWV1ZVdpbiBpbnRv
IElQQzo6Q29ubmVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg2NTgyCisKKyAgICAgICAgUmVtb3ZlIHVucmVsYXRlZCBmZWF0dXJlIGZyb20g
V29ya1F1ZXVlV2luLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL1BsYXRmb3JtV2luLmNtYWtlOiBSZW1vdmUgV29ya0l0ZW1Db250ZXh0LioK
KyAgICAgICAgKiB3dGYvV29ya1F1ZXVlLmNwcDoKKyAgICAgICAgKiB3dGYvV29ya1F1ZXVlLmg6
CisgICAgICAgICogd3RmL3dpbi9XaW4zMkhhbmRsZS5oOgorICAgICAgICAqIHd0Zi93aW4vV29y
a0l0ZW1Db250ZXh0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3dGYvd2luL1dvcmtJdGVtQ29u
dGV4dC5oOiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi93aW4vV29ya1F1ZXVlV2luLmNwcDoKKyAg
ICAgICAgKFdURjo6V29ya1F1ZXVlOjpoYW5kbGVDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OldvcmtRdWV1ZTo6cmVnaXN0ZXJIYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpXb3JrUXVldWU6OnVucmVnaXN0ZXJBbmRDbG9zZUhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OldvcmtRdWV1ZTo6dW5yZWdpc3RlcldhaXRBbmREZXN0cm95SXRlbVNvb24pOiBEZWxl
dGVkLgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OnVucmVnaXN0ZXJXYWl0QW5kRGVzdHJveUl0
ZW1DYWxsYmFjayk6IERlbGV0ZWQuCisKIDIwMTgtMDYtMTEgIFNhYW0gQmFyYXRpICA8c2JhcmF0
aUBhcHBsZS5jb20+CiAKICAgICAgICAgVGhlIE5hdHVyYWxMb29wcyBhbGdvcml0aG0gb25seSB3
b3JrcyB3aGVuIHRoZSBsaXN0IG9mIGJsb2NrcyBpbiBhIGxvb3AgaXMgZGUtZHVwbGljYXRlZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCAwMTRkNzM5MWQyOS4uNDY4NTE5NmNlYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCkBAIC00LDcgKzQsNiBAQCBsaXN0KEFQUEVORCBXVEZf
UFVCTElDX0hFQURFUlMKICAgICB3aW4vR0RJT2JqZWN0LmgKICAgICB3aW4vU29mdExpbmtpbmcu
aAogICAgIHdpbi9XaW4zMkhhbmRsZS5oCi0gICAgd2luL1dvcmtJdGVtQ29udGV4dC5oCiApCiAK
IGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCkBAIC0xNiw3ICsxNSw2IEBAIGxpc3QoQVBQRU5EIFdU
Rl9TT1VSQ0VTCiAgICAgd2luL01lbW9yeUZvb3RwcmludFdpbi5jcHAKICAgICB3aW4vTWVtb3J5
UHJlc3N1cmVIYW5kbGVyV2luLmNwcAogICAgIHdpbi9SdW5Mb29wV2luLmNwcAotICAgIHdpbi9X
b3JrSXRlbUNvbnRleHQuY3BwCiAgICAgd2luL1dvcmtRdWV1ZVdpbi5jcHAKICkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1dvcmtR
dWV1ZS5jcHAKaW5kZXggMDYzZDcyYzJjNzUuLjI0OGRiMDg4NmNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9Xb3JrUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5j
cHAKQEAgLTM4LDEwICszOCw2IEBACiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgVVNFKFdJTkRPV1NfRVZFTlRfTE9PUCkK
LSNpbmNsdWRlIDx3dGYvd2luL1dvcmtJdGVtQ29udGV4dC5oPgotI2VuZGlmCi0KIG5hbWVzcGFj
ZSBXVEYgewogCiBSZWY8V29ya1F1ZXVlPiBXb3JrUXVldWU6OmNyZWF0ZShjb25zdCBjaGFyKiBu
YW1lLCBUeXBlIHR5cGUsIFFPUyBxb3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Xb3Jr
UXVldWUuaCBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCmluZGV4IDg1ZWNhNjJjMGNhLi40
ZWNkMmI1ZWIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKKysrIGIv
U291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKQEAgLTUwLDEwICs1MCw2IEBACiAKIG5hbWVzcGFj
ZSBXVEYgewogCi0jaWYgVVNFKFdJTkRPV1NfRVZFTlRfTE9PUCkKLWNsYXNzIFdvcmtJdGVtQ29u
dGV4dDsKLSNlbmRpZgotCiBjbGFzcyBXb3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25E
aXNwYXRjaGVyIHsKIAogcHVibGljOgpAQCAtODEsOSArNzcsNiBAQCBwdWJsaWM6CiAgICAgZGlz
cGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwYXRjaFF1
ZXVlOyB9CiAjZWxpZiBVU0UoR0xJQl9FVkVOVF9MT09QKSB8fCBVU0UoR0VORVJJQ19FVkVOVF9M
T09QKQogICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVybiAqbV9ydW5Mb29wOyB9
Ci0jZWxpZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIHJlZ2lzdGVySGFuZGxlKEhBTkRMRSwgRnVuY3Rpb248dm9pZCgpPiYmKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCB1bnJlZ2lzdGVyQW5kQ2xvc2VIYW5kbGUoSEFORExFKTsKICNl
bmRpZgogCiBwcml2YXRlOgpAQCAtOTMsMTYgKzg2LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBw
bGF0Zm9ybUludmFsaWRhdGUoKTsKIAogI2lmIFVTRShXSU5ET1dTX0VWRU5UX0xPT1ApCi0gICAg
c3RhdGljIHZvaWQgQ0FMTEJBQ0sgaGFuZGxlQ2FsbGJhY2sodm9pZCogY29udGV4dCwgQk9PTEVB
TiB0aW1lck9yV2FpdEZpcmVkKTsKICAgICBzdGF0aWMgdm9pZCBDQUxMQkFDSyB0aW1lckNhbGxi
YWNrKHZvaWQqIGNvbnRleHQsIEJPT0xFQU4gdGltZXJPcldhaXRGaXJlZCk7CiAgICAgc3RhdGlj
IERXT1JEIFdJTkFQSSB3b3JrVGhyZWFkQ2FsbGJhY2sodm9pZCogY29udGV4dCk7CiAKICAgICBi
b29sIHRyeVJlZ2lzdGVyQXNXb3JrVGhyZWFkKCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyQXNXb3Jr
VGhyZWFkKCk7CiAgICAgdm9pZCBwZXJmb3JtV29ya09uUmVnaXN0ZXJlZFdvcmtUaHJlYWQoKTsK
LQotICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJXYWl0QW5kRGVzdHJveUl0ZW1Tb29uKFJlZjxX
b3JrSXRlbUNvbnRleHQ+JiYpOwotICAgIHN0YXRpYyBEV09SRCBXSU5BUEkgdW5yZWdpc3Rlcldh
aXRBbmREZXN0cm95SXRlbUNhbGxiYWNrKHZvaWQqIGNvbnRleHQpOwogI2VuZGlmCiAKICNpZiBV
U0UoQ09DT0FfRVZFTlRfTE9PUCkKQEAgLTExMiw5ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIHZv
bGF0aWxlIExPTkcgbV9pc1dvcmtUaHJlYWRSZWdpc3RlcmVkOwogCiAgICAgTG9jayBtX2Z1bmN0
aW9uUXVldWVMb2NrOwotICAgIExvY2sgbV9pdGVtc01hcExvY2s7CiAgICAgVmVjdG9yPEZ1bmN0
aW9uPHZvaWQoKT4+IG1fZnVuY3Rpb25RdWV1ZTsKLSAgICBIYXNoTWFwPEhBTkRMRSwgUmVmPFdv
cmtJdGVtQ29udGV4dD4+IG1faXRlbXNNYXA7CiAKICAgICBIQU5ETEUgbV90aW1lclF1ZXVlOwog
I2VsaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkgfHwgVVNFKEdFTkVSSUNfRVZFTlRfTE9PUCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9XaW4zMkhhbmRsZS5oIGIvU291cmNlL1dURi93
dGYvd2luL1dpbjMySGFuZGxlLmgKaW5kZXggYTZmMWRmMzI2OGIuLmFhN2Y0OTBiMmZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vV2luMzJIYW5kbGUuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi93aW4vV2luMzJIYW5kbGUuaApAQCAtMzMsOCArMzMsNiBAQCBuYW1lc3BhY2UgV1RGIHsK
IGNsYXNzIFdpbjMySGFuZGxlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXaW4zMkhhbmRs
ZSk7CiAKLSAgICBmcmllbmQgY2xhc3MgV29ya1F1ZXVlOwotCiBwdWJsaWM6CiAgICAgV2luMzJI
YW5kbGUoKSA6IG1faGFuZGxlKElOVkFMSURfSEFORExFX1ZBTFVFKSB7IH0KICAgICBleHBsaWNp
dCBXaW4zMkhhbmRsZShIQU5ETEUgaGFuZGxlKSA6IG1faGFuZGxlKGhhbmRsZSkgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya0l0ZW1Db250ZXh0LmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3dpbi9Xb3JrSXRlbUNvbnRleHQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCA5ZWMxMWE5ZDMyMi4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvd2luL1dv
cmtJdGVtQ29udGV4dC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEwLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAxNyBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5j
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV29ya0l0ZW1Db250
ZXh0LmgiCi0KLSNpbmNsdWRlIDxXaW5kb3dzLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5o
PgotI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLVdvcmtJ
dGVtQ29udGV4dDo6V29ya0l0ZW1Db250ZXh0KEhBTkRMRSBoYW5kbGUsIEhBTkRMRSB3YWl0SGFu
ZGxlLCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24sIFdvcmtRdWV1ZSogcXVldWUpCi0gICAg
OiBtX2hhbmRsZShoYW5kbGUpCi0gICAgLCBtX3dhaXRIYW5kbGUod2FpdEhhbmRsZSkKLSAgICAs
IG1fZnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCi0gICAgLCBtX3F1ZXVlKHF1ZXVlKQotewot
fQotCi1SZWY8V29ya0l0ZW1Db250ZXh0PiBXb3JrSXRlbUNvbnRleHQ6OmNyZWF0ZShIQU5ETEUg
aGFuZGxlLCBIQU5ETEUgd2FpdEhhbmRsZSwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uLCBX
b3JrUXVldWUqIHF1ZXVlKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtJdGVtQ29u
dGV4dChoYW5kbGUsIHdhaXRIYW5kbGUsIFdURk1vdmUoZnVuY3Rpb24pLCBxdWV1ZSkpOwotfQot
Ci1Xb3JrSXRlbUNvbnRleHQ6On5Xb3JrSXRlbUNvbnRleHQoKQotewotfQotCi19IC8vIG5hbWVz
cGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrSXRlbUNvbnRleHQu
aCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrSXRlbUNvbnRleHQuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMGFhMTVjNzUyNjkuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYv
d3RmL3dpbi9Xb3JrSXRlbUNvbnRleHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkg
SW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaW5jbHVkZSA8V2luZG93cy5oPgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvd2luL1dpbjMy
SGFuZGxlLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBXb3JrUXVldWU7Ci0KLWNsYXNz
IFdvcmtJdGVtQ29udGV4dCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXb3JrSXRlbUNv
bnRleHQ+IHsKLQotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V29ya0l0ZW1Db250ZXh0PiBjcmVh
dGUoSEFORExFLCBIQU5ETEUsIEZ1bmN0aW9uPHZvaWQoKT4mJiwgV29ya1F1ZXVlKik7Ci0gICAg
dmlydHVhbCB+V29ya0l0ZW1Db250ZXh0KCk7Ci0KLSAgICBXaW4zMkhhbmRsZSYgaGFuZGxlKCkg
eyByZXR1cm4gbV9oYW5kbGU7IH0KLSAgICBXaW4zMkhhbmRsZSYgd2FpdEhhbmRsZSgpIHsgcmV0
dXJuIG1fd2FpdEhhbmRsZTsgfQotICAgIEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gbV9mdW5jdGlvbjsgfQotICAgIFdvcmtRdWV1ZSogcXVldWUoKSBjb25zdCB7IHJldHVy
biBtX3F1ZXVlLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgV29ya0l0ZW1Db250ZXh0KEhBTkRM
RSwgSEFORExFLCBGdW5jdGlvbjx2b2lkKCk+JiYsIFdvcmtRdWV1ZSopOwotCi0gICAgV2luMzJI
YW5kbGUgbV9oYW5kbGU7Ci0gICAgV2luMzJIYW5kbGUgbV93YWl0SGFuZGxlOwotICAgIEZ1bmN0
aW9uPHZvaWQoKT4gbV9mdW5jdGlvbjsKLSAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX3F1ZXVlOwot
fTsKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcAppbmRleCA0MWJmZGUwOTZkNy4u
NzgyMzBjMGMxYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3BwCkBAIC0yOSw0NCAr
MjksOSBAQAogCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3dpbi9Xb3JrSXRlbUNvbnRleHQuaD4KIAogbmFtZXNw
YWNlIFdURiB7CiAKLXZvaWQgV29ya1F1ZXVlOjpoYW5kbGVDYWxsYmFjayh2b2lkKiBkYXRhLCBC
T09MRUFOIHRpbWVyT3JXYWl0RmlyZWQpCi17Ci0gICAgQVNTRVJUX0FSRyhkYXRhLCBkYXRhKTsK
LSAgICBBU1NFUlRfQVJHKHRpbWVyT3JXYWl0RmlyZWQsICF0aW1lck9yV2FpdEZpcmVkKTsKLQot
ICAgIFdvcmtJdGVtQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PFdvcmtJdGVtQ29udGV4
dCo+KGRhdGEpOwotICAgIFdvcmtRdWV1ZSogcXVldWUgPSBjb250ZXh0LT5xdWV1ZSgpOwotCi0g
ICAgUmVmUHRyPFdvcmtJdGVtQ29udGV4dD4gcHJvdGVjdG9yKGNvbnRleHQpOwotICAgIHF1ZXVl
LT5kaXNwYXRjaChbcHJvdGVjdG9yXSB7Ci0gICAgICAgIHByb3RlY3Rvci0+ZnVuY3Rpb24oKSgp
OwotICAgIH0pOwotfQotCi12b2lkIFdvcmtRdWV1ZTo6cmVnaXN0ZXJIYW5kbGUoSEFORExFIGhh
bmRsZSwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQotewotICAgIFJlZjxXb3JrSXRlbUNv
bnRleHQ+IGNvbnRleHQgPSBXb3JrSXRlbUNvbnRleHQ6OmNyZWF0ZShoYW5kbGUsIG51bGxwdHIs
IFdURk1vdmUoZnVuY3Rpb24pLCB0aGlzKTsKLQotICAgIGlmICghOjpSZWdpc3RlcldhaXRGb3JT
aW5nbGVPYmplY3QoJmNvbnRleHQtPndhaXRIYW5kbGUoKS5tX2hhbmRsZSwgaGFuZGxlLCBoYW5k
bGVDYWxsYmFjaywgY29udGV4dC5wdHIoKSwgSU5GSU5JVEUsIFdUX0VYRUNVVEVERUZBVUxUKSkK
LSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3RpbWVyUXVldWUsICI6OlJlZ2lzdGVyV2Fp
dEZvclNpbmdsZU9iamVjdCAlbHUiLCA6OkdldExhc3RFcnJvcigpKTsKLQotICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9pdGVtc01hcExvY2spOwotICAgIEFTU0VSVF9BUkcoaGFuZGxlLCAh
bV9pdGVtc01hcC5jb250YWlucyhoYW5kbGUpKTsKLSAgICBtX2l0ZW1zTWFwLnNldChoYW5kbGUs
IFdURk1vdmUoY29udGV4dCkpOwotfQotCi12b2lkIFdvcmtRdWV1ZTo6dW5yZWdpc3RlckFuZENs
b3NlSGFuZGxlKEhBTkRMRSBoYW5kbGUpCi17Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2l0ZW1zTWFwTG9jayk7Ci0gICAgQVNTRVJUX0FSRyhoYW5kbGUsIG1faXRlbXNNYXAuY29udGFp
bnMoaGFuZGxlKSk7Ci0KLSAgICB1bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtU29vbihtX2l0
ZW1zTWFwLnRha2UoaGFuZGxlKS52YWx1ZSgpKTsKLX0KLQogRFdPUkQgV29ya1F1ZXVlOjp3b3Jr
VGhyZWFkQ2FsbGJhY2sodm9pZCogY29udGV4dCkKIHsKICAgICBBU1NFUlRfQVJHKGNvbnRleHQs
IGNvbnRleHQpOwpAQCAtMjIyLDI2ICsxODcsNCBAQCB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hB
ZnRlcihTZWNvbmRzIGR1cmF0aW9uLCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAg
Y29udGV4dC5sZWFrUmVmKCk7CiB9CiAKLXZvaWQgV29ya1F1ZXVlOjp1bnJlZ2lzdGVyV2FpdEFu
ZERlc3Ryb3lJdGVtU29vbihSZWY8V29ya0l0ZW1Db250ZXh0PiYmIHdvcmtJdGVtKQotewotICAg
IC8vIFdlJ3JlIGdvaW5nIHRvIG1ha2UgYSBibG9ja2luZyBjYWxsIHRvIDo6VW5yZWdpc3Rlcldh
aXRFeCBiZWZvcmUgY2xvc2luZyB0aGUgaGFuZGxlLiAoVGhlCi0gICAgLy8gYmxvY2tpbmcgdmVy
c2lvbiBvZiA6OlVucmVnaXN0ZXJXYWl0RXggaXMgbXVjaCBzaW1wbGVyIHRoYW4gdGhlIG5vbi1i
bG9ja2luZyB2ZXJzaW9uLikgSWYgd2UKLSAgICAvLyBkbyB0aGlzIG9uIHRoZSBjdXJyZW50IHRo
cmVhZCwgd2UnbGwgZGVhZGxvY2sgaWYgd2UncmUgY3VycmVudGx5IGluIGEgY2FsbGJhY2sgZnVu
Y3Rpb24gZm9yCi0gICAgLy8gdGhlIHdhaXQgd2UncmUgdW5yZWdpc3RlcmluZy4gU28gaW5zdGVh
ZCB3ZSBkbyBpdCBhc3luY2hyb25vdXNseSBvbiBzb21lIG90aGVyIHdvcmtlciB0aHJlYWQuCi0g
ICAgOjpRdWV1ZVVzZXJXb3JrSXRlbSh1bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtQ2FsbGJh
Y2ssIHdvcmtJdGVtLnB0cigpLCBXVF9FWEVDVVRFREVGQVVMVCk7Ci19Ci0KLURXT1JEIFdJTkFQ
SSBXb3JrUXVldWU6OnVucmVnaXN0ZXJXYWl0QW5kRGVzdHJveUl0ZW1DYWxsYmFjayh2b2lkKiBk
YXRhKQotewotICAgIEFTU0VSVF9BUkcoZGF0YSwgZGF0YSk7Ci0gICAgV29ya0l0ZW1Db250ZXh0
KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8V29ya0l0ZW1Db250ZXh0Kj4oZGF0YSk7Ci0KLSAgICAv
LyBOb3cgdGhhdCB3ZSBrbm93IHdlJ3JlIG5vdCBpbiBhIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciB0
aGUgd2FpdCB3ZSdyZSB1bnJlZ2lzdGVyaW5nLCB3ZSBjYW4KLSAgICAvLyBtYWtlIGEgYmxvY2tp
bmcgY2FsbCB0byA6OlVucmVnaXN0ZXJXYWl0RXguCi0gICAgaWYgKCE6OlVucmVnaXN0ZXJXYWl0
RXgoY29udGV4dC0+d2FpdEhhbmRsZSgpLmdldCgpLCBJTlZBTElEX0hBTkRMRV9WQUxVRSkpCi0g
ICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZmFsc2UsICI6OlVucmVnaXN0ZXJXYWl0RXggZmFp
bGVkIHdpdGggJyVzJyIsIDo6R2V0TGFzdEVycm9yKCkpOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0K
IH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhNzc3ZDc1ZTA2ZC4uM2U4MDA2Y2MzNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTgtMDYtMTMgIEJhc3VrZSBTdXp1a2kgIDxC
YXN1a2UuU3V6dWtpQHNvbnkuY29tPgorCisgICAgICAgIFtXaW5DYWlyb10gTW92ZSB1bnJlbGF0
ZWQgZmVhdHVyZXMgb2YgV29ya1F1ZXVlV2luIGludG8gSVBDOjpDb25uZWN0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY1ODIKKworICAgICAg
ICBBZGQgRXZlbnRMaXN0ZW5lciBwcml2YXRlIGNsYXNzIHRvIGhhbmRsZSBzaWduYWxlZCB0YXNr
cyBmb3IgSS9PLgorICAgICAgICBPcmlnaW5hbGx5IHRoZXkgd2VyZSBpbiBXVEY6OldvcmtRdWV1
ZVdpbiwgYnV0IHRob3NlIGZlYXR1cmVzIHdlcmUgbm90IHJlbGF0ZWQKKyAgICAgICAgdG8gV29y
a1F1ZXVlIGFuZCBvbmx5IHVzZWQgaW4gSVBDOjpDb25uZWN0aW9uV2luLiBNb3ZlZCBsb2dpYyBp
cyBtb3JlIHNwZWNpYWxpemVkCisgICAgICAgIHRoYW4gb2xkIGdlbmVyYWxpemVkIGxvZ2ljLiBU
aGF0IHdhcyB1bm5lZWRlZCBnZW5lcmFsaXphdGlvbi4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OkV2ZW50TGlzdGVuZXI6OnN0YXRlKToKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpw
bGF0Zm9ybUludmFsaWRhdGUpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZWFkRXZlbnRI
YW5kbGVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6d3JpdGVFdmVudEhhbmRsZXIpOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjppbnZva2VSZWFkRXZlbnRIYW5kbGVyKToKKyAgICAg
ICAgKElQQzo6Q29ubmVjdGlvbjo6aW52b2tlV3JpdGVFdmVudEhhbmRsZXIpOgorICAgICAgICAo
SVBDOjpDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZE91
dGdvaW5nTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OkV2ZW50TGlzdGVuZXI6
Om9wZW4pOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpFdmVudExpc3RlbmVyOjpjYWxsYmFj
ayk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OkV2ZW50TGlzdGVuZXI6OmNsb3NlKToKKwog
MjAxOC0wNi0xMiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAg
ICBUdXJuIENTUyBTcHJpbmcgQW5pbWF0aW9ucyBhbmQgTGluayBQcmVsb2FkIG9mZiBieSBkZWZh
dWx0IGZvciBwcm9kdWN0aW9uIGJ1aWxkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5l
Y3Rpb24uaAppbmRleCA4YzM4MGIzZjllZC4uZjI1OThmNjk0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTM0MywxMiArMzQzLDI5IEBAIHByaXZhdGU6CiAg
ICAgLy8gQ2FsbGVkIG9uIHRoZSBjb25uZWN0aW9uIHF1ZXVlLgogICAgIHZvaWQgcmVhZEV2ZW50
SGFuZGxlcigpOwogICAgIHZvaWQgd3JpdGVFdmVudEhhbmRsZXIoKTsKKyAgICB2b2lkIGludm9r
ZVJlYWRFdmVudEhhbmRsZXIoKTsKKyAgICB2b2lkIGludm9rZVdyaXRlRXZlbnRIYW5kbGVyKCk7
CisKKyAgICBjbGFzcyBFdmVudExpc3RlbmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZvaWQg
b3BlbihGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgICAgICB2b2lkIGNsb3NlKCk7CisKKyAgICAg
ICAgT1ZFUkxBUFBFRCYgc3RhdGUoKSB7IHJldHVybiBtX3N0YXRlOyB9CisKKyAgICBwcml2YXRl
OgorICAgICAgICBzdGF0aWMgdm9pZCBjYWxsYmFjayh2b2lkKiwgQk9PTEVBTik7CisKKyAgICAg
ICAgT1ZFUkxBUFBFRCBtX3N0YXRlOworICAgICAgICBIQU5ETEUgbV93YWl0SGFuZGxlIHsgSU5W
QUxJRF9IQU5ETEVfVkFMVUUgfTsKKyAgICAgICAgRnVuY3Rpb248dm9pZCgpPiBtX2hhbmRsZXI7
CisgICAgfTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBtX3JlYWRCdWZmZXI7Ci0gICAgT1ZFUkxB
UFBFRCBtX3JlYWRTdGF0ZTsKKyAgICBFdmVudExpc3RlbmVyIG1fcmVhZExpc3RlbmVyOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBtX3BlbmRpbmdXcml0ZUVuY29kZXI7Ci0gICAgT1ZF
UkxBUFBFRCBtX3dyaXRlU3RhdGU7Ci0gICAgSEFORExFIG1fY29ubmVjdGlvblBpcGU7CisgICAg
RXZlbnRMaXN0ZW5lciBtX3dyaXRlTGlzdGVuZXI7CisgICAgSEFORExFIG1fY29ubmVjdGlvblBp
cGUgeyBJTlZBTElEX0hBTkRMRV9WQUxVRSB9OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKaW5kZXggYmM5NGM2N2Qx
MTguLmVkNTk4OTVlMjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93
aW4vQ29ubmVjdGlvbldpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2lu
L0Nvbm5lY3Rpb25XaW4uY3BwCkBAIC03MiwxMiArNzIsNiBAQCBib29sIENvbm5lY3Rpb246OmNy
ZWF0ZVNlcnZlckFuZENsaWVudElkZW50aWZpZXJzKEhBTkRMRSYgc2VydmVySWRlbnRpZmllciwg
SEFORAogCiB2b2lkIENvbm5lY3Rpb246OnBsYXRmb3JtSW5pdGlhbGl6ZShJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiB7Ci0gICAgbWVtc2V0KCZtX3JlYWRTdGF0ZSwgMCwgc2l6ZW9mKG1fcmVhZFN0
YXRlKSk7Ci0gICAgbV9yZWFkU3RhdGUuaEV2ZW50ID0gOjpDcmVhdGVFdmVudFcoMCwgRkFMU0Us
IEZBTFNFLCAwKTsKLQotICAgIG1lbXNldCgmbV93cml0ZVN0YXRlLCAwLCBzaXplb2YobV93cml0
ZVN0YXRlKSk7Ci0gICAgbV93cml0ZVN0YXRlLmhFdmVudCA9IDo6Q3JlYXRlRXZlbnRXKDAsIEZB
TFNFLCBGQUxTRSwgMCk7Ci0KICAgICBtX2Nvbm5lY3Rpb25QaXBlID0gaWRlbnRpZmllcjsKIH0K
IApAQCAtODgsMTEgKzgyLDggQEAgdm9pZCBDb25uZWN0aW9uOjpwbGF0Zm9ybUludmFsaWRhdGUo
KQogCiAgICAgbV9pc0Nvbm5lY3RlZCA9IGZhbHNlOwogCi0gICAgbV9jb25uZWN0aW9uUXVldWUt
PnVucmVnaXN0ZXJBbmRDbG9zZUhhbmRsZShtX3JlYWRTdGF0ZS5oRXZlbnQpOwotICAgIG1fcmVh
ZFN0YXRlLmhFdmVudCA9IDA7Ci0KLSAgICBtX2Nvbm5lY3Rpb25RdWV1ZS0+dW5yZWdpc3RlckFu
ZENsb3NlSGFuZGxlKG1fd3JpdGVTdGF0ZS5oRXZlbnQpOwotICAgIG1fd3JpdGVTdGF0ZS5oRXZl
bnQgPSAwOworICAgIG1fcmVhZExpc3RlbmVyLmNsb3NlKCk7CisgICAgbV93cml0ZUxpc3RlbmVy
LmNsb3NlKCk7CiAKICAgICA6OkNsb3NlSGFuZGxlKG1fY29ubmVjdGlvblBpcGUpOwogICAgIG1f
Y29ubmVjdGlvblBpcGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKQEAgLTEwNiw3ICs5Nyw3IEBA
IHZvaWQgQ29ubmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcigpCiAgICAgd2hpbGUgKHRydWUpIHsK
ICAgICAgICAgLy8gQ2hlY2sgaWYgd2UgZ290IHNvbWUgZGF0YS4KICAgICAgICAgRFdPUkQgbnVt
YmVyT2ZCeXRlc1JlYWQgPSAwOwotICAgICAgICBpZiAoITo6R2V0T3ZlcmxhcHBlZFJlc3VsdCht
X2Nvbm5lY3Rpb25QaXBlLCAmbV9yZWFkU3RhdGUsICZudW1iZXJPZkJ5dGVzUmVhZCwgRkFMU0Up
KSB7CisgICAgICAgIGlmICghOjpHZXRPdmVybGFwcGVkUmVzdWx0KG1fY29ubmVjdGlvblBpcGUs
ICZtX3JlYWRMaXN0ZW5lci5zdGF0ZSgpLCAmbnVtYmVyT2ZCeXRlc1JlYWQsIEZBTFNFKSkgewog
ICAgICAgICAgICAgRFdPUkQgZXJyb3IgPSA6OkdldExhc3RFcnJvcigpOwogICAgICAgICAgICAg
c3dpdGNoIChlcnJvcikgewogICAgICAgICAgICAgY2FzZSBFUlJPUl9CUk9LRU5fUElQRToKQEAg
LTEzMyw3ICsxMjQsNyBAQCB2b2lkIENvbm5lY3Rpb246OnJlYWRFdmVudEhhbmRsZXIoKQogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIG1fcmVhZEJ1ZmZlci5n
cm93KG1fcmVhZEJ1ZmZlci5zaXplKCkgKyBieXRlc1RvUmVhZCk7Ci0gICAgICAgICAgICAgICAg
aWYgKCE6OlJlYWRGaWxlKG1fY29ubmVjdGlvblBpcGUsIG1fcmVhZEJ1ZmZlci5kYXRhKCkgKyBu
dW1iZXJPZkJ5dGVzUmVhZCwgYnl0ZXNUb1JlYWQsIDAsICZtX3JlYWRTdGF0ZSkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoITo6UmVhZEZpbGUobV9jb25uZWN0aW9uUGlwZSwgbV9yZWFkQnVmZmVy
LmRhdGEoKSArIG51bWJlck9mQnl0ZXNSZWFkLCBieXRlc1RvUmVhZCwgMCwgJm1fcmVhZExpc3Rl
bmVyLnN0YXRlKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIERXT1JEIGVycm9yID0gOjpHZXRM
YXN0RXJyb3IoKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE4Miw3ICsxNzMsNyBAQCB2b2lkIENvbm5l
Y3Rpb246OnJlYWRFdmVudEhhbmRsZXIoKQogCiAgICAgICAgIC8vIEVpdGhlciByZWFkIHRoZSBu
ZXh0IGF2YWlsYWJsZSBtZXNzYWdlICh3aGljaCBzaG91bGQgb2NjdXIgc3luY2hyb25vdXNseSks
IG9yIHN0YXJ0IGFuCiAgICAgICAgIC8vIGFzeW5jaHJvbm91cyByZWFkIG9mIHRoZSBuZXh0IG1l
c3NhZ2UgdGhhdCBiZWNvbWVzIGF2YWlsYWJsZS4KLSAgICAgICAgQk9PTCByZXN1bHQgPSA6OlJl
YWRGaWxlKG1fY29ubmVjdGlvblBpcGUsIG1fcmVhZEJ1ZmZlci5kYXRhKCksIG1fcmVhZEJ1ZmZl
ci5zaXplKCksIDAsICZtX3JlYWRTdGF0ZSk7CisgICAgICAgIEJPT0wgcmVzdWx0ID0gOjpSZWFk
RmlsZShtX2Nvbm5lY3Rpb25QaXBlLCBtX3JlYWRCdWZmZXIuZGF0YSgpLCBtX3JlYWRCdWZmZXIu
c2l6ZSgpLCAwLCAmbV9yZWFkTGlzdGVuZXIuc3RhdGUoKSk7CiAgICAgICAgIGlmIChyZXN1bHQp
IHsKICAgICAgICAgICAgIC8vIFRoZXJlIHdhcyBhbHJlYWR5IGEgbWVzc2FnZSB3YWl0aW5nIGlu
IHRoZSBwaXBlLCBhbmQgd2UgcmVhZCBpdCBzeW5jaHJvbm91c2x5LgogICAgICAgICAgICAgLy8g
UHJvY2VzcyBpdC4KQEAgLTIxNSw3ICsyMDYsNyBAQCB2b2lkIENvbm5lY3Rpb246OndyaXRlRXZl
bnRIYW5kbGVyKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRFdPUkQgbnVtYmVyT2ZCeXRlc1dy
aXR0ZW4gPSAwOwotICAgIGlmICghOjpHZXRPdmVybGFwcGVkUmVzdWx0KG1fY29ubmVjdGlvblBp
cGUsICZtX3dyaXRlU3RhdGUsICZudW1iZXJPZkJ5dGVzV3JpdHRlbiwgRkFMU0UpKSB7CisgICAg
aWYgKCE6OkdldE92ZXJsYXBwZWRSZXN1bHQobV9jb25uZWN0aW9uUGlwZSwgJm1fd3JpdGVMaXN0
ZW5lci5zdGF0ZSgpLCAmbnVtYmVyT2ZCeXRlc1dyaXR0ZW4sIEZBTFNFKSkgewogICAgICAgICBE
V09SRCBlcnJvciA9IDo6R2V0TGFzdEVycm9yKCk7CiAKICAgICAgICAgaWYgKGVycm9yID09IEVS
Uk9SX0lPX0lOQ09NUExFVEUpIHsKQEAgLTIzNywyNiArMjI4LDM2IEBAIHZvaWQgQ29ubmVjdGlv
bjo6d3JpdGVFdmVudEhhbmRsZXIoKQogICAgIHNlbmRPdXRnb2luZ01lc3NhZ2VzKCk7CiB9CiAK
K3ZvaWQgQ29ubmVjdGlvbjo6aW52b2tlUmVhZEV2ZW50SGFuZGxlcigpCit7CisgICAgbV9jb25u
ZWN0aW9uUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyldIHsKKyAgICAgICAgcmVhZEV2ZW50SGFuZGxlcigpOworICAgIH0pOworfQorCit2b2lkIENv
bm5lY3Rpb246Omludm9rZVdyaXRlRXZlbnRIYW5kbGVyKCkKK3sKKyAgICBtX2Nvbm5lY3Rpb25R
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewor
ICAgICAgICB3cml0ZUV2ZW50SGFuZGxlcigpOworICAgIH0pOworfQorCiBib29sIENvbm5lY3Rp
b246Om9wZW4oKQogewogICAgIC8vIFdlIGNvbm5lY3RlZCB0aGUgdHdvIGVuZHMgb2YgdGhlIHBp
cGUgaW4gY3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMuCiAgICAgbV9pc0Nvbm5lY3Rl
ZCA9IHRydWU7CiAKLSAgICBSZWZQdHI8Q29ubmVjdGlvbj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
LQogICAgIC8vIFN0YXJ0IGxpc3RlbmluZyBmb3IgcmVhZCBhbmQgd3JpdGUgc3RhdGUgZXZlbnRz
LgotICAgIG1fY29ubmVjdGlvblF1ZXVlLT5yZWdpc3RlckhhbmRsZShtX3JlYWRTdGF0ZS5oRXZl
bnQsIFtwcm90ZWN0ZWRUaGlzXSB7Ci0gICAgICAgIHByb3RlY3RlZFRoaXMtPnJlYWRFdmVudEhh
bmRsZXIoKTsKKyAgICBtX3JlYWRMaXN0ZW5lci5vcGVuKFt0aGlzXSB7CisgICAgICAgIGludm9r
ZVJlYWRFdmVudEhhbmRsZXIoKTsKICAgICB9KTsKIAotICAgIG1fY29ubmVjdGlvblF1ZXVlLT5y
ZWdpc3RlckhhbmRsZShtX3dyaXRlU3RhdGUuaEV2ZW50LCBbcHJvdGVjdGVkVGhpc10gewotICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT53cml0ZUV2ZW50SGFuZGxlcigpOworICAgIG1fd3JpdGVMaXN0
ZW5lci5vcGVuKFt0aGlzXSB7CisgICAgICAgIGludm9rZVdyaXRlRXZlbnRIYW5kbGVyKCk7CiAg
ICAgfSk7CiAKICAgICAvLyBTY2hlZHVsZSBhIHJlYWQuCi0gICAgbV9jb25uZWN0aW9uUXVldWUt
PmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzXSB7Ci0gICAgICAgIHByb3RlY3RlZFRoaXMtPnJlYWRF
dmVudEhhbmRsZXIoKTsKLSAgICB9KTsKKyAgICBpbnZva2VSZWFkRXZlbnRIYW5kbGVyKCk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI4MSw3ICsyODIsNyBAQCBib29sIENvbm5lY3Rpb246
OnNlbmRPdXRnb2luZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29kZXIpCiAK
ICAgICAvLyBXcml0ZSB0aGUgb3V0Z29pbmcgbWVzc2FnZS4KIAotICAgIGlmICg6OldyaXRlRmls
ZShtX2Nvbm5lY3Rpb25QaXBlLCBlbmNvZGVyLT5idWZmZXIoKSwgZW5jb2Rlci0+YnVmZmVyU2l6
ZSgpLCAwLCAmbV93cml0ZVN0YXRlKSkgeworICAgIGlmICg6OldyaXRlRmlsZShtX2Nvbm5lY3Rp
b25QaXBlLCBlbmNvZGVyLT5idWZmZXIoKSwgZW5jb2Rlci0+YnVmZmVyU2l6ZSgpLCAwLCAmbV93
cml0ZUxpc3RlbmVyLnN0YXRlKCkpKSB7CiAgICAgICAgIC8vIFdlIHN1Y2Nlc3NmdWxseSBzZW50
IHRoaXMgbWVzc2FnZS4KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzE1LDQgKzMx
Niw0NSBAQCB2b2lkIENvbm5lY3Rpb246OmRpZFJlY2VpdmVTeW5jUmVwbHkoT3B0aW9uU2V0PFNl
bmRTeW5jT3B0aW9uPikKIHsKIH0KIAordm9pZCBDb25uZWN0aW9uOjpFdmVudExpc3RlbmVyOjpv
cGVuKEZ1bmN0aW9uPHZvaWQoKT4mJiBoYW5kbGVyKQoreworICAgIG1faGFuZGxlciA9IFdURk1v
dmUoaGFuZGxlcik7CisKKyAgICBtZW1zZXQoJm1fc3RhdGUsIDAsIHNpemVvZihtX3N0YXRlKSk7
CisgICAgbV9zdGF0ZS5oRXZlbnQgPSA6OkNyZWF0ZUV2ZW50VygwLCBGQUxTRSwgRkFMU0UsIDAp
OworCisgICAgQk9PTCByZXN1bHQ7CisgICAgcmVzdWx0ID0gOjpSZWdpc3RlcldhaXRGb3JTaW5n
bGVPYmplY3QoJm1fd2FpdEhhbmRsZSwgbV9zdGF0ZS5oRXZlbnQsIGNhbGxiYWNrLCB0aGlzLCBJ
TkZJTklURSwgV1RfRVhFQ1VURURFRkFVTFQpOworICAgIEFTU0VSVChyZXN1bHQpOworfQorCit2
b2lkIENvbm5lY3Rpb246OkV2ZW50TGlzdGVuZXI6OmNhbGxiYWNrKHZvaWQqIGRhdGEsIEJPT0xF
QU4gdGltZXJPcldhaXRGaXJlZCkKK3sKKyAgICBBU1NFUlRfQVJHKGRhdGEsIGRhdGEpOworICAg
IEFTU0VSVF9BUkcodGltZXJPcldhaXRGaXJlZCwgIXRpbWVyT3JXYWl0RmlyZWQpOworCisgICAg
YXV0byogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxDb25uZWN0aW9uOjpFdmVudExpc3RlbmVyKj4o
ZGF0YSk7CisgICAgbGlzdGVuZXItPm1faGFuZGxlcigpOworfQorCit2b2lkIENvbm5lY3Rpb246
OkV2ZW50TGlzdGVuZXI6OmNsb3NlKCkKK3sKKyAgICAvLyBXZSBjYWxsIDo6VW5yZWdpc3Rlcldh
aXRFeCBkaXJlY3RseSBoZXJlLiBTaW5jZSA6OlVucmVnaXN0ZXJXYWl0RXggZHJhaW5zIGFsbCB0
aGUgcmVtYWluaW5nIHRhc2tzIGhlcmUsCisgICAgLy8gaXQgd291bGQgY2F1c2UgZGVhZGxvY2sg
aWYgdGhpcyBmdW5jdGlvbiBpdHNlbGYgaXMgZXhlY3V0ZWQgaW4gV2luZG93cyBjYWxsYmFjayBm
dW5jdGlvbnMuIEJ1dCB0aGlzIGNhbGwKKyAgICAvLyBpcyBzYWZlIHNpbmNlIG91ciBjYWxsYmFj
a3MgaW1tZWRpYXRlbHkgZGlzcGF0Y2ggYSB0YXNrIHRvIFdvcmtRdWV1ZS4gQW5kIG5vIFdpbmRv
d3MgY2FsbGJhY2tzIGNhbGwgdGhpcworICAgIC8vIENvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxp
ZGF0ZS4KKyAgICAvLyBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dp
bmRvd3MvZGVza3RvcC9tczY4NTA2MSh2PXZzLjg1KS5hc3B4CisgICAgLy8KKyAgICAvLyBBbmQg
ZG8gbm90IDo6Q2xvc2VIYW5kbGUod2FpdEhhbmRsZSkuCisgICAgLy8gPiBOb3RlIHRoYXQgYSB3
YWl0IGhhbmRsZSBjYW5ub3QgYmUgdXNlZCBpbiBmdW5jdGlvbnMgdGhhdCByZXF1aXJlIGFuIG9i
amVjdCBoYW5kbGUsIHN1Y2ggYXMgQ2xvc2VIYW5kbGUuCisgICAgLy8gaHR0cHM6Ly9tc2RuLm1p
Y3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvbXM2ODUwNjEodj12cy44
NSkuYXNweAorICAgIDo6VW5yZWdpc3RlcldhaXRFeChtX3dhaXRIYW5kbGUsIElOVkFMSURfSEFO
RExFX1ZBTFVFKTsKKyAgICBtX3dhaXRIYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKKwor
ICAgIDo6Q2xvc2VIYW5kbGUobV9zdGF0ZS5oRXZlbnQpOworICAgIG1fc3RhdGUuaEV2ZW50ID0g
MDsKKworICAgIG1faGFuZGxlciA9IFtde307Cit9CisKIH0gLy8gbmFtZXNwYWNlIElQQwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342751</attachid>
            <date>2018-06-14 11:56:39 -0700</date>
            <delta_ts>2018-06-14 15:06:00 -0700</delta_ts>
            <desc>PATCH</desc>
            <filename>186582.diff</filename>
            <type>text/plain</type>
            <size>21416</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNGYxYzMxNmE3OTAuLmRkZmVmMDQ2MmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE4
LTA2LTEzICBCYXN1a2UgU3V6dWtpICA8QmFzdWtlLlN1enVraUBzb255LmNvbT4KKworICAgICAg
ICBbV2luQ2Fpcm9dIE1vdmUgdW5yZWxhdGVkIGZlYXR1cmVzIG9mIFdvcmtRdWV1ZVdpbiBpbnRv
IElQQzo6Q29ubmVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg2NTgyCisKKyAgICAgICAgUmVtb3ZlIHVucmVsYXRlZCBmZWF0dXJlIGZyb20g
V29ya1F1ZXVlV2luLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL1BsYXRmb3JtV2luLmNtYWtlOiBSZW1vdmUgV29ya0l0ZW1Db250ZXh0LioK
KyAgICAgICAgKiB3dGYvV29ya1F1ZXVlLmNwcDoKKyAgICAgICAgKiB3dGYvV29ya1F1ZXVlLmg6
CisgICAgICAgICogd3RmL3dpbi9XaW4zMkhhbmRsZS5oOgorICAgICAgICAqIHd0Zi93aW4vV29y
a0l0ZW1Db250ZXh0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3dGYvd2luL1dvcmtJdGVtQ29u
dGV4dC5oOiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi93aW4vV29ya1F1ZXVlV2luLmNwcDoKKyAg
ICAgICAgKFdURjo6V29ya1F1ZXVlOjpoYW5kbGVDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OldvcmtRdWV1ZTo6cmVnaXN0ZXJIYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpXb3JrUXVldWU6OnVucmVnaXN0ZXJBbmRDbG9zZUhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OldvcmtRdWV1ZTo6dW5yZWdpc3RlcldhaXRBbmREZXN0cm95SXRlbVNvb24pOiBEZWxl
dGVkLgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OnVucmVnaXN0ZXJXYWl0QW5kRGVzdHJveUl0
ZW1DYWxsYmFjayk6IERlbGV0ZWQuCisKIDIwMTgtMDYtMTMgIEtlaXRoIE1pbGxlciAgPGtlaXRo
X21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgQXV0b21hdGljVGhyZWFkIHNob3VsZCBoYXZl
IGEgd2F5IHRvIHByb3ZpZGUgYSB0aHJlYWQgbmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQpp
bmRleCAwMTRkNzM5MWQyOS4uNDY4NTE5NmNlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtl
CkBAIC00LDcgKzQsNiBAQCBsaXN0KEFQUEVORCBXVEZfUFVCTElDX0hFQURFUlMKICAgICB3aW4v
R0RJT2JqZWN0LmgKICAgICB3aW4vU29mdExpbmtpbmcuaAogICAgIHdpbi9XaW4zMkhhbmRsZS5o
Ci0gICAgd2luL1dvcmtJdGVtQ29udGV4dC5oCiApCiAKIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VT
CkBAIC0xNiw3ICsxNSw2IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgd2luL01lbW9y
eUZvb3RwcmludFdpbi5jcHAKICAgICB3aW4vTWVtb3J5UHJlc3N1cmVIYW5kbGVyV2luLmNwcAog
ICAgIHdpbi9SdW5Mb29wV2luLmNwcAotICAgIHdpbi9Xb3JrSXRlbUNvbnRleHQuY3BwCiAgICAg
d2luL1dvcmtRdWV1ZVdpbi5jcHAKICkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29y
a1F1ZXVlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAKaW5kZXggMDYzZDcyYzJj
NzUuLjI0OGRiMDg4NmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAKQEAgLTM4LDEwICszOCw2IEBACiAj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCi0jaWYgVVNFKFdJTkRPV1NfRVZFTlRfTE9PUCkKLSNpbmNsdWRlIDx3dGYvd2luL1dvcmtJ
dGVtQ29udGV4dC5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXVEYgewogCiBSZWY8V29ya1F1ZXVl
PiBXb3JrUXVldWU6OmNyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlIHR5cGUsIFFPUyBxb3Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XVEYvd3Rm
L1dvcmtRdWV1ZS5oCmluZGV4IDg1ZWNhNjJjMGNhLi40ZWNkMmI1ZWIzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVl
LmgKQEAgLTUwLDEwICs1MCw2IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi0jaWYgVVNFKFdJTkRP
V1NfRVZFTlRfTE9PUCkKLWNsYXNzIFdvcmtJdGVtQ29udGV4dDsKLSNlbmRpZgotCiBjbGFzcyBX
b3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKIAogcHVibGljOgpA
QCAtODEsOSArNzcsNiBAQCBwdWJsaWM6CiAgICAgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1
ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwYXRjaFF1ZXVlOyB9CiAjZWxpZiBVU0UoR0xJQl9F
VkVOVF9MT09QKSB8fCBVU0UoR0VORVJJQ19FVkVOVF9MT09QKQogICAgIFJ1bkxvb3AmIHJ1bkxv
b3AoKSBjb25zdCB7IHJldHVybiAqbV9ydW5Mb29wOyB9Ci0jZWxpZiBVU0UoV0lORE9XU19FVkVO
VF9MT09QKQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlZ2lzdGVySGFuZGxlKEhBTkRM
RSwgRnVuY3Rpb248dm9pZCgpPiYmKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB1bnJl
Z2lzdGVyQW5kQ2xvc2VIYW5kbGUoSEFORExFKTsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtOTMs
MTYgKzg2LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUludmFsaWRhdGUoKTsKIAog
I2lmIFVTRShXSU5ET1dTX0VWRU5UX0xPT1ApCi0gICAgc3RhdGljIHZvaWQgQ0FMTEJBQ0sgaGFu
ZGxlQ2FsbGJhY2sodm9pZCogY29udGV4dCwgQk9PTEVBTiB0aW1lck9yV2FpdEZpcmVkKTsKICAg
ICBzdGF0aWMgdm9pZCBDQUxMQkFDSyB0aW1lckNhbGxiYWNrKHZvaWQqIGNvbnRleHQsIEJPT0xF
QU4gdGltZXJPcldhaXRGaXJlZCk7CiAgICAgc3RhdGljIERXT1JEIFdJTkFQSSB3b3JrVGhyZWFk
Q2FsbGJhY2sodm9pZCogY29udGV4dCk7CiAKICAgICBib29sIHRyeVJlZ2lzdGVyQXNXb3JrVGhy
ZWFkKCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyQXNXb3JrVGhyZWFkKCk7CiAgICAgdm9pZCBwZXJm
b3JtV29ya09uUmVnaXN0ZXJlZFdvcmtUaHJlYWQoKTsKLQotICAgIHN0YXRpYyB2b2lkIHVucmVn
aXN0ZXJXYWl0QW5kRGVzdHJveUl0ZW1Tb29uKFJlZjxXb3JrSXRlbUNvbnRleHQ+JiYpOwotICAg
IHN0YXRpYyBEV09SRCBXSU5BUEkgdW5yZWdpc3RlcldhaXRBbmREZXN0cm95SXRlbUNhbGxiYWNr
KHZvaWQqIGNvbnRleHQpOwogI2VuZGlmCiAKICNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKQEAg
LTExMiw5ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIHZvbGF0aWxlIExPTkcgbV9pc1dvcmtUaHJl
YWRSZWdpc3RlcmVkOwogCiAgICAgTG9jayBtX2Z1bmN0aW9uUXVldWVMb2NrOwotICAgIExvY2sg
bV9pdGVtc01hcExvY2s7CiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IG1fZnVuY3Rpb25R
dWV1ZTsKLSAgICBIYXNoTWFwPEhBTkRMRSwgUmVmPFdvcmtJdGVtQ29udGV4dD4+IG1faXRlbXNN
YXA7CiAKICAgICBIQU5ETEUgbV90aW1lclF1ZXVlOwogI2VsaWYgVVNFKEdMSUJfRVZFTlRfTE9P
UCkgfHwgVVNFKEdFTkVSSUNfRVZFTlRfTE9PUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3dpbi9XaW4zMkhhbmRsZS5oIGIvU291cmNlL1dURi93dGYvd2luL1dpbjMySGFuZGxlLmgKaW5k
ZXggYTZmMWRmMzI2OGIuLmFhN2Y0OTBiMmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93
aW4vV2luMzJIYW5kbGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV2luMzJIYW5kbGUuaApA
QCAtMzMsOCArMzMsNiBAQCBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFdpbjMySGFuZGxlIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShXaW4zMkhhbmRsZSk7CiAKLSAgICBmcmllbmQgY2xhc3Mg
V29ya1F1ZXVlOwotCiBwdWJsaWM6CiAgICAgV2luMzJIYW5kbGUoKSA6IG1faGFuZGxlKElOVkFM
SURfSEFORExFX1ZBTFVFKSB7IH0KICAgICBleHBsaWNpdCBXaW4zMkhhbmRsZShIQU5ETEUgaGFu
ZGxlKSA6IG1faGFuZGxlKGhhbmRsZSkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93
aW4vV29ya0l0ZW1Db250ZXh0LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrSXRlbUNvbnRl
eHQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5ZWMxMWE5ZDMyMi4uMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvd2luL1dvcmtJdGVtQ29udGV4dC5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBT
b255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV29ya0l0ZW1Db250ZXh0LmgiCi0KLSNpbmNsdWRlIDxXaW5k
b3dzLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgotI2luY2x1ZGUgPHd0Zi9Xb3JrUXVl
dWUuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLVdvcmtJdGVtQ29udGV4dDo6V29ya0l0ZW1Db250
ZXh0KEhBTkRMRSBoYW5kbGUsIEhBTkRMRSB3YWl0SGFuZGxlLCBGdW5jdGlvbjx2b2lkKCk+JiYg
ZnVuY3Rpb24sIFdvcmtRdWV1ZSogcXVldWUpCi0gICAgOiBtX2hhbmRsZShoYW5kbGUpCi0gICAg
LCBtX3dhaXRIYW5kbGUod2FpdEhhbmRsZSkKLSAgICAsIG1fZnVuY3Rpb24oV1RGTW92ZShmdW5j
dGlvbikpCi0gICAgLCBtX3F1ZXVlKHF1ZXVlKQotewotfQotCi1SZWY8V29ya0l0ZW1Db250ZXh0
PiBXb3JrSXRlbUNvbnRleHQ6OmNyZWF0ZShIQU5ETEUgaGFuZGxlLCBIQU5ETEUgd2FpdEhhbmRs
ZSwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uLCBXb3JrUXVldWUqIHF1ZXVlKQotewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtJdGVtQ29udGV4dChoYW5kbGUsIHdhaXRIYW5kbGUs
IFdURk1vdmUoZnVuY3Rpb24pLCBxdWV1ZSkpOwotfQotCi1Xb3JrSXRlbUNvbnRleHQ6On5Xb3Jr
SXRlbUNvbnRleHQoKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3dpbi9Xb3JrSXRlbUNvbnRleHQuaCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9X
b3JrSXRlbUNvbnRleHQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGFhMTVjNzUy
NjkuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrSXRlbUNvbnRleHQu
aAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogUG9ydGlvbnMgQ29w
eXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVu
dCBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8V2luZG93cy5oPgot
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5o
PgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNv
dW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvd2luL1dpbjMySGFuZGxlLmg+Ci0KLW5hbWVzcGFjZSBX
VEYgewotCi1jbGFzcyBXb3JrUXVldWU7Ci0KLWNsYXNzIFdvcmtJdGVtQ29udGV4dCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXb3JrSXRlbUNvbnRleHQ+IHsKLQotcHVibGljOgotICAg
IHN0YXRpYyBSZWY8V29ya0l0ZW1Db250ZXh0PiBjcmVhdGUoSEFORExFLCBIQU5ETEUsIEZ1bmN0
aW9uPHZvaWQoKT4mJiwgV29ya1F1ZXVlKik7Ci0gICAgdmlydHVhbCB+V29ya0l0ZW1Db250ZXh0
KCk7Ci0KLSAgICBXaW4zMkhhbmRsZSYgaGFuZGxlKCkgeyByZXR1cm4gbV9oYW5kbGU7IH0KLSAg
ICBXaW4zMkhhbmRsZSYgd2FpdEhhbmRsZSgpIHsgcmV0dXJuIG1fd2FpdEhhbmRsZTsgfQotICAg
IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKCkgeyByZXR1cm4gbV9mdW5jdGlvbjsgfQotICAg
IFdvcmtRdWV1ZSogcXVldWUoKSBjb25zdCB7IHJldHVybiBtX3F1ZXVlLmdldCgpOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgV29ya0l0ZW1Db250ZXh0KEhBTkRMRSwgSEFORExFLCBGdW5jdGlvbjx2b2lk
KCk+JiYsIFdvcmtRdWV1ZSopOwotCi0gICAgV2luMzJIYW5kbGUgbV9oYW5kbGU7Ci0gICAgV2lu
MzJIYW5kbGUgbV93YWl0SGFuZGxlOwotICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9mdW5jdGlvbjsK
LSAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX3F1ZXVlOwotfTsKLQotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29y
a1F1ZXVlV2luLmNwcAppbmRleCA0MWJmZGUwOTZkNy4uNzgyMzBjMGMxYjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3dpbi9Xb3JrUXVldWVXaW4uY3BwCkBAIC0yOSw0NCArMjksOSBAQAogCiAjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8d3Rm
L3dpbi9Xb3JrSXRlbUNvbnRleHQuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKLXZvaWQgV29ya1F1
ZXVlOjpoYW5kbGVDYWxsYmFjayh2b2lkKiBkYXRhLCBCT09MRUFOIHRpbWVyT3JXYWl0RmlyZWQp
Ci17Ci0gICAgQVNTRVJUX0FSRyhkYXRhLCBkYXRhKTsKLSAgICBBU1NFUlRfQVJHKHRpbWVyT3JX
YWl0RmlyZWQsICF0aW1lck9yV2FpdEZpcmVkKTsKLQotICAgIFdvcmtJdGVtQ29udGV4dCogY29u
dGV4dCA9IHN0YXRpY19jYXN0PFdvcmtJdGVtQ29udGV4dCo+KGRhdGEpOwotICAgIFdvcmtRdWV1
ZSogcXVldWUgPSBjb250ZXh0LT5xdWV1ZSgpOwotCi0gICAgUmVmUHRyPFdvcmtJdGVtQ29udGV4
dD4gcHJvdGVjdG9yKGNvbnRleHQpOwotICAgIHF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdG9yXSB7
Ci0gICAgICAgIHByb3RlY3Rvci0+ZnVuY3Rpb24oKSgpOwotICAgIH0pOwotfQotCi12b2lkIFdv
cmtRdWV1ZTo6cmVnaXN0ZXJIYW5kbGUoSEFORExFIGhhbmRsZSwgRnVuY3Rpb248dm9pZCgpPiYm
IGZ1bmN0aW9uKQotewotICAgIFJlZjxXb3JrSXRlbUNvbnRleHQ+IGNvbnRleHQgPSBXb3JrSXRl
bUNvbnRleHQ6OmNyZWF0ZShoYW5kbGUsIG51bGxwdHIsIFdURk1vdmUoZnVuY3Rpb24pLCB0aGlz
KTsKLQotICAgIGlmICghOjpSZWdpc3RlcldhaXRGb3JTaW5nbGVPYmplY3QoJmNvbnRleHQtPndh
aXRIYW5kbGUoKS5tX2hhbmRsZSwgaGFuZGxlLCBoYW5kbGVDYWxsYmFjaywgY29udGV4dC5wdHIo
KSwgSU5GSU5JVEUsIFdUX0VYRUNVVEVERUZBVUxUKSkKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShtX3RpbWVyUXVldWUsICI6OlJlZ2lzdGVyV2FpdEZvclNpbmdsZU9iamVjdCAlbHUiLCA6
OkdldExhc3RFcnJvcigpKTsKLQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9pdGVtc01h
cExvY2spOwotICAgIEFTU0VSVF9BUkcoaGFuZGxlLCAhbV9pdGVtc01hcC5jb250YWlucyhoYW5k
bGUpKTsKLSAgICBtX2l0ZW1zTWFwLnNldChoYW5kbGUsIFdURk1vdmUoY29udGV4dCkpOwotfQot
Ci12b2lkIFdvcmtRdWV1ZTo6dW5yZWdpc3RlckFuZENsb3NlSGFuZGxlKEhBTkRMRSBoYW5kbGUp
Ci17Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2l0ZW1zTWFwTG9jayk7Ci0gICAgQVNT
RVJUX0FSRyhoYW5kbGUsIG1faXRlbXNNYXAuY29udGFpbnMoaGFuZGxlKSk7Ci0KLSAgICB1bnJl
Z2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtU29vbihtX2l0ZW1zTWFwLnRha2UoaGFuZGxlKS52YWx1
ZSgpKTsKLX0KLQogRFdPUkQgV29ya1F1ZXVlOjp3b3JrVGhyZWFkQ2FsbGJhY2sodm9pZCogY29u
dGV4dCkKIHsKICAgICBBU1NFUlRfQVJHKGNvbnRleHQsIGNvbnRleHQpOwpAQCAtMjIyLDI2ICsx
ODcsNCBAQCB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihTZWNvbmRzIGR1cmF0aW9uLCBG
dW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgY29udGV4dC5sZWFrUmVmKCk7CiB9CiAK
LXZvaWQgV29ya1F1ZXVlOjp1bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtU29vbihSZWY8V29y
a0l0ZW1Db250ZXh0PiYmIHdvcmtJdGVtKQotewotICAgIC8vIFdlJ3JlIGdvaW5nIHRvIG1ha2Ug
YSBibG9ja2luZyBjYWxsIHRvIDo6VW5yZWdpc3RlcldhaXRFeCBiZWZvcmUgY2xvc2luZyB0aGUg
aGFuZGxlLiAoVGhlCi0gICAgLy8gYmxvY2tpbmcgdmVyc2lvbiBvZiA6OlVucmVnaXN0ZXJXYWl0
RXggaXMgbXVjaCBzaW1wbGVyIHRoYW4gdGhlIG5vbi1ibG9ja2luZyB2ZXJzaW9uLikgSWYgd2UK
LSAgICAvLyBkbyB0aGlzIG9uIHRoZSBjdXJyZW50IHRocmVhZCwgd2UnbGwgZGVhZGxvY2sgaWYg
d2UncmUgY3VycmVudGx5IGluIGEgY2FsbGJhY2sgZnVuY3Rpb24gZm9yCi0gICAgLy8gdGhlIHdh
aXQgd2UncmUgdW5yZWdpc3RlcmluZy4gU28gaW5zdGVhZCB3ZSBkbyBpdCBhc3luY2hyb25vdXNs
eSBvbiBzb21lIG90aGVyIHdvcmtlciB0aHJlYWQuCi0gICAgOjpRdWV1ZVVzZXJXb3JrSXRlbSh1
bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtQ2FsbGJhY2ssIHdvcmtJdGVtLnB0cigpLCBXVF9F
WEVDVVRFREVGQVVMVCk7Ci19Ci0KLURXT1JEIFdJTkFQSSBXb3JrUXVldWU6OnVucmVnaXN0ZXJX
YWl0QW5kRGVzdHJveUl0ZW1DYWxsYmFjayh2b2lkKiBkYXRhKQotewotICAgIEFTU0VSVF9BUkco
ZGF0YSwgZGF0YSk7Ci0gICAgV29ya0l0ZW1Db250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
V29ya0l0ZW1Db250ZXh0Kj4oZGF0YSk7Ci0KLSAgICAvLyBOb3cgdGhhdCB3ZSBrbm93IHdlJ3Jl
IG5vdCBpbiBhIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgd2FpdCB3ZSdyZSB1bnJlZ2lzdGVy
aW5nLCB3ZSBjYW4KLSAgICAvLyBtYWtlIGEgYmxvY2tpbmcgY2FsbCB0byA6OlVucmVnaXN0ZXJX
YWl0RXguCi0gICAgaWYgKCE6OlVucmVnaXN0ZXJXYWl0RXgoY29udGV4dC0+d2FpdEhhbmRsZSgp
LmdldCgpLCBJTlZBTElEX0hBTkRMRV9WQUxVRSkpCi0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoZmFsc2UsICI6OlVucmVnaXN0ZXJXYWl0RXggZmFpbGVkIHdpdGggJyVzJyIsIDo6R2V0TGFz
dEVycm9yKCkpOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBlZDQ0YTcyM2VlNi4uZTRhMjM3MzllZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMTgtMDYtMTMgIEJhc3VrZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnkuY29tPgor
CisgICAgICAgIFtXaW5DYWlyb10gTW92ZSB1bnJlbGF0ZWQgZmVhdHVyZXMgb2YgV29ya1F1ZXVl
V2luIGludG8gSVBDOjpDb25uZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODY1ODIKKworICAgICAgICBBZGQgRXZlbnRMaXN0ZW5lciBwcml2
YXRlIGNsYXNzIHRvIGhhbmRsZSBzaWduYWxlZCB0YXNrcyBmb3IgSS9PLgorICAgICAgICBPcmln
aW5hbGx5IHRoZXkgd2VyZSBpbiBXVEY6OldvcmtRdWV1ZVdpbiwgYnV0IHRob3NlIGZlYXR1cmVz
IHdlcmUgbm90IHJlbGF0ZWQKKyAgICAgICAgdG8gV29ya1F1ZXVlIGFuZCBvbmx5IHVzZWQgaW4g
SVBDOjpDb25uZWN0aW9uV2luLiBNb3ZlZCBsb2dpYyBpcyBtb3JlIHNwZWNpYWxpemVkCisgICAg
ICAgIHRoYW4gb2xkIGdlbmVyYWxpemVkIGxvZ2ljLiBUaGF0IHdhcyB1bm5lZWRlZCBnZW5lcmFs
aXphdGlvbi4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246
OkV2ZW50TGlzdGVuZXI6OnN0YXRlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvd2luL0Nvbm5l
Y3Rpb25XaW4uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpwbGF0Zm9ybUluaXRpYWxp
emUpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpwbGF0Zm9ybUludmFsaWRhdGUpOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZWFkRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKElQQzo6
Q29ubmVjdGlvbjo6d3JpdGVFdmVudEhhbmRsZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjppbnZva2VSZWFkRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6aW52
b2tlV3JpdGVFdmVudEhhbmRsZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpvcGVuKToK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZSk6CisgICAgICAg
IChJUEM6OkNvbm5lY3Rpb246OkV2ZW50TGlzdGVuZXI6Om9wZW4pOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpFdmVudExpc3RlbmVyOjpjYWxsYmFjayk6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OkV2ZW50TGlzdGVuZXI6OmNsb3NlKToKKwogMjAxOC0wNi0xNCAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBXZWJE
cml2ZXI6IGhhbmRsZSBhY2NlcHRJbnNlY3VyZUNlcnRpZmljYXRlcyBjYXBhYmlsaXR5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggOGMzODBiM2Y5ZWQuLmYyNTk4
ZjY5NDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCkBAIC0zNDMs
MTIgKzM0MywyOSBAQCBwcml2YXRlOgogICAgIC8vIENhbGxlZCBvbiB0aGUgY29ubmVjdGlvbiBx
dWV1ZS4KICAgICB2b2lkIHJlYWRFdmVudEhhbmRsZXIoKTsKICAgICB2b2lkIHdyaXRlRXZlbnRI
YW5kbGVyKCk7CisgICAgdm9pZCBpbnZva2VSZWFkRXZlbnRIYW5kbGVyKCk7CisgICAgdm9pZCBp
bnZva2VXcml0ZUV2ZW50SGFuZGxlcigpOworCisgICAgY2xhc3MgRXZlbnRMaXN0ZW5lciB7Cisg
ICAgcHVibGljOgorICAgICAgICB2b2lkIG9wZW4oRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICAg
ICAgdm9pZCBjbG9zZSgpOworCisgICAgICAgIE9WRVJMQVBQRUQmIHN0YXRlKCkgeyByZXR1cm4g
bV9zdGF0ZTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgc3RhdGljIHZvaWQgY2FsbGJhY2so
dm9pZCosIEJPT0xFQU4pOworCisgICAgICAgIE9WRVJMQVBQRUQgbV9zdGF0ZTsKKyAgICAgICAg
SEFORExFIG1fd2FpdEhhbmRsZSB7IElOVkFMSURfSEFORExFX1ZBTFVFIH07CisgICAgICAgIEZ1
bmN0aW9uPHZvaWQoKT4gbV9oYW5kbGVyOworICAgIH07CiAKICAgICBWZWN0b3I8dWludDhfdD4g
bV9yZWFkQnVmZmVyOwotICAgIE9WRVJMQVBQRUQgbV9yZWFkU3RhdGU7CisgICAgRXZlbnRMaXN0
ZW5lciBtX3JlYWRMaXN0ZW5lcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gbV9wZW5k
aW5nV3JpdGVFbmNvZGVyOwotICAgIE9WRVJMQVBQRUQgbV93cml0ZVN0YXRlOwotICAgIEhBTkRM
RSBtX2Nvbm5lY3Rpb25QaXBlOworICAgIEV2ZW50TGlzdGVuZXIgbV93cml0ZUxpc3RlbmVyOwor
ICAgIEhBTkRMRSBtX2Nvbm5lY3Rpb25QaXBlIHsgSU5WQUxJRF9IQU5ETEVfVkFMVUUgfTsKICNl
bmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nv
bm5lY3Rpb25XaW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rp
b25XaW4uY3BwCmluZGV4IGJjOTRjNjdkMTE4Li5lNjFjNzkzNTE5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcApAQCAtNzIsMTIgKzcy
LDYgQEAgYm9vbCBDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVycyhI
QU5ETEUmIHNlcnZlcklkZW50aWZpZXIsIEhBTkQKIAogdm9pZCBDb25uZWN0aW9uOjpwbGF0Zm9y
bUluaXRpYWxpemUoSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIG1lbXNldCgmbV9yZWFk
U3RhdGUsIDAsIHNpemVvZihtX3JlYWRTdGF0ZSkpOwotICAgIG1fcmVhZFN0YXRlLmhFdmVudCA9
IDo6Q3JlYXRlRXZlbnRXKDAsIEZBTFNFLCBGQUxTRSwgMCk7Ci0KLSAgICBtZW1zZXQoJm1fd3Jp
dGVTdGF0ZSwgMCwgc2l6ZW9mKG1fd3JpdGVTdGF0ZSkpOwotICAgIG1fd3JpdGVTdGF0ZS5oRXZl
bnQgPSA6OkNyZWF0ZUV2ZW50VygwLCBGQUxTRSwgRkFMU0UsIDApOwotCiAgICAgbV9jb25uZWN0
aW9uUGlwZSA9IGlkZW50aWZpZXI7CiB9CiAKQEAgLTg4LDExICs4Miw4IEBAIHZvaWQgQ29ubmVj
dGlvbjo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKIAogICAgIG1faXNDb25uZWN0ZWQgPSBmYWxzZTsK
IAotICAgIG1fY29ubmVjdGlvblF1ZXVlLT51bnJlZ2lzdGVyQW5kQ2xvc2VIYW5kbGUobV9yZWFk
U3RhdGUuaEV2ZW50KTsKLSAgICBtX3JlYWRTdGF0ZS5oRXZlbnQgPSAwOwotCi0gICAgbV9jb25u
ZWN0aW9uUXVldWUtPnVucmVnaXN0ZXJBbmRDbG9zZUhhbmRsZShtX3dyaXRlU3RhdGUuaEV2ZW50
KTsKLSAgICBtX3dyaXRlU3RhdGUuaEV2ZW50ID0gMDsKKyAgICBtX3JlYWRMaXN0ZW5lci5jbG9z
ZSgpOworICAgIG1fd3JpdGVMaXN0ZW5lci5jbG9zZSgpOwogCiAgICAgOjpDbG9zZUhhbmRsZSht
X2Nvbm5lY3Rpb25QaXBlKTsKICAgICBtX2Nvbm5lY3Rpb25QaXBlID0gSU5WQUxJRF9IQU5ETEVf
VkFMVUU7CkBAIC0xMDYsNyArOTcsNyBAQCB2b2lkIENvbm5lY3Rpb246OnJlYWRFdmVudEhhbmRs
ZXIoKQogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIC8vIENoZWNrIGlmIHdlIGdvdCBzb21l
IGRhdGEuCiAgICAgICAgIERXT1JEIG51bWJlck9mQnl0ZXNSZWFkID0gMDsKLSAgICAgICAgaWYg
KCE6OkdldE92ZXJsYXBwZWRSZXN1bHQobV9jb25uZWN0aW9uUGlwZSwgJm1fcmVhZFN0YXRlLCAm
bnVtYmVyT2ZCeXRlc1JlYWQsIEZBTFNFKSkgeworICAgICAgICBpZiAoITo6R2V0T3ZlcmxhcHBl
ZFJlc3VsdChtX2Nvbm5lY3Rpb25QaXBlLCAmbV9yZWFkTGlzdGVuZXIuc3RhdGUoKSwgJm51bWJl
ck9mQnl0ZXNSZWFkLCBGQUxTRSkpIHsKICAgICAgICAgICAgIERXT1JEIGVycm9yID0gOjpHZXRM
YXN0RXJyb3IoKTsKICAgICAgICAgICAgIHN3aXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgIGNh
c2UgRVJST1JfQlJPS0VOX1BJUEU6CkBAIC0xMzMsNyArMTI0LDcgQEAgdm9pZCBDb25uZWN0aW9u
OjpyZWFkRXZlbnRIYW5kbGVyKCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgICAgICAgICBtX3JlYWRCdWZmZXIuZ3JvdyhtX3JlYWRCdWZmZXIuc2l6ZSgpICsgYnl0ZXNU
b1JlYWQpOwotICAgICAgICAgICAgICAgIGlmICghOjpSZWFkRmlsZShtX2Nvbm5lY3Rpb25QaXBl
LCBtX3JlYWRCdWZmZXIuZGF0YSgpICsgbnVtYmVyT2ZCeXRlc1JlYWQsIGJ5dGVzVG9SZWFkLCAw
LCAmbV9yZWFkU3RhdGUpKSB7CisgICAgICAgICAgICAgICAgaWYgKCE6OlJlYWRGaWxlKG1fY29u
bmVjdGlvblBpcGUsIG1fcmVhZEJ1ZmZlci5kYXRhKCkgKyBudW1iZXJPZkJ5dGVzUmVhZCwgYnl0
ZXNUb1JlYWQsIDAsICZtX3JlYWRMaXN0ZW5lci5zdGF0ZSgpKSkgewogICAgICAgICAgICAgICAg
ICAgICBEV09SRCBlcnJvciA9IDo6R2V0TGFzdEVycm9yKCk7CiAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0x
ODIsNyArMTczLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpyZWFkRXZlbnRIYW5kbGVyKCkKIAogICAg
ICAgICAvLyBFaXRoZXIgcmVhZCB0aGUgbmV4dCBhdmFpbGFibGUgbWVzc2FnZSAod2hpY2ggc2hv
dWxkIG9jY3VyIHN5bmNocm9ub3VzbHkpLCBvciBzdGFydCBhbgogICAgICAgICAvLyBhc3luY2hy
b25vdXMgcmVhZCBvZiB0aGUgbmV4dCBtZXNzYWdlIHRoYXQgYmVjb21lcyBhdmFpbGFibGUuCi0g
ICAgICAgIEJPT0wgcmVzdWx0ID0gOjpSZWFkRmlsZShtX2Nvbm5lY3Rpb25QaXBlLCBtX3JlYWRC
dWZmZXIuZGF0YSgpLCBtX3JlYWRCdWZmZXIuc2l6ZSgpLCAwLCAmbV9yZWFkU3RhdGUpOworICAg
ICAgICBCT09MIHJlc3VsdCA9IDo6UmVhZEZpbGUobV9jb25uZWN0aW9uUGlwZSwgbV9yZWFkQnVm
ZmVyLmRhdGEoKSwgbV9yZWFkQnVmZmVyLnNpemUoKSwgMCwgJm1fcmVhZExpc3RlbmVyLnN0YXRl
KCkpOwogICAgICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgICAgICAvLyBUaGVyZSB3YXMgYWxy
ZWFkeSBhIG1lc3NhZ2Ugd2FpdGluZyBpbiB0aGUgcGlwZSwgYW5kIHdlIHJlYWQgaXQgc3luY2hy
b25vdXNseS4KICAgICAgICAgICAgIC8vIFByb2Nlc3MgaXQuCkBAIC0yMTUsNyArMjA2LDcgQEAg
dm9pZCBDb25uZWN0aW9uOjp3cml0ZUV2ZW50SGFuZGxlcigpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIERXT1JEIG51bWJlck9mQnl0ZXNXcml0dGVuID0gMDsKLSAgICBpZiAoITo6R2V0T3Zlcmxh
cHBlZFJlc3VsdChtX2Nvbm5lY3Rpb25QaXBlLCAmbV93cml0ZVN0YXRlLCAmbnVtYmVyT2ZCeXRl
c1dyaXR0ZW4sIEZBTFNFKSkgeworICAgIGlmICghOjpHZXRPdmVybGFwcGVkUmVzdWx0KG1fY29u
bmVjdGlvblBpcGUsICZtX3dyaXRlTGlzdGVuZXIuc3RhdGUoKSwgJm51bWJlck9mQnl0ZXNXcml0
dGVuLCBGQUxTRSkpIHsKICAgICAgICAgRFdPUkQgZXJyb3IgPSA6OkdldExhc3RFcnJvcigpOwog
CiAgICAgICAgIGlmIChlcnJvciA9PSBFUlJPUl9JT19JTkNPTVBMRVRFKSB7CkBAIC0yMzcsMjYg
KzIyOCwzNiBAQCB2b2lkIENvbm5lY3Rpb246OndyaXRlRXZlbnRIYW5kbGVyKCkKICAgICBzZW5k
T3V0Z29pbmdNZXNzYWdlcygpOwogfQogCit2b2lkIENvbm5lY3Rpb246Omludm9rZVJlYWRFdmVu
dEhhbmRsZXIoKQoreworICAgIG1fY29ubmVjdGlvblF1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHJlYWRFdmVudEhhbmRsZXIo
KTsKKyAgICB9KTsKK30KKwordm9pZCBDb25uZWN0aW9uOjppbnZva2VXcml0ZUV2ZW50SGFuZGxl
cigpCit7CisgICAgbV9jb25uZWN0aW9uUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgd3JpdGVFdmVudEhhbmRsZXIoKTsKKyAg
ICB9KTsKK30KKwogYm9vbCBDb25uZWN0aW9uOjpvcGVuKCkKIHsKICAgICAvLyBXZSBjb25uZWN0
ZWQgdGhlIHR3byBlbmRzIG9mIHRoZSBwaXBlIGluIGNyZWF0ZVNlcnZlckFuZENsaWVudElkZW50
aWZpZXJzLgogICAgIG1faXNDb25uZWN0ZWQgPSB0cnVlOwogCi0gICAgUmVmUHRyPENvbm5lY3Rp
b24+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0KICAgICAvLyBTdGFydCBsaXN0ZW5pbmcgZm9yIHJl
YWQgYW5kIHdyaXRlIHN0YXRlIGV2ZW50cy4KLSAgICBtX2Nvbm5lY3Rpb25RdWV1ZS0+cmVnaXN0
ZXJIYW5kbGUobV9yZWFkU3RhdGUuaEV2ZW50LCBbcHJvdGVjdGVkVGhpc10gewotICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5yZWFkRXZlbnRIYW5kbGVyKCk7CisgICAgbV9yZWFkTGlzdGVuZXIub3Bl
bihbdGhpc10geworICAgICAgICBpbnZva2VSZWFkRXZlbnRIYW5kbGVyKCk7CiAgICAgfSk7CiAK
LSAgICBtX2Nvbm5lY3Rpb25RdWV1ZS0+cmVnaXN0ZXJIYW5kbGUobV93cml0ZVN0YXRlLmhFdmVu
dCwgW3Byb3RlY3RlZFRoaXNdIHsKLSAgICAgICAgcHJvdGVjdGVkVGhpcy0+d3JpdGVFdmVudEhh
bmRsZXIoKTsKKyAgICBtX3dyaXRlTGlzdGVuZXIub3BlbihbdGhpc10geworICAgICAgICBpbnZv
a2VXcml0ZUV2ZW50SGFuZGxlcigpOwogICAgIH0pOwogCiAgICAgLy8gU2NoZWR1bGUgYSByZWFk
LgotICAgIG1fY29ubmVjdGlvblF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpc10gewotICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5yZWFkRXZlbnRIYW5kbGVyKCk7Ci0gICAgfSk7CisgICAgaW52
b2tlUmVhZEV2ZW50SGFuZGxlcigpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yODEsNyAr
MjgyLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKHN0ZDo6dW5pcXVl
X3B0cjxFbmNvZGVyPiBlbmNvZGVyKQogCiAgICAgLy8gV3JpdGUgdGhlIG91dGdvaW5nIG1lc3Nh
Z2UuCiAKLSAgICBpZiAoOjpXcml0ZUZpbGUobV9jb25uZWN0aW9uUGlwZSwgZW5jb2Rlci0+YnVm
ZmVyKCksIGVuY29kZXItPmJ1ZmZlclNpemUoKSwgMCwgJm1fd3JpdGVTdGF0ZSkpIHsKKyAgICBp
ZiAoOjpXcml0ZUZpbGUobV9jb25uZWN0aW9uUGlwZSwgZW5jb2Rlci0+YnVmZmVyKCksIGVuY29k
ZXItPmJ1ZmZlclNpemUoKSwgMCwgJm1fd3JpdGVMaXN0ZW5lci5zdGF0ZSgpKSkgewogICAgICAg
ICAvLyBXZSBzdWNjZXNzZnVsbHkgc2VudCB0aGlzIG1lc3NhZ2UuCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KQEAgLTMxNSw0ICszMTYsNDUgQEAgdm9pZCBDb25uZWN0aW9uOjpkaWRSZWNl
aXZlU3luY1JlcGx5KE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4pCiB7CiB9CiAKK3ZvaWQgQ29u
bmVjdGlvbjo6RXZlbnRMaXN0ZW5lcjo6b3BlbihGdW5jdGlvbjx2b2lkKCk+JiYgaGFuZGxlcikK
K3sKKyAgICBtX2hhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpOworCisgICAgbWVtc2V0KCZtX3N0
YXRlLCAwLCBzaXplb2YobV9zdGF0ZSkpOworICAgIG1fc3RhdGUuaEV2ZW50ID0gOjpDcmVhdGVF
dmVudFcoMCwgRkFMU0UsIEZBTFNFLCAwKTsKKworICAgIEJPT0wgcmVzdWx0OworICAgIHJlc3Vs
dCA9IDo6UmVnaXN0ZXJXYWl0Rm9yU2luZ2xlT2JqZWN0KCZtX3dhaXRIYW5kbGUsIG1fc3RhdGUu
aEV2ZW50LCBjYWxsYmFjaywgdGhpcywgSU5GSU5JVEUsIFdUX0VYRUNVVEVERUZBVUxUKTsKKyAg
ICBBU1NFUlQocmVzdWx0KTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpFdmVudExpc3RlbmVyOjpj
YWxsYmFjayh2b2lkKiBkYXRhLCBCT09MRUFOIHRpbWVyT3JXYWl0RmlyZWQpCit7CisgICAgQVNT
RVJUX0FSRyhkYXRhLCBkYXRhKTsKKyAgICBBU1NFUlRfQVJHKHRpbWVyT3JXYWl0RmlyZWQsICF0
aW1lck9yV2FpdEZpcmVkKTsKKworICAgIGF1dG8qIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8Q29u
bmVjdGlvbjo6RXZlbnRMaXN0ZW5lcio+KGRhdGEpOworICAgIGxpc3RlbmVyLT5tX2hhbmRsZXIo
KTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpFdmVudExpc3RlbmVyOjpjbG9zZSgpCit7CisgICAg
Ly8gV2UgY2FsbCA6OlVucmVnaXN0ZXJXYWl0RXggZGlyZWN0bHkgaGVyZS4gU2luY2UgOjpVbnJl
Z2lzdGVyV2FpdEV4IGRyYWlucyBhbGwgdGhlIHJlbWFpbmluZyB0YXNrcyBoZXJlLAorICAgIC8v
IGl0IHdvdWxkIGNhdXNlIGRlYWRsb2NrIGlmIHRoaXMgZnVuY3Rpb24gaXRzZWxmIGlzIGV4ZWN1
dGVkIGluIFdpbmRvd3MgY2FsbGJhY2sgZnVuY3Rpb25zLiBCdXQgdGhpcyBjYWxsCisgICAgLy8g
aXMgc2FmZSBzaW5jZSBvdXIgY2FsbGJhY2tzIGltbWVkaWF0ZWx5IGRpc3BhdGNoIGEgdGFzayB0
byBXb3JrUXVldWUuIEFuZCBubyBXaW5kb3dzIGNhbGxiYWNrcyBjYWxsIHRoaXMKKyAgICAvLyBD
b25uZWN0aW9uOjpFdmVudExpc3RlbmVyOjpjbG9zZSgpLgorICAgIC8vIGh0dHBzOi8vbXNkbi5t
aWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL21zNjg1MDYxKHY9dnMu
ODUpLmFzcHgKKyAgICAvLworICAgIC8vIEFuZCBkbyBub3QgOjpDbG9zZUhhbmRsZShtX3dhaXRI
YW5kbGUpLgorICAgIC8vID4gTm90ZSB0aGF0IGEgd2FpdCBoYW5kbGUgY2Fubm90IGJlIHVzZWQg
aW4gZnVuY3Rpb25zIHRoYXQgcmVxdWlyZSBhbiBvYmplY3QgaGFuZGxlLCBzdWNoIGFzIENsb3Nl
SGFuZGxlLgorICAgIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkv
d2luZG93cy9kZXNrdG9wL21zNjg1MDYxKHY9dnMuODUpLmFzcHgKKyAgICA6OlVucmVnaXN0ZXJX
YWl0RXgobV93YWl0SGFuZGxlLCBJTlZBTElEX0hBTkRMRV9WQUxVRSk7CisgICAgbV93YWl0SGFu
ZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisKKyAgICA6OkNsb3NlSGFuZGxlKG1fc3RhdGUu
aEV2ZW50KTsKKyAgICBtX3N0YXRlLmhFdmVudCA9IDA7CisKKyAgICBtX2hhbmRsZXIgPSBGdW5j
dGlvbjx2b2lkKCk+KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIElQQwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342764</attachid>
            <date>2018-06-14 15:06:00 -0700</date>
            <delta_ts>2018-06-15 12:36:07 -0700</delta_ts>
            <desc>FIX</desc>
            <filename>186582.diff</filename>
            <type>text/plain</type>
            <size>21416</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNGYxYzMxNmE3OTAuLmRkZmVmMDQ2MmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE4
LTA2LTEzICBCYXN1a2UgU3V6dWtpICA8QmFzdWtlLlN1enVraUBzb255LmNvbT4KKworICAgICAg
ICBbV2luQ2Fpcm9dIE1vdmUgdW5yZWxhdGVkIGZlYXR1cmVzIG9mIFdvcmtRdWV1ZVdpbiBpbnRv
IElQQzo6Q29ubmVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg2NTgyCisKKyAgICAgICAgUmVtb3ZlIHVucmVsYXRlZCBmZWF0dXJlIGZyb20g
V29ya1F1ZXVlV2luLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL1BsYXRmb3JtV2luLmNtYWtlOiBSZW1vdmUgV29ya0l0ZW1Db250ZXh0LioK
KyAgICAgICAgKiB3dGYvV29ya1F1ZXVlLmNwcDoKKyAgICAgICAgKiB3dGYvV29ya1F1ZXVlLmg6
CisgICAgICAgICogd3RmL3dpbi9XaW4zMkhhbmRsZS5oOgorICAgICAgICAqIHd0Zi93aW4vV29y
a0l0ZW1Db250ZXh0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3dGYvd2luL1dvcmtJdGVtQ29u
dGV4dC5oOiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi93aW4vV29ya1F1ZXVlV2luLmNwcDoKKyAg
ICAgICAgKFdURjo6V29ya1F1ZXVlOjpoYW5kbGVDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OldvcmtRdWV1ZTo6cmVnaXN0ZXJIYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpXb3JrUXVldWU6OnVucmVnaXN0ZXJBbmRDbG9zZUhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OldvcmtRdWV1ZTo6dW5yZWdpc3RlcldhaXRBbmREZXN0cm95SXRlbVNvb24pOiBEZWxl
dGVkLgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OnVucmVnaXN0ZXJXYWl0QW5kRGVzdHJveUl0
ZW1DYWxsYmFjayk6IERlbGV0ZWQuCisKIDIwMTgtMDYtMTMgIEtlaXRoIE1pbGxlciAgPGtlaXRo
X21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgQXV0b21hdGljVGhyZWFkIHNob3VsZCBoYXZl
IGEgd2F5IHRvIHByb3ZpZGUgYSB0aHJlYWQgbmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQpp
bmRleCAwMTRkNzM5MWQyOS4uNDY4NTE5NmNlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtl
CkBAIC00LDcgKzQsNiBAQCBsaXN0KEFQUEVORCBXVEZfUFVCTElDX0hFQURFUlMKICAgICB3aW4v
R0RJT2JqZWN0LmgKICAgICB3aW4vU29mdExpbmtpbmcuaAogICAgIHdpbi9XaW4zMkhhbmRsZS5o
Ci0gICAgd2luL1dvcmtJdGVtQ29udGV4dC5oCiApCiAKIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VT
CkBAIC0xNiw3ICsxNSw2IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgd2luL01lbW9y
eUZvb3RwcmludFdpbi5jcHAKICAgICB3aW4vTWVtb3J5UHJlc3N1cmVIYW5kbGVyV2luLmNwcAog
ICAgIHdpbi9SdW5Mb29wV2luLmNwcAotICAgIHdpbi9Xb3JrSXRlbUNvbnRleHQuY3BwCiAgICAg
d2luL1dvcmtRdWV1ZVdpbi5jcHAKICkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29y
a1F1ZXVlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAKaW5kZXggMDYzZDcyYzJj
NzUuLjI0OGRiMDg4NmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAKQEAgLTM4LDEwICszOCw2IEBACiAj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCi0jaWYgVVNFKFdJTkRPV1NfRVZFTlRfTE9PUCkKLSNpbmNsdWRlIDx3dGYvd2luL1dvcmtJ
dGVtQ29udGV4dC5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXVEYgewogCiBSZWY8V29ya1F1ZXVl
PiBXb3JrUXVldWU6OmNyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlIHR5cGUsIFFPUyBxb3Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XVEYvd3Rm
L1dvcmtRdWV1ZS5oCmluZGV4IDg1ZWNhNjJjMGNhLi40ZWNkMmI1ZWIzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVl
LmgKQEAgLTUwLDEwICs1MCw2IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi0jaWYgVVNFKFdJTkRP
V1NfRVZFTlRfTE9PUCkKLWNsYXNzIFdvcmtJdGVtQ29udGV4dDsKLSNlbmRpZgotCiBjbGFzcyBX
b3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKIAogcHVibGljOgpA
QCAtODEsOSArNzcsNiBAQCBwdWJsaWM6CiAgICAgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1
ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwYXRjaFF1ZXVlOyB9CiAjZWxpZiBVU0UoR0xJQl9F
VkVOVF9MT09QKSB8fCBVU0UoR0VORVJJQ19FVkVOVF9MT09QKQogICAgIFJ1bkxvb3AmIHJ1bkxv
b3AoKSBjb25zdCB7IHJldHVybiAqbV9ydW5Mb29wOyB9Ci0jZWxpZiBVU0UoV0lORE9XU19FVkVO
VF9MT09QKQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlZ2lzdGVySGFuZGxlKEhBTkRM
RSwgRnVuY3Rpb248dm9pZCgpPiYmKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB1bnJl
Z2lzdGVyQW5kQ2xvc2VIYW5kbGUoSEFORExFKTsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtOTMs
MTYgKzg2LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUludmFsaWRhdGUoKTsKIAog
I2lmIFVTRShXSU5ET1dTX0VWRU5UX0xPT1ApCi0gICAgc3RhdGljIHZvaWQgQ0FMTEJBQ0sgaGFu
ZGxlQ2FsbGJhY2sodm9pZCogY29udGV4dCwgQk9PTEVBTiB0aW1lck9yV2FpdEZpcmVkKTsKICAg
ICBzdGF0aWMgdm9pZCBDQUxMQkFDSyB0aW1lckNhbGxiYWNrKHZvaWQqIGNvbnRleHQsIEJPT0xF
QU4gdGltZXJPcldhaXRGaXJlZCk7CiAgICAgc3RhdGljIERXT1JEIFdJTkFQSSB3b3JrVGhyZWFk
Q2FsbGJhY2sodm9pZCogY29udGV4dCk7CiAKICAgICBib29sIHRyeVJlZ2lzdGVyQXNXb3JrVGhy
ZWFkKCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyQXNXb3JrVGhyZWFkKCk7CiAgICAgdm9pZCBwZXJm
b3JtV29ya09uUmVnaXN0ZXJlZFdvcmtUaHJlYWQoKTsKLQotICAgIHN0YXRpYyB2b2lkIHVucmVn
aXN0ZXJXYWl0QW5kRGVzdHJveUl0ZW1Tb29uKFJlZjxXb3JrSXRlbUNvbnRleHQ+JiYpOwotICAg
IHN0YXRpYyBEV09SRCBXSU5BUEkgdW5yZWdpc3RlcldhaXRBbmREZXN0cm95SXRlbUNhbGxiYWNr
KHZvaWQqIGNvbnRleHQpOwogI2VuZGlmCiAKICNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKQEAg
LTExMiw5ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIHZvbGF0aWxlIExPTkcgbV9pc1dvcmtUaHJl
YWRSZWdpc3RlcmVkOwogCiAgICAgTG9jayBtX2Z1bmN0aW9uUXVldWVMb2NrOwotICAgIExvY2sg
bV9pdGVtc01hcExvY2s7CiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IG1fZnVuY3Rpb25R
dWV1ZTsKLSAgICBIYXNoTWFwPEhBTkRMRSwgUmVmPFdvcmtJdGVtQ29udGV4dD4+IG1faXRlbXNN
YXA7CiAKICAgICBIQU5ETEUgbV90aW1lclF1ZXVlOwogI2VsaWYgVVNFKEdMSUJfRVZFTlRfTE9P
UCkgfHwgVVNFKEdFTkVSSUNfRVZFTlRfTE9PUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3dpbi9XaW4zMkhhbmRsZS5oIGIvU291cmNlL1dURi93dGYvd2luL1dpbjMySGFuZGxlLmgKaW5k
ZXggYTZmMWRmMzI2OGIuLmFhN2Y0OTBiMmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93
aW4vV2luMzJIYW5kbGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV2luMzJIYW5kbGUuaApA
QCAtMzMsOCArMzMsNiBAQCBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFdpbjMySGFuZGxlIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShXaW4zMkhhbmRsZSk7CiAKLSAgICBmcmllbmQgY2xhc3Mg
V29ya1F1ZXVlOwotCiBwdWJsaWM6CiAgICAgV2luMzJIYW5kbGUoKSA6IG1faGFuZGxlKElOVkFM
SURfSEFORExFX1ZBTFVFKSB7IH0KICAgICBleHBsaWNpdCBXaW4zMkhhbmRsZShIQU5ETEUgaGFu
ZGxlKSA6IG1faGFuZGxlKGhhbmRsZSkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93
aW4vV29ya0l0ZW1Db250ZXh0LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrSXRlbUNvbnRl
eHQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5ZWMxMWE5ZDMyMi4uMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvd2luL1dvcmtJdGVtQ29udGV4dC5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBT
b255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV29ya0l0ZW1Db250ZXh0LmgiCi0KLSNpbmNsdWRlIDxXaW5k
b3dzLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgotI2luY2x1ZGUgPHd0Zi9Xb3JrUXVl
dWUuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLVdvcmtJdGVtQ29udGV4dDo6V29ya0l0ZW1Db250
ZXh0KEhBTkRMRSBoYW5kbGUsIEhBTkRMRSB3YWl0SGFuZGxlLCBGdW5jdGlvbjx2b2lkKCk+JiYg
ZnVuY3Rpb24sIFdvcmtRdWV1ZSogcXVldWUpCi0gICAgOiBtX2hhbmRsZShoYW5kbGUpCi0gICAg
LCBtX3dhaXRIYW5kbGUod2FpdEhhbmRsZSkKLSAgICAsIG1fZnVuY3Rpb24oV1RGTW92ZShmdW5j
dGlvbikpCi0gICAgLCBtX3F1ZXVlKHF1ZXVlKQotewotfQotCi1SZWY8V29ya0l0ZW1Db250ZXh0
PiBXb3JrSXRlbUNvbnRleHQ6OmNyZWF0ZShIQU5ETEUgaGFuZGxlLCBIQU5ETEUgd2FpdEhhbmRs
ZSwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uLCBXb3JrUXVldWUqIHF1ZXVlKQotewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtJdGVtQ29udGV4dChoYW5kbGUsIHdhaXRIYW5kbGUs
IFdURk1vdmUoZnVuY3Rpb24pLCBxdWV1ZSkpOwotfQotCi1Xb3JrSXRlbUNvbnRleHQ6On5Xb3Jr
SXRlbUNvbnRleHQoKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3dpbi9Xb3JrSXRlbUNvbnRleHQuaCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9X
b3JrSXRlbUNvbnRleHQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGFhMTVjNzUy
NjkuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrSXRlbUNvbnRleHQu
aAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogUG9ydGlvbnMgQ29w
eXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVu
dCBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8V2luZG93cy5oPgot
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5o
PgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNv
dW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvd2luL1dpbjMySGFuZGxlLmg+Ci0KLW5hbWVzcGFjZSBX
VEYgewotCi1jbGFzcyBXb3JrUXVldWU7Ci0KLWNsYXNzIFdvcmtJdGVtQ29udGV4dCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXb3JrSXRlbUNvbnRleHQ+IHsKLQotcHVibGljOgotICAg
IHN0YXRpYyBSZWY8V29ya0l0ZW1Db250ZXh0PiBjcmVhdGUoSEFORExFLCBIQU5ETEUsIEZ1bmN0
aW9uPHZvaWQoKT4mJiwgV29ya1F1ZXVlKik7Ci0gICAgdmlydHVhbCB+V29ya0l0ZW1Db250ZXh0
KCk7Ci0KLSAgICBXaW4zMkhhbmRsZSYgaGFuZGxlKCkgeyByZXR1cm4gbV9oYW5kbGU7IH0KLSAg
ICBXaW4zMkhhbmRsZSYgd2FpdEhhbmRsZSgpIHsgcmV0dXJuIG1fd2FpdEhhbmRsZTsgfQotICAg
IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKCkgeyByZXR1cm4gbV9mdW5jdGlvbjsgfQotICAg
IFdvcmtRdWV1ZSogcXVldWUoKSBjb25zdCB7IHJldHVybiBtX3F1ZXVlLmdldCgpOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgV29ya0l0ZW1Db250ZXh0KEhBTkRMRSwgSEFORExFLCBGdW5jdGlvbjx2b2lk
KCk+JiYsIFdvcmtRdWV1ZSopOwotCi0gICAgV2luMzJIYW5kbGUgbV9oYW5kbGU7Ci0gICAgV2lu
MzJIYW5kbGUgbV93YWl0SGFuZGxlOwotICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9mdW5jdGlvbjsK
LSAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX3F1ZXVlOwotfTsKLQotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29y
a1F1ZXVlV2luLmNwcAppbmRleCA0MWJmZGUwOTZkNy4uNzgyMzBjMGMxYjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3dpbi9Xb3JrUXVldWVXaW4uY3BwCkBAIC0yOSw0NCArMjksOSBAQAogCiAjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8d3Rm
L3dpbi9Xb3JrSXRlbUNvbnRleHQuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKLXZvaWQgV29ya1F1
ZXVlOjpoYW5kbGVDYWxsYmFjayh2b2lkKiBkYXRhLCBCT09MRUFOIHRpbWVyT3JXYWl0RmlyZWQp
Ci17Ci0gICAgQVNTRVJUX0FSRyhkYXRhLCBkYXRhKTsKLSAgICBBU1NFUlRfQVJHKHRpbWVyT3JX
YWl0RmlyZWQsICF0aW1lck9yV2FpdEZpcmVkKTsKLQotICAgIFdvcmtJdGVtQ29udGV4dCogY29u
dGV4dCA9IHN0YXRpY19jYXN0PFdvcmtJdGVtQ29udGV4dCo+KGRhdGEpOwotICAgIFdvcmtRdWV1
ZSogcXVldWUgPSBjb250ZXh0LT5xdWV1ZSgpOwotCi0gICAgUmVmUHRyPFdvcmtJdGVtQ29udGV4
dD4gcHJvdGVjdG9yKGNvbnRleHQpOwotICAgIHF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdG9yXSB7
Ci0gICAgICAgIHByb3RlY3Rvci0+ZnVuY3Rpb24oKSgpOwotICAgIH0pOwotfQotCi12b2lkIFdv
cmtRdWV1ZTo6cmVnaXN0ZXJIYW5kbGUoSEFORExFIGhhbmRsZSwgRnVuY3Rpb248dm9pZCgpPiYm
IGZ1bmN0aW9uKQotewotICAgIFJlZjxXb3JrSXRlbUNvbnRleHQ+IGNvbnRleHQgPSBXb3JrSXRl
bUNvbnRleHQ6OmNyZWF0ZShoYW5kbGUsIG51bGxwdHIsIFdURk1vdmUoZnVuY3Rpb24pLCB0aGlz
KTsKLQotICAgIGlmICghOjpSZWdpc3RlcldhaXRGb3JTaW5nbGVPYmplY3QoJmNvbnRleHQtPndh
aXRIYW5kbGUoKS5tX2hhbmRsZSwgaGFuZGxlLCBoYW5kbGVDYWxsYmFjaywgY29udGV4dC5wdHIo
KSwgSU5GSU5JVEUsIFdUX0VYRUNVVEVERUZBVUxUKSkKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShtX3RpbWVyUXVldWUsICI6OlJlZ2lzdGVyV2FpdEZvclNpbmdsZU9iamVjdCAlbHUiLCA6
OkdldExhc3RFcnJvcigpKTsKLQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9pdGVtc01h
cExvY2spOwotICAgIEFTU0VSVF9BUkcoaGFuZGxlLCAhbV9pdGVtc01hcC5jb250YWlucyhoYW5k
bGUpKTsKLSAgICBtX2l0ZW1zTWFwLnNldChoYW5kbGUsIFdURk1vdmUoY29udGV4dCkpOwotfQot
Ci12b2lkIFdvcmtRdWV1ZTo6dW5yZWdpc3RlckFuZENsb3NlSGFuZGxlKEhBTkRMRSBoYW5kbGUp
Ci17Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2l0ZW1zTWFwTG9jayk7Ci0gICAgQVNT
RVJUX0FSRyhoYW5kbGUsIG1faXRlbXNNYXAuY29udGFpbnMoaGFuZGxlKSk7Ci0KLSAgICB1bnJl
Z2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtU29vbihtX2l0ZW1zTWFwLnRha2UoaGFuZGxlKS52YWx1
ZSgpKTsKLX0KLQogRFdPUkQgV29ya1F1ZXVlOjp3b3JrVGhyZWFkQ2FsbGJhY2sodm9pZCogY29u
dGV4dCkKIHsKICAgICBBU1NFUlRfQVJHKGNvbnRleHQsIGNvbnRleHQpOwpAQCAtMjIyLDI2ICsx
ODcsNCBAQCB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihTZWNvbmRzIGR1cmF0aW9uLCBG
dW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgY29udGV4dC5sZWFrUmVmKCk7CiB9CiAK
LXZvaWQgV29ya1F1ZXVlOjp1bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtU29vbihSZWY8V29y
a0l0ZW1Db250ZXh0PiYmIHdvcmtJdGVtKQotewotICAgIC8vIFdlJ3JlIGdvaW5nIHRvIG1ha2Ug
YSBibG9ja2luZyBjYWxsIHRvIDo6VW5yZWdpc3RlcldhaXRFeCBiZWZvcmUgY2xvc2luZyB0aGUg
aGFuZGxlLiAoVGhlCi0gICAgLy8gYmxvY2tpbmcgdmVyc2lvbiBvZiA6OlVucmVnaXN0ZXJXYWl0
RXggaXMgbXVjaCBzaW1wbGVyIHRoYW4gdGhlIG5vbi1ibG9ja2luZyB2ZXJzaW9uLikgSWYgd2UK
LSAgICAvLyBkbyB0aGlzIG9uIHRoZSBjdXJyZW50IHRocmVhZCwgd2UnbGwgZGVhZGxvY2sgaWYg
d2UncmUgY3VycmVudGx5IGluIGEgY2FsbGJhY2sgZnVuY3Rpb24gZm9yCi0gICAgLy8gdGhlIHdh
aXQgd2UncmUgdW5yZWdpc3RlcmluZy4gU28gaW5zdGVhZCB3ZSBkbyBpdCBhc3luY2hyb25vdXNs
eSBvbiBzb21lIG90aGVyIHdvcmtlciB0aHJlYWQuCi0gICAgOjpRdWV1ZVVzZXJXb3JrSXRlbSh1
bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtQ2FsbGJhY2ssIHdvcmtJdGVtLnB0cigpLCBXVF9F
WEVDVVRFREVGQVVMVCk7Ci19Ci0KLURXT1JEIFdJTkFQSSBXb3JrUXVldWU6OnVucmVnaXN0ZXJX
YWl0QW5kRGVzdHJveUl0ZW1DYWxsYmFjayh2b2lkKiBkYXRhKQotewotICAgIEFTU0VSVF9BUkco
ZGF0YSwgZGF0YSk7Ci0gICAgV29ya0l0ZW1Db250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
V29ya0l0ZW1Db250ZXh0Kj4oZGF0YSk7Ci0KLSAgICAvLyBOb3cgdGhhdCB3ZSBrbm93IHdlJ3Jl
IG5vdCBpbiBhIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgd2FpdCB3ZSdyZSB1bnJlZ2lzdGVy
aW5nLCB3ZSBjYW4KLSAgICAvLyBtYWtlIGEgYmxvY2tpbmcgY2FsbCB0byA6OlVucmVnaXN0ZXJX
YWl0RXguCi0gICAgaWYgKCE6OlVucmVnaXN0ZXJXYWl0RXgoY29udGV4dC0+d2FpdEhhbmRsZSgp
LmdldCgpLCBJTlZBTElEX0hBTkRMRV9WQUxVRSkpCi0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoZmFsc2UsICI6OlVucmVnaXN0ZXJXYWl0RXggZmFpbGVkIHdpdGggJyVzJyIsIDo6R2V0TGFz
dEVycm9yKCkpOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBlZDQ0YTcyM2VlNi4uZTRhMjM3MzllZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMTgtMDYtMTMgIEJhc3VrZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnkuY29tPgor
CisgICAgICAgIFtXaW5DYWlyb10gTW92ZSB1bnJlbGF0ZWQgZmVhdHVyZXMgb2YgV29ya1F1ZXVl
V2luIGludG8gSVBDOjpDb25uZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODY1ODIKKworICAgICAgICBBZGQgRXZlbnRMaXN0ZW5lciBwcml2
YXRlIGNsYXNzIHRvIGhhbmRsZSBzaWduYWxlZCB0YXNrcyBmb3IgSS9PLgorICAgICAgICBPcmln
aW5hbGx5IHRoZXkgd2VyZSBpbiBXVEY6OldvcmtRdWV1ZVdpbiwgYnV0IHRob3NlIGZlYXR1cmVz
IHdlcmUgbm90IHJlbGF0ZWQKKyAgICAgICAgdG8gV29ya1F1ZXVlIGFuZCBvbmx5IHVzZWQgaW4g
SVBDOjpDb25uZWN0aW9uV2luLiBNb3ZlZCBsb2dpYyBpcyBtb3JlIHNwZWNpYWxpemVkCisgICAg
ICAgIHRoYW4gb2xkIGdlbmVyYWxpemVkIGxvZ2ljLiBUaGF0IHdhcyB1bm5lZWRlZCBnZW5lcmFs
aXphdGlvbi4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246
OkV2ZW50TGlzdGVuZXI6OnN0YXRlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvd2luL0Nvbm5l
Y3Rpb25XaW4uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpwbGF0Zm9ybUluaXRpYWxp
emUpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpwbGF0Zm9ybUludmFsaWRhdGUpOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZWFkRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKElQQzo6
Q29ubmVjdGlvbjo6d3JpdGVFdmVudEhhbmRsZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjppbnZva2VSZWFkRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6aW52
b2tlV3JpdGVFdmVudEhhbmRsZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpvcGVuKToK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZSk6CisgICAgICAg
IChJUEM6OkNvbm5lY3Rpb246OkV2ZW50TGlzdGVuZXI6Om9wZW4pOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpFdmVudExpc3RlbmVyOjpjYWxsYmFjayk6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OkV2ZW50TGlzdGVuZXI6OmNsb3NlKToKKwogMjAxOC0wNi0xNCAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBXZWJE
cml2ZXI6IGhhbmRsZSBhY2NlcHRJbnNlY3VyZUNlcnRpZmljYXRlcyBjYXBhYmlsaXR5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggOGMzODBiM2Y5ZWQuLmYyNTk4
ZjY5NDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCkBAIC0zNDMs
MTIgKzM0MywyOSBAQCBwcml2YXRlOgogICAgIC8vIENhbGxlZCBvbiB0aGUgY29ubmVjdGlvbiBx
dWV1ZS4KICAgICB2b2lkIHJlYWRFdmVudEhhbmRsZXIoKTsKICAgICB2b2lkIHdyaXRlRXZlbnRI
YW5kbGVyKCk7CisgICAgdm9pZCBpbnZva2VSZWFkRXZlbnRIYW5kbGVyKCk7CisgICAgdm9pZCBp
bnZva2VXcml0ZUV2ZW50SGFuZGxlcigpOworCisgICAgY2xhc3MgRXZlbnRMaXN0ZW5lciB7Cisg
ICAgcHVibGljOgorICAgICAgICB2b2lkIG9wZW4oRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICAg
ICAgdm9pZCBjbG9zZSgpOworCisgICAgICAgIE9WRVJMQVBQRUQmIHN0YXRlKCkgeyByZXR1cm4g
bV9zdGF0ZTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgc3RhdGljIHZvaWQgY2FsbGJhY2so
dm9pZCosIEJPT0xFQU4pOworCisgICAgICAgIE9WRVJMQVBQRUQgbV9zdGF0ZTsKKyAgICAgICAg
SEFORExFIG1fd2FpdEhhbmRsZSB7IElOVkFMSURfSEFORExFX1ZBTFVFIH07CisgICAgICAgIEZ1
bmN0aW9uPHZvaWQoKT4gbV9oYW5kbGVyOworICAgIH07CiAKICAgICBWZWN0b3I8dWludDhfdD4g
bV9yZWFkQnVmZmVyOwotICAgIE9WRVJMQVBQRUQgbV9yZWFkU3RhdGU7CisgICAgRXZlbnRMaXN0
ZW5lciBtX3JlYWRMaXN0ZW5lcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gbV9wZW5k
aW5nV3JpdGVFbmNvZGVyOwotICAgIE9WRVJMQVBQRUQgbV93cml0ZVN0YXRlOwotICAgIEhBTkRM
RSBtX2Nvbm5lY3Rpb25QaXBlOworICAgIEV2ZW50TGlzdGVuZXIgbV93cml0ZUxpc3RlbmVyOwor
ICAgIEhBTkRMRSBtX2Nvbm5lY3Rpb25QaXBlIHsgSU5WQUxJRF9IQU5ETEVfVkFMVUUgfTsKICNl
bmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nv
bm5lY3Rpb25XaW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rp
b25XaW4uY3BwCmluZGV4IGJjOTRjNjdkMTE4Li5lNjFjNzkzNTE5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcApAQCAtNzIsMTIgKzcy
LDYgQEAgYm9vbCBDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVycyhI
QU5ETEUmIHNlcnZlcklkZW50aWZpZXIsIEhBTkQKIAogdm9pZCBDb25uZWN0aW9uOjpwbGF0Zm9y
bUluaXRpYWxpemUoSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIG1lbXNldCgmbV9yZWFk
U3RhdGUsIDAsIHNpemVvZihtX3JlYWRTdGF0ZSkpOwotICAgIG1fcmVhZFN0YXRlLmhFdmVudCA9
IDo6Q3JlYXRlRXZlbnRXKDAsIEZBTFNFLCBGQUxTRSwgMCk7Ci0KLSAgICBtZW1zZXQoJm1fd3Jp
dGVTdGF0ZSwgMCwgc2l6ZW9mKG1fd3JpdGVTdGF0ZSkpOwotICAgIG1fd3JpdGVTdGF0ZS5oRXZl
bnQgPSA6OkNyZWF0ZUV2ZW50VygwLCBGQUxTRSwgRkFMU0UsIDApOwotCiAgICAgbV9jb25uZWN0
aW9uUGlwZSA9IGlkZW50aWZpZXI7CiB9CiAKQEAgLTg4LDExICs4Miw4IEBAIHZvaWQgQ29ubmVj
dGlvbjo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKIAogICAgIG1faXNDb25uZWN0ZWQgPSBmYWxzZTsK
IAotICAgIG1fY29ubmVjdGlvblF1ZXVlLT51bnJlZ2lzdGVyQW5kQ2xvc2VIYW5kbGUobV9yZWFk
U3RhdGUuaEV2ZW50KTsKLSAgICBtX3JlYWRTdGF0ZS5oRXZlbnQgPSAwOwotCi0gICAgbV9jb25u
ZWN0aW9uUXVldWUtPnVucmVnaXN0ZXJBbmRDbG9zZUhhbmRsZShtX3dyaXRlU3RhdGUuaEV2ZW50
KTsKLSAgICBtX3dyaXRlU3RhdGUuaEV2ZW50ID0gMDsKKyAgICBtX3JlYWRMaXN0ZW5lci5jbG9z
ZSgpOworICAgIG1fd3JpdGVMaXN0ZW5lci5jbG9zZSgpOwogCiAgICAgOjpDbG9zZUhhbmRsZSht
X2Nvbm5lY3Rpb25QaXBlKTsKICAgICBtX2Nvbm5lY3Rpb25QaXBlID0gSU5WQUxJRF9IQU5ETEVf
VkFMVUU7CkBAIC0xMDYsNyArOTcsNyBAQCB2b2lkIENvbm5lY3Rpb246OnJlYWRFdmVudEhhbmRs
ZXIoKQogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIC8vIENoZWNrIGlmIHdlIGdvdCBzb21l
IGRhdGEuCiAgICAgICAgIERXT1JEIG51bWJlck9mQnl0ZXNSZWFkID0gMDsKLSAgICAgICAgaWYg
KCE6OkdldE92ZXJsYXBwZWRSZXN1bHQobV9jb25uZWN0aW9uUGlwZSwgJm1fcmVhZFN0YXRlLCAm
bnVtYmVyT2ZCeXRlc1JlYWQsIEZBTFNFKSkgeworICAgICAgICBpZiAoITo6R2V0T3ZlcmxhcHBl
ZFJlc3VsdChtX2Nvbm5lY3Rpb25QaXBlLCAmbV9yZWFkTGlzdGVuZXIuc3RhdGUoKSwgJm51bWJl
ck9mQnl0ZXNSZWFkLCBGQUxTRSkpIHsKICAgICAgICAgICAgIERXT1JEIGVycm9yID0gOjpHZXRM
YXN0RXJyb3IoKTsKICAgICAgICAgICAgIHN3aXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgIGNh
c2UgRVJST1JfQlJPS0VOX1BJUEU6CkBAIC0xMzMsNyArMTI0LDcgQEAgdm9pZCBDb25uZWN0aW9u
OjpyZWFkRXZlbnRIYW5kbGVyKCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgICAgICAgICBtX3JlYWRCdWZmZXIuZ3JvdyhtX3JlYWRCdWZmZXIuc2l6ZSgpICsgYnl0ZXNU
b1JlYWQpOwotICAgICAgICAgICAgICAgIGlmICghOjpSZWFkRmlsZShtX2Nvbm5lY3Rpb25QaXBl
LCBtX3JlYWRCdWZmZXIuZGF0YSgpICsgbnVtYmVyT2ZCeXRlc1JlYWQsIGJ5dGVzVG9SZWFkLCAw
LCAmbV9yZWFkU3RhdGUpKSB7CisgICAgICAgICAgICAgICAgaWYgKCE6OlJlYWRGaWxlKG1fY29u
bmVjdGlvblBpcGUsIG1fcmVhZEJ1ZmZlci5kYXRhKCkgKyBudW1iZXJPZkJ5dGVzUmVhZCwgYnl0
ZXNUb1JlYWQsIDAsICZtX3JlYWRMaXN0ZW5lci5zdGF0ZSgpKSkgewogICAgICAgICAgICAgICAg
ICAgICBEV09SRCBlcnJvciA9IDo6R2V0TGFzdEVycm9yKCk7CiAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0x
ODIsNyArMTczLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpyZWFkRXZlbnRIYW5kbGVyKCkKIAogICAg
ICAgICAvLyBFaXRoZXIgcmVhZCB0aGUgbmV4dCBhdmFpbGFibGUgbWVzc2FnZSAod2hpY2ggc2hv
dWxkIG9jY3VyIHN5bmNocm9ub3VzbHkpLCBvciBzdGFydCBhbgogICAgICAgICAvLyBhc3luY2hy
b25vdXMgcmVhZCBvZiB0aGUgbmV4dCBtZXNzYWdlIHRoYXQgYmVjb21lcyBhdmFpbGFibGUuCi0g
ICAgICAgIEJPT0wgcmVzdWx0ID0gOjpSZWFkRmlsZShtX2Nvbm5lY3Rpb25QaXBlLCBtX3JlYWRC
dWZmZXIuZGF0YSgpLCBtX3JlYWRCdWZmZXIuc2l6ZSgpLCAwLCAmbV9yZWFkU3RhdGUpOworICAg
ICAgICBCT09MIHJlc3VsdCA9IDo6UmVhZEZpbGUobV9jb25uZWN0aW9uUGlwZSwgbV9yZWFkQnVm
ZmVyLmRhdGEoKSwgbV9yZWFkQnVmZmVyLnNpemUoKSwgMCwgJm1fcmVhZExpc3RlbmVyLnN0YXRl
KCkpOwogICAgICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgICAgICAvLyBUaGVyZSB3YXMgYWxy
ZWFkeSBhIG1lc3NhZ2Ugd2FpdGluZyBpbiB0aGUgcGlwZSwgYW5kIHdlIHJlYWQgaXQgc3luY2hy
b25vdXNseS4KICAgICAgICAgICAgIC8vIFByb2Nlc3MgaXQuCkBAIC0yMTUsNyArMjA2LDcgQEAg
dm9pZCBDb25uZWN0aW9uOjp3cml0ZUV2ZW50SGFuZGxlcigpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIERXT1JEIG51bWJlck9mQnl0ZXNXcml0dGVuID0gMDsKLSAgICBpZiAoITo6R2V0T3Zlcmxh
cHBlZFJlc3VsdChtX2Nvbm5lY3Rpb25QaXBlLCAmbV93cml0ZVN0YXRlLCAmbnVtYmVyT2ZCeXRl
c1dyaXR0ZW4sIEZBTFNFKSkgeworICAgIGlmICghOjpHZXRPdmVybGFwcGVkUmVzdWx0KG1fY29u
bmVjdGlvblBpcGUsICZtX3dyaXRlTGlzdGVuZXIuc3RhdGUoKSwgJm51bWJlck9mQnl0ZXNXcml0
dGVuLCBGQUxTRSkpIHsKICAgICAgICAgRFdPUkQgZXJyb3IgPSA6OkdldExhc3RFcnJvcigpOwog
CiAgICAgICAgIGlmIChlcnJvciA9PSBFUlJPUl9JT19JTkNPTVBMRVRFKSB7CkBAIC0yMzcsMjYg
KzIyOCwzNiBAQCB2b2lkIENvbm5lY3Rpb246OndyaXRlRXZlbnRIYW5kbGVyKCkKICAgICBzZW5k
T3V0Z29pbmdNZXNzYWdlcygpOwogfQogCit2b2lkIENvbm5lY3Rpb246Omludm9rZVJlYWRFdmVu
dEhhbmRsZXIoKQoreworICAgIG1fY29ubmVjdGlvblF1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHJlYWRFdmVudEhhbmRsZXIo
KTsKKyAgICB9KTsKK30KKwordm9pZCBDb25uZWN0aW9uOjppbnZva2VXcml0ZUV2ZW50SGFuZGxl
cigpCit7CisgICAgbV9jb25uZWN0aW9uUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgd3JpdGVFdmVudEhhbmRsZXIoKTsKKyAg
ICB9KTsKK30KKwogYm9vbCBDb25uZWN0aW9uOjpvcGVuKCkKIHsKICAgICAvLyBXZSBjb25uZWN0
ZWQgdGhlIHR3byBlbmRzIG9mIHRoZSBwaXBlIGluIGNyZWF0ZVNlcnZlckFuZENsaWVudElkZW50
aWZpZXJzLgogICAgIG1faXNDb25uZWN0ZWQgPSB0cnVlOwogCi0gICAgUmVmUHRyPENvbm5lY3Rp
b24+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0KICAgICAvLyBTdGFydCBsaXN0ZW5pbmcgZm9yIHJl
YWQgYW5kIHdyaXRlIHN0YXRlIGV2ZW50cy4KLSAgICBtX2Nvbm5lY3Rpb25RdWV1ZS0+cmVnaXN0
ZXJIYW5kbGUobV9yZWFkU3RhdGUuaEV2ZW50LCBbcHJvdGVjdGVkVGhpc10gewotICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5yZWFkRXZlbnRIYW5kbGVyKCk7CisgICAgbV9yZWFkTGlzdGVuZXIub3Bl
bihbdGhpc10geworICAgICAgICBpbnZva2VSZWFkRXZlbnRIYW5kbGVyKCk7CiAgICAgfSk7CiAK
LSAgICBtX2Nvbm5lY3Rpb25RdWV1ZS0+cmVnaXN0ZXJIYW5kbGUobV93cml0ZVN0YXRlLmhFdmVu
dCwgW3Byb3RlY3RlZFRoaXNdIHsKLSAgICAgICAgcHJvdGVjdGVkVGhpcy0+d3JpdGVFdmVudEhh
bmRsZXIoKTsKKyAgICBtX3dyaXRlTGlzdGVuZXIub3BlbihbdGhpc10geworICAgICAgICBpbnZv
a2VXcml0ZUV2ZW50SGFuZGxlcigpOwogICAgIH0pOwogCiAgICAgLy8gU2NoZWR1bGUgYSByZWFk
LgotICAgIG1fY29ubmVjdGlvblF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpc10gewotICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5yZWFkRXZlbnRIYW5kbGVyKCk7Ci0gICAgfSk7CisgICAgaW52
b2tlUmVhZEV2ZW50SGFuZGxlcigpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yODEsNyAr
MjgyLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKHN0ZDo6dW5pcXVl
X3B0cjxFbmNvZGVyPiBlbmNvZGVyKQogCiAgICAgLy8gV3JpdGUgdGhlIG91dGdvaW5nIG1lc3Nh
Z2UuCiAKLSAgICBpZiAoOjpXcml0ZUZpbGUobV9jb25uZWN0aW9uUGlwZSwgZW5jb2Rlci0+YnVm
ZmVyKCksIGVuY29kZXItPmJ1ZmZlclNpemUoKSwgMCwgJm1fd3JpdGVTdGF0ZSkpIHsKKyAgICBp
ZiAoOjpXcml0ZUZpbGUobV9jb25uZWN0aW9uUGlwZSwgZW5jb2Rlci0+YnVmZmVyKCksIGVuY29k
ZXItPmJ1ZmZlclNpemUoKSwgMCwgJm1fd3JpdGVMaXN0ZW5lci5zdGF0ZSgpKSkgewogICAgICAg
ICAvLyBXZSBzdWNjZXNzZnVsbHkgc2VudCB0aGlzIG1lc3NhZ2UuCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KQEAgLTMxNSw0ICszMTYsNDUgQEAgdm9pZCBDb25uZWN0aW9uOjpkaWRSZWNl
aXZlU3luY1JlcGx5KE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4pCiB7CiB9CiAKK3ZvaWQgQ29u
bmVjdGlvbjo6RXZlbnRMaXN0ZW5lcjo6b3BlbihGdW5jdGlvbjx2b2lkKCk+JiYgaGFuZGxlcikK
K3sKKyAgICBtX2hhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpOworCisgICAgbWVtc2V0KCZtX3N0
YXRlLCAwLCBzaXplb2YobV9zdGF0ZSkpOworICAgIG1fc3RhdGUuaEV2ZW50ID0gOjpDcmVhdGVF
dmVudFcoMCwgRkFMU0UsIEZBTFNFLCAwKTsKKworICAgIEJPT0wgcmVzdWx0OworICAgIHJlc3Vs
dCA9IDo6UmVnaXN0ZXJXYWl0Rm9yU2luZ2xlT2JqZWN0KCZtX3dhaXRIYW5kbGUsIG1fc3RhdGUu
aEV2ZW50LCBjYWxsYmFjaywgdGhpcywgSU5GSU5JVEUsIFdUX0VYRUNVVEVERUZBVUxUKTsKKyAg
ICBBU1NFUlQocmVzdWx0KTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpFdmVudExpc3RlbmVyOjpj
YWxsYmFjayh2b2lkKiBkYXRhLCBCT09MRUFOIHRpbWVyT3JXYWl0RmlyZWQpCit7CisgICAgQVNT
RVJUX0FSRyhkYXRhLCBkYXRhKTsKKyAgICBBU1NFUlRfQVJHKHRpbWVyT3JXYWl0RmlyZWQsICF0
aW1lck9yV2FpdEZpcmVkKTsKKworICAgIGF1dG8qIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8Q29u
bmVjdGlvbjo6RXZlbnRMaXN0ZW5lcio+KGRhdGEpOworICAgIGxpc3RlbmVyLT5tX2hhbmRsZXIo
KTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpFdmVudExpc3RlbmVyOjpjbG9zZSgpCit7CisgICAg
Ly8gV2UgY2FsbCA6OlVucmVnaXN0ZXJXYWl0RXggZGlyZWN0bHkgaGVyZS4gU2luY2UgOjpVbnJl
Z2lzdGVyV2FpdEV4IGRyYWlucyBhbGwgdGhlIHJlbWFpbmluZyB0YXNrcyBoZXJlLAorICAgIC8v
IGl0IHdvdWxkIGNhdXNlIGRlYWRsb2NrIGlmIHRoaXMgZnVuY3Rpb24gaXRzZWxmIGlzIGV4ZWN1
dGVkIGluIFdpbmRvd3MgY2FsbGJhY2sgZnVuY3Rpb25zLiBCdXQgdGhpcyBjYWxsCisgICAgLy8g
aXMgc2FmZSBzaW5jZSBvdXIgY2FsbGJhY2tzIGltbWVkaWF0ZWx5IGRpc3BhdGNoIGEgdGFzayB0
byBXb3JrUXVldWUuIEFuZCBubyBXaW5kb3dzIGNhbGxiYWNrcyBjYWxsIHRoaXMKKyAgICAvLyBD
b25uZWN0aW9uOjpFdmVudExpc3RlbmVyOjpjbG9zZSgpLgorICAgIC8vIGh0dHBzOi8vbXNkbi5t
aWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL21zNjg1MDYxKHY9dnMu
ODUpLmFzcHgKKyAgICAvLworICAgIC8vIEFuZCBkbyBub3QgOjpDbG9zZUhhbmRsZShtX3dhaXRI
YW5kbGUpLgorICAgIC8vID4gTm90ZSB0aGF0IGEgd2FpdCBoYW5kbGUgY2Fubm90IGJlIHVzZWQg
aW4gZnVuY3Rpb25zIHRoYXQgcmVxdWlyZSBhbiBvYmplY3QgaGFuZGxlLCBzdWNoIGFzIENsb3Nl
SGFuZGxlLgorICAgIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkv
d2luZG93cy9kZXNrdG9wL21zNjg1MDYxKHY9dnMuODUpLmFzcHgKKyAgICA6OlVucmVnaXN0ZXJX
YWl0RXgobV93YWl0SGFuZGxlLCBJTlZBTElEX0hBTkRMRV9WQUxVRSk7CisgICAgbV93YWl0SGFu
ZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisKKyAgICA6OkNsb3NlSGFuZGxlKG1fc3RhdGUu
aEV2ZW50KTsKKyAgICBtX3N0YXRlLmhFdmVudCA9IDA7CisKKyAgICBtX2hhbmRsZXIgPSBGdW5j
dGlvbjx2b2lkKCk+KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIElQQwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>