<?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>213158</bug_id>
          
          <creation_ts>2020-06-12 17:25:51 -0700</creation_ts>
          <short_desc>[JSC] String.protoytpe.toLocaleLowerCase&apos;s availableLocales HashSet is inefficient</short_desc>
          <delta_ts>2020-07-13 08:28:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1662258</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-12 17:25:51 -0700</bug_when>
    <thetext>There are only 4 elements and all of them are two characters strings. We should just have `std::array&lt;ASCIILiteral&gt;` and iterate it, it is much efficient than this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670937</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-12 17:12:47 -0700</bug_when>
    <thetext>Currently, bestAvailableLocale requires HashSet and it is used in the other code.
Maybe, just creating static HashSet would be nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670938</commentid>
    <comment_count>2</comment_count>
      <attachid>404121</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-12 17:14:35 -0700</bug_when>
    <thetext>Created attachment 404121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670939</commentid>
    <comment_count>3</comment_count>
      <attachid>404121</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-12 17:23:08 -0700</bug_when>
    <thetext>Comment on attachment 404121
Patch

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

&gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:1548
&gt; +    static std::once_flag onceKey;
&gt; +    std::call_once(onceKey, [&amp;] {

Since String doesn’t have a thread-safe reference count, using a thread-safe run-once algorithm here isn’t enough to make access to this global shared object thread-safe, so I think this should not be using call_once.

Unless StaticStringImpl is enough to make access to a string thread-safe, in which case, OK!

&gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:1557
&gt; +        static StringImpl::StaticStringImpl az(&quot;az&quot;);
&gt; +        static StringImpl::StaticStringImpl el(&quot;el&quot;);
&gt; +        static StringImpl::StaticStringImpl lt(&quot;lt&quot;);
&gt; +        static StringImpl::StaticStringImpl tr(&quot;tr&quot;);
&gt; +        availableLocales.construct();
&gt; +        availableLocales-&gt;add(&amp;static_cast&lt;StringImpl&amp;&gt;(az));
&gt; +        availableLocales-&gt;add(&amp;static_cast&lt;StringImpl&amp;&gt;(el));
&gt; +        availableLocales-&gt;add(&amp;static_cast&lt;StringImpl&amp;&gt;(lt));
&gt; +        availableLocales-&gt;add(&amp;static_cast&lt;StringImpl&amp;&gt;(tr));

I really wish we had a better idiom for this. The old code was inefficient, but readable. It would be nice if the efficient version was also readable. Even if we had to put some helper functions somewhere.

It seems to me that this might not be the only constant HashSet of strings we ever want to create.

Also, can the StringImpl::StaticStringImpl be const?

Finally, does this need to be a HashSet. For a list of 4 strings I think another kind of set could be efficient, like a constant array that we use binary_search with. Maybe even something that first checks that the string is 2 characters long and then converts the string to a uint16_t and compares against 4 constant values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670940</commentid>
    <comment_count>4</comment_count>
      <attachid>404121</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-12 17:34:45 -0700</bug_when>
    <thetext>Comment on attachment 404121
Patch

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

I&apos;ll try refactoring bestAvailableLocale.

&gt;&gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:1548
&gt;&gt; +    std::call_once(onceKey, [&amp;] {
&gt; 
&gt; Since String doesn’t have a thread-safe reference count, using a thread-safe run-once algorithm here isn’t enough to make access to this global shared object thread-safe, so I think this should not be using call_once.
&gt; 
&gt; Unless StaticStringImpl is enough to make access to a string thread-safe, in which case, OK!

Yes, that&apos;s why I used StaticStringImpl! This generates static StringImpl, which can be usable in a thread-safe manner (special ref-count is used and it will be never destroyed).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670941</commentid>
    <comment_count>5</comment_count>
      <attachid>404122</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-12 17:54:03 -0700</bug_when>
    <thetext>Created attachment 404122
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670942</commentid>
    <comment_count>6</comment_count>
      <attachid>404123</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-12 17:57:44 -0700</bug_when>
    <thetext>Created attachment 404123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670943</commentid>
    <comment_count>7</comment_count>
      <attachid>404124</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-12 18:03:29 -0700</bug_when>
    <thetext>Created attachment 404124
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670946</commentid>
    <comment_count>8</comment_count>
      <attachid>404124</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-12 18:33:31 -0700</bug_when>
    <thetext>Comment on attachment 404124
Patch

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

&gt; Source/JavaScriptCore/runtime/IntlObjectInlines.h:40
&gt; +    String candidate = locale;

This would be more efficient if it used StringView; no memory allocation when substring is called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670963</commentid>
    <comment_count>9</comment_count>
      <attachid>404124</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-12 23:04:42 -0700</bug_when>
    <thetext>Comment on attachment 404124
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/IntlObjectInlines.h:40
&gt;&gt; +    String candidate = locale;
&gt; 
&gt; This would be more efficient if it used StringView; no memory allocation when substring is called.

Yeah, we should optimize these things in different patches I think. We have a lot of opportunities.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670967</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-12 23:27:24 -0700</bug_when>
    <thetext>Committed r264293: &lt;https://trac.webkit.org/changeset/264293&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 404124.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670968</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-12 23:28:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/65457670&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671035</commentid>
    <comment_count>12</comment_count>
      <attachid>404124</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-13 08:28:01 -0700</bug_when>
    <thetext>Comment on attachment 404124
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/runtime/IntlObjectInlines.h:40
&gt;&gt;&gt; +    String candidate = locale;
&gt;&gt; 
&gt;&gt; This would be more efficient if it used StringView; no memory allocation when substring is called.
&gt; 
&gt; Yeah, we should optimize these things in different patches I think. We have a lot of opportunities.

I commented because the code was *new*.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404121</attachid>
            <date>2020-07-12 17:14:35 -0700</date>
            <delta_ts>2020-07-12 17:54:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213158-20200712171434.patch</filename>
            <type>text/plain</type>
            <size>3250</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0Mjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YzJmMjBhY2Y3Nzc2NmE5NmNmM2EyYTg1YjQzNDNmMzgwNzQ5NGUwLi5iMzJhMTcyOWM5MGNiOWVj
ZmEyOTg4OTY0Njg5YmY2YzA3ZWVlZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wNy0xMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0cmluZy5wcm90b3l0cGUudG9Mb2NhbGVMb3dlckNhc2UncyBh
dmFpbGFibGVMb2NhbGVzIEhhc2hTZXQgaXMgaW5lZmZpY2llbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzE1OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSwgd2UgYXJlIGFsd2F5cyBj
cmVhdGluZyB0aGUgc2FtZSBIYXNoU2V0IGV2ZXJ5IHRpbWUgU3RyaW5nLnByb3RveXRwZS50b0xv
Y2FsZUxvd2VyQ2FzZSBpcyBjYWxsZWQuCisgICAgICAgIFdlIHNob3VsZCBjcmVhdGUgc3RhdGlj
IEhhc2hTZXQgYW5kIHVzZSBpdC4KKworICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6Y2FzZUF2YWlsYWJsZUxvY2FsZXMpOgorICAgICAgICAoSlND
Ojp0b0xvY2FsZUNhc2UpOgorCiAyMDIwLTA3LTEyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gV2Ugc2hvdWxkIGtlZXAgdW5hbGlnbmVkIGFjY2Vz
cyBmZWF0dXJlIGluIGNlcnRhaW4gYXJjaGl0ZWN0dXJlcyBpbiBtYWNyby1hc3NlbWJsZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmlu
ZGV4IDM2ZDRiNzlmN2RhNWFjZjM2MjEwMDFhYTZiNjNmZGMwZmIwZThmOTguLjgzOTFhNDdjMDZi
MTI0MjRmNWUwNDMxZjYwNzIyMTg5MjVlYzUzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtMTU0MSw2ICsxNTQxLDI0IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTG9jYWxlQ29tcGFy
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoY29sbGF0b3ItPmNvbXBhcmVTdHJpbmdzKGdsb2JhbE9iamVjdCwgc3Ry
aW5nLCB0aGF0KSkpOwogfQogCitzdGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBjYXNlQXZh
aWxhYmxlTG9jYWxlcygpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxIYXNoU2V0
PFN0cmluZz4+IGF2YWlsYWJsZUxvY2FsZXM7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9u
Y2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgc3RhdGlj
IFN0cmluZ0ltcGw6OlN0YXRpY1N0cmluZ0ltcGwgYXooImF6Iik7CisgICAgICAgIHN0YXRpYyBT
dHJpbmdJbXBsOjpTdGF0aWNTdHJpbmdJbXBsIGVsKCJlbCIpOworICAgICAgICBzdGF0aWMgU3Ry
aW5nSW1wbDo6U3RhdGljU3RyaW5nSW1wbCBsdCgibHQiKTsKKyAgICAgICAgc3RhdGljIFN0cmlu
Z0ltcGw6OlN0YXRpY1N0cmluZ0ltcGwgdHIoInRyIik7CisgICAgICAgIGF2YWlsYWJsZUxvY2Fs
ZXMuY29uc3RydWN0KCk7CisgICAgICAgIGF2YWlsYWJsZUxvY2FsZXMtPmFkZCgmc3RhdGljX2Nh
c3Q8U3RyaW5nSW1wbCY+KGF6KSk7CisgICAgICAgIGF2YWlsYWJsZUxvY2FsZXMtPmFkZCgmc3Rh
dGljX2Nhc3Q8U3RyaW5nSW1wbCY+KGVsKSk7CisgICAgICAgIGF2YWlsYWJsZUxvY2FsZXMtPmFk
ZCgmc3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCY+KGx0KSk7CisgICAgICAgIGF2YWlsYWJsZUxvY2Fs
ZXMtPmFkZCgmc3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCY+KHRyKSk7CisgICAgfSk7CisgICAgcmV0
dXJuIGF2YWlsYWJsZUxvY2FsZXMuZ2V0KCk7Cit9CisKIGVudW0gY2xhc3MgQ2FzZUNvbnZlcnNp
b25Nb2RlIHsKICAgICBVcHBlciwKICAgICBMb3dlciwKQEAgLTE1ODgsMTIgKzE2MDYsOCBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgdG9Mb2NhbGVDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbAogCiAgICAgLy8gMTAuIExldCBhdmFpbGFibGVMb2NhbGVz
IGJlIGEgTGlzdCB3aXRoIHRoZSBsYW5ndWFnZSB0YWdzIG9mIHRoZSBsYW5ndWFnZXMgZm9yIHdo
aWNoIHRoZSBVbmljb2RlIGNoYXJhY3RlciBkYXRhYmFzZSBjb250YWlucyBsYW5ndWFnZSBzZW5z
aXRpdmUgY2FzZSBtYXBwaW5ncy4KICAgICAvLyBOb3RlIDE6IEFzIG9mIFVuaWNvZGUgNS4xLCB0
aGUgYXZhaWxhYmxlTG9jYWxlcyBsaXN0IGNvbnRhaW5zIHRoZSBlbGVtZW50cyAiYXoiLCAiZWwi
LCAibHQiLCBhbmQgInRyIi4KLSAgICAvLyBGSVhNRTogQ3JlYXRpbmcgSGFzaFNldCBmb3IgdGhl
c2UgNCBsb2NhbGVzIGV2ZXJ5IHRpbWUgaXMgaW5lZmZpY2llbnQuCi0gICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzE1OAotICAgIGNvbnN0IEhhc2hTZXQ8
U3RyaW5nPiBhdmFpbGFibGVMb2NhbGVzKHsgImF6Il9zLCAiZWwiX3MsICJsdCJfcywgInRyIl9z
IH0pOwotCiAgICAgLy8gMTEuIExldCBsb2NhbGUgYmUgQmVzdEF2YWlsYWJsZUxvY2FsZShhdmFp
bGFibGVMb2NhbGVzLCBub0V4dGVuc2lvbnNMb2NhbGUpLgotICAgIFN0cmluZyBsb2NhbGUgPSBi
ZXN0QXZhaWxhYmxlTG9jYWxlKGF2YWlsYWJsZUxvY2FsZXMsIG5vRXh0ZW5zaW9uc0xvY2FsZSk7
CisgICAgU3RyaW5nIGxvY2FsZSA9IGJlc3RBdmFpbGFibGVMb2NhbGUoY2FzZUF2YWlsYWJsZUxv
Y2FsZXMoKSwgbm9FeHRlbnNpb25zTG9jYWxlKTsKIAogICAgIC8vIDEyLiBJZiBsb2NhbGUgaXMg
dW5kZWZpbmVkLCBsZXQgbG9jYWxlIGJlICJ1bmQiLgogICAgIGlmIChsb2NhbGUuaXNOdWxsKCkp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404122</attachid>
            <date>2020-07-12 17:54:03 -0700</date>
            <delta_ts>2020-07-12 17:57:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213158-20200712175402.patch</filename>
            <type>text/plain</type>
            <size>8387</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0Mjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YzJmMjBhY2Y3Nzc2NmE5NmNmM2EyYTg1YjQzNDNmMzgwNzQ5NGUwLi5mNzk4NWUzNjY3MjdlZGM0
YzMzOGY2Y2Y5NmMwMjQ0NTY5MzRmZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAyMC0wNy0xMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0cmluZy5wcm90b3l0cGUudG9Mb2NhbGVMb3dlckNhc2UncyBh
dmFpbGFibGVMb2NhbGVzIEhhc2hTZXQgaXMgaW5lZmZpY2llbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzE1OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSwgd2UgYXJlIGFsd2F5cyBj
cmVhdGluZyB0aGUgc2FtZSBIYXNoU2V0IGV2ZXJ5IHRpbWUgU3RyaW5nLnByb3RveXRwZS50b0xv
Y2FsZUxvd2VyQ2FzZSBpcyBjYWxsZWQuCisgICAgICAgIFdlIGNoYW5nZWQgYmVzdEF2YWlsYWJs
ZUxvY2FsZSB0byB0YWtlIHByZWRpY2F0ZSBmdW5jdGlvbi4gQW5kIHdlIHBhc3MgYSBwcmVkaWNh
dGUgd2hpY2ggcmV0dXJucyB0cnVlIGZvcgorICAgICAgICBjYXNlLXNlbnNpdGl2ZSBsb2NhbGVz
LgorCisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6YmVz
dEF2YWlsYWJsZUxvY2FsZSk6CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0Lmg6CisgICAg
ICAgICogcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpiZXN0QXZh
aWxhYmxlTG9jYWxlKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVUd29DaGFyYWN0ZXJzMTZDb2RlKToKKyAgICAgICAgKEpTQzo6
dG9Mb2NhbGVDYXNlKToKKwogMjAyMC0wNy0xMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFtKU0NdIFdlIHNob3VsZCBrZWVwIHVuYWxpZ25lZCBhY2Nlc3Mg
ZmVhdHVyZSBpbiBjZXJ0YWluIGFyY2hpdGVjdHVyZXMgaW4gbWFjcm8tYXNzZW1ibGVyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IGJjMTY5YjZmM2JjNDAyOWMxYWZlZWJjYTdlMmFiODZmNDc0ZGQxM2MuLmY2ODc4MzFlZGUwM2M0
YTk0YTg3ODNhMTY1MzNiZDZkZTUzOWUyNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDct
MTIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBT
dHJpbmcucHJvdG95dHBlLnRvTG9jYWxlTG93ZXJDYXNlJ3MgYXZhaWxhYmxlTG9jYWxlcyBIYXNo
U2V0IGlzIGluZWZmaWNpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTMxNTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgb3BlcmF0b3JbXSB0byBBU0NJSUxpdGVyYWwuCisKKyAgICAgICAgKiB3
dGYvdGV4dC9BU0NJSUxpdGVyYWwuaDoKKwogMjAyMC0wNy0xMiAgU2FpZCBBYm91LUhhbGxhd2Eg
IDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU106IEEgSEVJRiBpbWFn
ZSwgc2VsZWN0ZWQgZnJvbSB0aGUgT3BlblBhbmVsLCBzaG91bGQgYmUgY29udmVydGVkIHRvIGFu
IGFjY2VwdGVkIE1JTUUgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
T2JqZWN0LmNwcAppbmRleCAxZGZhMjA4MmFmMTQyM2Y0ZDNlZDNlMTMzMGE5NDk2M2JlZWE0MzAx
Li42MjVjYWU4MzlmNWNhZDE4YjUzMGI2NDA0ODczZjJjYTRjYzRhNGQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcApAQCAtNDc2LDI1ICs0NzYsOSBA
QCBWZWN0b3I8U3RyaW5nPiBjYW5vbmljYWxpemVMb2NhbGVMaXN0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYQogCiBTdHJpbmcgYmVzdEF2YWlsYWJsZUxvY2FsZShj
b25zdCBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMsIGNvbnN0IFN0cmluZyYgbG9j
YWxlKQogewotICAgIC8vIEJlc3RBdmFpbGFibGVMb2NhbGUgKGF2YWlsYWJsZUxvY2FsZXMsIGxv
Y2FsZSkKLSAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1iZXN0YXZh
aWxhYmxlbG9jYWxlCi0KLSAgICBTdHJpbmcgY2FuZGlkYXRlID0gbG9jYWxlOwotICAgIHdoaWxl
ICghY2FuZGlkYXRlLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoYXZhaWxhYmxlTG9jYWxlcy5j
b250YWlucyhjYW5kaWRhdGUpKQotICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZTsKLQotICAg
ICAgICBzaXplX3QgcG9zID0gY2FuZGlkYXRlLnJldmVyc2VGaW5kKCctJyk7Ci0gICAgICAgIGlm
IChwb3MgPT0gbm90Rm91bmQpCi0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICAg
ICAgaWYgKHBvcyA+PSAyICYmIGNhbmRpZGF0ZVtwb3MgLSAyXSA9PSAnLScpCi0gICAgICAgICAg
ICBwb3MgLT0gMjsKLQotICAgICAgICBjYW5kaWRhdGUgPSBjYW5kaWRhdGUuc3Vic3RyaW5nKDAs
IHBvcyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBiZXN0QXZh
aWxhYmxlTG9jYWxlKGxvY2FsZSwgWyZdKGNvbnN0IFN0cmluZyYgY2FuZGlkYXRlKSB7CisgICAg
ICAgIHJldHVybiBhdmFpbGFibGVMb2NhbGVzLmNvbnRhaW5zKGNhbmRpZGF0ZSk7CisgICAgfSk7
CiB9CiAKIFN0cmluZyBkZWZhdWx0TG9jYWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKaW5kZXggZWQ5YzFl
MTBiNmFkYTRmZDlkNDI1NzQ2MDZjZGQ5MmE5MTIyMzliNy4uNjgxOGJmOTY2ZDI0YjcwYzUwNjRh
Y2NhZDM2MDM5NDA2NmQwZDUwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxPYmplY3QuaApAQCAtNzUsNiArNzUsNyBAQCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiByZXNv
bHZlTG9jYWxlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhdgogSlNW
YWx1ZSBzdXBwb3J0ZWRMb2NhbGVzKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSGFzaFNldDxTdHJp
bmc+JiBhdmFpbGFibGVMb2NhbGVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcmVxdWVzdGVkTG9j
YWxlcywgSlNWYWx1ZSBvcHRpb25zKTsKIFN0cmluZyByZW1vdmVVbmljb2RlTG9jYWxlRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgbG9jYWxlKTsKIFN0cmluZyBiZXN0QXZhaWxhYmxlTG9jYWxlKGNv
bnN0IEhhc2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcywgY29uc3QgU3RyaW5nJiByZXF1
ZXN0ZWRMb2NhbGUpOwordGVtcGxhdGU8dHlwZW5hbWUgUHJlZGljYXRlPiBTdHJpbmcgYmVzdEF2
YWlsYWJsZUxvY2FsZShjb25zdCBTdHJpbmcmIHJlcXVlc3RlZExvY2FsZSwgUHJlZGljYXRlKTsK
IFZlY3RvcjxTdHJpbmc+IG51bWJlcmluZ1N5c3RlbXNGb3JMb2NhbGUoY29uc3QgU3RyaW5nJiBs
b2NhbGUpOwogCiBib29sIGlzVW5pY29kZUxvY2FsZUlkZW50aWZpZXJUeXBlKFN0cmluZ1ZpZXcp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVz
LmgKaW5kZXggZGRiZWExYTViOTA2Y2MxODgzYzE0YjUyNTFkYzU4NGZkYTliYjZmYS4uNTVlYWM0
NjYxNDJhMDU1Y2VlNjRlNmZhNDA4MjcxZDA0NDMxYmY5OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCkBAIC0zMiw2ICszMiwyOSBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAordGVtcGxhdGU8dHlwZW5hbWUgUHJlZGljYXRlPiBTdHJp
bmcgYmVzdEF2YWlsYWJsZUxvY2FsZShjb25zdCBTdHJpbmcmIGxvY2FsZSwgUHJlZGljYXRlIHBy
ZWRpY2F0ZSkKK3sKKyAgICAvLyBCZXN0QXZhaWxhYmxlTG9jYWxlIChhdmFpbGFibGVMb2NhbGVz
LCBsb2NhbGUpCisgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtYmVz
dGF2YWlsYWJsZWxvY2FsZQorCisgICAgU3RyaW5nIGNhbmRpZGF0ZSA9IGxvY2FsZTsKKyAgICB3
aGlsZSAoIWNhbmRpZGF0ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKHByZWRpY2F0ZShjYW5k
aWRhdGUpKQorICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZTsKKworICAgICAgICBzaXplX3Qg
cG9zID0gY2FuZGlkYXRlLnJldmVyc2VGaW5kKCctJyk7CisgICAgICAgIGlmIChwb3MgPT0gbm90
Rm91bmQpCisgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICAgICAgaWYgKHBvcyA+
PSAyICYmIGNhbmRpZGF0ZVtwb3MgLSAyXSA9PSAnLScpCisgICAgICAgICAgICBwb3MgLT0gMjsK
KworICAgICAgICBjYW5kaWRhdGUgPSBjYW5kaWRhdGUuc3Vic3RyaW5nKDAsIHBvcyk7CisgICAg
fQorCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsSW5z
dGFuY2UsIHR5cGVuYW1lIENvbnN0cnVjdG9yLCB0eXBlbmFtZSBGYWN0b3J5PgogSlNWYWx1ZSBj
b25zdHJ1Y3RJbnRsSW5zdGFuY2VXaXRoV29ya2Fyb3VuZEZvckxlZ2FjeUludGxDb25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgQ29uc3Ry
dWN0b3IqIGNhbGxlZSwgRmFjdG9yeSBmYWN0b3J5KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggMzZkNGI3OWY3ZGE1YWNm
MzYyMTAwMWFhNmI2M2ZkYzBmYjBlOGY5OC4uOWQxY2U5NmY3OWYwOGZhM2U5ZTE3NjMxODE2ZjQ5
MDRiNTYzMDZiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdQcm90b3R5cGUuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiSW50ZWdyaXR5SW5s
aW5lcy5oIgogI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkludGxD
b2xsYXRvci5oIgotI2luY2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVENvZGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJh
eS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTE1NDEsNiArMTU0MSwxMiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGNvbGxhdG9yLT5jb21wYXJlU3RyaW5ncyhnbG9iYWxPYmplY3QsIHN0cmluZywg
dGhhdCkpKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZT4KK3N0YXRpYyBjb25z
dGV4cHIgdWludDMyX3QgY29tcHV0ZVR3b0NoYXJhY3RlcnMxNkNvZGUoY29uc3QgU3RyaW5nVHlw
ZSYgc3RyaW5nKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MTZfdD4oc3RyaW5nWzBd
KSB8IChzdGF0aWNfY2FzdDx1aW50MTZfdD4oc3RyaW5nWzFdKSA8PCAxNik7Cit9CisKIGVudW0g
Y2xhc3MgQ2FzZUNvbnZlcnNpb25Nb2RlIHsKICAgICBVcHBlciwKICAgICBMb3dlciwKQEAgLTE1
ODgsMTIgKzE1OTQsMjAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvTG9jYWxlQ2FzZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGwKIAogICAgIC8vIDEwLiBM
ZXQgYXZhaWxhYmxlTG9jYWxlcyBiZSBhIExpc3Qgd2l0aCB0aGUgbGFuZ3VhZ2UgdGFncyBvZiB0
aGUgbGFuZ3VhZ2VzIGZvciB3aGljaCB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgZGF0YWJhc2UgY29u
dGFpbnMgbGFuZ3VhZ2Ugc2Vuc2l0aXZlIGNhc2UgbWFwcGluZ3MuCiAgICAgLy8gTm90ZSAxOiBB
cyBvZiBVbmljb2RlIDUuMSwgdGhlIGF2YWlsYWJsZUxvY2FsZXMgbGlzdCBjb250YWlucyB0aGUg
ZWxlbWVudHMgImF6IiwgImVsIiwgImx0IiwgYW5kICJ0ciIuCi0gICAgLy8gRklYTUU6IENyZWF0
aW5nIEhhc2hTZXQgZm9yIHRoZXNlIDQgbG9jYWxlcyBldmVyeSB0aW1lIGlzIGluZWZmaWNpZW50
LgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMxNTgK
LSAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4gYXZhaWxhYmxlTG9jYWxlcyh7ICJheiJfcywgImVs
Il9zLCAibHQiX3MsICJ0ciJfcyB9KTsKLQogICAgIC8vIDExLiBMZXQgbG9jYWxlIGJlIEJlc3RB
dmFpbGFibGVMb2NhbGUoYXZhaWxhYmxlTG9jYWxlcywgbm9FeHRlbnNpb25zTG9jYWxlKS4KLSAg
ICBTdHJpbmcgbG9jYWxlID0gYmVzdEF2YWlsYWJsZUxvY2FsZShhdmFpbGFibGVMb2NhbGVzLCBu
b0V4dGVuc2lvbnNMb2NhbGUpOworICAgIFN0cmluZyBsb2NhbGUgPSBiZXN0QXZhaWxhYmxlTG9j
YWxlKG5vRXh0ZW5zaW9uc0xvY2FsZSwgW10oY29uc3QgU3RyaW5nJiBjYW5kaWRhdGUpIHsKKyAg
ICAgICAgaWYgKGNhbmRpZGF0ZS5sZW5ndGgoKSAhPSAyKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBzd2l0Y2ggKGNvbXB1dGVUd29DaGFyYWN0ZXJzMTZDb2RlKGNhbmRpZGF0
ZSkpIHsKKyAgICAgICAgY2FzZSBjb21wdXRlVHdvQ2hhcmFjdGVyczE2Q29kZSgiYXoiX3MpOgor
ICAgICAgICBjYXNlIGNvbXB1dGVUd29DaGFyYWN0ZXJzMTZDb2RlKCJlbCJfcyk6CisgICAgICAg
IGNhc2UgY29tcHV0ZVR3b0NoYXJhY3RlcnMxNkNvZGUoImx0Il9zKToKKyAgICAgICAgY2FzZSBj
b21wdXRlVHdvQ2hhcmFjdGVyczE2Q29kZSgidHIiX3MpOgorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKyAgICB9KTsKIAogICAgIC8vIDEyLiBJZiBsb2NhbGUgaXMgdW5kZWZpbmVkLCBsZXQgbG9j
YWxlIGJlICJ1bmQiLgogICAgIGlmIChsb2NhbGUuaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BU0NJ
SUxpdGVyYWwuaAppbmRleCBmN2E0NzlhMGJhMDcxZWYwNjg5YTBlMTIzMmZiZWI0NGE1ZDBiNmU0
Li4yZjNhYTJlMTg4YWZhY2M2NmRhMzRkZDRiNzJmZjEwOGU3MzIzNjRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQVNDSUlMaXRlcmFsLmgKQEAgLTUyLDYgKzUyLDggQEAgY2xhc3MgQVNDSUlMaXRlcmFsIGZp
bmFsIHsKICAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVyczgoKSBjb25zdCB7IHJldHVybiBiaXR3
aXNlX2Nhc3Q8Y29uc3QgTENoYXIqPihtX2NoYXJhY3RlcnMpOyB9CiAgICAgc2l6ZV90IGxlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIHN0cmxlbihtX2NoYXJhY3RlcnMpOyB9CiAKKyAgICBjb25zdGV4
cHIgY2hhciBvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX2NoYXJh
Y3RlcnNbaW5kZXhdOyB9CisKIHByaXZhdGU6CiAgICAgY29uc3RleHByIGV4cGxpY2l0IEFTQ0lJ
TGl0ZXJhbChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKSA6IG1fY2hhcmFjdGVycyhjaGFyYWN0ZXJz
KSB7IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404123</attachid>
            <date>2020-07-12 17:57:44 -0700</date>
            <delta_ts>2020-07-12 18:03:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213158-20200712175743.patch</filename>
            <type>text/plain</type>
            <size>8420</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0Mjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YzJmMjBhY2Y3Nzc2NmE5NmNmM2EyYTg1YjQzNDNmMzgwNzQ5NGUwLi5mNzk4NWUzNjY3MjdlZGM0
YzMzOGY2Y2Y5NmMwMjQ0NTY5MzRmZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAyMC0wNy0xMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0cmluZy5wcm90b3l0cGUudG9Mb2NhbGVMb3dlckNhc2UncyBh
dmFpbGFibGVMb2NhbGVzIEhhc2hTZXQgaXMgaW5lZmZpY2llbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzE1OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSwgd2UgYXJlIGFsd2F5cyBj
cmVhdGluZyB0aGUgc2FtZSBIYXNoU2V0IGV2ZXJ5IHRpbWUgU3RyaW5nLnByb3RveXRwZS50b0xv
Y2FsZUxvd2VyQ2FzZSBpcyBjYWxsZWQuCisgICAgICAgIFdlIGNoYW5nZWQgYmVzdEF2YWlsYWJs
ZUxvY2FsZSB0byB0YWtlIHByZWRpY2F0ZSBmdW5jdGlvbi4gQW5kIHdlIHBhc3MgYSBwcmVkaWNh
dGUgd2hpY2ggcmV0dXJucyB0cnVlIGZvcgorICAgICAgICBjYXNlLXNlbnNpdGl2ZSBsb2NhbGVz
LgorCisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6YmVz
dEF2YWlsYWJsZUxvY2FsZSk6CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0Lmg6CisgICAg
ICAgICogcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpiZXN0QXZh
aWxhYmxlTG9jYWxlKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVUd29DaGFyYWN0ZXJzMTZDb2RlKToKKyAgICAgICAgKEpTQzo6
dG9Mb2NhbGVDYXNlKToKKwogMjAyMC0wNy0xMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFtKU0NdIFdlIHNob3VsZCBrZWVwIHVuYWxpZ25lZCBhY2Nlc3Mg
ZmVhdHVyZSBpbiBjZXJ0YWluIGFyY2hpdGVjdHVyZXMgaW4gbWFjcm8tYXNzZW1ibGVyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IGJjMTY5YjZmM2JjNDAyOWMxYWZlZWJjYTdlMmFiODZmNDc0ZGQxM2MuLjA2MTc5MjJlNTc1MTUw
NTkxZDQ0NTBiZDA1ZjVmOWY3ZTJkNTE2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDct
MTIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBT
dHJpbmcucHJvdG95dHBlLnRvTG9jYWxlTG93ZXJDYXNlJ3MgYXZhaWxhYmxlTG9jYWxlcyBIYXNo
U2V0IGlzIGluZWZmaWNpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTMxNTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgY2hhcmFjdGVyQXQgbWV0aG9kIHRvIEFTQ0lJTGl0ZXJhbC4KKworICAg
ICAgICAqIHd0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oOgorCiAyMDIwLTA3LTEyICBTYWlkIEFib3Ut
SGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXTogQSBI
RUlGIGltYWdlLCBzZWxlY3RlZCBmcm9tIHRoZSBPcGVuUGFuZWwsIHNob3VsZCBiZSBjb252ZXJ0
ZWQgdG8gYW4gYWNjZXB0ZWQgTUlNRSB0eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IDFkZmEyMDgyYWYxNDIzZjRkM2VkM2UxMzMwYTk0OTYz
YmVlYTQzMDEuLjYyNWNhZTgzOWY1Y2FkMThiNTMwYjY0MDQ4NzNmMmNhNGNjNGE0ZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC00NzYsMjUg
KzQ3Niw5IEBAIFZlY3RvcjxTdHJpbmc+IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBsb2NhCiAKIFN0cmluZyBiZXN0QXZhaWxhYmxl
TG9jYWxlKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcywgY29uc3QgU3Ry
aW5nJiBsb2NhbGUpCiB7Ci0gICAgLy8gQmVzdEF2YWlsYWJsZUxvY2FsZSAoYXZhaWxhYmxlTG9j
YWxlcywgbG9jYWxlKQotICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2Vj
LWJlc3RhdmFpbGFibGVsb2NhbGUKLQotICAgIFN0cmluZyBjYW5kaWRhdGUgPSBsb2NhbGU7Ci0g
ICAgd2hpbGUgKCFjYW5kaWRhdGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChhdmFpbGFibGVM
b2NhbGVzLmNvbnRhaW5zKGNhbmRpZGF0ZSkpCi0gICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRl
OwotCi0gICAgICAgIHNpemVfdCBwb3MgPSBjYW5kaWRhdGUucmV2ZXJzZUZpbmQoJy0nKTsKLSAg
ICAgICAgaWYgKHBvcyA9PSBub3RGb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
LQotICAgICAgICBpZiAocG9zID49IDIgJiYgY2FuZGlkYXRlW3BvcyAtIDJdID09ICctJykKLSAg
ICAgICAgICAgIHBvcyAtPSAyOwotCi0gICAgICAgIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZS5zdWJz
dHJpbmcoMCwgcG9zKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJu
IGJlc3RBdmFpbGFibGVMb2NhbGUobG9jYWxlLCBbJl0oY29uc3QgU3RyaW5nJiBjYW5kaWRhdGUp
IHsKKyAgICAgICAgcmV0dXJuIGF2YWlsYWJsZUxvY2FsZXMuY29udGFpbnMoY2FuZGlkYXRlKTsK
KyAgICB9KTsKIH0KIAogU3RyaW5nIGRlZmF1bHRMb2NhbGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAppbmRl
eCBlZDljMWUxMGI2YWRhNGZkOWQ0MjU3NDYwNmNkZDkyYTkxMjIzOWI3Li42ODE4YmY5NjZkMjRi
NzBjNTA2NGFjY2FkMzYwMzk0MDY2ZDBkNTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE9iamVjdC5oCkBAIC03NSw2ICs3NSw3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+IHJlc29sdmVMb2NhbGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBIYXNoU2V0PFN0cmluZz4m
IGF2CiBKU1ZhbHVlIHN1cHBvcnRlZExvY2FsZXMoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBIYXNo
U2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiByZXF1
ZXN0ZWRMb2NhbGVzLCBKU1ZhbHVlIG9wdGlvbnMpOwogU3RyaW5nIHJlbW92ZVVuaWNvZGVMb2Nh
bGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBsb2NhbGUpOwogU3RyaW5nIGJlc3RBdmFpbGFibGVM
b2NhbGUoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzLCBjb25zdCBTdHJp
bmcmIHJlcXVlc3RlZExvY2FsZSk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGU+IFN0cmlu
ZyBiZXN0QXZhaWxhYmxlTG9jYWxlKGNvbnN0IFN0cmluZyYgcmVxdWVzdGVkTG9jYWxlLCBQcmVk
aWNhdGUpOwogVmVjdG9yPFN0cmluZz4gbnVtYmVyaW5nU3lzdGVtc0ZvckxvY2FsZShjb25zdCBT
dHJpbmcmIGxvY2FsZSk7CiAKIGJvb2wgaXNVbmljb2RlTG9jYWxlSWRlbnRpZmllclR5cGUoU3Ry
aW5nVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
T2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dElubGluZXMuaAppbmRleCBkZGJlYTFhNWI5MDZjYzE4ODNjMTRiNTI1MWRjNTg0ZmRhOWJiNmZh
Li41NWVhYzQ2NjE0MmEwNTVjZWU2NGU2ZmE0MDgyNzFkMDQ0MzFiZjk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKQEAgLTMyLDYg
KzMyLDI5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCit0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNh
dGU+IFN0cmluZyBiZXN0QXZhaWxhYmxlTG9jYWxlKGNvbnN0IFN0cmluZyYgbG9jYWxlLCBQcmVk
aWNhdGUgcHJlZGljYXRlKQoreworICAgIC8vIEJlc3RBdmFpbGFibGVMb2NhbGUgKGF2YWlsYWJs
ZUxvY2FsZXMsIGxvY2FsZSkKKyAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIv
I3NlYy1iZXN0YXZhaWxhYmxlbG9jYWxlCisKKyAgICBTdHJpbmcgY2FuZGlkYXRlID0gbG9jYWxl
OworICAgIHdoaWxlICghY2FuZGlkYXRlLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAocHJlZGlj
YXRlKGNhbmRpZGF0ZSkpCisgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlOworCisgICAgICAg
IHNpemVfdCBwb3MgPSBjYW5kaWRhdGUucmV2ZXJzZUZpbmQoJy0nKTsKKyAgICAgICAgaWYgKHBv
cyA9PSBub3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgICAgICBp
ZiAocG9zID49IDIgJiYgY2FuZGlkYXRlW3BvcyAtIDJdID09ICctJykKKyAgICAgICAgICAgIHBv
cyAtPSAyOworCisgICAgICAgIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZS5zdWJzdHJpbmcoMCwgcG9z
KTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1l
IEludGxJbnN0YW5jZSwgdHlwZW5hbWUgQ29uc3RydWN0b3IsIHR5cGVuYW1lIEZhY3Rvcnk+CiBK
U1ZhbHVlIGNvbnN0cnVjdEludGxJbnN0YW5jZVdpdGhXb3JrYXJvdW5kRm9yTGVnYWN5SW50bENv
bnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGhpc1ZhbHVl
LCBDb25zdHJ1Y3RvciogY2FsbGVlLCBGYWN0b3J5IGZhY3RvcnkpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRleCAzNmQ0Yjc5
ZjdkYTVhY2YzNjIxMDAxYWE2YjYzZmRjMGZiMGU4Zjk4Li40OTgyNTQ2YWNhNTI2N2NjZGE2MmQ4
ZWM5MWNjNzFhODhhYTk3NTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJJbnRl
Z3JpdHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSW50bENvbGxhdG9yLmgiCi0jaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2luY2x1ZGUgIklu
dGxPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklUQ29kZUlubGluZXMuaCIKICNpbmNsdWRl
ICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpAQCAtMTU0MSw2ICsxNTQxLDEy
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTG9jYWxlQ29t
cGFyZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoY29sbGF0b3ItPmNvbXBhcmVTdHJpbmdzKGdsb2JhbE9iamVjdCwg
c3RyaW5nLCB0aGF0KSkpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlPgorc3Rh
dGljIGNvbnN0ZXhwciB1aW50MzJfdCBjb21wdXRlVHdvQ2hhcmFjdGVyczE2Q29kZShjb25zdCBT
dHJpbmdUeXBlJiBzdHJpbmcpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQxNl90Pihz
dHJpbmcuY2hhcmFjdGVyQXQoMCkpIHwgKHN0YXRpY19jYXN0PHVpbnQxNl90PihzdHJpbmcuY2hh
cmFjdGVyQXQoMSkpIDw8IDE2KTsKK30KKwogZW51bSBjbGFzcyBDYXNlQ29udmVyc2lvbk1vZGUg
ewogICAgIFVwcGVyLAogICAgIExvd2VyLApAQCAtMTU4OCwxMiArMTU5NCwyMCBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgdG9Mb2NhbGVDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbAogCiAgICAgLy8gMTAuIExldCBhdmFpbGFibGVMb2NhbGVzIGJlIGEg
TGlzdCB3aXRoIHRoZSBsYW5ndWFnZSB0YWdzIG9mIHRoZSBsYW5ndWFnZXMgZm9yIHdoaWNoIHRo
ZSBVbmljb2RlIGNoYXJhY3RlciBkYXRhYmFzZSBjb250YWlucyBsYW5ndWFnZSBzZW5zaXRpdmUg
Y2FzZSBtYXBwaW5ncy4KICAgICAvLyBOb3RlIDE6IEFzIG9mIFVuaWNvZGUgNS4xLCB0aGUgYXZh
aWxhYmxlTG9jYWxlcyBsaXN0IGNvbnRhaW5zIHRoZSBlbGVtZW50cyAiYXoiLCAiZWwiLCAibHQi
LCBhbmQgInRyIi4KLSAgICAvLyBGSVhNRTogQ3JlYXRpbmcgSGFzaFNldCBmb3IgdGhlc2UgNCBs
b2NhbGVzIGV2ZXJ5IHRpbWUgaXMgaW5lZmZpY2llbnQuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzE1OAotICAgIGNvbnN0IEhhc2hTZXQ8U3RyaW5n
PiBhdmFpbGFibGVMb2NhbGVzKHsgImF6Il9zLCAiZWwiX3MsICJsdCJfcywgInRyIl9zIH0pOwot
CiAgICAgLy8gMTEuIExldCBsb2NhbGUgYmUgQmVzdEF2YWlsYWJsZUxvY2FsZShhdmFpbGFibGVM
b2NhbGVzLCBub0V4dGVuc2lvbnNMb2NhbGUpLgotICAgIFN0cmluZyBsb2NhbGUgPSBiZXN0QXZh
aWxhYmxlTG9jYWxlKGF2YWlsYWJsZUxvY2FsZXMsIG5vRXh0ZW5zaW9uc0xvY2FsZSk7CisgICAg
U3RyaW5nIGxvY2FsZSA9IGJlc3RBdmFpbGFibGVMb2NhbGUobm9FeHRlbnNpb25zTG9jYWxlLCBb
XShjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZSkgeworICAgICAgICBpZiAoY2FuZGlkYXRlLmxlbmd0
aCgpICE9IDIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHN3aXRjaCAoY29t
cHV0ZVR3b0NoYXJhY3RlcnMxNkNvZGUoY2FuZGlkYXRlKSkgeworICAgICAgICBjYXNlIGNvbXB1
dGVUd29DaGFyYWN0ZXJzMTZDb2RlKCJheiJfcyk6CisgICAgICAgIGNhc2UgY29tcHV0ZVR3b0No
YXJhY3RlcnMxNkNvZGUoImVsIl9zKToKKyAgICAgICAgY2FzZSBjb21wdXRlVHdvQ2hhcmFjdGVy
czE2Q29kZSgibHQiX3MpOgorICAgICAgICBjYXNlIGNvbXB1dGVUd29DaGFyYWN0ZXJzMTZDb2Rl
KCJ0ciJfcyk6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0pOwogCiAgICAgLy8gMTIu
IElmIGxvY2FsZSBpcyB1bmRlZmluZWQsIGxldCBsb2NhbGUgYmUgInVuZCIuCiAgICAgaWYgKGxv
Y2FsZS5pc051bGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRl
cmFsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oCmluZGV4IGY3YTQ3OWEw
YmEwNzFlZjA2ODlhMGUxMjMyZmJlYjQ0YTVkMGI2ZTQuLjY0NzQwNmYwYmEyMGQ3NzU0NWVkNjc2
YWFjODhlOWU4ZmI2YTMxMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlM
aXRlcmFsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaApAQCAtNTIs
NiArNTIsOCBAQCBjbGFzcyBBU0NJSUxpdGVyYWwgZmluYWwgewogICAgIGNvbnN0IExDaGFyKiBj
aGFyYWN0ZXJzOCgpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxjb25zdCBMQ2hhcio+KG1f
Y2hhcmFjdGVycyk7IH0KICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gc3RybGVu
KG1fY2hhcmFjdGVycyk7IH0KIAorICAgIGNvbnN0ZXhwciBjaGFyIGNoYXJhY3RlckF0KHVuc2ln
bmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnNbaW5kZXhdOyB9CisKIHByaXZh
dGU6CiAgICAgY29uc3RleHByIGV4cGxpY2l0IEFTQ0lJTGl0ZXJhbChjb25zdCBjaGFyKiBjaGFy
YWN0ZXJzKSA6IG1fY2hhcmFjdGVycyhjaGFyYWN0ZXJzKSB7IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404124</attachid>
            <date>2020-07-12 18:03:29 -0700</date>
            <delta_ts>2020-07-12 23:27:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213158-20200712180329.patch</filename>
            <type>text/plain</type>
            <size>8443</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0Mjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YzJmMjBhY2Y3Nzc2NmE5NmNmM2EyYTg1YjQzNDNmMzgwNzQ5NGUwLi5mNzk4NWUzNjY3MjdlZGM0
YzMzOGY2Y2Y5NmMwMjQ0NTY5MzRmZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAyMC0wNy0xMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0cmluZy5wcm90b3l0cGUudG9Mb2NhbGVMb3dlckNhc2UncyBh
dmFpbGFibGVMb2NhbGVzIEhhc2hTZXQgaXMgaW5lZmZpY2llbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzE1OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSwgd2UgYXJlIGFsd2F5cyBj
cmVhdGluZyB0aGUgc2FtZSBIYXNoU2V0IGV2ZXJ5IHRpbWUgU3RyaW5nLnByb3RveXRwZS50b0xv
Y2FsZUxvd2VyQ2FzZSBpcyBjYWxsZWQuCisgICAgICAgIFdlIGNoYW5nZWQgYmVzdEF2YWlsYWJs
ZUxvY2FsZSB0byB0YWtlIHByZWRpY2F0ZSBmdW5jdGlvbi4gQW5kIHdlIHBhc3MgYSBwcmVkaWNh
dGUgd2hpY2ggcmV0dXJucyB0cnVlIGZvcgorICAgICAgICBjYXNlLXNlbnNpdGl2ZSBsb2NhbGVz
LgorCisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6YmVz
dEF2YWlsYWJsZUxvY2FsZSk6CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0Lmg6CisgICAg
ICAgICogcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpiZXN0QXZh
aWxhYmxlTG9jYWxlKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVUd29DaGFyYWN0ZXJzMTZDb2RlKToKKyAgICAgICAgKEpTQzo6
dG9Mb2NhbGVDYXNlKToKKwogMjAyMC0wNy0xMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFtKU0NdIFdlIHNob3VsZCBrZWVwIHVuYWxpZ25lZCBhY2Nlc3Mg
ZmVhdHVyZSBpbiBjZXJ0YWluIGFyY2hpdGVjdHVyZXMgaW4gbWFjcm8tYXNzZW1ibGVyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IGJjMTY5YjZmM2JjNDAyOWMxYWZlZWJjYTdlMmFiODZmNDc0ZGQxM2MuLjA2MTc5MjJlNTc1MTUw
NTkxZDQ0NTBiZDA1ZjVmOWY3ZTJkNTE2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDct
MTIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBT
dHJpbmcucHJvdG95dHBlLnRvTG9jYWxlTG93ZXJDYXNlJ3MgYXZhaWxhYmxlTG9jYWxlcyBIYXNo
U2V0IGlzIGluZWZmaWNpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTMxNTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgY2hhcmFjdGVyQXQgbWV0aG9kIHRvIEFTQ0lJTGl0ZXJhbC4KKworICAg
ICAgICAqIHd0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oOgorCiAyMDIwLTA3LTEyICBTYWlkIEFib3Ut
SGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXTogQSBI
RUlGIGltYWdlLCBzZWxlY3RlZCBmcm9tIHRoZSBPcGVuUGFuZWwsIHNob3VsZCBiZSBjb252ZXJ0
ZWQgdG8gYW4gYWNjZXB0ZWQgTUlNRSB0eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IDFkZmEyMDgyYWYxNDIzZjRkM2VkM2UxMzMwYTk0OTYz
YmVlYTQzMDEuLjYyNWNhZTgzOWY1Y2FkMThiNTMwYjY0MDQ4NzNmMmNhNGNjNGE0ZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC00NzYsMjUg
KzQ3Niw5IEBAIFZlY3RvcjxTdHJpbmc+IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBsb2NhCiAKIFN0cmluZyBiZXN0QXZhaWxhYmxl
TG9jYWxlKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcywgY29uc3QgU3Ry
aW5nJiBsb2NhbGUpCiB7Ci0gICAgLy8gQmVzdEF2YWlsYWJsZUxvY2FsZSAoYXZhaWxhYmxlTG9j
YWxlcywgbG9jYWxlKQotICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2Vj
LWJlc3RhdmFpbGFibGVsb2NhbGUKLQotICAgIFN0cmluZyBjYW5kaWRhdGUgPSBsb2NhbGU7Ci0g
ICAgd2hpbGUgKCFjYW5kaWRhdGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChhdmFpbGFibGVM
b2NhbGVzLmNvbnRhaW5zKGNhbmRpZGF0ZSkpCi0gICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRl
OwotCi0gICAgICAgIHNpemVfdCBwb3MgPSBjYW5kaWRhdGUucmV2ZXJzZUZpbmQoJy0nKTsKLSAg
ICAgICAgaWYgKHBvcyA9PSBub3RGb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
LQotICAgICAgICBpZiAocG9zID49IDIgJiYgY2FuZGlkYXRlW3BvcyAtIDJdID09ICctJykKLSAg
ICAgICAgICAgIHBvcyAtPSAyOwotCi0gICAgICAgIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZS5zdWJz
dHJpbmcoMCwgcG9zKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJu
IGJlc3RBdmFpbGFibGVMb2NhbGUobG9jYWxlLCBbJl0oY29uc3QgU3RyaW5nJiBjYW5kaWRhdGUp
IHsKKyAgICAgICAgcmV0dXJuIGF2YWlsYWJsZUxvY2FsZXMuY29udGFpbnMoY2FuZGlkYXRlKTsK
KyAgICB9KTsKIH0KIAogU3RyaW5nIGRlZmF1bHRMb2NhbGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAppbmRl
eCBlZDljMWUxMGI2YWRhNGZkOWQ0MjU3NDYwNmNkZDkyYTkxMjIzOWI3Li42ODE4YmY5NjZkMjRi
NzBjNTA2NGFjY2FkMzYwMzk0MDY2ZDBkNTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE9iamVjdC5oCkBAIC03NSw2ICs3NSw3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+IHJlc29sdmVMb2NhbGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBIYXNoU2V0PFN0cmluZz4m
IGF2CiBKU1ZhbHVlIHN1cHBvcnRlZExvY2FsZXMoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBIYXNo
U2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiByZXF1
ZXN0ZWRMb2NhbGVzLCBKU1ZhbHVlIG9wdGlvbnMpOwogU3RyaW5nIHJlbW92ZVVuaWNvZGVMb2Nh
bGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBsb2NhbGUpOwogU3RyaW5nIGJlc3RBdmFpbGFibGVM
b2NhbGUoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzLCBjb25zdCBTdHJp
bmcmIHJlcXVlc3RlZExvY2FsZSk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGU+IFN0cmlu
ZyBiZXN0QXZhaWxhYmxlTG9jYWxlKGNvbnN0IFN0cmluZyYgcmVxdWVzdGVkTG9jYWxlLCBQcmVk
aWNhdGUpOwogVmVjdG9yPFN0cmluZz4gbnVtYmVyaW5nU3lzdGVtc0ZvckxvY2FsZShjb25zdCBT
dHJpbmcmIGxvY2FsZSk7CiAKIGJvb2wgaXNVbmljb2RlTG9jYWxlSWRlbnRpZmllclR5cGUoU3Ry
aW5nVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
T2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dElubGluZXMuaAppbmRleCBkZGJlYTFhNWI5MDZjYzE4ODNjMTRiNTI1MWRjNTg0ZmRhOWJiNmZh
Li41NWVhYzQ2NjE0MmEwNTVjZWU2NGU2ZmE0MDgyNzFkMDQ0MzFiZjk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKQEAgLTMyLDYg
KzMyLDI5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCit0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNh
dGU+IFN0cmluZyBiZXN0QXZhaWxhYmxlTG9jYWxlKGNvbnN0IFN0cmluZyYgbG9jYWxlLCBQcmVk
aWNhdGUgcHJlZGljYXRlKQoreworICAgIC8vIEJlc3RBdmFpbGFibGVMb2NhbGUgKGF2YWlsYWJs
ZUxvY2FsZXMsIGxvY2FsZSkKKyAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIv
I3NlYy1iZXN0YXZhaWxhYmxlbG9jYWxlCisKKyAgICBTdHJpbmcgY2FuZGlkYXRlID0gbG9jYWxl
OworICAgIHdoaWxlICghY2FuZGlkYXRlLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAocHJlZGlj
YXRlKGNhbmRpZGF0ZSkpCisgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlOworCisgICAgICAg
IHNpemVfdCBwb3MgPSBjYW5kaWRhdGUucmV2ZXJzZUZpbmQoJy0nKTsKKyAgICAgICAgaWYgKHBv
cyA9PSBub3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgICAgICBp
ZiAocG9zID49IDIgJiYgY2FuZGlkYXRlW3BvcyAtIDJdID09ICctJykKKyAgICAgICAgICAgIHBv
cyAtPSAyOworCisgICAgICAgIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZS5zdWJzdHJpbmcoMCwgcG9z
KTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1l
IEludGxJbnN0YW5jZSwgdHlwZW5hbWUgQ29uc3RydWN0b3IsIHR5cGVuYW1lIEZhY3Rvcnk+CiBK
U1ZhbHVlIGNvbnN0cnVjdEludGxJbnN0YW5jZVdpdGhXb3JrYXJvdW5kRm9yTGVnYWN5SW50bENv
bnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGhpc1ZhbHVl
LCBDb25zdHJ1Y3RvciogY2FsbGVlLCBGYWN0b3J5IGZhY3RvcnkpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRleCAzNmQ0Yjc5
ZjdkYTVhY2YzNjIxMDAxYWE2YjYzZmRjMGZiMGU4Zjk4Li4xZWYyY2IzMTVhNjA5ZDg1NDM5MmIy
NDUzZjVjNDZjMjU2Yzg0MjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJJbnRl
Z3JpdHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSW50bENvbGxhdG9yLmgiCi0jaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2luY2x1ZGUgIklu
dGxPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklUQ29kZUlubGluZXMuaCIKICNpbmNsdWRl
ICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpAQCAtMTU0MSw2ICsxNTQxLDEy
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTG9jYWxlQ29t
cGFyZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoY29sbGF0b3ItPmNvbXBhcmVTdHJpbmdzKGdsb2JhbE9iamVjdCwg
c3RyaW5nLCB0aGF0KSkpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlPgorc3Rh
dGljIGNvbnN0ZXhwciB1aW50MzJfdCBjb21wdXRlVHdvQ2hhcmFjdGVyczE2Q29kZShjb25zdCBT
dHJpbmdUeXBlJiBzdHJpbmcpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQxNl90Pihz
dHJpbmcuY2hhcmFjdGVyQXQoMCkpIHwgKHN0YXRpY19jYXN0PHVpbnQzMl90PihzdGF0aWNfY2Fz
dDx1aW50MTZfdD4oc3RyaW5nLmNoYXJhY3RlckF0KDEpKSkgPDwgMTYpOworfQorCiBlbnVtIGNs
YXNzIENhc2VDb252ZXJzaW9uTW9kZSB7CiAgICAgVXBwZXIsCiAgICAgTG93ZXIsCkBAIC0xNTg4
LDEyICsxNTk0LDIwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0b0xvY2FsZUNhc2UoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsCiAKICAgICAvLyAxMC4gTGV0
IGF2YWlsYWJsZUxvY2FsZXMgYmUgYSBMaXN0IHdpdGggdGhlIGxhbmd1YWdlIHRhZ3Mgb2YgdGhl
IGxhbmd1YWdlcyBmb3Igd2hpY2ggdGhlIFVuaWNvZGUgY2hhcmFjdGVyIGRhdGFiYXNlIGNvbnRh
aW5zIGxhbmd1YWdlIHNlbnNpdGl2ZSBjYXNlIG1hcHBpbmdzLgogICAgIC8vIE5vdGUgMTogQXMg
b2YgVW5pY29kZSA1LjEsIHRoZSBhdmFpbGFibGVMb2NhbGVzIGxpc3QgY29udGFpbnMgdGhlIGVs
ZW1lbnRzICJheiIsICJlbCIsICJsdCIsIGFuZCAidHIiLgotICAgIC8vIEZJWE1FOiBDcmVhdGlu
ZyBIYXNoU2V0IGZvciB0aGVzZSA0IGxvY2FsZXMgZXZlcnkgdGltZSBpcyBpbmVmZmljaWVudC4K
LSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMTU4Ci0g
ICAgY29uc3QgSGFzaFNldDxTdHJpbmc+IGF2YWlsYWJsZUxvY2FsZXMoeyAiYXoiX3MsICJlbCJf
cywgImx0Il9zLCAidHIiX3MgfSk7Ci0KICAgICAvLyAxMS4gTGV0IGxvY2FsZSBiZSBCZXN0QXZh
aWxhYmxlTG9jYWxlKGF2YWlsYWJsZUxvY2FsZXMsIG5vRXh0ZW5zaW9uc0xvY2FsZSkuCi0gICAg
U3RyaW5nIGxvY2FsZSA9IGJlc3RBdmFpbGFibGVMb2NhbGUoYXZhaWxhYmxlTG9jYWxlcywgbm9F
eHRlbnNpb25zTG9jYWxlKTsKKyAgICBTdHJpbmcgbG9jYWxlID0gYmVzdEF2YWlsYWJsZUxvY2Fs
ZShub0V4dGVuc2lvbnNMb2NhbGUsIFtdKGNvbnN0IFN0cmluZyYgY2FuZGlkYXRlKSB7CisgICAg
ICAgIGlmIChjYW5kaWRhdGUubGVuZ3RoKCkgIT0gMikKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgc3dpdGNoIChjb21wdXRlVHdvQ2hhcmFjdGVyczE2Q29kZShjYW5kaWRhdGUp
KSB7CisgICAgICAgIGNhc2UgY29tcHV0ZVR3b0NoYXJhY3RlcnMxNkNvZGUoImF6Il9zKToKKyAg
ICAgICAgY2FzZSBjb21wdXRlVHdvQ2hhcmFjdGVyczE2Q29kZSgiZWwiX3MpOgorICAgICAgICBj
YXNlIGNvbXB1dGVUd29DaGFyYWN0ZXJzMTZDb2RlKCJsdCJfcyk6CisgICAgICAgIGNhc2UgY29t
cHV0ZVR3b0NoYXJhY3RlcnMxNkNvZGUoInRyIl9zKToKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgfSk7CiAKICAgICAvLyAxMi4gSWYgbG9jYWxlIGlzIHVuZGVmaW5lZCwgbGV0IGxvY2Fs
ZSBiZSAidW5kIi4KICAgICBpZiAobG9jYWxlLmlzTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlM
aXRlcmFsLmgKaW5kZXggZjdhNDc5YTBiYTA3MWVmMDY4OWEwZTEyMzJmYmViNDRhNWQwYjZlNC4u
NjQ3NDA2ZjBiYTIwZDc3NTQ1ZWQ2NzZhYWM4OGU5ZThmYjZhMzEwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0FTQ0lJTGl0ZXJhbC5oCkBAIC01Miw2ICs1Miw4IEBAIGNsYXNzIEFTQ0lJTGl0ZXJhbCBmaW5h
bCB7CiAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyByZXR1cm4gYml0d2lz
ZV9jYXN0PGNvbnN0IExDaGFyKj4obV9jaGFyYWN0ZXJzKTsgfQogICAgIHNpemVfdCBsZW5ndGgo
KSBjb25zdCB7IHJldHVybiBzdHJsZW4obV9jaGFyYWN0ZXJzKTsgfQogCisgICAgY29uc3RleHBy
IGNoYXIgY2hhcmFjdGVyQXQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFj
dGVyc1tpbmRleF07IH0KKwogcHJpdmF0ZToKICAgICBjb25zdGV4cHIgZXhwbGljaXQgQVNDSUlM
aXRlcmFsKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpIDogbV9jaGFyYWN0ZXJzKGNoYXJhY3RlcnMp
IHsgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>