<?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>173519</bug_id>
          
          <creation_ts>2017-06-17 19:19:24 -0700</creation_ts>
          <short_desc>Use WTF::Function instead of std::function in WTF/</short_desc>
          <delta_ts>2017-06-18 13:27:16 -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>Web Template Framework</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1320464</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-17 19:19:24 -0700</bug_when>
    <thetext>Use WTF::Function instead of std::function in WTF/ to avoid copying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320470</commentid>
    <comment_count>1</comment_count>
      <attachid>313219</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-17 21:34:48 -0700</bug_when>
    <thetext>Created attachment 313219
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320471</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-17 21:35:51 -0700</bug_when>
    <thetext>Attachment 313219 did not pass style-queue:


ERROR: Source/WTF/wtf/MemoryPressureHandler.h:175:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MemoryPressureHandler.h:182:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RefCounter.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/linux/MemoryPressureHandlerLinux.cpp:102:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 4 in 11 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>1320512</commentid>
    <comment_count>3</comment_count>
      <attachid>313219</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-06-18 11:36:41 -0700</bug_when>
    <thetext>Comment on attachment 313219
Patch

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

&gt; Source/WTF/wtf/text/WTFString.h:370
&gt; +    using SplitFunctor = WTF::Function&lt;void(const StringView&amp;)&gt;;
&gt; +    WTF_EXPORT_STRING_API void split(UChar separator, bool allowEmptyEntries, const SplitFunctor&amp;) const;

This kind of basic algorithm seems like it should a template function and take the functor as a template parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320513</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-18 11:37:25 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #3)
&gt; Comment on attachment 313219 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=313219&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/text/WTFString.h:370
&gt; &gt; +    using SplitFunctor = WTF::Function&lt;void(const StringView&amp;)&gt;;
&gt; &gt; +    WTF_EXPORT_STRING_API void split(UChar separator, bool allowEmptyEntries, const SplitFunctor&amp;) const;
&gt; 
&gt; This kind of basic algorithm seems like it should a template function and
&gt; take the functor as a template parameter.

Agreed. Should I do it in this patch or a follow-up?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320523</commentid>
    <comment_count>5</comment_count>
      <attachid>313219</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-18 12:19:52 -0700</bug_when>
    <thetext>Comment on attachment 313219
Patch

Will do in a follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320532</commentid>
    <comment_count>6</comment_count>
      <attachid>313219</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-18 12:49:16 -0700</bug_when>
    <thetext>Comment on attachment 313219
Patch

Clearing flags on attachment: 313219

Committed r218464: &lt;http://trac.webkit.org/changeset/218464&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320533</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-18 12:49:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320540</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-06-18 13:20:10 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; (In reply to Sam Weinig from comment #3)
&gt; &gt; Comment on attachment 313219 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=313219&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WTF/wtf/text/WTFString.h:370
&gt; &gt; &gt; +    using SplitFunctor = WTF::Function&lt;void(const StringView&amp;)&gt;;
&gt; &gt; &gt; +    WTF_EXPORT_STRING_API void split(UChar separator, bool allowEmptyEntries, const SplitFunctor&amp;) const;
&gt; &gt; 
&gt; &gt; This kind of basic algorithm seems like it should a template function and
&gt; &gt; take the functor as a template parameter.
&gt; 
&gt; Agreed. Should I do it in this patch or a follow-up?

Follow-up probably.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320545</commentid>
    <comment_count>9</comment_count>
      <attachid>313219</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-18 13:27:16 -0700</bug_when>
    <thetext>Comment on attachment 313219
Patch

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

&gt;&gt;&gt;&gt; Source/WTF/wtf/text/WTFString.h:370
&gt;&gt;&gt;&gt; +    WTF_EXPORT_STRING_API void split(UChar separator, bool allowEmptyEntries, const SplitFunctor&amp;) const;
&gt;&gt;&gt; 
&gt;&gt;&gt; This kind of basic algorithm seems like it should a template function and take the functor as a template parameter.
&gt;&gt; 
&gt;&gt; Agreed. Should I do it in this patch or a follow-up?
&gt; 
&gt; Follow-up probably.

Note that in this case though, it would force us to move the implementation in the header (it is currently in the cpp).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313219</attachid>
            <date>2017-06-17 21:34:48 -0700</date>
            <delta_ts>2017-06-18 12:49:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173519-20170617213447.patch</filename>
            <type>text/plain</type>
            <size>18102</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NDYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI3N2E4MDM1ODAzMTNkMGQxZDg3NTEz
NmNiYzdkZWU4NTgwODE1MzMuLmY3OWRlNTg4YWQ0NTQ5NzNjNGM1OGU5ODRjODhmYjJlMGRlYTgy
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTctMDYtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV1RGOjpGdW5jdGlvbiBpbnN0ZWFkIG9mIHN0ZDo6
ZnVuY3Rpb24gaW4gV1RGLworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTczNTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXNlIFdURjo6RnVuY3Rpb24gaW5zdGVhZCBvZiBzdGQ6OmZ1bmN0aW9uIGluIFdU
Ri8gdG8gYXZvaWQKKyAgICAgICAgY29weWluZy4KKworICAgICAgICAqIHd0Zi9CcmlnYW5kLmg6
CisgICAgICAgICogd3RmL0NvbmRpdGlvbi5oOgorICAgICAgICAqIHd0Zi9FeHBlY3RlZC5oOgor
ICAgICAgICAqIHd0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaDoKKyAgICAgICAgKiB3dGYvTWFpblRo
cmVhZC5oOgorICAgICAgICAqIHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaDoKKyAgICAgICAg
KFdURjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRNZW1vcnlLaWxsQ2FsbGJhY2spOgorICAg
ICAgICAoV1RGOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNldE1lbW9yeVByZXNzdXJlU3RhdHVz
Q2hhbmdlZENhbGxiYWNrKToKKyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpz
ZXREaWRFeGNlZWRJbmFjdGl2ZUxpbWl0V2hpbGVBY3RpdmVDYWxsYmFjayk6CisgICAgICAgICog
d3RmL09wdGlvbmFsLmg6CisgICAgICAgICogd3RmL1BhcmtpbmdMb3QuaDoKKyAgICAgICAgKiB3
dGYvUmVmQ291bnRlci5oOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVyPFQ+OjpSZWZDb3VudGVy
KToKKyAgICAgICAgKiB3dGYvV29ya1F1ZXVlLmg6CisgICAgICAgICogd3RmL2xpbnV4L01lbW9y
eVByZXNzdXJlSGFuZGxlckxpbnV4LmNwcDoKKyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjpFdmVudEZEUG9sbGVyOjpFdmVudEZEUG9sbGVyKToKKyAgICAgICAgKiB3dGYvdGV4
dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmc6OnNwbGl0KToKKyAgICAgICAg
KiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKwogMjAxNy0wNi0xNiAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBNYWMgQ01ha2UgYnVpbGQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMTU5ZTRkNmM2MjFlODU4NWM3NzFmZmY0YmJlOGRlMmYzZjE1MDhjMC4u
NmQxZmYzYjhhNDQzNTg3MjkyMWIxYzNkZmRkYjUyY2Y5ODFmODRhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI2IEBACisyMDE3LTA2LTE3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgVXNlIFdURjo6RnVuY3Rpb24gaW5zdGVhZCBvZiBzdGQ6OmZ1bmN0aW9uIGlu
IFdURi8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MzUxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
cGxhY2UgYSBmZXcgdXNlcyBvZiBzdGQ6OmZ1bmN0aW9uIHdpdGggV1RGOjpGdW5jdGlvbiBpbiBX
ZWJDb3JlLworICAgICAgICBhcyB3ZWxsLiBJdCB3YXMgZWl0aGVyIHRoaXMgb3IgaW5jbHVkaW5n
IDxmdW5jdGlvbmFsPiBhbmQgSSBkZWNpZGVkCisgICAgICAgIGl0IG1hZGUgbW9yZSBzZW5zZSB0
byBwb3J0IHRoZSBjb2RlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVj
dGlvbkFsZ29yaXRobS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFNlbGVjdGlvbkFsZ29yaXRo
bTo6aXRlcmF0ZUFjdGl2ZUNhcGFiaWxpdGllc1dpdGhSZXR1cm4pOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3RyaW5nQ29uc3RyYWludDo6ZmluZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVRyYWNrQ29u
c3RyYWludFNldE1hcDo6Zm9yRWFjaCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVRyYWNrQ29u
c3RyYWludFNldE1hcDo6ZmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWlu
dHM6OmlzQ29uc3RyYWludFNldCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFDb25zdHJhaW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6OmZp
bmQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJh
aW50KToKKwogMjAxNy0wNi0xNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbXBsZW1lbnQgRE9NUXVhZApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvQnJpZ2FuZC5oIGIvU291cmNlL1dURi93dGYvQnJpZ2FuZC5oCmluZGV4IDIwMDBhODI1MDUz
ZmYzYTZmNTI1Y2VkNjY3ODk0NjIzM2MyYzVmMGIuLjJjNWM2ZDU5M2M5OTNlODNhYmUxZWZiMTM3
ZGQwM2FiN2IyMmZjNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0JyaWdhbmQuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9CcmlnYW5kLmgKQEAgLTUxLDcgKzUxLDYgQEAKICNpbmNsdWRlIDxj
c3RkZGVmPgogI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8Y3N0cmluZz4KLSNpbmNsdWRl
IDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPGluaXRpYWxpemVyX2xpc3Q+CiAjaW5jbHVkZSA8dHVw
bGU+CiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9D
b25kaXRpb24uaCBiL1NvdXJjZS9XVEYvd3RmL0NvbmRpdGlvbi5oCmluZGV4IGJiMGM5YTU0MTlh
ZmJjZjEyNjgyNzczZjM4YTI4MzIyYWVjZjhkOWYuLjk0NDRmOTQ5ZWVkZWZkZmY2NjFkYmM2YTRi
MWRhY2RmNTRlNmI3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NvbmRpdGlvbi5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0NvbmRpdGlvbi5oCkBAIC0yNiw3ICsyNiw2IEBACiAjaWZuZGVm
IFdURl9Db25kaXRpb25faAogI2RlZmluZSBXVEZfQ29uZGl0aW9uX2gKIAotI2luY2x1ZGUgPGZ1
bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1BhcmtpbmdMb3QuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0V4cGVjdGVkLmggYi9Tb3VyY2UvV1RGL3d0Zi9FeHBlY3RlZC5oCmluZGV4
IDM5YzdlODc2YjE0ODMxZDk5M2JlZDNlMTllM2NmOGFlODBjMDU3NWEuLjQ0MmQzY2FiM2E2YmUx
OGFkMjEwNjczNDczNTc5OGQzODQ1Mjc2MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0V4
cGVjdGVkLmgKKysrIGIvU291cmNlL1dURi93dGYvRXhwZWN0ZWQuaApAQCAtMjksNyArMjksNiBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxjc3RkbGliPgotI2luY2x1ZGUgPGZ1bmN0aW9u
YWw+CiAjaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4K
ICNpbmNsdWRlIDx1dGlsaXR5PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRnVuY3Rpb25E
aXNwYXRjaGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaAppbmRleCAz
NDRhMTYwMjA4NDBmNWNkNDUwOWQ3Y2UzNjRkNzM3ZDQ5OGVlNzMzLi5mOTBjN2JjZmYwODE3N2Ri
MTFjYmRlMmY2OTQyYWMyNGVjZDI0YTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GdW5j
dGlvbkRpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIu
aApAQCAtMjYsNyArMjYsNiBAQAogI2lmbmRlZiBGdW5jdGlvbkRpc3BhdGNoZXJfaAogI2RlZmlu
ZSBGdW5jdGlvbkRpc3BhdGNoZXJfaAogCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRl
IDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oIGIvU291cmNlL1dURi93
dGYvTWFpblRocmVhZC5oCmluZGV4IDBlNzhlOGU1MWFiZThkOTU1NDcyYzc5ZGQzNDY5MmYxNTQ2
ZGIxYTkuLjE0YjM0NjczYTBiZDg1NzdjMTI3ZmNmMjY5YjczMjllYjZiMDA3ZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWlu
VGhyZWFkLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpZm5kZWYgTWFpblRocmVhZF9oCiAjZGVmaW5l
IE1haW5UaHJlYWRfaAogCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDxzdGRpbnQu
aD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oIGIvU291
cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKaW5kZXggMDg5M2Y0ZjU1ODFkMWVj
NTY5YTEzOGE2MjEyM2VmZTVjNjUwZTU5ZS4uY2IxNmVhOTBkOTk2OWIzOWIxYWZjOWY4NmI0MDA3
M2FmOTlkODg5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKQEAgLTI4
LDkgKzI4LDkgQEAKIAogI2luY2x1ZGUgPGF0b21pYz4KICNpbmNsdWRlIDxjdGltZT4KLSNpbmNs
dWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3
dGYvUnVuTG9vcC5oPgpAQCAtNTksNyArNTksNyBAQCBlbnVtIGNsYXNzIFdlYnNhbVByb2Nlc3NT
dGF0ZSB7CiBlbnVtIGNsYXNzIENyaXRpY2FsIHsgTm8sIFllcyB9OwogZW51bSBjbGFzcyBTeW5j
aHJvbm91cyB7IE5vLCBZZXMgfTsKIAotdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQoQ3JpdGlj
YWwsIFN5bmNocm9ub3VzKT4gTG93TWVtb3J5SGFuZGxlcjsKK3R5cGVkZWYgV1RGOjpGdW5jdGlv
bjx2b2lkKENyaXRpY2FsLCBTeW5jaHJvbm91cyk+IExvd01lbW9yeUhhbmRsZXI7CiAKIGNsYXNz
IE1lbW9yeVByZXNzdXJlSGFuZGxlciB7CiAgICAgZnJpZW5kIGNsYXNzIFdURjo6TmV2ZXJEZXN0
cm95ZWQ8TWVtb3J5UHJlc3N1cmVIYW5kbGVyPjsKQEAgLTcwLDkgKzcwLDkgQEAgcHVibGljOgog
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0U2hvdWxkVXNlUGVyaW9kaWNNZW1vcnlN
b25pdG9yKGJvb2wpOwogCi0gICAgdm9pZCBzZXRNZW1vcnlLaWxsQ2FsbGJhY2soV1RGOjpGdW5j
dGlvbjx2b2lkKCk+IGZ1bmN0aW9uKSB7IG1fbWVtb3J5S2lsbENhbGxiYWNrID0gV1RGTW92ZShm
dW5jdGlvbik7IH0KLSAgICB2b2lkIHNldE1lbW9yeVByZXNzdXJlU3RhdHVzQ2hhbmdlZENhbGxi
YWNrKFdURjo6RnVuY3Rpb248dm9pZChib29sKT4gZnVuY3Rpb24pIHsgbV9tZW1vcnlQcmVzc3Vy
ZVN0YXR1c0NoYW5nZWRDYWxsYmFjayA9IFdURk1vdmUoZnVuY3Rpb24pOyB9Ci0gICAgdm9pZCBz
ZXREaWRFeGNlZWRJbmFjdGl2ZUxpbWl0V2hpbGVBY3RpdmVDYWxsYmFjayhXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4gZnVuY3Rpb24pIHsgbV9kaWRFeGNlZWRJbmFjdGl2ZUxpbWl0V2hpbGVBY3RpdmVD
YWxsYmFjayA9IFdURk1vdmUoZnVuY3Rpb24pOyB9CisgICAgdm9pZCBzZXRNZW1vcnlLaWxsQ2Fs
bGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pIHsgbV9tZW1vcnlLaWxsQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGZ1bmN0aW9uKTsgfQorICAgIHZvaWQgc2V0TWVtb3J5UHJlc3N1cmVT
dGF0dXNDaGFuZ2VkQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGZ1bmN0aW9u
KSB7IG1fbWVtb3J5UHJlc3N1cmVTdGF0dXNDaGFuZ2VkQ2FsbGJhY2sgPSBXVEZNb3ZlKGZ1bmN0
aW9uKTsgfQorICAgIHZvaWQgc2V0RGlkRXhjZWVkSW5hY3RpdmVMaW1pdFdoaWxlQWN0aXZlQ2Fs
bGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pIHsgbV9kaWRFeGNlZWRJbmFj
dGl2ZUxpbWl0V2hpbGVBY3RpdmVDYWxsYmFjayA9IFdURk1vdmUoZnVuY3Rpb24pOyB9CiAKICAg
ICB2b2lkIHNldExvd01lbW9yeUhhbmRsZXIoTG93TWVtb3J5SGFuZGxlciYmIGhhbmRsZXIpCiAg
ICAgewpAQCAtMTcyLDE0ICsxNzIsMTQgQEAgcHJpdmF0ZToKICAgICBjbGFzcyBFdmVudEZEUG9s
bGVyIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXZlbnRGRFBvbGxlcik7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAgRXZlbnRGRFBvbGxlcihp
bnQgZmQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBub3RpZnlIYW5kbGVyKTsKKyAgICAgICAg
RXZlbnRGRFBvbGxlcihpbnQgZmQsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBub3RpZnlIYW5k
bGVyKTsKICAgICAgICAgfkV2ZW50RkRQb2xsZXIoKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IHZvaWQgcmVhZEFuZE5vdGlmeSgpIGNvbnN0OwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50
PiBtX2ZkOwotICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1fbm90aWZ5SGFuZGxlcjsK
KyAgICAgICAgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiBtX25vdGlmeUhhbmRsZXI7CiAjaWYgVVNF
KEdMSUIpCiAgICAgICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9zb3VyY2U7CiAjZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvT3B0aW9uYWwuaCBiL1NvdXJjZS9XVEYvd3RmL09wdGlvbmFs
LmgKaW5kZXggMmIzYzdjMTI0OGFlZTk2MWUwZmNjZTdhNDgwZWFhYzMyZGM4MDgzNS4uNDE4OWNi
MThjOTVkOGFhOGQxNjRhNTJhNDg1ZjAxZWE4MTIwNzgzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvT3B0aW9uYWwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oCkBAIC00MSw3
ICs0MSw2IEBACiAjIGluY2x1ZGUgPHR5cGVfdHJhaXRzPgogIyBpbmNsdWRlIDxpbml0aWFsaXpl
cl9saXN0PgogIyBpbmNsdWRlIDxjYXNzZXJ0PgotIyBpbmNsdWRlIDxmdW5jdGlvbmFsPgogIyBp
bmNsdWRlIDxzdHJpbmc+CiAjIGluY2x1ZGUgPHN0ZGV4Y2VwdD4KICMgaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BhcmtpbmdMb3QuaCBiL1Nv
dXJjZS9XVEYvd3RmL1BhcmtpbmdMb3QuaAppbmRleCBiNmQ4ODMwZDE5YzdiN2ZkNGNjNmFjYWUz
NjJhZWEzYjk0M2E5ZDUyLi5iMzhmZjMwYzg0MDU0MjM1NGE2Mjc3MGM1ZGE4NTJlZWY1ODA1NjFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmgKKysrIGIvU291cmNlL1dU
Ri93dGYvUGFya2luZ0xvdC5oCkBAIC0yNiw3ICsyNiw2IEBACiAjaWZuZGVmIFdURl9QYXJraW5n
TG90X2gKICNkZWZpbmUgV1RGX1BhcmtpbmdMb3RfaAogCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4K
ICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZWRMYW1iZGEuaD4K
ICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9S
ZWZDb3VudGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVyLmgKaW5kZXggYjFhYWQ1NjAz
NzczN2ZmZmM3OTZlMmZmMjdmNDA4Y2Q0NTgyZjM4ZS4uMDVmMjhmNGI2YzY2MmFiM2Q3OTM5YjYy
YzZiYmI3MjYzNmM0MGZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlci5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZXIuaApAQCAtMjYsNyArMjYsNyBAQAogI2lm
bmRlZiBSZWZDb3VudGVyX2gKICNkZWZpbmUgUmVmQ291bnRlcl9oCiAKLSNpbmNsdWRlIDxmdW5j
dGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNTksOSArNTksOSBAQCBjbGFz
cyBSZWZDb3VudGVyIHsKIAogcHVibGljOgogICAgIHVzaW5nIFRva2VuID0gUmVmUHRyPENvdW50
PjsKLSAgICB1c2luZyBWYWx1ZUNoYW5nZUZ1bmN0aW9uID0gc3RkOjpmdW5jdGlvbjx2b2lkIChS
ZWZDb3VudGVyRXZlbnQpPjsKKyAgICB1c2luZyBWYWx1ZUNoYW5nZUZ1bmN0aW9uID0gV1RGOjpG
dW5jdGlvbjx2b2lkIChSZWZDb3VudGVyRXZlbnQpPjsKIAotICAgIFJlZkNvdW50ZXIoVmFsdWVD
aGFuZ2VGdW5jdGlvbiA9IG51bGxwdHIpOworICAgIFJlZkNvdW50ZXIoVmFsdWVDaGFuZ2VGdW5j
dGlvbiYmID0gbnVsbHB0cik7CiAgICAgflJlZkNvdW50ZXIoKTsKIAogICAgIFRva2VuIGNvdW50
KCkgY29uc3QKQEAgLTEwNSw4ICsxMDUsOCBAQCBpbmxpbmUgdm9pZCBSZWZDb3VudGVyPFQ+OjpD
b3VudDo6ZGVyZWYoKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIFJlZkNvdW50
ZXI8VD46OlJlZkNvdW50ZXIoVmFsdWVDaGFuZ2VGdW5jdGlvbiB2YWx1ZURpZENoYW5nZSkKLSAg
ICA6IG1fdmFsdWVEaWRDaGFuZ2UodmFsdWVEaWRDaGFuZ2UpCitpbmxpbmUgUmVmQ291bnRlcjxU
Pjo6UmVmQ291bnRlcihWYWx1ZUNoYW5nZUZ1bmN0aW9uJiYgdmFsdWVEaWRDaGFuZ2UpCisgICAg
OiBtX3ZhbHVlRGlkQ2hhbmdlKFdURk1vdmUodmFsdWVEaWRDaGFuZ2UpKQogICAgICwgbV9jb3Vu
dChuZXcgQ291bnQoKnRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29y
a1F1ZXVlLmggYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAppbmRleCAyMzE5OGQ0NDk4NTRm
MmVkYTFkNjIxMjUyMjk0NDRiMWY1NmUxMGJiLi4yNDMyNzEwYTE2MzYwYWRmZTY0NmIwYjIxNGM1
MzgxNmFkZmMwNjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaApAQCAtMjcsNyArMjcsNiBAQAogI2lmbmRlZiBX
b3JrUXVldWVfaAogI2RlZmluZSBXb3JrUXVldWVfaAogCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbkRpc3BhdGNo
ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwIGIvU291cmNlL1dURi93
dGYvbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwCmluZGV4IGUzYWFjNTkyMzdk
ZDhiMjhmNWYwYWJhYjFkMzI5ZGNkNzJhZjhkZWYuLjE1YTViMTI2ODFkZmE0YzJiYmM0NGJmMTA1
YjMzNGNkOTU0M2UyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2xpbnV4L01lbW9yeVBy
ZXNzdXJlSGFuZGxlckxpbnV4LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9saW51eC9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXJMaW51eC5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIEdTb3VyY2VG
dW5jcyBldmVudEZEU291cmNlRnVuY3Rpb25zID0gewogfTsKICNlbmRpZgogCi1NZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OkV2ZW50RkRQb2xsZXI6OkV2ZW50RkRQb2xsZXIoaW50IGZkLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKCk+JiYgbm90aWZ5SGFuZGxlcikKK01lbW9yeVByZXNzdXJlSGFuZGxlcjo6
RXZlbnRGRFBvbGxlcjo6RXZlbnRGRFBvbGxlcihpbnQgZmQsIFdURjo6RnVuY3Rpb248dm9pZCAo
KT4mJiBub3RpZnlIYW5kbGVyKQogICAgIDogbV9mZChmZCkKICAgICAsIG1fbm90aWZ5SGFuZGxl
cihXVEZNb3ZlKG5vdGlmeUhhbmRsZXIpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCmlu
ZGV4IDA0MmQ0MzI3Njg5ZWQzNDkyOGQ3NmQyMTk1Y2RmNjAyMjE2Yzg5MDYuLmRiZTZlZWFiMTcx
Njg3ZDk1MmEwYjE1ZWZlNzZhZmFiMzcwMzEwN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5j
cHAKQEAgLTc0Myw3ICs3NDMsNyBAQCB2b2lkIFN0cmluZzo6c3BsaXQoY29uc3QgU3RyaW5nJiBz
ZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIFZlY3RvcjxTdHJpbgogICAgICAgICBy
ZXN1bHQuYXBwZW5kKHN1YnN0cmluZyhzdGFydFBvcykpOwogfQogCi12b2lkIFN0cmluZzo6c3Bs
aXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBTcGxpdEZ1bmN0b3Im
JiBmdW5jdG9yKSBjb25zdAordm9pZCBTdHJpbmc6OnNwbGl0KFVDaGFyIHNlcGFyYXRvciwgYm9v
bCBhbGxvd0VtcHR5RW50cmllcywgY29uc3QgU3BsaXRGdW5jdG9yJiBmdW5jdG9yKSBjb25zdAog
ewogICAgIFN0cmluZ1ZpZXcgdmlldygqdGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmlu
ZGV4IGJhOGU2MTE4MDk2MjVjYWQzYTI4YzExNzFmNzk5MmQ1ZjVmOWJhZDEuLjcwYzA3NGFiODcz
NTViYmRiMmRmNDVmNTdkZjFkZWQ2MzVjNjZjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApA
QCAtMjUsOCArMjUsNyBAQAogLy8gVGhpcyBmaWxlIHdvdWxkIGJlIGNhbGxlZCBTdHJpbmcuaCwg
YnV0IHRoYXQgY29uZmxpY3RzIHdpdGggPHN0cmluZy5oPgogLy8gb24gc3lzdGVtcyB3aXRob3V0
IGNhc2Utc2Vuc2l0aXZlIGZpbGUgc3lzdGVtcy4KIAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0K
KyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BU0NJSUZhc3RQ
YXRoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KQEAgLTM2Nyw4ICszNjYsOCBAQCBwdWJs
aWM6CiAgICAgICAgIHNwbGl0KHNlcGFyYXRvciwgZmFsc2UsIHJlc3VsdCk7CiAgICAgfQogCi0g
ICAgdXNpbmcgU3BsaXRGdW5jdG9yID0gc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZ1Zp
ZXcmKT47Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJh
dG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBTcGxpdEZ1bmN0b3ImJikgY29uc3Q7CisgICAg
dXNpbmcgU3BsaXRGdW5jdG9yID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZ1ZpZXcm
KT47CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9y
LCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBjb25zdCBTcGxpdEZ1bmN0b3ImKSBjb25zdDsKICAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCBzcGxpdChVQ2hhciBzZXBhcmF0b3IsIGJvb2wg
YWxsb3dFbXB0eUVudHJpZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OwogICAgIHZv
aWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdAog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRT
ZWxlY3Rpb25BbGdvcml0aG0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRTZWxlY3Rpb25BbGdvcml0aG0uaAppbmRleCBiMmUxNDdkMzQ2YTk5NTA2NzY3OWU1OThkYTAz
NjgzNzhjMjhiOGVjLi5hMjYzYTRjZWU0MmMzMjkyODI3NzEzMjEwM2Q5M2Y1YmRhNmI2MDA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0aW9u
QWxnb3JpdGhtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNl
bGVjdGlvbkFsZ29yaXRobS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIlRleHRGbGFncy5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUg
PHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CkBAIC01MTMsMTAgKzUxNCwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdXNpbmcgSXRlcmF0ZUFjdGl2ZUNhcGFi
aWxpdGllc1dpdGhSZXR1cm5DYWxsYmFjayA9IHN0ZDo6ZnVuY3Rpb248c3RkOjpvcHRpb25hbDxU
PihGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzLCBzaXplX3QpPjsKKyAgICB1c2luZyBJdGVyYXRl
QWN0aXZlQ2FwYWJpbGl0aWVzV2l0aFJldHVybkNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjxzdGQ6
Om9wdGlvbmFsPFQ+KEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMsIHNpemVfdCk+OwogCiAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHN0ZDo6b3B0aW9uYWw8VD4gaXRlcmF0
ZUFjdGl2ZUNhcGFiaWxpdGllc1dpdGhSZXR1cm4oSXRlcmF0ZUFjdGl2ZUNhcGFiaWxpdGllc1dp
dGhSZXR1cm5DYWxsYmFjazxUPiBjYWxsYmFjaykKKyAgICBpbmxpbmUgc3RkOjpvcHRpb25hbDxU
PiBpdGVyYXRlQWN0aXZlQ2FwYWJpbGl0aWVzV2l0aFJldHVybihjb25zdCBJdGVyYXRlQWN0aXZl
Q2FwYWJpbGl0aWVzV2l0aFJldHVybkNhbGxiYWNrPFQ+JiBjYWxsYmFjaykKICAgICB7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jYXBhYmlsaXRpZXMuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgICAgIGlmICghbV9maWx0ZXJbaV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuY3BwCmluZGV4IGViZTYw
MzVlMTNhZTYxODY4NzQyYmI4YzNlMWY2NTYyYjQwNWMzZDQuLjAxZDI5MWViNjI3NTk4ODFkZmIy
NmM4MjIwYTVmOTUzZDVjMThmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuY3BwCkBAIC0zOCw3ICszOCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3QgU3RyaW5nJiBTdHJpbmdDb25zdHJhaW50
OjpmaW5kKHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT4gZmlsdGVyKSBjb25zdAor
Y29uc3QgU3RyaW5nJiBTdHJpbmdDb25zdHJhaW50OjpmaW5kKGNvbnN0IFdURjo6RnVuY3Rpb248
Ym9vbChjb25zdCBTdHJpbmcmKT4mIGZpbHRlcikgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIGNv
bnN0cmFpbnQgOiBtX2V4YWN0KSB7CiAgICAgICAgIGlmIChmaWx0ZXIoY29uc3RyYWludCkpCkBA
IC0xODIsMTUgKzE4MiwxNSBAQCBjb25zdCBNZWRpYUNvbnN0cmFpbnQqIEZsYXR0ZW5lZENvbnN0
cmFpbnQ6OmZpbmQoTWVkaWFDb25zdHJhaW50VHlwZSB0eXBlKSBjb25zdAogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi12b2lkIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpmb3JFYWNoKHN0
ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBNZWRpYUNvbnN0cmFpbnQmKT4gY2FsbGJhY2spIGNvbnN0
Cit2b2lkIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpmb3JFYWNoKFdURjo6RnVuY3Rpb248
dm9pZChjb25zdCBNZWRpYUNvbnN0cmFpbnQmKT4mJiBjYWxsYmFjaykgY29uc3QKIHsKLSAgICBm
aWx0ZXIoW2NhbGxiYWNrXSAoY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KSBtdXRh
YmxlIHsKKyAgICBmaWx0ZXIoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChjb25zdCBN
ZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpIG11dGFibGUgewogICAgICAgICBjYWxsYmFjayhj
b25zdHJhaW50KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0pOwogfQogCi12b2lkIE1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpmaWx0ZXIoc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0
IE1lZGlhQ29uc3RyYWludCYpPiBjYWxsYmFjaykgY29uc3QKK3ZvaWQgTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXRNYXA6OmZpbHRlcihjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woY29uc3QgTWVkaWFD
b25zdHJhaW50Jik+JiBjYWxsYmFjaykgY29uc3QKIHsKICAgICBpZiAobV93aWR0aCAmJiAhbV93
aWR0aC0+aXNFbXB0eSgpICYmIGNhbGxiYWNrKCptX3dpZHRoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMzYzLDcgKzM2Myw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGREZWZhdWx0VmlkZW9Db25z
dHJhaW50cyhNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYgdmlkZW9DCiAgICAgfQogfQogCi1i
b29sIE1lZGlhQ29uc3RyYWludHM6OmlzQ29uc3RyYWludFNldChzdGQ6OmZ1bmN0aW9uPGJvb2wo
Y29uc3QgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAmKT4mJiBjYWxsYmFjaykKK2Jvb2wgTWVk
aWFDb25zdHJhaW50czo6aXNDb25zdHJhaW50U2V0KGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChj
b25zdCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYpPiYgY2FsbGJhY2spCiB7CiAgICAgaWYg
KGNhbGxiYWNrKG1hbmRhdG9yeUNvbnN0cmFpbnRzKSkKICAgICAgICAgcmV0dXJuIHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0
cmFpbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0
cmFpbnRzLmgKaW5kZXggM2M0ODY0ZDQ1MWYyMzIwYmVjYTI3ODdjZjIxOGQ1M2EyNTFjMzAwNi4u
YmZmYTA1ZTZjYWE1YzliMWZmZTBhODkxMmY5NzhkMzA2NmU5ZmU1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaApA
QCAtMzUsNiArMzUsNyBAQAogCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRl
ZENvbnN0cmFpbnRzLmgiCiAjaW5jbHVkZSA8Y3N0ZGxpYj4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTIyMCw3ICsyMjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAot
ICAgIFZhbHVlVHlwZSBmaW5kKHN0ZDo6ZnVuY3Rpb248Ym9vbChWYWx1ZVR5cGUpPiBmdW5jdGlv
bikgY29uc3QKKyAgICBWYWx1ZVR5cGUgZmluZChjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woVmFs
dWVUeXBlKT4mIGZ1bmN0aW9uKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG1fbWluICYmIGZ1
bmN0aW9uKG1fbWluLnZhbHVlKCkpKQogICAgICAgICAgICAgcmV0dXJuIG1fbWluLnZhbHVlKCk7
CkBAIC01MjUsNyArNTI2LDcgQEAgcHVibGljOgogICAgIGRvdWJsZSBmaXRuZXNzRGlzdGFuY2Uo
Y29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgZG91YmxlIGZpdG5lc3NEaXN0YW5jZShjb25zdCBW
ZWN0b3I8U3RyaW5nPiYpIGNvbnN0OwogCi0gICAgY29uc3QgU3RyaW5nJiBmaW5kKHN0ZDo6ZnVu
Y3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT4pIGNvbnN0OworICAgIGNvbnN0IFN0cmluZyYgZmlu
ZChjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nJik+JikgY29uc3Q7CiAKICAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2V4YWN0LmlzRW1wdHkoKSAmJiBtX2lk
ZWFsLmlzRW1wdHkoKTsgfQogICAgIGJvb2wgaXNNYW5kYXRvcnkoKSBjb25zdCB7IHJldHVybiAh
bV9leGFjdC5pc0VtcHR5KCk7IH0KQEAgLTU3Miw4ICs1NzMsOCBAQCBwcml2YXRlOgogCiBjbGFz
cyBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBmb3JFYWNoKHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBNZWRpYUNvbnN0cmFpbnQm
KT4pIGNvbnN0OwotICAgIHZvaWQgZmlsdGVyKHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBNZWRp
YUNvbnN0cmFpbnQmKT4pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaChX
VEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgTWVkaWFDb25zdHJhaW50Jik+JiYpIGNvbnN0OworICAg
IHZvaWQgZmlsdGVyKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChjb25zdCBNZWRpYUNvbnN0cmFp
bnQmKT4mKSBjb25zdDsKICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCkBAIC04MDYsNyArODA3LDcgQEAgcHJpdmF0ZToK
IAogc3RydWN0IE1lZGlhQ29uc3RyYWludHMgewogICAgIHZvaWQgc2V0RGVmYXVsdFZpZGVvQ29u
c3RyYWludHMoKTsKLSAgICBib29sIGlzQ29uc3RyYWludFNldChzdGQ6OmZ1bmN0aW9uPGJvb2wo
Y29uc3QgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAmKT4mJik7CisgICAgYm9vbCBpc0NvbnN0
cmFpbnRTZXQoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IE1lZGlhVHJhY2tDb25zdHJh
aW50U2V0TWFwJik+Jik7CiAKICAgICBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCBtYW5kYXRv
cnlDb25zdHJhaW50czsKICAgICBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+IGFk
dmFuY2VkQ29uc3RyYWludHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCmluZGV4IDA2Y2I0NDM1Njk3
MWNiM2Y2MGE1ZDg2MDcwYjU1MjM4MTI1NmM1NzQuLjk0MjExYmMyMWU0MjdiYTlhYWRjMmI3OWNi
NzYwMmZjZWNmZGViOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCkBAIC01MDIsNyArNTAyLDcg
QEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnQoY29uc3QgTWVkaWFD
b25zdHJhaW50JiBjb25zdHJhaW50KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9OwogCi0gICAgICAgIGF1dG8gbW9kZVN0cmluZyA9IGRvd25jYXN0PFN0cmluZ0NvbnN0cmFp
bnQ+KGNvbnN0cmFpbnQpLmZpbmQoZmlsdGVyKTsKKyAgICAgICAgYXV0byBtb2RlU3RyaW5nID0g
ZG93bmNhc3Q8U3RyaW5nQ29uc3RyYWludD4oY29uc3RyYWludCkuZmluZChXVEZNb3ZlKGZpbHRl
cikpOwogICAgICAgICBpZiAoIW1vZGVTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICAgICAgc2V0
RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OnZpZGVvRmFjaW5nTW9kZUVu
dW0obW9kZVN0cmluZykpOwogICAgICAgICBicmVhazsK
</data>

          </attachment>
      

    </bug>

</bugzilla>