<?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>194675</bug_id>
          
          <creation_ts>2019-02-14 14:37:07 -0800</creation_ts>
          <short_desc>Move bytecode cache-related filesystem code out of CodeCache</short_desc>
          <delta_ts>2019-02-19 02:05:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          <dependson>194762</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tadeu Zagallo">tzagallo</reporter>
          <assigned_to name="Tadeu Zagallo">tzagallo</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1506382</commentid>
    <comment_count>0</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-02-14 14:37:07 -0800</bug_when>
    <thetext>That code is only used for the bytecode-cache tests, so it should probably live in jsc.cpp rather than in the CodeCache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506384</commentid>
    <comment_count>1</comment_count>
      <attachid>362064</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-02-14 14:46:15 -0800</bug_when>
    <thetext>Created attachment 362064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506408</commentid>
    <comment_count>2</comment_count>
      <attachid>362064</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-02-14 15:41:35 -0800</bug_when>
    <thetext>Comment on attachment 362064
Patch

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

This is a nice improvement, but I have one comment. Also you probably need to comment out more code on non-darwin platforms.

&gt; Source/JavaScriptCore/runtime/CodeCache.cpp:206
&gt; +    CachedBytecode cachedBytecode { WTFMove(result.first), result.second };
&gt; +    key.source().provider().cacheBytecode(cachedBytecode);

Seems weird to have this function predicated on the cachePath above. Why not just make source provider tell you if it can cache or not?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506410</commentid>
    <comment_count>3</comment_count>
      <attachid>362064</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-02-14 15:42:04 -0800</bug_when>
    <thetext>Comment on attachment 362064
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        That code is only used for the bytecode-cache tests, so it should probably

no &quot;probably&quot;

&gt; Source/JavaScriptCore/jsc.cpp:957
&gt; +class CliSourceProvider : public StringSourceProvider {

I&apos;d just call this &quot;ShellSourceProvider&quot; or &quot;CommandLineSourceProvider&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506537</commentid>
    <comment_count>4</comment_count>
      <attachid>362108</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-02-15 03:07:19 -0800</bug_when>
    <thetext>Created attachment 362108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506538</commentid>
    <comment_count>5</comment_count>
      <attachid>362064</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-02-15 03:07:42 -0800</bug_when>
    <thetext>Comment on attachment 362064
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/CodeCache.cpp:206
&gt;&gt; +    key.source().provider().cacheBytecode(cachedBytecode);
&gt; 
&gt; Seems weird to have this function predicated on the cachePath above. Why not just make source provider tell you if it can cache or not?

Oops, this was an oversight. It shouldn&apos;t be darwin-specific either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506548</commentid>
    <comment_count>6</comment_count>
      <attachid>362111</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-02-15 04:52:34 -0800</bug_when>
    <thetext>Created attachment 362111
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506743</commentid>
    <comment_count>7</comment_count>
      <attachid>362111</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-15 13:28:00 -0800</bug_when>
    <thetext>Comment on attachment 362111
Patch

Clearing flags on attachment: 362111

Committed r241612: &lt;https://trac.webkit.org/changeset/241612&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506744</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-15 13:28:01 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506745</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-15 13:28:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/48122052&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507100</commentid>
    <comment_count>10</comment_count>
      <attachid>362111</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-02-17 10:09:10 -0800</bug_when>
    <thetext>Comment on attachment 362111
Patch

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

&gt; Source/JavaScriptCore/runtime/CodeCache.cpp:199
&gt;      std::pair&lt;MallocPtr&lt;uint8_t&gt;, size_t&gt; result = encodeCodeBlock(vm, key, codeBlock);

This patch made it so that we&apos;re now eagerly encoding CodeBlocks even if we can&apos;t cache it. And we&apos;re doing it as we remove entries from the cache. That&apos;s not the behavior we want</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507102</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-17 10:10:06 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 194762</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507110</commentid>
    <comment_count>12</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-02-17 10:30:41 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #10)
&gt; Comment on attachment 362111 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=362111&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/CodeCache.cpp:199
&gt; &gt;      std::pair&lt;MallocPtr&lt;uint8_t&gt;, size_t&gt; result = encodeCodeBlock(vm, key, codeBlock);
&gt; 
&gt; This patch made it so that we&apos;re now eagerly encoding CodeBlocks even if we
&gt; can&apos;t cache it. And we&apos;re doing it as we remove entries from the cache.
&gt; That&apos;s not the behavior we want

Oops, that&apos;s not good... I&apos;ll upload a correct patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507213</commentid>
    <comment_count>13</comment_count>
      <attachid>362271</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-02-18 01:39:21 -0800</bug_when>
    <thetext>Created attachment 362271
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507216</commentid>
    <comment_count>14</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-02-18 01:43:56 -0800</bug_when>
    <thetext>I attached the new patch, which now has SourceProvider::useBytecodeCache to avoid the wasteful computations. I also merged the `flock` flags into `open` and added the `makeScopeExit` as Saam suggested in https://bugs.webkit.org/show_bug.cgi?id=194768.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507229</commentid>
    <comment_count>15</comment_count>
      <attachid>362281</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-02-18 02:42:04 -0800</bug_when>
    <thetext>Created attachment 362281
Patch

Rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507337</commentid>
    <comment_count>16</comment_count>
      <attachid>362281</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-02-18 11:35:56 -0800</bug_when>
    <thetext>Comment on attachment 362281
Patch

r=me. I think you need to also return true for useBytecodeCache in JSScriptSourceProvider</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507368</commentid>
    <comment_count>17</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-02-18 12:34:04 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #16)
&gt; Comment on attachment 362281 [details]
&gt; Patch
&gt; 
&gt; r=me. I think you need to also return true for useBytecodeCache in
&gt; JSScriptSourceProvider

Good point. I&apos;ll update it. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507394</commentid>
    <comment_count>18</comment_count>
      <attachid>362322</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-02-18 13:20:38 -0800</bug_when>
    <thetext>Created attachment 362322
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507397</commentid>
    <comment_count>19</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-02-18 13:25:39 -0800</bug_when>
    <thetext>(In reply to Tadeu Zagallo from comment #17)
&gt; (In reply to Saam Barati from comment #16)
&gt; &gt; Comment on attachment 362281 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; r=me. I think you need to also return true for useBytecodeCache in
&gt; &gt; JSScriptSourceProvider
&gt; 
&gt; Good point. I&apos;ll update it. Thanks!

When I went to update JSScriptSourceProvider, I realized that we would still unnecessarily encode all the CodeBlocks for it, since it&apos;d return `true` from `useBytecodeCache` in order to be able to provide a cache, but it never writes through the `cacheBytecode` callback.

I changed `cacheBytecode` to take a function that generates the cached bytecode, so I put it up for review again just in case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507472</commentid>
    <comment_count>20</comment_count>
      <attachid>362322</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-02-18 15:07:36 -0800</bug_when>
    <thetext>Comment on attachment 362322
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        That code is only used for the bytecode-cache tests, so it should live in
&gt; +        jsc.cpp rather than in the CodeCache.

You should make a couple comments about how this changes the interface for caching.

&gt; Source/JavaScriptCore/parser/SourceProvider.h:120
&gt; +        virtual void cacheBytecode(const BytecodeCacheGenerator&amp;) const { }

I agree this is nicer than the canCache and solves the issue you found.

&gt; Source/JavaScriptCore/runtime/CodeCache.cpp:202
&gt; +    key.source().provider().cacheBytecode([&amp;]() {

style nit: no need for &quot;()&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507624</commentid>
    <comment_count>21</comment_count>
      <attachid>362374</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-02-19 01:26:19 -0800</bug_when>
    <thetext>Created attachment 362374
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507636</commentid>
    <comment_count>22</comment_count>
      <attachid>362374</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-19 02:04:58 -0800</bug_when>
    <thetext>Comment on attachment 362374
Patch for landing

Clearing flags on attachment: 362374

Committed r241758: &lt;https://trac.webkit.org/changeset/241758&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507637</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-19 02:05:00 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362064</attachid>
            <date>2019-02-14 14:46:15 -0800</date>
            <delta_ts>2019-02-15 03:08:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194675-20190214234541.patch</filename>
            <type>text/plain</type>
            <size>11920</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MzA2ZjhlYzdjOGU3MzNiNDI4YmViYzIxODk4NDc3YjIzZjUzMTY0Li5lZjU4NDk4OGZiZjNlOWFj
MGQ3N2VmMjg0ODFlOGUyMGJjZDhlMDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxOS0wMi0xNCAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBNb3ZlIGJ5dGVjb2RlIGNhY2hlLXJlbGF0ZWQgZmlsZXN5c3RlbSBjb2Rl
IG91dCBvZiBDb2RlQ2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5NDY3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoYXQgY29kZSBpcyBvbmx5IHVzZWQgZm9yIHRoZSBieXRlY29kZS1jYWNoZSB0
ZXN0cywgc28gaXQgc2hvdWxkIHByb2JhYmx5CisgICAgICAgIGxpdmUgaW4ganNjLmNwcCByYXRo
ZXIgdGhhbiBpbiB0aGUgQ29kZUNhY2hlLgorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAg
KENsaVNvdXJjZVByb3ZpZGVyOjpjcmVhdGUpOgorICAgICAgICAoQ2xpU291cmNlUHJvdmlkZXI6
On5DbGlTb3VyY2VQcm92aWRlcik6CisgICAgICAgIChDbGlTb3VyY2VQcm92aWRlcjo6Y2FjaGVQ
YXRoIGNvbnN0KToKKyAgICAgICAgKENsaVNvdXJjZVByb3ZpZGVyOjpsb2FkQnl0ZWNvZGUpOgor
ICAgICAgICAoQ2xpU291cmNlUHJvdmlkZXI6OkNsaVNvdXJjZVByb3ZpZGVyKToKKyAgICAgICAg
KGpzY1NvdXJjZSk6CisgICAgICAgIChHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckZldGNoKToK
KyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyRXZhbFNjcmlwdCk6CisgICAgICAgIChydW5XaXRoT3B0
aW9ucyk6CisgICAgICAgICogcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgIChKU0M6
OlNvdXJjZVByb3ZpZGVyOjpjYWNoZUJ5dGVjb2RlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1l
L0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OndyaXRlQ29kZUJsb2NrKToKKyAgICAgICAg
KiBydW50aW1lL0NvZGVDYWNoZS5oOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGVNYXA6OmZldGNo
RnJvbURpc2tJbXBsKToKKwogMjAxOS0wMi0xNCAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBDYWNoZWRCaXRWZWN0b3IncyBzaXplIG11c3QgYmUgY29udmVy
dGVkIGZyb20gYml0cyB0byBieXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBiZTAxODA2MDVl
NmU4YWJmNDhhYjcxMWI4NmM5ZDRmYzk4YzA1ZjFhLi44NGJkZjg4NmI0MzMwOWY3ODI2NjE1ZjNj
NTUwY2ZjZTcxZTg1YjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtOTU0LDEyICs5NTQsMTA0
IEBAIHN0YXRpYyBib29sIGZldGNoU2NyaXB0RnJvbUxvY2FsRmlsZVN5c3RlbShjb25zdCBTdHJp
bmcmIGZpbGVOYW1lLCBWZWN0b3I8Y2hhcj4mCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2NsYXNz
IENsaVNvdXJjZVByb3ZpZGVyIDogcHVibGljIFN0cmluZ1NvdXJjZVByb3ZpZGVyIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmPENsaVNvdXJjZVByb3ZpZGVyPiBjcmVhdGUoY29uc3QgU3RyaW5n
JiBzb3VyY2UsIGNvbnN0IFNvdXJjZU9yaWdpbiYgc291cmNlT3JpZ2luLCBVUkwmJiB1cmwsIGNv
bnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBl
IHNvdXJjZVR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDbGlTb3Vy
Y2VQcm92aWRlcihzb3VyY2UsIHNvdXJjZU9yaWdpbiwgV1RGTW92ZSh1cmwpLCBzdGFydFBvc2l0
aW9uLCBzb3VyY2VUeXBlKSk7CisgICAgfQorCisgICAgfkNsaVNvdXJjZVByb3ZpZGVyKCkKKyAg
ICB7CisgICAgICAgIGlmIChtX2NhY2hlZEJ5dGVjb2RlLnNpemUoKSkKKyAgICAgICAgICAgIG11
bm1hcChjb25zdF9jYXN0PHZvaWQqPihtX2NhY2hlZEJ5dGVjb2RlLmRhdGEoKSksIG1fY2FjaGVk
Qnl0ZWNvZGUuc2l6ZSgpKTsKKyAgICB9CisKKyAgICBjb25zdCBDYWNoZWRCeXRlY29kZSogY2Fj
aGVkQnl0ZWNvZGUoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuICZtX2Nh
Y2hlZEJ5dGVjb2RlOworICAgIH0KKworICAgIGJvb2wgY2FjaGVCeXRlY29kZShjb25zdCBDYWNo
ZWRCeXRlY29kZSYgY2FjaGVkQnl0ZWNvZGUpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAg
ICBTdHJpbmcgZmlsZW5hbWUgPSBjYWNoZVBhdGgoKTsKKyAgICAgICAgaWYgKGZpbGVuYW1lLmlz
TnVsbCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpbnQgZmQgPSBvcGVu
KGZpbGVuYW1lLnV0ZjgoKS5kYXRhKCksIE9fQ1JFQVQgfCBPX1dST05MWSwgMDY2Nik7CisgICAg
ICAgIGlmIChmZCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaW50
IHJjID0gZmxvY2soZmQsIExPQ0tfRVggfCBMT0NLX05CKTsKKyAgICAgICAgaWYgKCFyYykKKyAg
ICAgICAgICAgIHdyaXRlKGZkLCBjYWNoZWRCeXRlY29kZS5kYXRhKCksIGNhY2hlZEJ5dGVjb2Rl
LnNpemUoKSk7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgcmV0dXJuICFyYzsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIGNhY2hlUGF0aCgpIGNvbnN0CisgICAgeworICAgICAg
ICBjb25zdCBjaGFyKiBjYWNoZVBhdGggPSBPcHRpb25zOjpkaXNrQ2FjaGVQYXRoKCk7CisgICAg
ICAgIGlmICghY2FjaGVQYXRoKQorICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4obnVsbHB0cikpOworCisgICAgICAgIFN0cmluZyBmaWxlbmFtZSA9IHNv
dXJjZU9yaWdpbigpLnN0cmluZygpOworICAgICAgICBmaWxlbmFtZS5yZXBsYWNlKCcvJywgJ18n
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoY2FjaGVQYXRoLCAnLycsIHNvdXJjZSgpLnRv
U3RyaW5nKCkuaGFzaCgpLCAnLScsIGZpbGVuYW1lLCAiLmJ5dGVjb2RlLWNhY2hlIik7CisgICAg
fQorCisgICAgdm9pZCBsb2FkQnl0ZWNvZGUoKQorICAgIHsKKyNpZiBPUyhEQVJXSU4pCisgICAg
ICAgIFN0cmluZyBmaWxlbmFtZSA9IGNhY2hlUGF0aCgpOworICAgICAgICBpZiAoZmlsZW5hbWUu
aXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaW50IGZkID0gb3Blbihm
aWxlbmFtZS51dGY4KCkuZGF0YSgpLCBPX1JET05MWSk7CisgICAgICAgIGlmIChmZCA9PSAtMSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpbnQgcmMgPSBmbG9jayhmZCwgTE9DS19T
SCB8IExPQ0tfTkIpOworICAgICAgICBpZiAocmMpIHsKKyAgICAgICAgICAgIGNsb3NlKGZkKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHN0cnVjdCBzdGF0IHNi
OworICAgICAgICBpbnQgcmVzID0gZnN0YXQoZmQsICZzYik7CisgICAgICAgIHNpemVfdCBzaXpl
ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzYi5zdF9zaXplKTsKKyAgICAgICAgaWYgKHJlcyB8fCAh
c2l6ZSkgeworICAgICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgdm9pZCogYnVmZmVyID0gbW1hcChudWxscHRyLCBzaXplLCBQUk9U
X1JFQUQsIE1BUF9QUklWQVRFLCBmZCwgMCk7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAg
aWYgKGJ1ZmZlciA9PSBNQVBfRkFJTEVEKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBt
X2NhY2hlZEJ5dGVjb2RlID0gQ2FjaGVkQnl0ZWNvZGUgeyBidWZmZXIsIHNpemUgfTsKKyNlbmRp
ZgorICAgIH0KKworICAgIENsaVNvdXJjZVByb3ZpZGVyKGNvbnN0IFN0cmluZyYgc291cmNlLCBj
b25zdCBTb3VyY2VPcmlnaW4mIHNvdXJjZU9yaWdpbiwgVVJMJiYgdXJsLCBjb25zdCBUZXh0UG9z
aXRpb24mIHN0YXJ0UG9zaXRpb24sIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZSBzb3VyY2VUeXBl
KQorICAgICAgICA6IFN0cmluZ1NvdXJjZVByb3ZpZGVyKHNvdXJjZSwgc291cmNlT3JpZ2luLCBX
VEZNb3ZlKHVybCksIHN0YXJ0UG9zaXRpb24sIHNvdXJjZVR5cGUpCisgICAgeworICAgICAgICBs
b2FkQnl0ZWNvZGUoKTsKKyAgICB9CisKKyAgICBDYWNoZWRCeXRlY29kZSBtX2NhY2hlZEJ5dGVj
b2RlOworfTsKKworc3RhdGljIGlubGluZSBTb3VyY2VDb2RlIGpzY1NvdXJjZShjb25zdCBTdHJp
bmcmIHNvdXJjZSwgY29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIFVSTCYmIHVybCA9
IFVSTCgpLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRpb24o
KSwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUgPSBTb3VyY2VQcm92aWRlclNv
dXJjZVR5cGU6OlByb2dyYW0pCit7CisgICAgcmV0dXJuIFNvdXJjZUNvZGUoQ2xpU291cmNlUHJv
dmlkZXI6OmNyZWF0ZShzb3VyY2UsIHNvdXJjZU9yaWdpbiwgV1RGTW92ZSh1cmwpLCBzdGFydFBv
c2l0aW9uLCBzb3VyY2VUeXBlKSwgc3RhcnRQb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJbnQoKSwg
c3RhcnRQb3NpdGlvbi5tX2NvbHVtbi5vbmVCYXNlZEludCgpKTsKK30KKwogdGVtcGxhdGU8dHlw
ZW5hbWUgVmVjdG9yPgogc3RhdGljIGlubGluZSBTb3VyY2VDb2RlIGpzY1NvdXJjZShjb25zdCBW
ZWN0b3ImIHV0ZjgsIGNvbnN0IFNvdXJjZU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJp
bmcmIGZpbGVuYW1lKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgYW4gYWJzb2x1
dGUgZmlsZSBVUkwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzA3
NwogICAgIFN0cmluZyBzdHIgPSBzdHJpbmdGcm9tVVRGKHV0ZjgpOwotICAgIHJldHVybiBtYWtl
U291cmNlKHN0ciwgc291cmNlT3JpZ2luLCBVUkwoeyB9LCBmaWxlbmFtZSkpOworICAgIHJldHVy
biBqc2NTb3VyY2Uoc3RyLCBzb3VyY2VPcmlnaW4sIFVSTCh7IH0sIGZpbGVuYW1lKSk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFZlY3Rvcj4KQEAgLTEwNDIsNyArMTEzNCw3IEBAIEpTSW50ZXJu
YWxQcm9taXNlKiBHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckZldGNoKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsCiAgICAgfQogI2VuZGlmCiAKLSAgICBhdXRvIHNvdXJjZUNvZGUgPSBK
U1NvdXJjZUNvZGU6OmNyZWF0ZSh2bSwgbWFrZVNvdXJjZShzdHJpbmdGcm9tVVRGKGJ1ZmZlciks
IFNvdXJjZU9yaWdpbiB7IG1vZHVsZUtleSB9LCBXVEZNb3ZlKG1vZHVsZVVSTCksIFRleHRQb3Np
dGlvbigpLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSkpOworICAgIGF1dG8gc291
cmNlQ29kZSA9IEpTU291cmNlQ29kZTo6Y3JlYXRlKHZtLCBqc2NTb3VyY2Uoc3RyaW5nRnJvbVVU
RihidWZmZXIpLCBTb3VyY2VPcmlnaW4geyBtb2R1bGVLZXkgfSwgV1RGTW92ZShtb2R1bGVVUkwp
LCBUZXh0UG9zaXRpb24oKSwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpNb2R1bGUpKTsKICAg
ICBjYXRjaFNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwogICAgIGF1dG8gcmVzdWx0
ID0gZGVmZXJyZWQtPnJlc29sdmUoZXhlYywgc291cmNlQ29kZSk7CiAgICAgY2F0Y2hTY29wZS5j
bGVhckV4Y2VwdGlvbigpOwpAQCAtMTcxNSw3ICsxODA3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckV2YWxTY3JpcHQoRXhlY1N0YXRlKiBleGVjKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBj
cmVhdGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgZ2xvYmFsIHRvIHBvaW50IHRvIGEgZ2xvYmFsIG9i
amVjdCJfcykpKTsKICAgICAKICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNl
cHRpb247Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSwgbWFrZVNvdXJjZShzb3VyY2VDb2RlLCBleGVjLT5jYWxsZXJTb3VyY2VPcmlnaW4o
KSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgSlNWYWx1ZSByZXN1bHQg
PSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNvdXJjZUNv
ZGUsIGV4ZWMtPmNhbGxlclNvdXJjZU9yaWdpbigpKSwgSlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhj
ZXB0aW9uKTsKICAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKICAgICAgICAgdGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIGV2YWx1YXRpb25FeGNlcHRpb24pOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTI0NzEsNyArMjU2Myw3IEBAIHN0YXRpYyB2b2lkIHJ1
bldpdGhPcHRpb25zKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb21tYW5kTGluZSYgb3B0
aW9ucywgYm9vCiAgICAgICAgIGlmIChpc01vZHVsZSkgewogICAgICAgICAgICAgaWYgKCFwcm9t
aXNlKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSBhbiBhYnNv
bHV0ZSBmaWxlIFVSTCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkz
MDc3Ci0gICAgICAgICAgICAgICAgcHJvbWlzZSA9IGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbWFrZVNvdXJjZShzdHJpbmdGcm9tVVRGKHNjcmlwdEJ1
ZmZlciksIFNvdXJjZU9yaWdpbiB7IGFic29sdXRlUGF0aChmaWxlTmFtZSkgfSwgVVJMKHsgfSwg
ZmlsZU5hbWUpLCBUZXh0UG9zaXRpb24oKSwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpNb2R1
bGUpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgICAgICBwcm9taXNlID0gbG9hZEFuZEV2
YWx1YXRlTW9kdWxlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc3RyaW5n
RnJvbVVURihzY3JpcHRCdWZmZXIpLCBTb3VyY2VPcmlnaW4geyBhYnNvbHV0ZVBhdGgoZmlsZU5h
bWUpIH0sIFVSTCh7IH0sIGZpbGVOYW1lKSwgVGV4dFBvc2l0aW9uKCksIFNvdXJjZVByb3ZpZGVy
U291cmNlVHlwZTo6TW9kdWxlKSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmgKaW5kZXggMzc3OGJmOTQxYWQ3ZmFjODY0ZDZjYTc4
MGEwNmQ4Mjg5ZTkxYWU0Yy4uYjNjOWM0NjU3NjRmZmZjYjk3MDVjZTg2ZmI5Y2E4MDRjMjE0ODY0
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaApA
QCAtMTE2LDYgKzExNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIHVuc2ln
bmVkIGhhc2goKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nVmlldyBzb3VyY2Uo
KSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgQ2FjaGVkQnl0ZWNvZGUqIGNhY2hl
ZEJ5dGVjb2RlKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgICAgICB2aXJ0dWFsIGJv
b2wgY2FjaGVCeXRlY29kZShjb25zdCBDYWNoZWRCeXRlY29kZSYpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAKICAgICAgICAgU3RyaW5nVmlldyBnZXRSYW5nZShpbnQgc3RhcnQsIGludCBlbmQp
IGNvbnN0CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2Fj
aGUuY3BwCmluZGV4IGMxZWNlZGJmN2Y5MWEzNDYzNTRkOTBiMzk2YzBiY2NlNTI1YWY2MGIuLjM5
M2RmMTIyOWQwNTYwN2JjNDcyZGY3NTBhM2E0ZDcxYjEzNjk4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtMjAyLDE1ICsyMDIsOSBAQCB2b2lk
IHdyaXRlQ29kZUJsb2NrKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZUtleSYga2V5LCBjb25zdCBT
b3VyY2VDb2RlVmFsdWUmIHZhbAogICAgICAgICByZXR1cm47CiAKICAgICBzdGQ6OnBhaXI8TWFs
bG9jUHRyPHVpbnQ4X3Q+LCBzaXplX3Q+IHJlc3VsdCA9IGVuY29kZUNvZGVCbG9jayh2bSwga2V5
LCBjb2RlQmxvY2spOworICAgIENhY2hlZEJ5dGVjb2RlIGNhY2hlZEJ5dGVjb2RlIHsgV1RGTW92
ZShyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vjb25kIH07CisgICAga2V5LnNvdXJjZSgpLnByb3Zp
ZGVyKCkuY2FjaGVCeXRlY29kZShjYWNoZWRCeXRlY29kZSk7CiAKLSAgICBTdHJpbmcgZmlsZW5h
bWUgPSBtYWtlU3RyaW5nKGNhY2hlUGF0aCwgJy8nLCBrZXkuaGFzaCgpLCAiLmNhY2hlIik7Ci0g
ICAgaW50IGZkID0gb3BlbihmaWxlbmFtZS51dGY4KCkuZGF0YSgpLCBPX0NSRUFUIHwgT19XUk9O
TFksIDA2NjYpOwotICAgIGlmIChmZCA9PSAtMSkKLSAgICAgICAgcmV0dXJuOwotICAgIGludCBy
YyA9IGZsb2NrKGZkLCBMT0NLX0VYIHwgTE9DS19OQik7Ci0gICAgaWYgKCFyYykKLSAgICAgICAg
Ojp3cml0ZShmZCwgcmVzdWx0LmZpcnN0LmdldCgpLCByZXN1bHQuc2Vjb25kKTsKLSAgICBjbG9z
ZShmZCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKGtl
eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCmluZGV4IGJlNDRi
ZGRlZTk5ZmU0OTRlMTg4NWNhM2U3NzkxZGE2Njk0Zjg4OWQuLjQ1OTM4ZTZmNjI4ODdjMmIyYWE5
NjFmYmRjMjAyNTE2YzdmOGRjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
ZGVDYWNoZS5oCkBAIC0xMDksNjAgKzEwOSwxNCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVW5saW5rZWRDb2RlQmxvY2tUeXBlPgogICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSog
ZmV0Y2hGcm9tRGlza0ltcGwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBrZXkpCiAgICAg
ewotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBhdXRvKiBjYWNoZWRCeXRlY29kZSA9IGtl
eS5zb3VyY2UoKS5wcm92aWRlcigpLmNhY2hlZEJ5dGVjb2RlKCk7Ci0gICAgICAgICAgICBpZiAo
Y2FjaGVkQnl0ZWNvZGUgJiYgY2FjaGVkQnl0ZWNvZGUtPnNpemUoKSkgewotICAgICAgICAgICAg
ICAgIFZFUkJPU0VfTE9HKCJGb3VuZCBjYWNoZWQgQ29kZUJsb2NrIGluIHRoZSBTb3VyY2VQcm92
aWRlciIpOwotICAgICAgICAgICAgICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSogdW5saW5rZWRD
b2RlQmxvY2sgPSBkZWNvZGVDb2RlQmxvY2s8VW5saW5rZWRDb2RlQmxvY2tUeXBlPih2bSwga2V5
LCBjYWNoZWRCeXRlY29kZS0+ZGF0YSgpLCBjYWNoZWRCeXRlY29kZS0+c2l6ZSgpKTsKLSAgICAg
ICAgICAgICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2spCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiB1bmxpbmtlZENvZGVCbG9jazsKLSAgICAgICAgICAgIH0KKyAgICAgICAgY29uc3QgYXV0
byogY2FjaGVkQnl0ZWNvZGUgPSBrZXkuc291cmNlKCkucHJvdmlkZXIoKS5jYWNoZWRCeXRlY29k
ZSgpOworICAgICAgICBpZiAoY2FjaGVkQnl0ZWNvZGUgJiYgY2FjaGVkQnl0ZWNvZGUtPnNpemUo
KSkgeworICAgICAgICAgICAgVkVSQk9TRV9MT0coIkZvdW5kIGNhY2hlZCBDb2RlQmxvY2sgaW4g
dGhlIFNvdXJjZVByb3ZpZGVyIik7CisgICAgICAgICAgICBVbmxpbmtlZENvZGVCbG9ja1R5cGUq
IHVubGlua2VkQ29kZUJsb2NrID0gZGVjb2RlQ29kZUJsb2NrPFVubGlua2VkQ29kZUJsb2NrVHlw
ZT4odm0sIGtleSwgY2FjaGVkQnl0ZWNvZGUtPmRhdGEoKSwgY2FjaGVkQnl0ZWNvZGUtPnNpemUo
KSk7CisgICAgICAgICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2spCisgICAgICAgICAgICAgICAg
cmV0dXJuIHVubGlua2VkQ29kZUJsb2NrOwogICAgICAgICB9Ci0KLSNpZiBPUyhEQVJXSU4pCi0g
ICAgICAgIGNvbnN0IGNoYXIqIGNhY2hlUGF0aCA9IE9wdGlvbnM6OmRpc2tDYWNoZVBhdGgoKTsK
LSAgICAgICAgaWYgKCFjYWNoZVBhdGgpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgICAgICB1bnNpZ25lZCBoYXNoID0ga2V5Lmhhc2goKTsKLSAgICAgICAgY2hhciBmaWxlbmFt
ZVs1MTJdOwotICAgICAgICBpbnQgY291bnQgPSBzbnByaW50ZihmaWxlbmFtZSwgNTEyLCAiJXMv
JXUuY2FjaGUiLCBjYWNoZVBhdGgsIGhhc2gpOwotICAgICAgICBpZiAoY291bnQgPCAwIHx8IGNv
dW50ID4gNTEyKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgaW50IGZk
ID0gb3BlbihmaWxlbmFtZSwgT19SRE9OTFkpOwotICAgICAgICBpZiAoZmQgPT0gLTEpCi0gICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICBpbnQgcmMgPSBmbG9jayhmZCwgTE9D
S19TSCB8IExPQ0tfTkIpOwotICAgICAgICBpZiAocmMpIHsKLSAgICAgICAgICAgIGNsb3NlKGZk
KTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgc3Ry
dWN0IHN0YXQgc2I7Ci0gICAgICAgIGludCByZXMgPSBmc3RhdChmZCwgJnNiKTsKLSAgICAgICAg
c2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNiLnN0X3NpemUpOwotICAgICAgICBp
ZiAocmVzIHx8ICFzaXplKSB7Ci0gICAgICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQqIGJ1ZmZlciA9IG1tYXAo
bnVsbHB0ciwgc2l6ZSwgUFJPVF9SRUFELCBNQVBfUFJJVkFURSwgZmQsIDApOwotICAgICAgICBV
bmxpbmtlZENvZGVCbG9ja1R5cGUqIHVubGlua2VkQ29kZUJsb2NrID0gZGVjb2RlQ29kZUJsb2Nr
PFVubGlua2VkQ29kZUJsb2NrVHlwZT4odm0sIGtleSwgYnVmZmVyLCBzaXplKTsKLSAgICAgICAg
bXVubWFwKGJ1ZmZlciwgc2l6ZSk7Ci0KLSAgICAgICAgaWYgKCF1bmxpbmtlZENvZGVCbG9jaykK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIFZFUkJPU0VfTE9HKCJGb3Vu
ZCBjYWNoZWQgQ29kZUJsb2NrIG9uIGRpc2siKTsKLSAgICAgICAgYWRkQ2FjaGUoa2V5LCBTb3Vy
Y2VDb2RlVmFsdWUodm0sIHVubGlua2VkQ29kZUJsb2NrLCBtX2FnZSwgdHJ1ZSkpOwotICAgICAg
ICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2s7Ci0jZWxzZQotICAgICAgICBVTlVTRURfUEFSQU0o
dm0pOwotICAgICAgICBVTlVTRURfUEFSQU0oa2V5KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0jZW5kaWYKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVbmxpbmtlZENvZGVCbG9j
a1R5cGU+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362108</attachid>
            <date>2019-02-15 03:07:19 -0800</date>
            <delta_ts>2019-02-15 04:52:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194675-20190215120646.patch</filename>
            <type>text/plain</type>
            <size>12552</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MzA2ZjhlYzdjOGU3MzNiNDI4YmViYzIxODk4NDc3YjIzZjUzMTY0Li5iYTA3MzEyYjY3NjcxMTdl
OTI0Mzg5NzJiOTVjMGViYjVmYTg5MjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxOS0wMi0xNCAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBNb3ZlIGJ5dGVjb2RlIGNhY2hlLXJlbGF0ZWQgZmlsZXN5c3RlbSBjb2Rl
IG91dCBvZiBDb2RlQ2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5NDY3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoYXQgY29kZSBpcyBvbmx5IHVzZWQgZm9yIHRoZSBieXRlY29kZS1jYWNoZSB0
ZXN0cywgc28gaXQgc2hvdWxkIGxpdmUgaW4KKyAgICAgICAganNjLmNwcCByYXRoZXIgdGhhbiBp
biB0aGUgQ29kZUNhY2hlLgorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKENsaVNvdXJj
ZVByb3ZpZGVyOjpjcmVhdGUpOgorICAgICAgICAoQ2xpU291cmNlUHJvdmlkZXI6On5DbGlTb3Vy
Y2VQcm92aWRlcik6CisgICAgICAgIChDbGlTb3VyY2VQcm92aWRlcjo6Y2FjaGVQYXRoIGNvbnN0
KToKKyAgICAgICAgKENsaVNvdXJjZVByb3ZpZGVyOjpsb2FkQnl0ZWNvZGUpOgorICAgICAgICAo
Q2xpU291cmNlUHJvdmlkZXI6OkNsaVNvdXJjZVByb3ZpZGVyKToKKyAgICAgICAgKGpzY1NvdXJj
ZSk6CisgICAgICAgIChHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckZldGNoKToKKyAgICAgICAg
KGZ1bmN0aW9uRG9sbGFyRXZhbFNjcmlwdCk6CisgICAgICAgIChydW5XaXRoT3B0aW9ucyk6Cisg
ICAgICAgICogcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgIChKU0M6OlNvdXJjZVBy
b3ZpZGVyOjpjYWNoZUJ5dGVjb2RlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNo
ZS5jcHA6CisgICAgICAgIChKU0M6OndyaXRlQ29kZUJsb2NrKToKKyAgICAgICAgKiBydW50aW1l
L0NvZGVDYWNoZS5oOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGVNYXA6OmZldGNoRnJvbURpc2tJ
bXBsKToKKwogMjAxOS0wMi0xNCAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBDYWNoZWRCaXRWZWN0b3IncyBzaXplIG11c3QgYmUgY29udmVydGVkIGZyb20g
Yml0cyB0byBieXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBiZTAxODA2MDVlNmU4YWJmNDhh
YjcxMWI4NmM5ZDRmYzk4YzA1ZjFhLi4wZDYxY2MwNmM1NzM3ZjU0NDBhYTlhNzZiY2Y3ZjJmZWI1
M2ViNjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtOTU0LDEyICs5NTQsMTA4IEBAIHN0YXRp
YyBib29sIGZldGNoU2NyaXB0RnJvbUxvY2FsRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBWZWN0b3I8Y2hhcj4mCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2NsYXNzIFNoZWxsU291
cmNlUHJvdmlkZXIgOiBwdWJsaWMgU3RyaW5nU291cmNlUHJvdmlkZXIgeworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8U2hlbGxTb3VyY2VQcm92aWRlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgc291
cmNlLCBjb25zdCBTb3VyY2VPcmlnaW4mIHNvdXJjZU9yaWdpbiwgVVJMJiYgdXJsLCBjb25zdCBU
ZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZSBzb3Vy
Y2VUeXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hlbGxTb3VyY2VQ
cm92aWRlcihzb3VyY2UsIHNvdXJjZU9yaWdpbiwgV1RGTW92ZSh1cmwpLCBzdGFydFBvc2l0aW9u
LCBzb3VyY2VUeXBlKSk7CisgICAgfQorCisgICAgflNoZWxsU291cmNlUHJvdmlkZXIoKQorICAg
IHsKKyAgICAgICAgaWYgKG1fY2FjaGVkQnl0ZWNvZGUuc2l6ZSgpKQorICAgICAgICAgICAgbXVu
bWFwKGNvbnN0X2Nhc3Q8dm9pZCo+KG1fY2FjaGVkQnl0ZWNvZGUuZGF0YSgpKSwgbV9jYWNoZWRC
eXRlY29kZS5zaXplKCkpOworICAgIH0KKworICAgIGNvbnN0IENhY2hlZEJ5dGVjb2RlKiBjYWNo
ZWRCeXRlY29kZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gJm1fY2Fj
aGVkQnl0ZWNvZGU7CisgICAgfQorCisgICAgYm9vbCBjYWNoZUJ5dGVjb2RlKGNvbnN0IENhY2hl
ZEJ5dGVjb2RlJiBjYWNoZWRCeXRlY29kZSkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisjaWYgT1Mo
REFSV0lOKQorICAgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBjYWNoZVBhdGgoKTsKKyAgICAgICAg
aWYgKGZpbGVuYW1lLmlzTnVsbCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpbnQgZmQgPSBvcGVuKGZpbGVuYW1lLnV0ZjgoKS5kYXRhKCksIE9fQ1JFQVQgfCBPX1dST05M
WSwgMDY2Nik7CisgICAgICAgIGlmIChmZCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgaW50IHJjID0gZmxvY2soZmQsIExPQ0tfRVggfCBMT0NLX05CKTsKKyAgICAg
ICAgaWYgKCFyYykKKyAgICAgICAgICAgIHdyaXRlKGZkLCBjYWNoZWRCeXRlY29kZS5kYXRhKCks
IGNhY2hlZEJ5dGVjb2RlLnNpemUoKSk7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgcmV0
dXJuICFyYzsKKyNlbHNlCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgIH0KKwor
cHJpdmF0ZToKKyAgICBTdHJpbmcgY2FjaGVQYXRoKCkgY29uc3QKKyAgICB7CisgICAgICAgIGNv
bnN0IGNoYXIqIGNhY2hlUGF0aCA9IE9wdGlvbnM6OmRpc2tDYWNoZVBhdGgoKTsKKyAgICAgICAg
aWYgKCFjYWNoZVBhdGgpCisgICAgICAgICAgICByZXR1cm4gU3RyaW5nKHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihudWxscHRyKSk7CisKKyAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0gc291cmNl
T3JpZ2luKCkuc3RyaW5nKCk7CisgICAgICAgIGZpbGVuYW1lLnJlcGxhY2UoJy8nLCAnXycpOwor
ICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhjYWNoZVBhdGgsICcvJywgc291cmNlKCkudG9TdHJp
bmcoKS5oYXNoKCksICctJywgZmlsZW5hbWUsICIuYnl0ZWNvZGUtY2FjaGUiKTsKKyAgICB9CisK
KyAgICB2b2lkIGxvYWRCeXRlY29kZSgpCisgICAgeworI2lmIE9TKERBUldJTikKKyAgICAgICAg
U3RyaW5nIGZpbGVuYW1lID0gY2FjaGVQYXRoKCk7CisgICAgICAgIGlmIChmaWxlbmFtZS5pc051
bGwoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpbnQgZmQgPSBvcGVuKGZpbGVu
YW1lLnV0ZjgoKS5kYXRhKCksIE9fUkRPTkxZKTsKKyAgICAgICAgaWYgKGZkID09IC0xKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGludCByYyA9IGZsb2NrKGZkLCBMT0NLX1NIIHwg
TE9DS19OQik7CisgICAgICAgIGlmIChyYykgeworICAgICAgICAgICAgY2xvc2UoZmQpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc3RydWN0IHN0YXQgc2I7Cisg
ICAgICAgIGludCByZXMgPSBmc3RhdChmZCwgJnNiKTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBz
dGF0aWNfY2FzdDxzaXplX3Q+KHNiLnN0X3NpemUpOworICAgICAgICBpZiAocmVzIHx8ICFzaXpl
KSB7CisgICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICB2b2lkKiBidWZmZXIgPSBtbWFwKG51bGxwdHIsIHNpemUsIFBST1RfUkVB
RCwgTUFQX1BSSVZBVEUsIGZkLCAwKTsKKyAgICAgICAgY2xvc2UoZmQpOworICAgICAgICBpZiAo
YnVmZmVyID09IE1BUF9GQUlMRUQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2Fj
aGVkQnl0ZWNvZGUgPSBDYWNoZWRCeXRlY29kZSB7IGJ1ZmZlciwgc2l6ZSB9OworI2VuZGlmCisg
ICAgfQorCisgICAgU2hlbGxTb3VyY2VQcm92aWRlcihjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29u
c3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIFVSTCYmIHVybCwgY29uc3QgVGV4dFBvc2l0
aW9uJiBzdGFydFBvc2l0aW9uLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNlVHlwZSkK
KyAgICAgICAgOiBTdHJpbmdTb3VyY2VQcm92aWRlcihzb3VyY2UsIHNvdXJjZU9yaWdpbiwgV1RG
TW92ZSh1cmwpLCBzdGFydFBvc2l0aW9uLCBzb3VyY2VUeXBlKQorICAgIHsKKyAgICAgICAgbG9h
ZEJ5dGVjb2RlKCk7CisgICAgfQorCisgICAgQ2FjaGVkQnl0ZWNvZGUgbV9jYWNoZWRCeXRlY29k
ZTsKK307CisKK3N0YXRpYyBpbmxpbmUgU291cmNlQ29kZSBqc2NTb3VyY2UoY29uc3QgU3RyaW5n
JiBzb3VyY2UsIGNvbnN0IFNvdXJjZU9yaWdpbiYgc291cmNlT3JpZ2luLCBVUkwmJiB1cmwgPSBV
UkwoKSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uID0gVGV4dFBvc2l0aW9uKCks
IFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZSBzb3VyY2VUeXBlID0gU291cmNlUHJvdmlkZXJTb3Vy
Y2VUeXBlOjpQcm9ncmFtKQoreworICAgIHJldHVybiBTb3VyY2VDb2RlKFNoZWxsU291cmNlUHJv
dmlkZXI6OmNyZWF0ZShzb3VyY2UsIHNvdXJjZU9yaWdpbiwgV1RGTW92ZSh1cmwpLCBzdGFydFBv
c2l0aW9uLCBzb3VyY2VUeXBlKSwgc3RhcnRQb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJbnQoKSwg
c3RhcnRQb3NpdGlvbi5tX2NvbHVtbi5vbmVCYXNlZEludCgpKTsKK30KKwogdGVtcGxhdGU8dHlw
ZW5hbWUgVmVjdG9yPgogc3RhdGljIGlubGluZSBTb3VyY2VDb2RlIGpzY1NvdXJjZShjb25zdCBW
ZWN0b3ImIHV0ZjgsIGNvbnN0IFNvdXJjZU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJp
bmcmIGZpbGVuYW1lKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgYW4gYWJzb2x1
dGUgZmlsZSBVUkwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzA3
NwogICAgIFN0cmluZyBzdHIgPSBzdHJpbmdGcm9tVVRGKHV0ZjgpOwotICAgIHJldHVybiBtYWtl
U291cmNlKHN0ciwgc291cmNlT3JpZ2luLCBVUkwoeyB9LCBmaWxlbmFtZSkpOworICAgIHJldHVy
biBqc2NTb3VyY2Uoc3RyLCBzb3VyY2VPcmlnaW4sIFVSTCh7IH0sIGZpbGVuYW1lKSk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFZlY3Rvcj4KQEAgLTEwNDIsNyArMTEzOCw3IEBAIEpTSW50ZXJu
YWxQcm9taXNlKiBHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckZldGNoKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsCiAgICAgfQogI2VuZGlmCiAKLSAgICBhdXRvIHNvdXJjZUNvZGUgPSBK
U1NvdXJjZUNvZGU6OmNyZWF0ZSh2bSwgbWFrZVNvdXJjZShzdHJpbmdGcm9tVVRGKGJ1ZmZlciks
IFNvdXJjZU9yaWdpbiB7IG1vZHVsZUtleSB9LCBXVEZNb3ZlKG1vZHVsZVVSTCksIFRleHRQb3Np
dGlvbigpLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSkpOworICAgIGF1dG8gc291
cmNlQ29kZSA9IEpTU291cmNlQ29kZTo6Y3JlYXRlKHZtLCBqc2NTb3VyY2Uoc3RyaW5nRnJvbVVU
RihidWZmZXIpLCBTb3VyY2VPcmlnaW4geyBtb2R1bGVLZXkgfSwgV1RGTW92ZShtb2R1bGVVUkwp
LCBUZXh0UG9zaXRpb24oKSwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpNb2R1bGUpKTsKICAg
ICBjYXRjaFNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwogICAgIGF1dG8gcmVzdWx0
ID0gZGVmZXJyZWQtPnJlc29sdmUoZXhlYywgc291cmNlQ29kZSk7CiAgICAgY2F0Y2hTY29wZS5j
bGVhckV4Y2VwdGlvbigpOwpAQCAtMTcxNSw3ICsxODExLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckV2YWxTY3JpcHQoRXhlY1N0YXRlKiBleGVjKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBj
cmVhdGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgZ2xvYmFsIHRvIHBvaW50IHRvIGEgZ2xvYmFsIG9i
amVjdCJfcykpKTsKICAgICAKICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNl
cHRpb247Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSwgbWFrZVNvdXJjZShzb3VyY2VDb2RlLCBleGVjLT5jYWxsZXJTb3VyY2VPcmlnaW4o
KSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgSlNWYWx1ZSByZXN1bHQg
PSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNvdXJjZUNv
ZGUsIGV4ZWMtPmNhbGxlclNvdXJjZU9yaWdpbigpKSwgSlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhj
ZXB0aW9uKTsKICAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKICAgICAgICAgdGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIGV2YWx1YXRpb25FeGNlcHRpb24pOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTI0NzEsNyArMjU2Nyw3IEBAIHN0YXRpYyB2b2lkIHJ1
bldpdGhPcHRpb25zKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb21tYW5kTGluZSYgb3B0
aW9ucywgYm9vCiAgICAgICAgIGlmIChpc01vZHVsZSkgewogICAgICAgICAgICAgaWYgKCFwcm9t
aXNlKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSBhbiBhYnNv
bHV0ZSBmaWxlIFVSTCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkz
MDc3Ci0gICAgICAgICAgICAgICAgcHJvbWlzZSA9IGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbWFrZVNvdXJjZShzdHJpbmdGcm9tVVRGKHNjcmlwdEJ1
ZmZlciksIFNvdXJjZU9yaWdpbiB7IGFic29sdXRlUGF0aChmaWxlTmFtZSkgfSwgVVJMKHsgfSwg
ZmlsZU5hbWUpLCBUZXh0UG9zaXRpb24oKSwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpNb2R1
bGUpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgICAgICBwcm9taXNlID0gbG9hZEFuZEV2
YWx1YXRlTW9kdWxlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc3RyaW5n
RnJvbVVURihzY3JpcHRCdWZmZXIpLCBTb3VyY2VPcmlnaW4geyBhYnNvbHV0ZVBhdGgoZmlsZU5h
bWUpIH0sIFVSTCh7IH0sIGZpbGVOYW1lKSwgVGV4dFBvc2l0aW9uKCksIFNvdXJjZVByb3ZpZGVy
U291cmNlVHlwZTo6TW9kdWxlKSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmgKaW5kZXggMzc3OGJmOTQxYWQ3ZmFjODY0ZDZjYTc4
MGEwNmQ4Mjg5ZTkxYWU0Yy4uYjNjOWM0NjU3NjRmZmZjYjk3MDVjZTg2ZmI5Y2E4MDRjMjE0ODY0
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaApA
QCAtMTE2LDYgKzExNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIHVuc2ln
bmVkIGhhc2goKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nVmlldyBzb3VyY2Uo
KSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgQ2FjaGVkQnl0ZWNvZGUqIGNhY2hl
ZEJ5dGVjb2RlKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgICAgICB2aXJ0dWFsIGJv
b2wgY2FjaGVCeXRlY29kZShjb25zdCBDYWNoZWRCeXRlY29kZSYpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAKICAgICAgICAgU3RyaW5nVmlldyBnZXRSYW5nZShpbnQgc3RhcnQsIGludCBlbmQp
IGNvbnN0CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2Fj
aGUuY3BwCmluZGV4IGMxZWNlZGJmN2Y5MWEzNDYzNTRkOTBiMzk2YzBiY2NlNTI1YWY2MGIuLmNk
MGMzZTBjYmM0M2JiZWI5YzJmZDRiNzQ1NGI5ZTRiYThjN2I5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtMTkyLDMwICsxOTIsMTMgQEAgdm9p
ZCBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrRm9yRnVuY3Rpb25zKFZNJiB2bSwgVW5saW5rZWRD
b2RlQmxvY2sqIHVubGlua2VkQ28KIAogdm9pZCB3cml0ZUNvZGVCbG9jayhWTSYgdm0sIGNvbnN0
IFNvdXJjZUNvZGVLZXkmIGtleSwgY29uc3QgU291cmNlQ29kZVZhbHVlJiB2YWx1ZSkKIHsKLSNp
ZiBPUyhEQVJXSU4pCi0gICAgY29uc3QgY2hhciogY2FjaGVQYXRoID0gT3B0aW9uczo6ZGlza0Nh
Y2hlUGF0aCgpOwotICAgIGlmIChMSUtFTFkoIWNhY2hlUGF0aCkpCi0gICAgICAgIHJldHVybjsK
LQogICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBqc0R5bmFtaWNDYXN0PFVubGlu
a2VkQ29kZUJsb2NrKj4odm0sIHZhbHVlLmNlbGwuZ2V0KCkpOwogICAgIGlmICghY29kZUJsb2Nr
KQogICAgICAgICByZXR1cm47CiAKICAgICBzdGQ6OnBhaXI8TWFsbG9jUHRyPHVpbnQ4X3Q+LCBz
aXplX3Q+IHJlc3VsdCA9IGVuY29kZUNvZGVCbG9jayh2bSwga2V5LCBjb2RlQmxvY2spOwotCi0g
ICAgU3RyaW5nIGZpbGVuYW1lID0gbWFrZVN0cmluZyhjYWNoZVBhdGgsICcvJywga2V5Lmhhc2go
KSwgIi5jYWNoZSIpOwotICAgIGludCBmZCA9IG9wZW4oZmlsZW5hbWUudXRmOCgpLmRhdGEoKSwg
T19DUkVBVCB8IE9fV1JPTkxZLCAwNjY2KTsKLSAgICBpZiAoZmQgPT0gLTEpCi0gICAgICAgIHJl
dHVybjsKLSAgICBpbnQgcmMgPSBmbG9jayhmZCwgTE9DS19FWCB8IExPQ0tfTkIpOwotICAgIGlm
ICghcmMpCi0gICAgICAgIDo6d3JpdGUoZmQsIHJlc3VsdC5maXJzdC5nZXQoKSwgcmVzdWx0LnNl
Y29uZCk7Ci0gICAgY2xvc2UoZmQpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0odm0pOwotICAg
IFVOVVNFRF9QQVJBTShrZXkpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Ci0jZW5kaWYKKyAg
ICBDYWNoZWRCeXRlY29kZSBjYWNoZWRCeXRlY29kZSB7IFdURk1vdmUocmVzdWx0LmZpcnN0KSwg
cmVzdWx0LnNlY29uZCB9OworICAgIGtleS5zb3VyY2UoKS5wcm92aWRlcigpLmNhY2hlQnl0ZWNv
ZGUoY2FjaGVkQnl0ZWNvZGUpOwogfQogCiBDYWNoZWRCeXRlY29kZSBzZXJpYWxpemVCeXRlY29k
ZShWTSYgdm0sIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgU291cmNlQ29kZVR5cGUgY29kZVR5cGUsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJp
Y3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgRGVidWdnZXJNb2RlIGRlYnVn
Z2VyTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVD
YWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKaW5kZXgg
YmU0NGJkZGVlOTlmZTQ5NGUxODg1Y2EzZTc3OTFkYTY2OTRmODg5ZC4uNDU5MzhlNmY2Mjg4N2My
YjJhYTk2MWZiZGMyMDI1MTZjN2Y4ZGMxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29kZUNhY2hlLmgKQEAgLTEwOSw2MCArMTA5LDE0IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVbmxpbmtlZENvZGVCbG9ja1R5cGU+CiAgICAgVW5saW5rZWRDb2RlQmxvY2tU
eXBlKiBmZXRjaEZyb21EaXNrSW1wbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtleSkK
ICAgICB7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IGF1dG8qIGNhY2hlZEJ5dGVjb2Rl
ID0ga2V5LnNvdXJjZSgpLnByb3ZpZGVyKCkuY2FjaGVkQnl0ZWNvZGUoKTsKLSAgICAgICAgICAg
IGlmIChjYWNoZWRCeXRlY29kZSAmJiBjYWNoZWRCeXRlY29kZS0+c2l6ZSgpKSB7Ci0gICAgICAg
ICAgICAgICAgVkVSQk9TRV9MT0coIkZvdW5kIGNhY2hlZCBDb2RlQmxvY2sgaW4gdGhlIFNvdXJj
ZVByb3ZpZGVyIik7Ci0gICAgICAgICAgICAgICAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiB1bmxp
bmtlZENvZGVCbG9jayA9IGRlY29kZUNvZGVCbG9jazxVbmxpbmtlZENvZGVCbG9ja1R5cGU+KHZt
LCBrZXksIGNhY2hlZEJ5dGVjb2RlLT5kYXRhKCksIGNhY2hlZEJ5dGVjb2RlLT5zaXplKCkpOwot
ICAgICAgICAgICAgICAgIGlmICh1bmxpbmtlZENvZGVCbG9jaykKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHVubGlua2VkQ29kZUJsb2NrOwotICAgICAgICAgICAgfQorICAgICAgICBjb25z
dCBhdXRvKiBjYWNoZWRCeXRlY29kZSA9IGtleS5zb3VyY2UoKS5wcm92aWRlcigpLmNhY2hlZEJ5
dGVjb2RlKCk7CisgICAgICAgIGlmIChjYWNoZWRCeXRlY29kZSAmJiBjYWNoZWRCeXRlY29kZS0+
c2l6ZSgpKSB7CisgICAgICAgICAgICBWRVJCT1NFX0xPRygiRm91bmQgY2FjaGVkIENvZGVCbG9j
ayBpbiB0aGUgU291cmNlUHJvdmlkZXIiKTsKKyAgICAgICAgICAgIFVubGlua2VkQ29kZUJsb2Nr
VHlwZSogdW5saW5rZWRDb2RlQmxvY2sgPSBkZWNvZGVDb2RlQmxvY2s8VW5saW5rZWRDb2RlQmxv
Y2tUeXBlPih2bSwga2V5LCBjYWNoZWRCeXRlY29kZS0+ZGF0YSgpLCBjYWNoZWRCeXRlY29kZS0+
c2l6ZSgpKTsKKyAgICAgICAgICAgIGlmICh1bmxpbmtlZENvZGVCbG9jaykKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2s7CiAgICAgICAgIH0KLQotI2lmIE9TKERBUldJ
TikKLSAgICAgICAgY29uc3QgY2hhciogY2FjaGVQYXRoID0gT3B0aW9uczo6ZGlza0NhY2hlUGF0
aCgpOwotICAgICAgICBpZiAoIWNhY2hlUGF0aCkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgICAgIHVuc2lnbmVkIGhhc2ggPSBrZXkuaGFzaCgpOwotICAgICAgICBjaGFyIGZp
bGVuYW1lWzUxMl07Ci0gICAgICAgIGludCBjb3VudCA9IHNucHJpbnRmKGZpbGVuYW1lLCA1MTIs
ICIlcy8ldS5jYWNoZSIsIGNhY2hlUGF0aCwgaGFzaCk7Ci0gICAgICAgIGlmIChjb3VudCA8IDAg
fHwgY291bnQgPiA1MTIpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICBp
bnQgZmQgPSBvcGVuKGZpbGVuYW1lLCBPX1JET05MWSk7Ci0gICAgICAgIGlmIChmZCA9PSAtMSkK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIGludCByYyA9IGZsb2NrKGZk
LCBMT0NLX1NIIHwgTE9DS19OQik7Ci0gICAgICAgIGlmIChyYykgewotICAgICAgICAgICAgY2xv
c2UoZmQpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLQotICAgICAg
ICBzdHJ1Y3Qgc3RhdCBzYjsKLSAgICAgICAgaW50IHJlcyA9IGZzdGF0KGZkLCAmc2IpOwotICAg
ICAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oc2Iuc3Rfc2l6ZSk7Ci0gICAg
ICAgIGlmIChyZXMgfHwgIXNpemUpIHsKLSAgICAgICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCogYnVmZmVyID0g
bW1hcChudWxscHRyLCBzaXplLCBQUk9UX1JFQUQsIE1BUF9QUklWQVRFLCBmZCwgMCk7Ci0gICAg
ICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSogdW5saW5rZWRDb2RlQmxvY2sgPSBkZWNvZGVDb2Rl
QmxvY2s8VW5saW5rZWRDb2RlQmxvY2tUeXBlPih2bSwga2V5LCBidWZmZXIsIHNpemUpOwotICAg
ICAgICBtdW5tYXAoYnVmZmVyLCBzaXplKTsKLQotICAgICAgICBpZiAoIXVubGlua2VkQ29kZUJs
b2NrKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgVkVSQk9TRV9MT0co
IkZvdW5kIGNhY2hlZCBDb2RlQmxvY2sgb24gZGlzayIpOwotICAgICAgICBhZGRDYWNoZShrZXks
IFNvdXJjZUNvZGVWYWx1ZSh2bSwgdW5saW5rZWRDb2RlQmxvY2ssIG1fYWdlLCB0cnVlKSk7Ci0g
ICAgICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9jazsKLSNlbHNlCi0gICAgICAgIFVOVVNFRF9Q
QVJBTSh2bSk7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShrZXkpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSNlbmRpZgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVubGlua2VkQ29k
ZUJsb2NrVHlwZT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362111</attachid>
            <date>2019-02-15 04:52:34 -0800</date>
            <delta_ts>2019-02-18 01:39:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194675-20190215135200.patch</filename>
            <type>text/plain</type>
            <size>12576</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MzA2ZjhlYzdjOGU3MzNiNDI4YmViYzIxODk4NDc3YjIzZjUzMTY0Li5iYTA3MzEyYjY3NjcxMTdl
OTI0Mzg5NzJiOTVjMGViYjVmYTg5MjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxOS0wMi0xNCAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBNb3ZlIGJ5dGVjb2RlIGNhY2hlLXJlbGF0ZWQgZmlsZXN5c3RlbSBjb2Rl
IG91dCBvZiBDb2RlQ2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5NDY3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoYXQgY29kZSBpcyBvbmx5IHVzZWQgZm9yIHRoZSBieXRlY29kZS1jYWNoZSB0
ZXN0cywgc28gaXQgc2hvdWxkIGxpdmUgaW4KKyAgICAgICAganNjLmNwcCByYXRoZXIgdGhhbiBp
biB0aGUgQ29kZUNhY2hlLgorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKENsaVNvdXJj
ZVByb3ZpZGVyOjpjcmVhdGUpOgorICAgICAgICAoQ2xpU291cmNlUHJvdmlkZXI6On5DbGlTb3Vy
Y2VQcm92aWRlcik6CisgICAgICAgIChDbGlTb3VyY2VQcm92aWRlcjo6Y2FjaGVQYXRoIGNvbnN0
KToKKyAgICAgICAgKENsaVNvdXJjZVByb3ZpZGVyOjpsb2FkQnl0ZWNvZGUpOgorICAgICAgICAo
Q2xpU291cmNlUHJvdmlkZXI6OkNsaVNvdXJjZVByb3ZpZGVyKToKKyAgICAgICAgKGpzY1NvdXJj
ZSk6CisgICAgICAgIChHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckZldGNoKToKKyAgICAgICAg
KGZ1bmN0aW9uRG9sbGFyRXZhbFNjcmlwdCk6CisgICAgICAgIChydW5XaXRoT3B0aW9ucyk6Cisg
ICAgICAgICogcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgIChKU0M6OlNvdXJjZVBy
b3ZpZGVyOjpjYWNoZUJ5dGVjb2RlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNo
ZS5jcHA6CisgICAgICAgIChKU0M6OndyaXRlQ29kZUJsb2NrKToKKyAgICAgICAgKiBydW50aW1l
L0NvZGVDYWNoZS5oOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGVNYXA6OmZldGNoRnJvbURpc2tJ
bXBsKToKKwogMjAxOS0wMi0xNCAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBDYWNoZWRCaXRWZWN0b3IncyBzaXplIG11c3QgYmUgY29udmVydGVkIGZyb20g
Yml0cyB0byBieXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBiZTAxODA2MDVlNmU4YWJmNDhh
YjcxMWI4NmM5ZDRmYzk4YzA1ZjFhLi44NDQ0MGRjZDYxZjBjNGY2YmNiMGRiMmFiNGVlODZhMzI1
ZTRlMGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtOTU0LDEyICs5NTQsMTEwIEBAIHN0YXRp
YyBib29sIGZldGNoU2NyaXB0RnJvbUxvY2FsRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBWZWN0b3I8Y2hhcj4mCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2NsYXNzIFNoZWxsU291
cmNlUHJvdmlkZXIgOiBwdWJsaWMgU3RyaW5nU291cmNlUHJvdmlkZXIgeworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8U2hlbGxTb3VyY2VQcm92aWRlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgc291
cmNlLCBjb25zdCBTb3VyY2VPcmlnaW4mIHNvdXJjZU9yaWdpbiwgVVJMJiYgdXJsLCBjb25zdCBU
ZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZSBzb3Vy
Y2VUeXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hlbGxTb3VyY2VQ
cm92aWRlcihzb3VyY2UsIHNvdXJjZU9yaWdpbiwgV1RGTW92ZSh1cmwpLCBzdGFydFBvc2l0aW9u
LCBzb3VyY2VUeXBlKSk7CisgICAgfQorCisgICAgflNoZWxsU291cmNlUHJvdmlkZXIoKQorICAg
IHsKKyNpZiBPUyhEQVJXSU4pCisgICAgICAgIGlmIChtX2NhY2hlZEJ5dGVjb2RlLnNpemUoKSkK
KyAgICAgICAgICAgIG11bm1hcChjb25zdF9jYXN0PHZvaWQqPihtX2NhY2hlZEJ5dGVjb2RlLmRh
dGEoKSksIG1fY2FjaGVkQnl0ZWNvZGUuc2l6ZSgpKTsKKyNlbmRpZgorICAgIH0KKworICAgIGNv
bnN0IENhY2hlZEJ5dGVjb2RlKiBjYWNoZWRCeXRlY29kZSgpIGNvbnN0IG92ZXJyaWRlCisgICAg
eworICAgICAgICByZXR1cm4gJm1fY2FjaGVkQnl0ZWNvZGU7CisgICAgfQorCisgICAgYm9vbCBj
YWNoZUJ5dGVjb2RlKGNvbnN0IENhY2hlZEJ5dGVjb2RlJiBjYWNoZWRCeXRlY29kZSkgY29uc3Qg
b3ZlcnJpZGUKKyAgICB7CisjaWYgT1MoREFSV0lOKQorICAgICAgICBTdHJpbmcgZmlsZW5hbWUg
PSBjYWNoZVBhdGgoKTsKKyAgICAgICAgaWYgKGZpbGVuYW1lLmlzTnVsbCgpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpbnQgZmQgPSBvcGVuKGZpbGVuYW1lLnV0ZjgoKS5k
YXRhKCksIE9fQ1JFQVQgfCBPX1dST05MWSwgMDY2Nik7CisgICAgICAgIGlmIChmZCA9PSAtMSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaW50IHJjID0gZmxvY2soZmQsIExP
Q0tfRVggfCBMT0NLX05CKTsKKyAgICAgICAgaWYgKCFyYykKKyAgICAgICAgICAgIHdyaXRlKGZk
LCBjYWNoZWRCeXRlY29kZS5kYXRhKCksIGNhY2hlZEJ5dGVjb2RlLnNpemUoKSk7CisgICAgICAg
IGNsb3NlKGZkKTsKKyAgICAgICAgcmV0dXJuICFyYzsKKyNlbHNlCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgorICAgIH0KKworcHJpdmF0ZToKKyAgICBTdHJpbmcgY2FjaGVQYXRoKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGNvbnN0IGNoYXIqIGNhY2hlUGF0aCA9IE9wdGlvbnM6OmRp
c2tDYWNoZVBhdGgoKTsKKyAgICAgICAgaWYgKCFjYWNoZVBhdGgpCisgICAgICAgICAgICByZXR1
cm4gU3RyaW5nKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihudWxscHRyKSk7CisKKyAgICAgICAg
U3RyaW5nIGZpbGVuYW1lID0gc291cmNlT3JpZ2luKCkuc3RyaW5nKCk7CisgICAgICAgIGZpbGVu
YW1lLnJlcGxhY2UoJy8nLCAnXycpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhjYWNoZVBh
dGgsICcvJywgc291cmNlKCkudG9TdHJpbmcoKS5oYXNoKCksICctJywgZmlsZW5hbWUsICIuYnl0
ZWNvZGUtY2FjaGUiKTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWRCeXRlY29kZSgpCisgICAgewor
I2lmIE9TKERBUldJTikKKyAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0gY2FjaGVQYXRoKCk7Cisg
ICAgICAgIGlmIChmaWxlbmFtZS5pc051bGwoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBpbnQgZmQgPSBvcGVuKGZpbGVuYW1lLnV0ZjgoKS5kYXRhKCksIE9fUkRPTkxZKTsKKyAg
ICAgICAgaWYgKGZkID09IC0xKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGludCBy
YyA9IGZsb2NrKGZkLCBMT0NLX1NIIHwgTE9DS19OQik7CisgICAgICAgIGlmIChyYykgeworICAg
ICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgc3RydWN0IHN0YXQgc2I7CisgICAgICAgIGludCByZXMgPSBmc3RhdChmZCwgJnNiKTsK
KyAgICAgICAgc2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNiLnN0X3NpemUpOwor
ICAgICAgICBpZiAocmVzIHx8ICFzaXplKSB7CisgICAgICAgICAgICBjbG9zZShmZCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2b2lkKiBidWZmZXIgPSBtbWFw
KG51bGxwdHIsIHNpemUsIFBST1RfUkVBRCwgTUFQX1BSSVZBVEUsIGZkLCAwKTsKKyAgICAgICAg
Y2xvc2UoZmQpOworICAgICAgICBpZiAoYnVmZmVyID09IE1BUF9GQUlMRUQpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIG1fY2FjaGVkQnl0ZWNvZGUgPSBDYWNoZWRCeXRlY29kZSB7IGJ1
ZmZlciwgc2l6ZSB9OworI2VuZGlmCisgICAgfQorCisgICAgU2hlbGxTb3VyY2VQcm92aWRlcihj
b25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIFVS
TCYmIHVybCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBTb3VyY2VQcm92aWRl
clNvdXJjZVR5cGUgc291cmNlVHlwZSkKKyAgICAgICAgOiBTdHJpbmdTb3VyY2VQcm92aWRlcihz
b3VyY2UsIHNvdXJjZU9yaWdpbiwgV1RGTW92ZSh1cmwpLCBzdGFydFBvc2l0aW9uLCBzb3VyY2VU
eXBlKQorICAgIHsKKyAgICAgICAgbG9hZEJ5dGVjb2RlKCk7CisgICAgfQorCisgICAgQ2FjaGVk
Qnl0ZWNvZGUgbV9jYWNoZWRCeXRlY29kZTsKK307CisKK3N0YXRpYyBpbmxpbmUgU291cmNlQ29k
ZSBqc2NTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFNvdXJjZU9yaWdpbiYgc291
cmNlT3JpZ2luLCBVUkwmJiB1cmwgPSBVUkwoKSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBv
c2l0aW9uID0gVGV4dFBvc2l0aW9uKCksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZSBzb3VyY2VU
eXBlID0gU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtKQoreworICAgIHJldHVybiBT
b3VyY2VDb2RlKFNoZWxsU291cmNlUHJvdmlkZXI6OmNyZWF0ZShzb3VyY2UsIHNvdXJjZU9yaWdp
biwgV1RGTW92ZSh1cmwpLCBzdGFydFBvc2l0aW9uLCBzb3VyY2VUeXBlKSwgc3RhcnRQb3NpdGlv
bi5tX2xpbmUub25lQmFzZWRJbnQoKSwgc3RhcnRQb3NpdGlvbi5tX2NvbHVtbi5vbmVCYXNlZElu
dCgpKTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yPgogc3RhdGljIGlubGluZSBTb3Vy
Y2VDb2RlIGpzY1NvdXJjZShjb25zdCBWZWN0b3ImIHV0ZjgsIGNvbnN0IFNvdXJjZU9yaWdpbiYg
c291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogewogICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCB1c2UgYW4gYWJzb2x1dGUgZmlsZSBVUkwgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MzA3NwogICAgIFN0cmluZyBzdHIgPSBzdHJpbmdGcm9tVVRG
KHV0ZjgpOwotICAgIHJldHVybiBtYWtlU291cmNlKHN0ciwgc291cmNlT3JpZ2luLCBVUkwoeyB9
LCBmaWxlbmFtZSkpOworICAgIHJldHVybiBqc2NTb3VyY2Uoc3RyLCBzb3VyY2VPcmlnaW4sIFVS
TCh7IH0sIGZpbGVuYW1lKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZlY3Rvcj4KQEAgLTEw
NDIsNyArMTE0MCw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBHbG9iYWxPYmplY3Q6Om1vZHVsZUxv
YWRlckZldGNoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgfQogI2VuZGlmCiAK
LSAgICBhdXRvIHNvdXJjZUNvZGUgPSBKU1NvdXJjZUNvZGU6OmNyZWF0ZSh2bSwgbWFrZVNvdXJj
ZShzdHJpbmdGcm9tVVRGKGJ1ZmZlciksIFNvdXJjZU9yaWdpbiB7IG1vZHVsZUtleSB9LCBXVEZN
b3ZlKG1vZHVsZVVSTCksIFRleHRQb3NpdGlvbigpLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6
Ok1vZHVsZSkpOworICAgIGF1dG8gc291cmNlQ29kZSA9IEpTU291cmNlQ29kZTo6Y3JlYXRlKHZt
LCBqc2NTb3VyY2Uoc3RyaW5nRnJvbVVURihidWZmZXIpLCBTb3VyY2VPcmlnaW4geyBtb2R1bGVL
ZXkgfSwgV1RGTW92ZShtb2R1bGVVUkwpLCBUZXh0UG9zaXRpb24oKSwgU291cmNlUHJvdmlkZXJT
b3VyY2VUeXBlOjpNb2R1bGUpKTsKICAgICBjYXRjaFNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2Vw
dGlvbigpOwogICAgIGF1dG8gcmVzdWx0ID0gZGVmZXJyZWQtPnJlc29sdmUoZXhlYywgc291cmNl
Q29kZSk7CiAgICAgY2F0Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigpOwpAQCAtMTcxNSw3ICsxODEz
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckV2YWxTY3Jp
cHQoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgZ2xvYmFs
IHRvIHBvaW50IHRvIGEgZ2xvYmFsIG9iamVjdCJfcykpKTsKICAgICAKICAgICBOYWtlZFB0cjxF
eGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBldmFs
dWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbWFrZVNvdXJjZShzb3VyY2VDb2RlLCBl
eGVjLT5jYWxsZXJTb3VyY2VPcmlnaW4oKSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlv
bik7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSwganNjU291cmNlKHNvdXJjZUNvZGUsIGV4ZWMtPmNhbGxlclNvdXJjZU9yaWdpbigpKSwg
SlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICBpZiAoZXZhbHVhdGlvbkV4Y2Vw
dGlvbikKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV2YWx1YXRpb25FeGNl
cHRpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTI0NzEsNyAr
MjU2OSw3IEBAIHN0YXRpYyB2b2lkIHJ1bldpdGhPcHRpb25zKEdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb21tYW5kTGluZSYgb3B0aW9ucywgYm9vCiAgICAgICAgIGlmIChpc01vZHVsZSkg
ewogICAgICAgICAgICAgaWYgKCFwcm9taXNlKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIHVzZSBhbiBhYnNvbHV0ZSBmaWxlIFVSTCBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMDc3Ci0gICAgICAgICAgICAgICAgcHJvbWlzZSA9IGxv
YWRBbmRFdmFsdWF0ZU1vZHVsZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbWFrZVNvdXJj
ZShzdHJpbmdGcm9tVVRGKHNjcmlwdEJ1ZmZlciksIFNvdXJjZU9yaWdpbiB7IGFic29sdXRlUGF0
aChmaWxlTmFtZSkgfSwgVVJMKHsgfSwgZmlsZU5hbWUpLCBUZXh0UG9zaXRpb24oKSwgU291cmNl
UHJvdmlkZXJTb3VyY2VUeXBlOjpNb2R1bGUpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAg
ICAgICBwcm9taXNlID0gbG9hZEFuZEV2YWx1YXRlTW9kdWxlKGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLCBqc2NTb3VyY2Uoc3RyaW5nRnJvbVVURihzY3JpcHRCdWZmZXIpLCBTb3VyY2VPcmln
aW4geyBhYnNvbHV0ZVBhdGgoZmlsZU5hbWUpIH0sIFVSTCh7IH0sIGZpbGVOYW1lKSwgVGV4dFBv
c2l0aW9uKCksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6TW9kdWxlKSwganNVbmRlZmluZWQo
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmgKaW5kZXgg
Mzc3OGJmOTQxYWQ3ZmFjODY0ZDZjYTc4MGEwNmQ4Mjg5ZTkxYWU0Yy4uYjNjOWM0NjU3NjRmZmZj
Yjk3MDVjZTg2ZmI5Y2E4MDRjMjE0ODY0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvU291cmNlUHJvdmlkZXIuaApAQCAtMTE2LDYgKzExNiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIGhhc2goKSBjb25zdCA9IDA7CiAgICAgICAgIHZp
cnR1YWwgU3RyaW5nVmlldyBzb3VyY2UoKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgY29u
c3QgQ2FjaGVkQnl0ZWNvZGUqIGNhY2hlZEJ5dGVjb2RlKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgY2FjaGVCeXRlY29kZShjb25zdCBDYWNoZWRCeXRl
Y29kZSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAgICAgU3RyaW5nVmlldyBnZXRS
YW5nZShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IGMxZWNlZGJmN2Y5MWEzNDYzNTRk
OTBiMzk2YzBiY2NlNTI1YWY2MGIuLmNkMGMzZTBjYmM0M2JiZWI5YzJmZDRiNzQ1NGI5ZTRiYThj
N2I5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNo
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApA
QCAtMTkyLDMwICsxOTIsMTMgQEAgdm9pZCBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrRm9yRnVu
Y3Rpb25zKFZNJiB2bSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ28KIAogdm9pZCB3cml0
ZUNvZGVCbG9jayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtleSwgY29uc3QgU291cmNl
Q29kZVZhbHVlJiB2YWx1ZSkKIHsKLSNpZiBPUyhEQVJXSU4pCi0gICAgY29uc3QgY2hhciogY2Fj
aGVQYXRoID0gT3B0aW9uczo6ZGlza0NhY2hlUGF0aCgpOwotICAgIGlmIChMSUtFTFkoIWNhY2hl
UGF0aCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBqc0R5bmFtaWNDYXN0PFVubGlua2VkQ29kZUJsb2NrKj4odm0sIHZhbHVlLmNlbGwuZ2V0
KCkpOwogICAgIGlmICghY29kZUJsb2NrKQogICAgICAgICByZXR1cm47CiAKICAgICBzdGQ6OnBh
aXI8TWFsbG9jUHRyPHVpbnQ4X3Q+LCBzaXplX3Q+IHJlc3VsdCA9IGVuY29kZUNvZGVCbG9jayh2
bSwga2V5LCBjb2RlQmxvY2spOwotCi0gICAgU3RyaW5nIGZpbGVuYW1lID0gbWFrZVN0cmluZyhj
YWNoZVBhdGgsICcvJywga2V5Lmhhc2goKSwgIi5jYWNoZSIpOwotICAgIGludCBmZCA9IG9wZW4o
ZmlsZW5hbWUudXRmOCgpLmRhdGEoKSwgT19DUkVBVCB8IE9fV1JPTkxZLCAwNjY2KTsKLSAgICBp
ZiAoZmQgPT0gLTEpCi0gICAgICAgIHJldHVybjsKLSAgICBpbnQgcmMgPSBmbG9jayhmZCwgTE9D
S19FWCB8IExPQ0tfTkIpOwotICAgIGlmICghcmMpCi0gICAgICAgIDo6d3JpdGUoZmQsIHJlc3Vs
dC5maXJzdC5nZXQoKSwgcmVzdWx0LnNlY29uZCk7Ci0gICAgY2xvc2UoZmQpOwotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0odm0pOwotICAgIFVOVVNFRF9QQVJBTShrZXkpOwotICAgIFVOVVNFRF9Q
QVJBTSh2YWx1ZSk7Ci0jZW5kaWYKKyAgICBDYWNoZWRCeXRlY29kZSBjYWNoZWRCeXRlY29kZSB7
IFdURk1vdmUocmVzdWx0LmZpcnN0KSwgcmVzdWx0LnNlY29uZCB9OworICAgIGtleS5zb3VyY2Uo
KS5wcm92aWRlcigpLmNhY2hlQnl0ZWNvZGUoY2FjaGVkQnl0ZWNvZGUpOwogfQogCiBDYWNoZWRC
eXRlY29kZSBzZXJpYWxpemVCeXRlY29kZShWTSYgdm0sIFVubGlua2VkQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgU291cmNlQ29kZVR5cGUgY29kZVR5cGUs
IEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0
TW9kZSwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29kZUNhY2hlLmgKaW5kZXggYmU0NGJkZGVlOTlmZTQ5NGUxODg1Y2EzZTc3OTFkYTY2
OTRmODg5ZC4uNDU5MzhlNmY2Mjg4N2MyYjJhYTk2MWZiZGMyMDI1MTZjN2Y4ZGMxMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKQEAgLTEwOSw2MCArMTA5LDE0
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVbmxpbmtlZENvZGVCbG9ja1R5cGU+
CiAgICAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBmZXRjaEZyb21EaXNrSW1wbChWTSYgdm0sIGNv
bnN0IFNvdXJjZUNvZGVLZXkmIGtleSkKICAgICB7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnN0IGF1dG8qIGNhY2hlZEJ5dGVjb2RlID0ga2V5LnNvdXJjZSgpLnByb3ZpZGVyKCkuY2FjaGVk
Qnl0ZWNvZGUoKTsKLSAgICAgICAgICAgIGlmIChjYWNoZWRCeXRlY29kZSAmJiBjYWNoZWRCeXRl
Y29kZS0+c2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgVkVSQk9TRV9MT0coIkZvdW5kIGNhY2hl
ZCBDb2RlQmxvY2sgaW4gdGhlIFNvdXJjZVByb3ZpZGVyIik7Ci0gICAgICAgICAgICAgICAgVW5s
aW5rZWRDb2RlQmxvY2tUeXBlKiB1bmxpbmtlZENvZGVCbG9jayA9IGRlY29kZUNvZGVCbG9jazxV
bmxpbmtlZENvZGVCbG9ja1R5cGU+KHZtLCBrZXksIGNhY2hlZEJ5dGVjb2RlLT5kYXRhKCksIGNh
Y2hlZEJ5dGVjb2RlLT5zaXplKCkpOwotICAgICAgICAgICAgICAgIGlmICh1bmxpbmtlZENvZGVC
bG9jaykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVubGlua2VkQ29kZUJsb2NrOwotICAg
ICAgICAgICAgfQorICAgICAgICBjb25zdCBhdXRvKiBjYWNoZWRCeXRlY29kZSA9IGtleS5zb3Vy
Y2UoKS5wcm92aWRlcigpLmNhY2hlZEJ5dGVjb2RlKCk7CisgICAgICAgIGlmIChjYWNoZWRCeXRl
Y29kZSAmJiBjYWNoZWRCeXRlY29kZS0+c2l6ZSgpKSB7CisgICAgICAgICAgICBWRVJCT1NFX0xP
RygiRm91bmQgY2FjaGVkIENvZGVCbG9jayBpbiB0aGUgU291cmNlUHJvdmlkZXIiKTsKKyAgICAg
ICAgICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSogdW5saW5rZWRDb2RlQmxvY2sgPSBkZWNvZGVD
b2RlQmxvY2s8VW5saW5rZWRDb2RlQmxvY2tUeXBlPih2bSwga2V5LCBjYWNoZWRCeXRlY29kZS0+
ZGF0YSgpLCBjYWNoZWRCeXRlY29kZS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGlmICh1bmxpbmtl
ZENvZGVCbG9jaykKKyAgICAgICAgICAgICAgICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2s7CiAg
ICAgICAgIH0KLQotI2lmIE9TKERBUldJTikKLSAgICAgICAgY29uc3QgY2hhciogY2FjaGVQYXRo
ID0gT3B0aW9uczo6ZGlza0NhY2hlUGF0aCgpOwotICAgICAgICBpZiAoIWNhY2hlUGF0aCkKLSAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIHVuc2lnbmVkIGhhc2ggPSBrZXku
aGFzaCgpOwotICAgICAgICBjaGFyIGZpbGVuYW1lWzUxMl07Ci0gICAgICAgIGludCBjb3VudCA9
IHNucHJpbnRmKGZpbGVuYW1lLCA1MTIsICIlcy8ldS5jYWNoZSIsIGNhY2hlUGF0aCwgaGFzaCk7
Ci0gICAgICAgIGlmIChjb3VudCA8IDAgfHwgY291bnQgPiA1MTIpCi0gICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgICAgICBpbnQgZmQgPSBvcGVuKGZpbGVuYW1lLCBPX1JET05MWSk7
Ci0gICAgICAgIGlmIChmZCA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgICAgIGludCByYyA9IGZsb2NrKGZkLCBMT0NLX1NIIHwgTE9DS19OQik7Ci0gICAgICAgIGlm
IChyYykgewotICAgICAgICAgICAgY2xvc2UoZmQpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgICAgIH0KLQotICAgICAgICBzdHJ1Y3Qgc3RhdCBzYjsKLSAgICAgICAgaW50IHJl
cyA9IGZzdGF0KGZkLCAmc2IpOwotICAgICAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PHNp
emVfdD4oc2Iuc3Rfc2l6ZSk7Ci0gICAgICAgIGlmIChyZXMgfHwgIXNpemUpIHsKLSAgICAgICAg
ICAgIGNsb3NlKGZkKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0K
LSAgICAgICAgdm9pZCogYnVmZmVyID0gbW1hcChudWxscHRyLCBzaXplLCBQUk9UX1JFQUQsIE1B
UF9QUklWQVRFLCBmZCwgMCk7Ci0gICAgICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSogdW5saW5r
ZWRDb2RlQmxvY2sgPSBkZWNvZGVDb2RlQmxvY2s8VW5saW5rZWRDb2RlQmxvY2tUeXBlPih2bSwg
a2V5LCBidWZmZXIsIHNpemUpOwotICAgICAgICBtdW5tYXAoYnVmZmVyLCBzaXplKTsKLQotICAg
ICAgICBpZiAoIXVubGlua2VkQ29kZUJsb2NrKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICAgICAgVkVSQk9TRV9MT0coIkZvdW5kIGNhY2hlZCBDb2RlQmxvY2sgb24gZGlzayIp
OwotICAgICAgICBhZGRDYWNoZShrZXksIFNvdXJjZUNvZGVWYWx1ZSh2bSwgdW5saW5rZWRDb2Rl
QmxvY2ssIG1fYWdlLCB0cnVlKSk7Ci0gICAgICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9jazsK
LSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTSh2bSk7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShr
ZXkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFVubGlua2VkQ29kZUJsb2NrVHlwZT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362271</attachid>
            <date>2019-02-18 01:39:21 -0800</date>
            <delta_ts>2019-02-18 02:41:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194675-20190218103845.patch</filename>
            <type>text/plain</type>
            <size>13380</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
M2YxZDE3ZDI5MGY3ODFhMGYyNTJlYjQ5NmI2NDQ4ZjE3N2Y0NzRlLi41Yjc3NjY2OTk5ZTExNzNh
MGY1ZWIyNjk2NWZiMjEyZjA4YTNhM2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxOS0wMi0xOCAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBNb3ZlIGJ5dGVjb2RlIGNhY2hlLXJlbGF0ZWQgZmlsZXN5c3RlbSBjb2Rl
IG91dCBvZiBDb2RlQ2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5NDY3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoYXQgY29kZSBpcyBvbmx5IHVzZWQgZm9yIHRoZSBieXRlY29kZS1jYWNoZSB0
ZXN0cywgc28gaXQgc2hvdWxkIGxpdmUgaW4KKyAgICAgICAganNjLmNwcCByYXRoZXIgdGhhbiBp
biB0aGUgQ29kZUNhY2hlLgorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKFNoZWxsU291
cmNlUHJvdmlkZXI6OmNyZWF0ZSk6CisgICAgICAgIChTaGVsbFNvdXJjZVByb3ZpZGVyOjp+U2hl
bGxTb3VyY2VQcm92aWRlcik6CisgICAgICAgIChTaGVsbFNvdXJjZVByb3ZpZGVyOjpjYWNoZVBh
dGggY29uc3QpOgorICAgICAgICAoU2hlbGxTb3VyY2VQcm92aWRlcjo6bG9hZEJ5dGVjb2RlKToK
KyAgICAgICAgKFNoZWxsU291cmNlUHJvdmlkZXI6OlNoZWxsU291cmNlUHJvdmlkZXIpOgorICAg
ICAgICAoanNjU291cmNlKToKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyRmV0
Y2gpOgorICAgICAgICAoZnVuY3Rpb25Eb2xsYXJFdmFsU2NyaXB0KToKKyAgICAgICAgKHJ1bldp
dGhPcHRpb25zKToKKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAg
KEpTQzo6U291cmNlUHJvdmlkZXI6OnVzZUJ5dGVjb2RlQ2FjaGUgY29uc3QpOgorICAgICAgICAo
SlNDOjpTb3VyY2VQcm92aWRlcjo6Y2FjaGVCeXRlY29kZSBjb25zdCk6CisgICAgICAgICogcnVu
dGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjp3cml0ZUNvZGVCbG9jayk6CisgICAg
ICAgICogcnVudGltZS9Db2RlQ2FjaGUuaDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlTWFwOjpm
ZXRjaEZyb21EaXNrSW1wbCk6CisKIDIwMTktMDItMTcgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgV2FzbUIzSVJHZW5lcmF0b3IgbW9kZWxzIHNvbWUgZWZmZWN0
cyBpbmNvcnJlY3RseQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBiZTAxODA2MDVlNmU4YWJmNDhh
YjcxMWI4NmM5ZDRmYzk4YzA1ZjFhLi41ZTEyMWU2N2YxNTk4OWUxYWU3OGJlZDhlZTZjYWFiMjFh
YmExODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtODcsNiArODcsNyBAQAogI2luY2x1ZGUg
PHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGlt
ZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9TY29w
ZS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAgLTk1NCwxMiArOTU1LDEwNiBAQCBz
dGF0aWMgYm9vbCBmZXRjaFNjcmlwdEZyb21Mb2NhbEZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSwgVmVjdG9yPGNoYXI+JgogICAgIHJldHVybiB0cnVlOwogfQogCitjbGFzcyBTaGVs
bFNvdXJjZVByb3ZpZGVyIDogcHVibGljIFN0cmluZ1NvdXJjZVByb3ZpZGVyIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPFNoZWxsU291cmNlUHJvdmlkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcm
IHNvdXJjZSwgY29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIFVSTCYmIHVybCwgY29u
c3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUg
c291cmNlVHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoZWxsU291
cmNlUHJvdmlkZXIoc291cmNlLCBzb3VyY2VPcmlnaW4sIFdURk1vdmUodXJsKSwgc3RhcnRQb3Np
dGlvbiwgc291cmNlVHlwZSkpOworICAgIH0KKworICAgIH5TaGVsbFNvdXJjZVByb3ZpZGVyKCkK
KyAgICB7CisjaWYgT1MoREFSV0lOKQorICAgICAgICBpZiAobV9jYWNoZWRCeXRlY29kZS5zaXpl
KCkpCisgICAgICAgICAgICBtdW5tYXAoY29uc3RfY2FzdDx2b2lkKj4obV9jYWNoZWRCeXRlY29k
ZS5kYXRhKCkpLCBtX2NhY2hlZEJ5dGVjb2RlLnNpemUoKSk7CisjZW5kaWYKKyAgICB9CisKKyAg
ICBib29sIHVzZUJ5dGVjb2RlQ2FjaGUoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAg
cmV0dXJuICEhT3B0aW9uczo6ZGlza0NhY2hlUGF0aCgpOworICAgIH0KKworICAgIGNvbnN0IENh
Y2hlZEJ5dGVjb2RlKiBjYWNoZWRCeXRlY29kZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAg
ICAgICBBU1NFUlQodXNlQnl0ZWNvZGVDYWNoZSgpKTsKKyAgICAgICAgcmV0dXJuICZtX2NhY2hl
ZEJ5dGVjb2RlOworICAgIH0KKworICAgIHZvaWQgY2FjaGVCeXRlY29kZShjb25zdCBDYWNoZWRC
eXRlY29kZSYgY2FjaGVkQnl0ZWNvZGUpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBB
U1NFUlQodXNlQnl0ZWNvZGVDYWNoZSgpKTsKKyNpZiBPUyhEQVJXSU4pCisgICAgICAgIFN0cmlu
ZyBmaWxlbmFtZSA9IGNhY2hlUGF0aCgpOworICAgICAgICBpbnQgZmQgPSBvcGVuKGZpbGVuYW1l
LnV0ZjgoKS5kYXRhKCksIE9fQ1JFQVQgfCBPX1dST05MWSB8IE9fVFJVTkMgfCBPX0VYTE9DSyB8
IE9fTk9OQkxPQ0ssIDA2NjYpOworICAgICAgICBpZiAoZmQgPT0gLTEpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIHdyaXRlKGZkLCBjYWNoZWRCeXRlY29kZS5kYXRhKCksIGNhY2hlZEJ5
dGVjb2RlLnNpemUoKSk7CisgICAgICAgIGNsb3NlKGZkKTsKKyNlbmRpZgorICAgIH0KKworcHJp
dmF0ZToKKyAgICBTdHJpbmcgY2FjaGVQYXRoKCkgY29uc3QKKyAgICB7CisgICAgICAgIGNvbnN0
IGNoYXIqIGNhY2hlUGF0aCA9IE9wdGlvbnM6OmRpc2tDYWNoZVBhdGgoKTsKKyAgICAgICAgQVNT
RVJUKGNhY2hlUGF0aCk7CisgICAgICAgIFN0cmluZyBmaWxlbmFtZSA9IHNvdXJjZU9yaWdpbigp
LnN0cmluZygpOworICAgICAgICBmaWxlbmFtZS5yZXBsYWNlKCcvJywgJ18nKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VTdHJpbmcoY2FjaGVQYXRoLCAnLycsIHNvdXJjZSgpLnRvU3RyaW5nKCkuaGFz
aCgpLCAnLScsIGZpbGVuYW1lLCAiLmJ5dGVjb2RlLWNhY2hlIik7CisgICAgfQorCisgICAgdm9p
ZCBsb2FkQnl0ZWNvZGUoKQorICAgIHsKKyNpZiBPUyhEQVJXSU4pCisgICAgICAgIGlmICghdXNl
Qnl0ZWNvZGVDYWNoZSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFN0cmluZyBm
aWxlbmFtZSA9IGNhY2hlUGF0aCgpOworICAgICAgICBpZiAoZmlsZW5hbWUuaXNOdWxsKCkpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaW50IGZkID0gb3BlbihmaWxlbmFtZS51dGY4
KCkuZGF0YSgpLCBPX1JET05MWSB8IE9fU0hMT0NLIHwgT19OT05CTE9DSyk7CisgICAgICAgIGlm
IChmZCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIGNsb3NlRkQg
PSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIH0p
OworCisgICAgICAgIHN0cnVjdCBzdGF0IHNiOworICAgICAgICBpbnQgcmVzID0gZnN0YXQoZmQs
ICZzYik7CisgICAgICAgIHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzYi5zdF9z
aXplKTsKKyAgICAgICAgaWYgKHJlcyB8fCAhc2l6ZSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICB2b2lkKiBidWZmZXIgPSBtbWFwKG51bGxwdHIsIHNpemUsIFBST1RfUkVBRCwgTUFQ
X1BSSVZBVEUsIGZkLCAwKTsKKyAgICAgICAgaWYgKGJ1ZmZlciA9PSBNQVBfRkFJTEVEKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NhY2hlZEJ5dGVjb2RlID0gQ2FjaGVkQnl0ZWNv
ZGUgeyBidWZmZXIsIHNpemUgfTsKKyNlbmRpZgorICAgIH0KKworICAgIFNoZWxsU291cmNlUHJv
dmlkZXIoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFNvdXJjZU9yaWdpbiYgc291cmNlT3Jp
Z2luLCBVUkwmJiB1cmwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgU291cmNl
UHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUpCisgICAgICAgIDogU3RyaW5nU291cmNlUHJv
dmlkZXIoc291cmNlLCBzb3VyY2VPcmlnaW4sIFdURk1vdmUodXJsKSwgc3RhcnRQb3NpdGlvbiwg
c291cmNlVHlwZSkKKyAgICB7CisgICAgICAgIGxvYWRCeXRlY29kZSgpOworICAgIH0KKworICAg
IENhY2hlZEJ5dGVjb2RlIG1fY2FjaGVkQnl0ZWNvZGU7Cit9OworCitzdGF0aWMgaW5saW5lIFNv
dXJjZUNvZGUganNjU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTb3VyY2VPcmln
aW4mIHNvdXJjZU9yaWdpbiwgVVJMJiYgdXJsID0gVVJMKCksIGNvbnN0IFRleHRQb3NpdGlvbiYg
c3RhcnRQb3NpdGlvbiA9IFRleHRQb3NpdGlvbigpLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUg
c291cmNlVHlwZSA9IFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSkKK3sKKyAgICBy
ZXR1cm4gU291cmNlQ29kZShTaGVsbFNvdXJjZVByb3ZpZGVyOjpjcmVhdGUoc291cmNlLCBzb3Vy
Y2VPcmlnaW4sIFdURk1vdmUodXJsKSwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlwZSksIHN0YXJ0
UG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1bW4ub25l
QmFzZWRJbnQoKSk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFZlY3Rvcj4KIHN0YXRpYyBpbmxp
bmUgU291cmNlQ29kZSBqc2NTb3VyY2UoY29uc3QgVmVjdG9yJiB1dGY4LCBjb25zdCBTb3VyY2VP
cmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKIHsKICAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgdXNlIGFuIGFic29sdXRlIGZpbGUgVVJMIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMwNzcKICAgICBTdHJpbmcgc3RyID0gc3RyaW5n
RnJvbVVURih1dGY4KTsKLSAgICByZXR1cm4gbWFrZVNvdXJjZShzdHIsIHNvdXJjZU9yaWdpbiwg
VVJMKHsgfSwgZmlsZW5hbWUpKTsKKyAgICByZXR1cm4ganNjU291cmNlKHN0ciwgc291cmNlT3Jp
Z2luLCBVUkwoeyB9LCBmaWxlbmFtZSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3I+
CkBAIC0xMDQyLDcgKzExMzcsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogR2xvYmFsT2JqZWN0Ojpt
b2R1bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIH0KICNl
bmRpZgogCi0gICAgYXV0byBzb3VyY2VDb2RlID0gSlNTb3VyY2VDb2RlOjpjcmVhdGUodm0sIG1h
a2VTb3VyY2Uoc3RyaW5nRnJvbVVURihidWZmZXIpLCBTb3VyY2VPcmlnaW4geyBtb2R1bGVLZXkg
fSwgV1RGTW92ZShtb2R1bGVVUkwpLCBUZXh0UG9zaXRpb24oKSwgU291cmNlUHJvdmlkZXJTb3Vy
Y2VUeXBlOjpNb2R1bGUpKTsKKyAgICBhdXRvIHNvdXJjZUNvZGUgPSBKU1NvdXJjZUNvZGU6OmNy
ZWF0ZSh2bSwganNjU291cmNlKHN0cmluZ0Zyb21VVEYoYnVmZmVyKSwgU291cmNlT3JpZ2luIHsg
bW9kdWxlS2V5IH0sIFdURk1vdmUobW9kdWxlVVJMKSwgVGV4dFBvc2l0aW9uKCksIFNvdXJjZVBy
b3ZpZGVyU291cmNlVHlwZTo6TW9kdWxlKSk7CiAgICAgY2F0Y2hTY29wZS5yZWxlYXNlQXNzZXJ0
Tm9FeGNlcHRpb24oKTsKICAgICBhdXRvIHJlc3VsdCA9IGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMs
IHNvdXJjZUNvZGUpOwogICAgIGNhdGNoU2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKQEAgLTE3MTUs
NyArMTgxMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJF
dmFsU2NyaXB0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIkV4cGVjdGVk
IGdsb2JhbCB0byBwb2ludCB0byBhIGdsb2JhbCBvYmplY3QiX3MpKSk7CiAgICAgCiAgICAgTmFr
ZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOwotICAgIEpTVmFsdWUgcmVzdWx0
ID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIG1ha2VTb3VyY2Uoc291cmNl
Q29kZSwgZXhlYy0+Y2FsbGVyU291cmNlT3JpZ2luKCkpLCBKU1ZhbHVlKCksIGV2YWx1YXRpb25F
eGNlcHRpb24pOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCksIGpzY1NvdXJjZShzb3VyY2VDb2RlLCBleGVjLT5jYWxsZXJTb3VyY2VPcmln
aW4oKSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgaWYgKGV2YWx1YXRp
b25FeGNlcHRpb24pCiAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBldmFsdWF0
aW9uRXhjZXB0aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0y
NDcxLDcgKzI1NjYsNyBAQCBzdGF0aWMgdm9pZCBydW5XaXRoT3B0aW9ucyhHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvbwogICAgICAgICBpZiAoaXNN
b2R1bGUpIHsKICAgICAgICAgICAgIGlmICghcHJvbWlzZSkgewogICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgYW4gYWJzb2x1dGUgZmlsZSBVUkwgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzA3NwotICAgICAgICAgICAgICAgIHByb21p
c2UgPSBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIG1h
a2VTb3VyY2Uoc3RyaW5nRnJvbVVURihzY3JpcHRCdWZmZXIpLCBTb3VyY2VPcmlnaW4geyBhYnNv
bHV0ZVBhdGgoZmlsZU5hbWUpIH0sIFVSTCh7IH0sIGZpbGVOYW1lKSwgVGV4dFBvc2l0aW9uKCks
IFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6TW9kdWxlKSwganNVbmRlZmluZWQoKSk7CisgICAg
ICAgICAgICAgICAgcHJvbWlzZSA9IGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHN0cmluZ0Zyb21VVEYoc2NyaXB0QnVmZmVyKSwgU291
cmNlT3JpZ2luIHsgYWJzb2x1dGVQYXRoKGZpbGVOYW1lKSB9LCBVUkwoeyB9LCBmaWxlTmFtZSks
IFRleHRQb3NpdGlvbigpLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSksIGpzVW5k
ZWZpbmVkKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRp
b24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQ
cm92aWRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5o
CmluZGV4IDJmMGRjZjAyNWYzMjdiZjkwNmJlY2I1ZmE3NDVkMTQ0NzdjOGZmNTkuLjg1MjEwYWJm
NGNmOTdhYzkzYzU1NDM1ZGM2MDAzZThiODgwZDQ0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmgKQEAgLTExNSw3ICsxMTUsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIGhhc2goKSBjb25zdCA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgU3RyaW5nVmlldyBzb3VyY2UoKSBjb25zdCA9IDA7CisgICAgICAgIHZp
cnR1YWwgYm9vbCB1c2VCeXRlY29kZUNhY2hlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICAgICAgdmlydHVhbCBjb25zdCBDYWNoZWRCeXRlY29kZSogY2FjaGVkQnl0ZWNvZGUoKSBjb25z
dCB7IHJldHVybiBudWxscHRyOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBjYWNoZUJ5dGVjb2Rl
KGNvbnN0IENhY2hlZEJ5dGVjb2RlJikgY29uc3QgeyB9CiAKICAgICAgICAgU3RyaW5nVmlldyBn
ZXRSYW5nZShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0CiAgICAgICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IDJiZmIwNDQyNDg1OTAyYzVk
NTBkNWFkYjY3MjNiNmY1N2NjYjBlYTguLjI3MThlYzU2ZmVhZThkZDQzOWU5MDdhZmNmMzc2NDgx
MTJmOTAxY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVD
YWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNw
cApAQCAtMTk1LDkgKzE5NSw4IEBAIHZvaWQgZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ZvckZ1
bmN0aW9ucyhWTSYgdm0sIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvCiAKIHZvaWQgd3Jp
dGVDb2RlQmxvY2soVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBrZXksIGNvbnN0IFNvdXJj
ZUNvZGVWYWx1ZSYgdmFsdWUpCiB7Ci0jaWYgT1MoREFSV0lOKQotICAgIGNvbnN0IGNoYXIqIGNh
Y2hlUGF0aCA9IE9wdGlvbnM6OmRpc2tDYWNoZVBhdGgoKTsKLSAgICBpZiAoTElLRUxZKCFjYWNo
ZVBhdGgpKQorICAgIGNvbnN0IFNvdXJjZVByb3ZpZGVyJiBwcm92aWRlciA9IGtleS5zb3VyY2Uo
KS5wcm92aWRlcigpOworICAgIGlmICghcHJvdmlkZXIudXNlQnl0ZWNvZGVDYWNoZSgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0ganNEeW5h
bWljQ2FzdDxVbmxpbmtlZENvZGVCbG9jayo+KHZtLCB2YWx1ZS5jZWxsLmdldCgpKTsKQEAgLTIw
NSwyMCArMjA0LDggQEAgdm9pZCB3cml0ZUNvZGVCbG9jayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNv
ZGVLZXkmIGtleSwgY29uc3QgU291cmNlQ29kZVZhbHVlJiB2YWwKICAgICAgICAgcmV0dXJuOwog
CiAgICAgc3RkOjpwYWlyPE1hbGxvY1B0cjx1aW50OF90Piwgc2l6ZV90PiByZXN1bHQgPSBlbmNv
ZGVDb2RlQmxvY2sodm0sIGtleSwgY29kZUJsb2NrKTsKLQotICAgIFN0cmluZyBmaWxlbmFtZSA9
IG1ha2VTdHJpbmcoY2FjaGVQYXRoLCAnLycsIGtleS5oYXNoKCksICIuY2FjaGUiKTsKLSAgICBp
bnQgZmQgPSBvcGVuKGZpbGVuYW1lLnV0ZjgoKS5kYXRhKCksIE9fQ1JFQVQgfCBPX1dST05MWSwg
MDY2Nik7Ci0gICAgaWYgKGZkID09IC0xKQotICAgICAgICByZXR1cm47Ci0gICAgaW50IHJjID0g
ZmxvY2soZmQsIExPQ0tfRVggfCBMT0NLX05CKTsKLSAgICBpZiAoIXJjKQotICAgICAgICA6Ondy
aXRlKGZkLCByZXN1bHQuZmlyc3QuZ2V0KCksIHJlc3VsdC5zZWNvbmQpOwotICAgIGNsb3NlKGZk
KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHZtKTsKLSAgICBVTlVTRURfUEFSQU0oa2V5KTsK
LSAgICBVTlVTRURfUEFSQU0odmFsdWUpOwotI2VuZGlmCisgICAgQ2FjaGVkQnl0ZWNvZGUgY2Fj
aGVkQnl0ZWNvZGUgeyBXVEZNb3ZlKHJlc3VsdC5maXJzdCksIHJlc3VsdC5zZWNvbmQgfTsKKyAg
ICBwcm92aWRlci5jYWNoZUJ5dGVjb2RlKGNhY2hlZEJ5dGVjb2RlKTsKIH0KIAogQ2FjaGVkQnl0
ZWNvZGUgc2VyaWFsaXplQnl0ZWNvZGUoVk0mIHZtLCBVbmxpbmtlZENvZGVCbG9jayogY29kZUJs
b2NrLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFNvdXJjZUNvZGVUeXBlIGNvZGVUeXBlLCBK
U1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1v
ZGUsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5oCmluZGV4IDdhYjgwZmUyMDFhYmQ4YmZkOTJlOTVmNDYwZmMzNjdiYjM4
NDhiNzguLjc0N2I4NjdmMWQwNjA3ZGJjNzA0ZmU3ZGU3ODU2M2YxMjgyNDg5MDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCkBAIC0zOSw5ICszOSw2IEBACiAj
aW5jbHVkZSAiVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIlVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oIgogI2luY2x1ZGUgIlVubGlua2VkUHJvZ3JhbUNvZGVC
bG9jay5oIgotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAg
LTEwOSw2MCArMTA2LDE4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVbmxpbmtl
ZENvZGVCbG9ja1R5cGU+CiAgICAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBmZXRjaEZyb21EaXNr
SW1wbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtleSkKICAgICB7Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnN0IGF1dG8qIGNhY2hlZEJ5dGVjb2RlID0ga2V5LnNvdXJjZSgpLnBy
b3ZpZGVyKCkuY2FjaGVkQnl0ZWNvZGUoKTsKLSAgICAgICAgICAgIGlmIChjYWNoZWRCeXRlY29k
ZSAmJiBjYWNoZWRCeXRlY29kZS0+c2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgVkVSQk9TRV9M
T0coIkZvdW5kIGNhY2hlZCBDb2RlQmxvY2sgaW4gdGhlIFNvdXJjZVByb3ZpZGVyIik7Ci0gICAg
ICAgICAgICAgICAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiB1bmxpbmtlZENvZGVCbG9jayA9IGRl
Y29kZUNvZGVCbG9jazxVbmxpbmtlZENvZGVCbG9ja1R5cGU+KHZtLCBrZXksIGNhY2hlZEJ5dGVj
b2RlLT5kYXRhKCksIGNhY2hlZEJ5dGVjb2RlLT5zaXplKCkpOwotICAgICAgICAgICAgICAgIGlm
ICh1bmxpbmtlZENvZGVCbG9jaykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVubGlua2Vk
Q29kZUJsb2NrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSNpZiBPUyhEQVJXSU4pCi0g
ICAgICAgIGNvbnN0IGNoYXIqIGNhY2hlUGF0aCA9IE9wdGlvbnM6OmRpc2tDYWNoZVBhdGgoKTsK
LSAgICAgICAgaWYgKCFjYWNoZVBhdGgpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgICAgICB1bnNpZ25lZCBoYXNoID0ga2V5Lmhhc2goKTsKLSAgICAgICAgY2hhciBmaWxlbmFt
ZVs1MTJdOwotICAgICAgICBpbnQgY291bnQgPSBzbnByaW50ZihmaWxlbmFtZSwgNTEyLCAiJXMv
JXUuY2FjaGUiLCBjYWNoZVBhdGgsIGhhc2gpOwotICAgICAgICBpZiAoY291bnQgPCAwIHx8IGNv
dW50ID4gNTEyKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgaW50IGZk
ID0gb3BlbihmaWxlbmFtZSwgT19SRE9OTFkpOwotICAgICAgICBpZiAoZmQgPT0gLTEpCi0gICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICBpbnQgcmMgPSBmbG9jayhmZCwgTE9D
S19TSCB8IExPQ0tfTkIpOwotICAgICAgICBpZiAocmMpIHsKLSAgICAgICAgICAgIGNsb3NlKGZk
KTsKKyAgICAgICAgY29uc3QgU291cmNlUHJvdmlkZXImIHByb3ZpZGVyID0ga2V5LnNvdXJjZSgp
LnByb3ZpZGVyKCk7CisgICAgICAgIGlmICghcHJvdmlkZXIudXNlQnl0ZWNvZGVDYWNoZSgpKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KIAotICAgICAgICBzdHJ1Y3Qg
c3RhdCBzYjsKLSAgICAgICAgaW50IHJlcyA9IGZzdGF0KGZkLCAmc2IpOwotICAgICAgICBzaXpl
X3Qgc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oc2Iuc3Rfc2l6ZSk7Ci0gICAgICAgIGlmIChy
ZXMgfHwgIXNpemUpIHsKLSAgICAgICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICBjb25zdCBDYWNoZWRCeXRlY29kZSogY2FjaGVkQnl0ZWNvZGUg
PSBwcm92aWRlci5jYWNoZWRCeXRlY29kZSgpOworICAgICAgICBpZiAoY2FjaGVkQnl0ZWNvZGUg
JiYgY2FjaGVkQnl0ZWNvZGUtPnNpemUoKSkgeworICAgICAgICAgICAgVkVSQk9TRV9MT0coIkZv
dW5kIGNhY2hlZCBDb2RlQmxvY2sgaW4gdGhlIFNvdXJjZVByb3ZpZGVyIik7CisgICAgICAgICAg
ICBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIHVubGlua2VkQ29kZUJsb2NrID0gZGVjb2RlQ29kZUJs
b2NrPFVubGlua2VkQ29kZUJsb2NrVHlwZT4odm0sIGtleSwgY2FjaGVkQnl0ZWNvZGUtPmRhdGEo
KSwgY2FjaGVkQnl0ZWNvZGUtPnNpemUoKSk7CisgICAgICAgICAgICBpZiAodW5saW5rZWRDb2Rl
QmxvY2spCisgICAgICAgICAgICAgICAgcmV0dXJuIHVubGlua2VkQ29kZUJsb2NrOwogICAgICAg
ICB9Ci0KLSAgICAgICAgdm9pZCogYnVmZmVyID0gbW1hcChudWxscHRyLCBzaXplLCBQUk9UX1JF
QUQsIE1BUF9QUklWQVRFLCBmZCwgMCk7Ci0gICAgICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSog
dW5saW5rZWRDb2RlQmxvY2sgPSBkZWNvZGVDb2RlQmxvY2s8VW5saW5rZWRDb2RlQmxvY2tUeXBl
Pih2bSwga2V5LCBidWZmZXIsIHNpemUpOwotICAgICAgICBtdW5tYXAoYnVmZmVyLCBzaXplKTsK
LQotICAgICAgICBpZiAoIXVubGlua2VkQ29kZUJsb2NrKQotICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICAgICAgVkVSQk9TRV9MT0coIkZvdW5kIGNhY2hlZCBDb2RlQmxvY2sgb24g
ZGlzayIpOwotICAgICAgICBhZGRDYWNoZShrZXksIFNvdXJjZUNvZGVWYWx1ZSh2bSwgdW5saW5r
ZWRDb2RlQmxvY2ssIG1fYWdlLCB0cnVlKSk7Ci0gICAgICAgIHJldHVybiB1bmxpbmtlZENvZGVC
bG9jazsKLSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTSh2bSk7Ci0gICAgICAgIFVOVVNFRF9Q
QVJBTShrZXkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgogICAgIH0KIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFVubGlua2VkQ29kZUJsb2NrVHlwZT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362281</attachid>
            <date>2019-02-18 02:42:04 -0800</date>
            <delta_ts>2019-02-18 13:20:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194675-20190218114127.patch</filename>
            <type>text/plain</type>
            <size>13416</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZWZmN2U2NDg2MjBjNTlhYTVlZjI5ODI4MjhjNTk2MmE3OTQwNjVmLi40ZGYzMmIxYTY3YzQ5YmU5
NzkyZDI5ZDZmZjg2YTkzZDZhYmEwYTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxOS0wMi0xOCAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBNb3ZlIGJ5dGVjb2RlIGNhY2hlLXJlbGF0ZWQgZmlsZXN5c3RlbSBjb2Rl
IG91dCBvZiBDb2RlQ2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5NDY3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoYXQgY29kZSBpcyBvbmx5IHVzZWQgZm9yIHRoZSBieXRlY29kZS1jYWNoZSB0
ZXN0cywgc28gaXQgc2hvdWxkIGxpdmUgaW4KKyAgICAgICAganNjLmNwcCByYXRoZXIgdGhhbiBp
biB0aGUgQ29kZUNhY2hlLgorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKFNoZWxsU291
cmNlUHJvdmlkZXI6OmNyZWF0ZSk6CisgICAgICAgIChTaGVsbFNvdXJjZVByb3ZpZGVyOjp+U2hl
bGxTb3VyY2VQcm92aWRlcik6CisgICAgICAgIChTaGVsbFNvdXJjZVByb3ZpZGVyOjpjYWNoZVBh
dGggY29uc3QpOgorICAgICAgICAoU2hlbGxTb3VyY2VQcm92aWRlcjo6bG9hZEJ5dGVjb2RlKToK
KyAgICAgICAgKFNoZWxsU291cmNlUHJvdmlkZXI6OlNoZWxsU291cmNlUHJvdmlkZXIpOgorICAg
ICAgICAoanNjU291cmNlKToKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyRmV0
Y2gpOgorICAgICAgICAoZnVuY3Rpb25Eb2xsYXJFdmFsU2NyaXB0KToKKyAgICAgICAgKHJ1bldp
dGhPcHRpb25zKToKKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAg
KEpTQzo6U291cmNlUHJvdmlkZXI6OnVzZUJ5dGVjb2RlQ2FjaGUgY29uc3QpOgorICAgICAgICAo
SlNDOjpTb3VyY2VQcm92aWRlcjo6Y2FjaGVCeXRlY29kZSBjb25zdCk6CisgICAgICAgICogcnVu
dGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjp3cml0ZUNvZGVCbG9jayk6CisgICAg
ICAgICogcnVudGltZS9Db2RlQ2FjaGUuaDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlTWFwOjpm
ZXRjaEZyb21EaXNrSW1wbCk6CisKIDIwMTktMDItMTggIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxs
b0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHZlcnNpb24gbnVtYmVyIHRvIGNhY2hlZCBieXRl
Y29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBiZTAxODA2MDVlNmU4YWJmNDhhYjcxMWI4NmM5
ZDRmYzk4YzA1ZjFhLi41ZTEyMWU2N2YxNTk4OWUxYWU3OGJlZDhlZTZjYWFiMjFhYmExODlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcApAQCAtODcsNiArODcsNyBAQAogI2luY2x1ZGUgPHd0Zi9NZW1v
cnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAgLTk1NCwxMiArOTU1LDEwNiBAQCBzdGF0aWMgYm9v
bCBmZXRjaFNjcmlwdEZyb21Mb2NhbEZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwg
VmVjdG9yPGNoYXI+JgogICAgIHJldHVybiB0cnVlOwogfQogCitjbGFzcyBTaGVsbFNvdXJjZVBy
b3ZpZGVyIDogcHVibGljIFN0cmluZ1NvdXJjZVByb3ZpZGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPFNoZWxsU291cmNlUHJvdmlkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHNvdXJjZSwg
Y29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIFVSTCYmIHVybCwgY29uc3QgVGV4dFBv
c2l0aW9uJiBzdGFydFBvc2l0aW9uLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNlVHlw
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoZWxsU291cmNlUHJvdmlk
ZXIoc291cmNlLCBzb3VyY2VPcmlnaW4sIFdURk1vdmUodXJsKSwgc3RhcnRQb3NpdGlvbiwgc291
cmNlVHlwZSkpOworICAgIH0KKworICAgIH5TaGVsbFNvdXJjZVByb3ZpZGVyKCkKKyAgICB7Cisj
aWYgT1MoREFSV0lOKQorICAgICAgICBpZiAobV9jYWNoZWRCeXRlY29kZS5zaXplKCkpCisgICAg
ICAgICAgICBtdW5tYXAoY29uc3RfY2FzdDx2b2lkKj4obV9jYWNoZWRCeXRlY29kZS5kYXRhKCkp
LCBtX2NhY2hlZEJ5dGVjb2RlLnNpemUoKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICBib29sIHVz
ZUJ5dGVjb2RlQ2FjaGUoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuICEh
T3B0aW9uczo6ZGlza0NhY2hlUGF0aCgpOworICAgIH0KKworICAgIGNvbnN0IENhY2hlZEJ5dGVj
b2RlKiBjYWNoZWRCeXRlY29kZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NF
UlQodXNlQnl0ZWNvZGVDYWNoZSgpKTsKKyAgICAgICAgcmV0dXJuICZtX2NhY2hlZEJ5dGVjb2Rl
OworICAgIH0KKworICAgIHZvaWQgY2FjaGVCeXRlY29kZShjb25zdCBDYWNoZWRCeXRlY29kZSYg
Y2FjaGVkQnl0ZWNvZGUpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlQodXNl
Qnl0ZWNvZGVDYWNoZSgpKTsKKyNpZiBPUyhEQVJXSU4pCisgICAgICAgIFN0cmluZyBmaWxlbmFt
ZSA9IGNhY2hlUGF0aCgpOworICAgICAgICBpbnQgZmQgPSBvcGVuKGZpbGVuYW1lLnV0ZjgoKS5k
YXRhKCksIE9fQ1JFQVQgfCBPX1dST05MWSB8IE9fVFJVTkMgfCBPX0VYTE9DSyB8IE9fTk9OQkxP
Q0ssIDA2NjYpOworICAgICAgICBpZiAoZmQgPT0gLTEpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIHdyaXRlKGZkLCBjYWNoZWRCeXRlY29kZS5kYXRhKCksIGNhY2hlZEJ5dGVjb2RlLnNp
emUoKSk7CisgICAgICAgIGNsb3NlKGZkKTsKKyNlbmRpZgorICAgIH0KKworcHJpdmF0ZToKKyAg
ICBTdHJpbmcgY2FjaGVQYXRoKCkgY29uc3QKKyAgICB7CisgICAgICAgIGNvbnN0IGNoYXIqIGNh
Y2hlUGF0aCA9IE9wdGlvbnM6OmRpc2tDYWNoZVBhdGgoKTsKKyAgICAgICAgQVNTRVJUKGNhY2hl
UGF0aCk7CisgICAgICAgIFN0cmluZyBmaWxlbmFtZSA9IHNvdXJjZU9yaWdpbigpLnN0cmluZygp
OworICAgICAgICBmaWxlbmFtZS5yZXBsYWNlKCcvJywgJ18nKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VTdHJpbmcoY2FjaGVQYXRoLCAnLycsIHNvdXJjZSgpLnRvU3RyaW5nKCkuaGFzaCgpLCAnLScs
IGZpbGVuYW1lLCAiLmJ5dGVjb2RlLWNhY2hlIik7CisgICAgfQorCisgICAgdm9pZCBsb2FkQnl0
ZWNvZGUoKQorICAgIHsKKyNpZiBPUyhEQVJXSU4pCisgICAgICAgIGlmICghdXNlQnl0ZWNvZGVD
YWNoZSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFN0cmluZyBmaWxlbmFtZSA9
IGNhY2hlUGF0aCgpOworICAgICAgICBpZiAoZmlsZW5hbWUuaXNOdWxsKCkpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaW50IGZkID0gb3BlbihmaWxlbmFtZS51dGY4KCkuZGF0YSgp
LCBPX1JET05MWSB8IE9fU0hMT0NLIHwgT19OT05CTE9DSyk7CisgICAgICAgIGlmIChmZCA9PSAt
MSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIGNsb3NlRkQgPSBtYWtlU2Nv
cGVFeGl0KFsmXSB7CisgICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIH0pOworCisgICAg
ICAgIHN0cnVjdCBzdGF0IHNiOworICAgICAgICBpbnQgcmVzID0gZnN0YXQoZmQsICZzYik7Cisg
ICAgICAgIHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzYi5zdF9zaXplKTsKKyAg
ICAgICAgaWYgKHJlcyB8fCAhc2l6ZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2
b2lkKiBidWZmZXIgPSBtbWFwKG51bGxwdHIsIHNpemUsIFBST1RfUkVBRCwgTUFQX1BSSVZBVEUs
IGZkLCAwKTsKKyAgICAgICAgaWYgKGJ1ZmZlciA9PSBNQVBfRkFJTEVEKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBtX2NhY2hlZEJ5dGVjb2RlID0gQ2FjaGVkQnl0ZWNvZGUgeyBidWZm
ZXIsIHNpemUgfTsKKyNlbmRpZgorICAgIH0KKworICAgIFNoZWxsU291cmNlUHJvdmlkZXIoY29u
c3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFNvdXJjZU9yaWdpbiYgc291cmNlT3JpZ2luLCBVUkwm
JiB1cmwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgU291cmNlUHJvdmlkZXJT
b3VyY2VUeXBlIHNvdXJjZVR5cGUpCisgICAgICAgIDogU3RyaW5nU291cmNlUHJvdmlkZXIoc291
cmNlLCBzb3VyY2VPcmlnaW4sIFdURk1vdmUodXJsKSwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlw
ZSkKKyAgICB7CisgICAgICAgIGxvYWRCeXRlY29kZSgpOworICAgIH0KKworICAgIENhY2hlZEJ5
dGVjb2RlIG1fY2FjaGVkQnl0ZWNvZGU7Cit9OworCitzdGF0aWMgaW5saW5lIFNvdXJjZUNvZGUg
anNjU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTb3VyY2VPcmlnaW4mIHNvdXJj
ZU9yaWdpbiwgVVJMJiYgdXJsID0gVVJMKCksIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3Np
dGlvbiA9IFRleHRQb3NpdGlvbigpLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNlVHlw
ZSA9IFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSkKK3sKKyAgICByZXR1cm4gU291
cmNlQ29kZShTaGVsbFNvdXJjZVByb3ZpZGVyOjpjcmVhdGUoc291cmNlLCBzb3VyY2VPcmlnaW4s
IFdURk1vdmUodXJsKSwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlwZSksIHN0YXJ0UG9zaXRpb24u
bV9saW5lLm9uZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQo
KSk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFZlY3Rvcj4KIHN0YXRpYyBpbmxpbmUgU291cmNl
Q29kZSBqc2NTb3VyY2UoY29uc3QgVmVjdG9yJiB1dGY4LCBjb25zdCBTb3VyY2VPcmlnaW4mIHNv
dXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKIHsKICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgdXNlIGFuIGFic29sdXRlIGZpbGUgVVJMIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTMwNzcKICAgICBTdHJpbmcgc3RyID0gc3RyaW5nRnJvbVVURih1
dGY4KTsKLSAgICByZXR1cm4gbWFrZVNvdXJjZShzdHIsIHNvdXJjZU9yaWdpbiwgVVJMKHsgfSwg
ZmlsZW5hbWUpKTsKKyAgICByZXR1cm4ganNjU291cmNlKHN0ciwgc291cmNlT3JpZ2luLCBVUkwo
eyB9LCBmaWxlbmFtZSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3I+CkBAIC0xMDQy
LDcgKzExMzcsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2Fk
ZXJGZXRjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIH0KICNlbmRpZgogCi0g
ICAgYXV0byBzb3VyY2VDb2RlID0gSlNTb3VyY2VDb2RlOjpjcmVhdGUodm0sIG1ha2VTb3VyY2Uo
c3RyaW5nRnJvbVVURihidWZmZXIpLCBTb3VyY2VPcmlnaW4geyBtb2R1bGVLZXkgfSwgV1RGTW92
ZShtb2R1bGVVUkwpLCBUZXh0UG9zaXRpb24oKSwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpN
b2R1bGUpKTsKKyAgICBhdXRvIHNvdXJjZUNvZGUgPSBKU1NvdXJjZUNvZGU6OmNyZWF0ZSh2bSwg
anNjU291cmNlKHN0cmluZ0Zyb21VVEYoYnVmZmVyKSwgU291cmNlT3JpZ2luIHsgbW9kdWxlS2V5
IH0sIFdURk1vdmUobW9kdWxlVVJMKSwgVGV4dFBvc2l0aW9uKCksIFNvdXJjZVByb3ZpZGVyU291
cmNlVHlwZTo6TW9kdWxlKSk7CiAgICAgY2F0Y2hTY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRp
b24oKTsKICAgICBhdXRvIHJlc3VsdCA9IGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIHNvdXJjZUNv
ZGUpOwogICAgIGNhdGNoU2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKQEAgLTE3MTUsNyArMTgxMCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJFdmFsU2NyaXB0
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4
Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIkV4cGVjdGVkIGdsb2JhbCB0
byBwb2ludCB0byBhIGdsb2JhbCBvYmplY3QiX3MpKSk7CiAgICAgCiAgICAgTmFrZWRQdHI8RXhj
ZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVh
dGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIG1ha2VTb3VyY2Uoc291cmNlQ29kZSwgZXhl
Yy0+Y2FsbGVyU291cmNlT3JpZ2luKCkpLCBKU1ZhbHVlKCksIGV2YWx1YXRpb25FeGNlcHRpb24p
OworICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCksIGpzY1NvdXJjZShzb3VyY2VDb2RlLCBleGVjLT5jYWxsZXJTb3VyY2VPcmlnaW4oKSksIEpT
VmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRp
b24pCiAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBldmFsdWF0aW9uRXhjZXB0
aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yNDcxLDcgKzI1
NjYsNyBAQCBzdGF0aWMgdm9pZCBydW5XaXRoT3B0aW9ucyhHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvbwogICAgICAgICBpZiAoaXNNb2R1bGUpIHsK
ICAgICAgICAgICAgIGlmICghcHJvbWlzZSkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCB1c2UgYW4gYWJzb2x1dGUgZmlsZSBVUkwgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MzA3NwotICAgICAgICAgICAgICAgIHByb21pc2UgPSBsb2Fk
QW5kRXZhbHVhdGVNb2R1bGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIG1ha2VTb3VyY2Uo
c3RyaW5nRnJvbVVURihzY3JpcHRCdWZmZXIpLCBTb3VyY2VPcmlnaW4geyBhYnNvbHV0ZVBhdGgo
ZmlsZU5hbWUpIH0sIFVSTCh7IH0sIGZpbGVOYW1lKSwgVGV4dFBvc2l0aW9uKCksIFNvdXJjZVBy
b3ZpZGVyU291cmNlVHlwZTo6TW9kdWxlKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICAg
ICAgcHJvbWlzZSA9IGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSwganNjU291cmNlKHN0cmluZ0Zyb21VVEYoc2NyaXB0QnVmZmVyKSwgU291cmNlT3JpZ2lu
IHsgYWJzb2x1dGVQYXRoKGZpbGVOYW1lKSB9LCBVUkwoeyB9LCBmaWxlTmFtZSksIFRleHRQb3Np
dGlvbigpLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSksIGpzVW5kZWZpbmVkKCkp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCmluZGV4IDJm
MGRjZjAyNWYzMjdiZjkwNmJlY2I1ZmE3NDVkMTQ0NzdjOGZmNTkuLjg1MjEwYWJmNGNmOTdhYzkz
YzU1NDM1ZGM2MDAzZThiODgwZDQ0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1NvdXJjZVByb3ZpZGVyLmgKQEAgLTExNSw3ICsxMTUsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIGhhc2goKSBjb25zdCA9IDA7CiAgICAgICAgIHZp
cnR1YWwgU3RyaW5nVmlldyBzb3VyY2UoKSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9v
bCB1c2VCeXRlY29kZUNhY2hlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmly
dHVhbCBjb25zdCBDYWNoZWRCeXRlY29kZSogY2FjaGVkQnl0ZWNvZGUoKSBjb25zdCB7IHJldHVy
biBudWxscHRyOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBjYWNoZUJ5dGVjb2RlKGNvbnN0IENh
Y2hlZEJ5dGVjb2RlJikgY29uc3QgeyB9CiAKICAgICAgICAgU3RyaW5nVmlldyBnZXRSYW5nZShp
bnQgc3RhcnQsIGludCBlbmQpIGNvbnN0CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IDJiZmIwNDQyNDg1OTAyYzVkNTBkNWFkYjY3
MjNiNmY1N2NjYjBlYTguLjI3MThlYzU2ZmVhZThkZDQzOWU5MDdhZmNmMzc2NDgxMTJmOTAxY2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtMTk1
LDkgKzE5NSw4IEBAIHZvaWQgZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ZvckZ1bmN0aW9ucyhW
TSYgdm0sIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvCiAKIHZvaWQgd3JpdGVDb2RlQmxv
Y2soVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBrZXksIGNvbnN0IFNvdXJjZUNvZGVWYWx1
ZSYgdmFsdWUpCiB7Ci0jaWYgT1MoREFSV0lOKQotICAgIGNvbnN0IGNoYXIqIGNhY2hlUGF0aCA9
IE9wdGlvbnM6OmRpc2tDYWNoZVBhdGgoKTsKLSAgICBpZiAoTElLRUxZKCFjYWNoZVBhdGgpKQor
ICAgIGNvbnN0IFNvdXJjZVByb3ZpZGVyJiBwcm92aWRlciA9IGtleS5zb3VyY2UoKS5wcm92aWRl
cigpOworICAgIGlmICghcHJvdmlkZXIudXNlQnl0ZWNvZGVDYWNoZSgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0ganNEeW5hbWljQ2FzdDxV
bmxpbmtlZENvZGVCbG9jayo+KHZtLCB2YWx1ZS5jZWxsLmdldCgpKTsKQEAgLTIwNSwyMCArMjA0
LDggQEAgdm9pZCB3cml0ZUNvZGVCbG9jayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtl
eSwgY29uc3QgU291cmNlQ29kZVZhbHVlJiB2YWwKICAgICAgICAgcmV0dXJuOwogCiAgICAgc3Rk
OjpwYWlyPE1hbGxvY1B0cjx1aW50OF90Piwgc2l6ZV90PiByZXN1bHQgPSBlbmNvZGVDb2RlQmxv
Y2sodm0sIGtleSwgY29kZUJsb2NrKTsKLQotICAgIFN0cmluZyBmaWxlbmFtZSA9IG1ha2VTdHJp
bmcoY2FjaGVQYXRoLCAnLycsIGtleS5oYXNoKCksICIuY2FjaGUiKTsKLSAgICBpbnQgZmQgPSBv
cGVuKGZpbGVuYW1lLnV0ZjgoKS5kYXRhKCksIE9fQ1JFQVQgfCBPX1dST05MWSwgMDY2Nik7Ci0g
ICAgaWYgKGZkID09IC0xKQotICAgICAgICByZXR1cm47Ci0gICAgaW50IHJjID0gZmxvY2soZmQs
IExPQ0tfRVggfCBMT0NLX05CKTsKLSAgICBpZiAoIXJjKQotICAgICAgICA6OndyaXRlKGZkLCBy
ZXN1bHQuZmlyc3QuZ2V0KCksIHJlc3VsdC5zZWNvbmQpOwotICAgIGNsb3NlKGZkKTsKLSNlbHNl
Ci0gICAgVU5VU0VEX1BBUkFNKHZtKTsKLSAgICBVTlVTRURfUEFSQU0oa2V5KTsKLSAgICBVTlVT
RURfUEFSQU0odmFsdWUpOwotI2VuZGlmCisgICAgQ2FjaGVkQnl0ZWNvZGUgY2FjaGVkQnl0ZWNv
ZGUgeyBXVEZNb3ZlKHJlc3VsdC5maXJzdCksIHJlc3VsdC5zZWNvbmQgfTsKKyAgICBwcm92aWRl
ci5jYWNoZUJ5dGVjb2RlKGNhY2hlZEJ5dGVjb2RlKTsKIH0KIAogQ2FjaGVkQnl0ZWNvZGUgc2Vy
aWFsaXplQnl0ZWNvZGUoVk0mIHZtLCBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIFNvdXJjZUNvZGVUeXBlIGNvZGVUeXBlLCBKU1BhcnNlclN0
cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVD
YWNoZS5oCmluZGV4IDBlNDFlMDIxMWNhZDljNWRiM2ZjZDg4YWRjYTY0MzNlNGViNzhlMmUuLjc0
N2I4NjdmMWQwNjA3ZGJjNzA0ZmU3ZGU3ODU2M2YxMjgyNDg5MDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCkBAIC0zOSwxMCArMzksNiBAQAogI2luY2x1ZGUg
IlVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2suaCIKICNpbmNsdWRlICJVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2suaCIKICNpbmNsdWRlICJVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2suaCIK
LSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1Njb3BlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewogCkBAIC0xMTAsNjAgKzEwNiwxOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVW5saW5rZWRDb2RlQmxvY2tUeXBlPgogICAgIFVubGlua2VkQ29kZUJsb2NrVHlw
ZSogZmV0Y2hGcm9tRGlza0ltcGwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBrZXkpCiAg
ICAgewotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBhdXRvKiBjYWNoZWRCeXRlY29kZSA9
IGtleS5zb3VyY2UoKS5wcm92aWRlcigpLmNhY2hlZEJ5dGVjb2RlKCk7Ci0gICAgICAgICAgICBp
ZiAoY2FjaGVkQnl0ZWNvZGUgJiYgY2FjaGVkQnl0ZWNvZGUtPnNpemUoKSkgewotICAgICAgICAg
ICAgICAgIFZFUkJPU0VfTE9HKCJGb3VuZCBjYWNoZWQgQ29kZUJsb2NrIGluIHRoZSBTb3VyY2VQ
cm92aWRlciIpOwotICAgICAgICAgICAgICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSogdW5saW5r
ZWRDb2RlQmxvY2sgPSBkZWNvZGVDb2RlQmxvY2s8VW5saW5rZWRDb2RlQmxvY2tUeXBlPih2bSwg
a2V5LCBjYWNoZWRCeXRlY29kZS0+ZGF0YSgpLCBjYWNoZWRCeXRlY29kZS0+c2l6ZSgpKTsKLSAg
ICAgICAgICAgICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2spCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiB1bmxpbmtlZENvZGVCbG9jazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0j
aWYgT1MoREFSV0lOKQotICAgICAgICBjb25zdCBjaGFyKiBjYWNoZVBhdGggPSBPcHRpb25zOjpk
aXNrQ2FjaGVQYXRoKCk7Ci0gICAgICAgIGlmICghY2FjaGVQYXRoKQotICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgdW5zaWduZWQgaGFzaCA9IGtleS5oYXNoKCk7Ci0gICAg
ICAgIGNoYXIgZmlsZW5hbWVbNTEyXTsKLSAgICAgICAgaW50IGNvdW50ID0gc25wcmludGYoZmls
ZW5hbWUsIDUxMiwgIiVzLyV1LmNhY2hlIiwgY2FjaGVQYXRoLCBoYXNoKTsKLSAgICAgICAgaWYg
KGNvdW50IDwgMCB8fCBjb3VudCA+IDUxMikKKyAgICAgICAgY29uc3QgU291cmNlUHJvdmlkZXIm
IHByb3ZpZGVyID0ga2V5LnNvdXJjZSgpLnByb3ZpZGVyKCk7CisgICAgICAgIGlmICghcHJvdmlk
ZXIudXNlQnl0ZWNvZGVDYWNoZSgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICAgICAgaW50IGZkID0gb3BlbihmaWxlbmFtZSwgT19SRE9OTFkpOwotICAgICAgICBpZiAoZmQg
PT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICBhdXRvIGNsb3Nl
RkQgPSBtYWtlU2NvcGVFeGl0KFsmXSB7Ci0gICAgICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAg
IH0pOwotCi0gICAgICAgIGludCByYyA9IGZsb2NrKGZkLCBMT0NLX1NIIHwgTE9DS19OQik7Ci0g
ICAgICAgIGlmIChyYykKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIHN0
cnVjdCBzdGF0IHNiOwotICAgICAgICBpbnQgcmVzID0gZnN0YXQoZmQsICZzYik7Ci0gICAgICAg
IHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzYi5zdF9zaXplKTsKLSAgICAgICAg
aWYgKHJlcyB8fCAhc2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAg
IHZvaWQqIGJ1ZmZlciA9IG1tYXAobnVsbHB0ciwgc2l6ZSwgUFJPVF9SRUFELCBNQVBfUFJJVkFU
RSwgZmQsIDApOwotICAgICAgICBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIHVubGlua2VkQ29kZUJs
b2NrID0gZGVjb2RlQ29kZUJsb2NrPFVubGlua2VkQ29kZUJsb2NrVHlwZT4odm0sIGtleSwgYnVm
ZmVyLCBzaXplKTsKLSAgICAgICAgbXVubWFwKGJ1ZmZlciwgc2l6ZSk7Ci0KLSAgICAgICAgaWYg
KCF1bmxpbmtlZENvZGVCbG9jaykKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
ICAgIFZFUkJPU0VfTE9HKCJGb3VuZCBjYWNoZWQgQ29kZUJsb2NrIG9uIGRpc2siKTsKLSAgICAg
ICAgYWRkQ2FjaGUoa2V5LCBTb3VyY2VDb2RlVmFsdWUodm0sIHVubGlua2VkQ29kZUJsb2NrLCBt
X2FnZSwgdHJ1ZSkpOwotICAgICAgICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2s7Ci0jZWxzZQot
ICAgICAgICBVTlVTRURfUEFSQU0odm0pOwotICAgICAgICBVTlVTRURfUEFSQU0oa2V5KTsKKyAg
ICAgICAgY29uc3QgQ2FjaGVkQnl0ZWNvZGUqIGNhY2hlZEJ5dGVjb2RlID0gcHJvdmlkZXIuY2Fj
aGVkQnl0ZWNvZGUoKTsKKyAgICAgICAgaWYgKGNhY2hlZEJ5dGVjb2RlICYmIGNhY2hlZEJ5dGVj
b2RlLT5zaXplKCkpIHsKKyAgICAgICAgICAgIFZFUkJPU0VfTE9HKCJGb3VuZCBjYWNoZWQgQ29k
ZUJsb2NrIGluIHRoZSBTb3VyY2VQcm92aWRlciIpOworICAgICAgICAgICAgVW5saW5rZWRDb2Rl
QmxvY2tUeXBlKiB1bmxpbmtlZENvZGVCbG9jayA9IGRlY29kZUNvZGVCbG9jazxVbmxpbmtlZENv
ZGVCbG9ja1R5cGU+KHZtLCBrZXksIGNhY2hlZEJ5dGVjb2RlLT5kYXRhKCksIGNhY2hlZEJ5dGVj
b2RlLT5zaXplKCkpOworICAgICAgICAgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrKQorICAgICAg
ICAgICAgICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9jazsKKyAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVu
bGlua2VkQ29kZUJsb2NrVHlwZT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362322</attachid>
            <date>2019-02-18 13:20:38 -0800</date>
            <delta_ts>2019-02-19 01:26:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194675-20190218222001.patch</filename>
            <type>text/plain</type>
            <size>13263</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZWZmN2U2NDg2MjBjNTlhYTVlZjI5ODI4MjhjNTk2MmE3OTQwNjVmLi44OGZjNzgwM2NlYmY2NTkx
MmRjY2NmNzNkMjhiOWQzNjBiYmY3Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxOS0wMi0xOCAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBNb3ZlIGJ5dGVjb2RlIGNhY2hlLXJlbGF0ZWQgZmlsZXN5c3RlbSBjb2Rl
IG91dCBvZiBDb2RlQ2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5NDY3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoYXQgY29kZSBpcyBvbmx5IHVzZWQgZm9yIHRoZSBieXRlY29kZS1jYWNoZSB0
ZXN0cywgc28gaXQgc2hvdWxkIGxpdmUgaW4KKyAgICAgICAganNjLmNwcCByYXRoZXIgdGhhbiBp
biB0aGUgQ29kZUNhY2hlLgorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKFNoZWxsU291
cmNlUHJvdmlkZXI6OmNyZWF0ZSk6CisgICAgICAgIChTaGVsbFNvdXJjZVByb3ZpZGVyOjp+U2hl
bGxTb3VyY2VQcm92aWRlcik6CisgICAgICAgIChTaGVsbFNvdXJjZVByb3ZpZGVyOjpjYWNoZVBh
dGggY29uc3QpOgorICAgICAgICAoU2hlbGxTb3VyY2VQcm92aWRlcjo6bG9hZEJ5dGVjb2RlKToK
KyAgICAgICAgKFNoZWxsU291cmNlUHJvdmlkZXI6OlNoZWxsU291cmNlUHJvdmlkZXIpOgorICAg
ICAgICAoanNjU291cmNlKToKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyRmV0
Y2gpOgorICAgICAgICAoZnVuY3Rpb25Eb2xsYXJFdmFsU2NyaXB0KToKKyAgICAgICAgKHJ1bldp
dGhPcHRpb25zKToKKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAg
KEpTQzo6U291cmNlUHJvdmlkZXI6OmNhY2hlQnl0ZWNvZGUgY29uc3QpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6d3JpdGVDb2RlQmxvY2spOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmg6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZU1hcDo6
ZmV0Y2hGcm9tRGlza0ltcGwpOgorCiAyMDE5LTAyLTE4ICBUYWRldSBaYWdhbGxvICA8dHphZ2Fs
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCB2ZXJzaW9uIG51bWJlciB0byBjYWNoZWQgYnl0
ZWNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggYmUwMTgwNjA1ZTZlOGFiZjQ4YWI3MTFiODZj
OWQ0ZmM5OGMwNWYxYS4uNzU3NTE0MjZlNDEyZjUyMzk0NTBhMTNlM2Q5Y2Y4NjVmZDM1YjI3OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTg3LDYgKzg3LDcgQEAKICNpbmNsdWRlIDx3dGYvTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KICNp
bmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CkBAIC05NTQsMTIgKzk1NSwxMDAgQEAgc3RhdGljIGJv
b2wgZmV0Y2hTY3JpcHRGcm9tTG9jYWxGaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUs
IFZlY3RvcjxjaGFyPiYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorY2xhc3MgU2hlbGxTb3VyY2VQ
cm92aWRlciA6IHB1YmxpYyBTdHJpbmdTb3VyY2VQcm92aWRlciB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxTaGVsbFNvdXJjZVByb3ZpZGVyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBzb3VyY2Us
IGNvbnN0IFNvdXJjZU9yaWdpbiYgc291cmNlT3JpZ2luLCBVUkwmJiB1cmwsIGNvbnN0IFRleHRQ
b3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5
cGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGVsbFNvdXJjZVByb3Zp
ZGVyKHNvdXJjZSwgc291cmNlT3JpZ2luLCBXVEZNb3ZlKHVybCksIHN0YXJ0UG9zaXRpb24sIHNv
dXJjZVR5cGUpKTsKKyAgICB9CisKKyAgICB+U2hlbGxTb3VyY2VQcm92aWRlcigpCisgICAgewor
I2lmIE9TKERBUldJTikKKyAgICAgICAgaWYgKG1fY2FjaGVkQnl0ZWNvZGUuc2l6ZSgpKQorICAg
ICAgICAgICAgbXVubWFwKGNvbnN0X2Nhc3Q8dm9pZCo+KG1fY2FjaGVkQnl0ZWNvZGUuZGF0YSgp
KSwgbV9jYWNoZWRCeXRlY29kZS5zaXplKCkpOworI2VuZGlmCisgICAgfQorCisgICAgY29uc3Qg
Q2FjaGVkQnl0ZWNvZGUqIGNhY2hlZEJ5dGVjb2RlKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIHJldHVybiAmbV9jYWNoZWRCeXRlY29kZTsKKyAgICB9CisKKyAgICB2b2lkIGNhY2hl
Qnl0ZWNvZGUoY29uc3QgQnl0ZWNvZGVDYWNoZUdlbmVyYXRvciYgZ2VuZXJhdG9yKSBjb25zdCBv
dmVycmlkZQorICAgIHsKKyNpZiBPUyhEQVJXSU4pCisgICAgICAgIFN0cmluZyBmaWxlbmFtZSA9
IGNhY2hlUGF0aCgpOworICAgICAgICBpZiAoZmlsZW5hbWUuaXNOdWxsKCkpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGludCBmZCA9IG9wZW4oZmlsZW5hbWUudXRmOCgpLmRhdGEoKSwg
T19DUkVBVCB8IE9fV1JPTkxZIHwgT19UUlVOQyB8IE9fRVhMT0NLIHwgT19OT05CTE9DSywgMDY2
Nik7CisgICAgICAgIGlmIChmZCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
Q2FjaGVkQnl0ZWNvZGUgY2FjaGVkQnl0ZWNvZGUgPSBnZW5lcmF0b3IoKTsKKyAgICAgICAgd3Jp
dGUoZmQsIGNhY2hlZEJ5dGVjb2RlLmRhdGEoKSwgY2FjaGVkQnl0ZWNvZGUuc2l6ZSgpKTsKKyAg
ICAgICAgY2xvc2UoZmQpOworI2VuZGlmCisgICAgfQorCitwcml2YXRlOgorICAgIFN0cmluZyBj
YWNoZVBhdGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgY29uc3QgY2hhciogY2FjaGVQYXRoID0g
T3B0aW9uczo6ZGlza0NhY2hlUGF0aCgpOworICAgICAgICBpZiAoIWNhY2hlUGF0aCkKKyAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obnVsbHB0cik7CisgICAgICAg
IFN0cmluZyBmaWxlbmFtZSA9IHNvdXJjZU9yaWdpbigpLnN0cmluZygpOworICAgICAgICBmaWxl
bmFtZS5yZXBsYWNlKCcvJywgJ18nKTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoY2FjaGVQ
YXRoLCAnLycsIHNvdXJjZSgpLnRvU3RyaW5nKCkuaGFzaCgpLCAnLScsIGZpbGVuYW1lLCAiLmJ5
dGVjb2RlLWNhY2hlIik7CisgICAgfQorCisgICAgdm9pZCBsb2FkQnl0ZWNvZGUoKQorICAgIHsK
KyNpZiBPUyhEQVJXSU4pCisgICAgICAgIFN0cmluZyBmaWxlbmFtZSA9IGNhY2hlUGF0aCgpOwor
ICAgICAgICBpZiAoZmlsZW5hbWUuaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgaW50IGZkID0gb3BlbihmaWxlbmFtZS51dGY4KCkuZGF0YSgpLCBPX1JET05MWSB8IE9f
U0hMT0NLIHwgT19OT05CTE9DSyk7CisgICAgICAgIGlmIChmZCA9PSAtMSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBhdXRvIGNsb3NlRkQgPSBtYWtlU2NvcGVFeGl0KFsmXSB7Cisg
ICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIH0pOworCisgICAgICAgIHN0cnVjdCBzdGF0
IHNiOworICAgICAgICBpbnQgcmVzID0gZnN0YXQoZmQsICZzYik7CisgICAgICAgIHNpemVfdCBz
aXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzYi5zdF9zaXplKTsKKyAgICAgICAgaWYgKHJlcyB8
fCAhc2l6ZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2b2lkKiBidWZmZXIgPSBt
bWFwKG51bGxwdHIsIHNpemUsIFBST1RfUkVBRCwgTUFQX1BSSVZBVEUsIGZkLCAwKTsKKyAgICAg
ICAgaWYgKGJ1ZmZlciA9PSBNQVBfRkFJTEVEKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBtX2NhY2hlZEJ5dGVjb2RlID0gQ2FjaGVkQnl0ZWNvZGUgeyBidWZmZXIsIHNpemUgfTsKKyNl
bmRpZgorICAgIH0KKworICAgIFNoZWxsU291cmNlUHJvdmlkZXIoY29uc3QgU3RyaW5nJiBzb3Vy
Y2UsIGNvbnN0IFNvdXJjZU9yaWdpbiYgc291cmNlT3JpZ2luLCBVUkwmJiB1cmwsIGNvbnN0IFRl
eHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJj
ZVR5cGUpCisgICAgICAgIDogU3RyaW5nU291cmNlUHJvdmlkZXIoc291cmNlLCBzb3VyY2VPcmln
aW4sIFdURk1vdmUodXJsKSwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlwZSkKKyAgICB7CisgICAg
ICAgIGxvYWRCeXRlY29kZSgpOworICAgIH0KKworICAgIENhY2hlZEJ5dGVjb2RlIG1fY2FjaGVk
Qnl0ZWNvZGU7Cit9OworCitzdGF0aWMgaW5saW5lIFNvdXJjZUNvZGUganNjU291cmNlKGNvbnN0
IFN0cmluZyYgc291cmNlLCBjb25zdCBTb3VyY2VPcmlnaW4mIHNvdXJjZU9yaWdpbiwgVVJMJiYg
dXJsID0gVVJMKCksIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiA9IFRleHRQb3Np
dGlvbigpLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNlVHlwZSA9IFNvdXJjZVByb3Zp
ZGVyU291cmNlVHlwZTo6UHJvZ3JhbSkKK3sKKyAgICByZXR1cm4gU291cmNlQ29kZShTaGVsbFNv
dXJjZVByb3ZpZGVyOjpjcmVhdGUoc291cmNlLCBzb3VyY2VPcmlnaW4sIFdURk1vdmUodXJsKSwg
c3RhcnRQb3NpdGlvbiwgc291cmNlVHlwZSksIHN0YXJ0UG9zaXRpb24ubV9saW5lLm9uZUJhc2Vk
SW50KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSk7Cit9CisKIHRlbXBs
YXRlPHR5cGVuYW1lIFZlY3Rvcj4KIHN0YXRpYyBpbmxpbmUgU291cmNlQ29kZSBqc2NTb3VyY2Uo
Y29uc3QgVmVjdG9yJiB1dGY4LCBjb25zdCBTb3VyY2VPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIGFu
IGFic29sdXRlIGZpbGUgVVJMIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTMwNzcKICAgICBTdHJpbmcgc3RyID0gc3RyaW5nRnJvbVVURih1dGY4KTsKLSAgICByZXR1
cm4gbWFrZVNvdXJjZShzdHIsIHNvdXJjZU9yaWdpbiwgVVJMKHsgfSwgZmlsZW5hbWUpKTsKKyAg
ICByZXR1cm4ganNjU291cmNlKHN0ciwgc291cmNlT3JpZ2luLCBVUkwoeyB9LCBmaWxlbmFtZSkp
OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3I+CkBAIC0xMDQyLDcgKzExMzEsNyBAQCBK
U0ludGVybmFsUHJvbWlzZSogR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJGZXRjaChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIH0KICNlbmRpZgogCi0gICAgYXV0byBzb3VyY2VD
b2RlID0gSlNTb3VyY2VDb2RlOjpjcmVhdGUodm0sIG1ha2VTb3VyY2Uoc3RyaW5nRnJvbVVURihi
dWZmZXIpLCBTb3VyY2VPcmlnaW4geyBtb2R1bGVLZXkgfSwgV1RGTW92ZShtb2R1bGVVUkwpLCBU
ZXh0UG9zaXRpb24oKSwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpNb2R1bGUpKTsKKyAgICBh
dXRvIHNvdXJjZUNvZGUgPSBKU1NvdXJjZUNvZGU6OmNyZWF0ZSh2bSwganNjU291cmNlKHN0cmlu
Z0Zyb21VVEYoYnVmZmVyKSwgU291cmNlT3JpZ2luIHsgbW9kdWxlS2V5IH0sIFdURk1vdmUobW9k
dWxlVVJMKSwgVGV4dFBvc2l0aW9uKCksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6TW9kdWxl
KSk7CiAgICAgY2F0Y2hTY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICBhdXRv
IHJlc3VsdCA9IGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIHNvdXJjZUNvZGUpOwogICAgIGNhdGNo
U2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKQEAgLTE3MTUsNyArMTgwNCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJFdmFsU2NyaXB0KEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIkV4cGVjdGVkIGdsb2JhbCB0byBwb2ludCB0byBhIGds
b2JhbCBvYmplY3QiX3MpKSk7CiAgICAgCiAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0
aW9uRXhjZXB0aW9uOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCksIG1ha2VTb3VyY2Uoc291cmNlQ29kZSwgZXhlYy0+Y2FsbGVyU291cmNl
T3JpZ2luKCkpLCBKU1ZhbHVlKCksIGV2YWx1YXRpb25FeGNlcHRpb24pOworICAgIEpTVmFsdWUg
cmVzdWx0ID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShz
b3VyY2VDb2RlLCBleGVjLT5jYWxsZXJTb3VyY2VPcmlnaW4oKSksIEpTVmFsdWUoKSwgZXZhbHVh
dGlvbkV4Y2VwdGlvbik7CiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCiAgICAgICAgIHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yNDcxLDcgKzI1NjAsNyBAQCBzdGF0aWMg
dm9pZCBydW5XaXRoT3B0aW9ucyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29tbWFuZExp
bmUmIG9wdGlvbnMsIGJvbwogICAgICAgICBpZiAoaXNNb2R1bGUpIHsKICAgICAgICAgICAgIGlm
ICghcHJvbWlzZSkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB1c2Ug
YW4gYWJzb2x1dGUgZmlsZSBVUkwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MzA3NwotICAgICAgICAgICAgICAgIHByb21pc2UgPSBsb2FkQW5kRXZhbHVhdGVNb2R1
bGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIG1ha2VTb3VyY2Uoc3RyaW5nRnJvbVVURihz
Y3JpcHRCdWZmZXIpLCBTb3VyY2VPcmlnaW4geyBhYnNvbHV0ZVBhdGgoZmlsZU5hbWUpIH0sIFVS
TCh7IH0sIGZpbGVOYW1lKSwgVGV4dFBvc2l0aW9uKCksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlw
ZTo6TW9kdWxlKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICAgICAgcHJvbWlzZSA9IGxv
YWRBbmRFdmFsdWF0ZU1vZHVsZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwganNjU291cmNl
KHN0cmluZ0Zyb21VVEYoc2NyaXB0QnVmZmVyKSwgU291cmNlT3JpZ2luIHsgYWJzb2x1dGVQYXRo
KGZpbGVOYW1lKSB9LCBVUkwoeyB9LCBmaWxlTmFtZSksIFRleHRQb3NpdGlvbigpLCBTb3VyY2VQ
cm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSksIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCmluZGV4IDJmMGRjZjAyNWYzMjdiZjkw
NmJlY2I1ZmE3NDVkMTQ0NzdjOGZmNTkuLjI0OTNkNzU1ZTMzOGQ2NWVhNDNiMTQwMGJmMmRjMjE2
MmE0M2FjMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNl
UHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3Zp
ZGVyLmgKQEAgLTEwNCw2ICsxMDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3Qg
dm9pZCogbV9kYXRhOwogICAgIH07CiAKKyAgICB1c2luZyBCeXRlY29kZUNhY2hlR2VuZXJhdG9y
ID0gRnVuY3Rpb248Q2FjaGVkQnl0ZWNvZGUoKT47CiAKICAgICBjbGFzcyBTb3VyY2VQcm92aWRl
ciA6IHB1YmxpYyBSZWZDb3VudGVkPFNvdXJjZVByb3ZpZGVyPiB7CiAgICAgcHVibGljOgpAQCAt
MTE2LDYgKzExNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIHVuc2lnbmVk
IGhhc2goKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nVmlldyBzb3VyY2UoKSBj
b25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgQ2FjaGVkQnl0ZWNvZGUqIGNhY2hlZEJ5
dGVjb2RlKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQg
Y2FjaGVCeXRlY29kZShjb25zdCBCeXRlY29kZUNhY2hlR2VuZXJhdG9yJikgY29uc3QgeyB9CiAK
ICAgICAgICAgU3RyaW5nVmlldyBnZXRSYW5nZShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0CiAg
ICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVD
YWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmlu
ZGV4IDJiZmIwNDQyNDg1OTAyYzVkNTBkNWFkYjY3MjNiNmY1N2NjYjBlYTguLmU2NWM3ZjI3ZTU2
MTQ5YzBiNDE4ZTBmZmIzMmUxZWQxNDk1Y2VlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtMTk1LDMwICsxOTUsMTQgQEAgdm9pZCBnZW5lcmF0
ZVVubGlua2VkQ29kZUJsb2NrRm9yRnVuY3Rpb25zKFZNJiB2bSwgVW5saW5rZWRDb2RlQmxvY2sq
IHVubGlua2VkQ28KIAogdm9pZCB3cml0ZUNvZGVCbG9jayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNv
ZGVLZXkmIGtleSwgY29uc3QgU291cmNlQ29kZVZhbHVlJiB2YWx1ZSkKIHsKLSNpZiBPUyhEQVJX
SU4pCi0gICAgY29uc3QgY2hhciogY2FjaGVQYXRoID0gT3B0aW9uczo6ZGlza0NhY2hlUGF0aCgp
OwotICAgIGlmIChMSUtFTFkoIWNhY2hlUGF0aCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIFVu
bGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBqc0R5bmFtaWNDYXN0PFVubGlua2VkQ29kZUJs
b2NrKj4odm0sIHZhbHVlLmNlbGwuZ2V0KCkpOwogICAgIGlmICghY29kZUJsb2NrKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBzdGQ6OnBhaXI8TWFsbG9jUHRyPHVpbnQ4X3Q+LCBzaXplX3Q+IHJl
c3VsdCA9IGVuY29kZUNvZGVCbG9jayh2bSwga2V5LCBjb2RlQmxvY2spOwotCi0gICAgU3RyaW5n
IGZpbGVuYW1lID0gbWFrZVN0cmluZyhjYWNoZVBhdGgsICcvJywga2V5Lmhhc2goKSwgIi5jYWNo
ZSIpOwotICAgIGludCBmZCA9IG9wZW4oZmlsZW5hbWUudXRmOCgpLmRhdGEoKSwgT19DUkVBVCB8
IE9fV1JPTkxZLCAwNjY2KTsKLSAgICBpZiAoZmQgPT0gLTEpCi0gICAgICAgIHJldHVybjsKLSAg
ICBpbnQgcmMgPSBmbG9jayhmZCwgTE9DS19FWCB8IExPQ0tfTkIpOwotICAgIGlmICghcmMpCi0g
ICAgICAgIDo6d3JpdGUoZmQsIHJlc3VsdC5maXJzdC5nZXQoKSwgcmVzdWx0LnNlY29uZCk7Ci0g
ICAgY2xvc2UoZmQpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0odm0pOwotICAgIFVOVVNFRF9Q
QVJBTShrZXkpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Ci0jZW5kaWYKKyAgICBrZXkuc291
cmNlKCkucHJvdmlkZXIoKS5jYWNoZUJ5dGVjb2RlKFsmXSgpIHsKKyAgICAgICAgc3RkOjpwYWly
PE1hbGxvY1B0cjx1aW50OF90Piwgc2l6ZV90PiByZXN1bHQgPSBlbmNvZGVDb2RlQmxvY2sodm0s
IGtleSwgY29kZUJsb2NrKTsKKyAgICAgICAgcmV0dXJuIENhY2hlZEJ5dGVjb2RlIHsgV1RGTW92
ZShyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vjb25kIH07CisgICAgfSk7CiB9CiAKIENhY2hlZEJ5
dGVjb2RlIHNlcmlhbGl6ZUJ5dGVjb2RlKFZNJiB2bSwgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVC
bG9jaywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBTb3VyY2VDb2RlVHlwZSBjb2RlVHlwZSwg
SlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRN
b2RlLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db2RlQ2FjaGUuaAppbmRleCAwZTQxZTAyMTFjYWQ5YzVkYjNmY2Q4OGFkY2E2NDMzZTRl
Yjc4ZTJlLi5mMTRjMjdiNGU0OTFhMzM0ZjgzMGIzNDYwN2RlZDNkNmRkY2Q0NzgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaApAQCAtMzksMTAgKzM5LDYgQEAK
ICNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRQcm9ncmFtQ29k
ZUJsb2NrLmgiCi0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgotI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTEwLDYwICsxMDYsMTQgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFVubGlua2VkQ29kZUJsb2NrVHlwZT4KICAgICBVbmxpbmtlZENv
ZGVCbG9ja1R5cGUqIGZldGNoRnJvbURpc2tJbXBsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZUtl
eSYga2V5KQogICAgIHsKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgYXV0byogY2FjaGVk
Qnl0ZWNvZGUgPSBrZXkuc291cmNlKCkucHJvdmlkZXIoKS5jYWNoZWRCeXRlY29kZSgpOwotICAg
ICAgICAgICAgaWYgKGNhY2hlZEJ5dGVjb2RlICYmIGNhY2hlZEJ5dGVjb2RlLT5zaXplKCkpIHsK
LSAgICAgICAgICAgICAgICBWRVJCT1NFX0xPRygiRm91bmQgY2FjaGVkIENvZGVCbG9jayBpbiB0
aGUgU291cmNlUHJvdmlkZXIiKTsKLSAgICAgICAgICAgICAgICBVbmxpbmtlZENvZGVCbG9ja1R5
cGUqIHVubGlua2VkQ29kZUJsb2NrID0gZGVjb2RlQ29kZUJsb2NrPFVubGlua2VkQ29kZUJsb2Nr
VHlwZT4odm0sIGtleSwgY2FjaGVkQnl0ZWNvZGUtPmRhdGEoKSwgY2FjaGVkQnl0ZWNvZGUtPnNp
emUoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2s7Ci0gICAgICAgICAgICB9CisgICAg
ICAgIGNvbnN0IENhY2hlZEJ5dGVjb2RlKiBjYWNoZWRCeXRlY29kZSA9IGtleS5zb3VyY2UoKS5w
cm92aWRlcigpLmNhY2hlZEJ5dGVjb2RlKCk7CisgICAgICAgIGlmIChjYWNoZWRCeXRlY29kZSAm
JiBjYWNoZWRCeXRlY29kZS0+c2l6ZSgpKSB7CisgICAgICAgICAgICBWRVJCT1NFX0xPRygiRm91
bmQgY2FjaGVkIENvZGVCbG9jayBpbiB0aGUgU291cmNlUHJvdmlkZXIiKTsKKyAgICAgICAgICAg
IFVubGlua2VkQ29kZUJsb2NrVHlwZSogdW5saW5rZWRDb2RlQmxvY2sgPSBkZWNvZGVDb2RlQmxv
Y2s8VW5saW5rZWRDb2RlQmxvY2tUeXBlPih2bSwga2V5LCBjYWNoZWRCeXRlY29kZS0+ZGF0YSgp
LCBjYWNoZWRCeXRlY29kZS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGlmICh1bmxpbmtlZENvZGVC
bG9jaykKKyAgICAgICAgICAgICAgICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2s7CiAgICAgICAg
IH0KLQotI2lmIE9TKERBUldJTikKLSAgICAgICAgY29uc3QgY2hhciogY2FjaGVQYXRoID0gT3B0
aW9uczo6ZGlza0NhY2hlUGF0aCgpOwotICAgICAgICBpZiAoIWNhY2hlUGF0aCkKLSAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIHVuc2lnbmVkIGhhc2ggPSBrZXkuaGFzaCgp
OwotICAgICAgICBjaGFyIGZpbGVuYW1lWzUxMl07Ci0gICAgICAgIGludCBjb3VudCA9IHNucHJp
bnRmKGZpbGVuYW1lLCA1MTIsICIlcy8ldS5jYWNoZSIsIGNhY2hlUGF0aCwgaGFzaCk7Ci0gICAg
ICAgIGlmIChjb3VudCA8IDAgfHwgY291bnQgPiA1MTIpCi0gICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgICAgICBpbnQgZmQgPSBvcGVuKGZpbGVuYW1lLCBPX1JET05MWSk7Ci0gICAg
ICAgIGlmIChmZCA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAg
IGF1dG8gY2xvc2VGRCA9IG1ha2VTY29wZUV4aXQoWyZdIHsKLSAgICAgICAgICAgIGNsb3NlKGZk
KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaW50IHJjID0gZmxvY2soZmQsIExPQ0tfU0ggfCBM
T0NLX05CKTsKLSAgICAgICAgaWYgKHJjKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICAgICAgc3RydWN0IHN0YXQgc2I7Ci0gICAgICAgIGludCByZXMgPSBmc3RhdChmZCwgJnNi
KTsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNiLnN0X3NpemUp
OwotICAgICAgICBpZiAocmVzIHx8ICFzaXplKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICAgICAgdm9pZCogYnVmZmVyID0gbW1hcChudWxscHRyLCBzaXplLCBQUk9UX1JFQUQs
IE1BUF9QUklWQVRFLCBmZCwgMCk7Ci0gICAgICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSogdW5s
aW5rZWRDb2RlQmxvY2sgPSBkZWNvZGVDb2RlQmxvY2s8VW5saW5rZWRDb2RlQmxvY2tUeXBlPih2
bSwga2V5LCBidWZmZXIsIHNpemUpOwotICAgICAgICBtdW5tYXAoYnVmZmVyLCBzaXplKTsKLQot
ICAgICAgICBpZiAoIXVubGlua2VkQ29kZUJsb2NrKQotICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICAgICAgVkVSQk9TRV9MT0coIkZvdW5kIGNhY2hlZCBDb2RlQmxvY2sgb24gZGlz
ayIpOwotICAgICAgICBhZGRDYWNoZShrZXksIFNvdXJjZUNvZGVWYWx1ZSh2bSwgdW5saW5rZWRD
b2RlQmxvY2ssIG1fYWdlLCB0cnVlKSk7Ci0gICAgICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9j
azsKLSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTSh2bSk7Ci0gICAgICAgIFVOVVNFRF9QQVJB
TShrZXkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgogICAgIH0KIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFVubGlua2VkQ29kZUJsb2NrVHlwZT4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362374</attachid>
            <date>2019-02-19 01:26:19 -0800</date>
            <delta_ts>2019-02-19 02:04:58 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-194675-20190219102541.patch</filename>
            <type>text/plain</type>
            <size>13429</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZWZmN2U2NDg2MjBjNTlhYTVlZjI5ODI4MjhjNTk2MmE3OTQwNjVmLi41YmNjNGRmNjY5MjcwN2E5
NmE1MTkwY2Y0YmQyNWI3MmRhOTJlOTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAxOS0wMi0xOCAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBNb3ZlIGJ5dGVjb2RlIGNhY2hlLXJlbGF0ZWQgZmlsZXN5c3RlbSBjb2Rl
IG91dCBvZiBDb2RlQ2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5NDY3NQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisg
ICAgICAgIFRoZSBjb2RlIGlzIG9ubHkgdXNlZCBmb3IgdGhlIGJ5dGVjb2RlLWNhY2hlIHRlc3Rz
LCBzbyBpdCBzaG91bGQgbGl2ZSBpbgorICAgICAgICBqc2MuY3BwIHJhdGhlciB0aGFuIGluIHRo
ZSBDb2RlQ2FjaGUuIFRoZSBsb2dpYyBub3cgbGl2ZXMgaW4gU2hlbGxTb3VyY2VQcm92aWRlciwK
KyAgICAgICAgd2hpY2ggb3ZlcnJpZGVzIHRoZSBhIHZpcnR1YWwgbWV0aG9kIGluIFNvdXJjZVBy
b3ZpZGVyLCBgY2FjaGVCeXRlY29kZWAsCisgICAgICAgIGluIG9yZGVyIHRvIHdyaXRlIHRoZSBj
YWNoZSB0byBkaXNrLgorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKFNoZWxsU291cmNl
UHJvdmlkZXI6OmNyZWF0ZSk6CisgICAgICAgIChTaGVsbFNvdXJjZVByb3ZpZGVyOjp+U2hlbGxT
b3VyY2VQcm92aWRlcik6CisgICAgICAgIChTaGVsbFNvdXJjZVByb3ZpZGVyOjpjYWNoZVBhdGgg
Y29uc3QpOgorICAgICAgICAoU2hlbGxTb3VyY2VQcm92aWRlcjo6bG9hZEJ5dGVjb2RlKToKKyAg
ICAgICAgKFNoZWxsU291cmNlUHJvdmlkZXI6OlNoZWxsU291cmNlUHJvdmlkZXIpOgorICAgICAg
ICAoanNjU291cmNlKToKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyRmV0Y2gp
OgorICAgICAgICAoZnVuY3Rpb25Eb2xsYXJFdmFsU2NyaXB0KToKKyAgICAgICAgKHJ1bldpdGhP
cHRpb25zKToKKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKEpT
Qzo6U291cmNlUHJvdmlkZXI6OmNhY2hlQnl0ZWNvZGUgY29uc3QpOgorICAgICAgICAqIHJ1bnRp
bWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6d3JpdGVDb2RlQmxvY2spOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmg6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZU1hcDo6ZmV0
Y2hGcm9tRGlza0ltcGwpOgorCiAyMDE5LTAyLTE4ICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9A
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCB2ZXJzaW9uIG51bWJlciB0byBjYWNoZWQgYnl0ZWNv
ZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggYmUwMTgwNjA1ZTZlOGFiZjQ4YWI3MTFiODZjOWQ0
ZmM5OGMwNWYxYS4uNzU3NTE0MjZlNDEyZjUyMzk0NTBhMTNlM2Q5Y2Y4NjVmZDM1YjI3OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKQEAgLTg3LDYgKzg3LDcgQEAKICNpbmNsdWRlIDx3dGYvTWVtb3J5
UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KICNpbmNs
dWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL1dhbGxUaW1lLmg+CkBAIC05NTQsMTIgKzk1NSwxMDAgQEAgc3RhdGljIGJvb2wg
ZmV0Y2hTY3JpcHRGcm9tTG9jYWxGaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIFZl
Y3RvcjxjaGFyPiYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorY2xhc3MgU2hlbGxTb3VyY2VQcm92
aWRlciA6IHB1YmxpYyBTdHJpbmdTb3VyY2VQcm92aWRlciB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxTaGVsbFNvdXJjZVByb3ZpZGVyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNv
bnN0IFNvdXJjZU9yaWdpbiYgc291cmNlT3JpZ2luLCBVUkwmJiB1cmwsIGNvbnN0IFRleHRQb3Np
dGlvbiYgc3RhcnRQb3NpdGlvbiwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGVsbFNvdXJjZVByb3ZpZGVy
KHNvdXJjZSwgc291cmNlT3JpZ2luLCBXVEZNb3ZlKHVybCksIHN0YXJ0UG9zaXRpb24sIHNvdXJj
ZVR5cGUpKTsKKyAgICB9CisKKyAgICB+U2hlbGxTb3VyY2VQcm92aWRlcigpCisgICAgeworI2lm
IE9TKERBUldJTikKKyAgICAgICAgaWYgKG1fY2FjaGVkQnl0ZWNvZGUuc2l6ZSgpKQorICAgICAg
ICAgICAgbXVubWFwKGNvbnN0X2Nhc3Q8dm9pZCo+KG1fY2FjaGVkQnl0ZWNvZGUuZGF0YSgpKSwg
bV9jYWNoZWRCeXRlY29kZS5zaXplKCkpOworI2VuZGlmCisgICAgfQorCisgICAgY29uc3QgQ2Fj
aGVkQnl0ZWNvZGUqIGNhY2hlZEJ5dGVjb2RlKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIHJldHVybiAmbV9jYWNoZWRCeXRlY29kZTsKKyAgICB9CisKKyAgICB2b2lkIGNhY2hlQnl0
ZWNvZGUoY29uc3QgQnl0ZWNvZGVDYWNoZUdlbmVyYXRvciYgZ2VuZXJhdG9yKSBjb25zdCBvdmVy
cmlkZQorICAgIHsKKyNpZiBPUyhEQVJXSU4pCisgICAgICAgIFN0cmluZyBmaWxlbmFtZSA9IGNh
Y2hlUGF0aCgpOworICAgICAgICBpZiAoZmlsZW5hbWUuaXNOdWxsKCkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGludCBmZCA9IG9wZW4oZmlsZW5hbWUudXRmOCgpLmRhdGEoKSwgT19D
UkVBVCB8IE9fV1JPTkxZIHwgT19UUlVOQyB8IE9fRVhMT0NLIHwgT19OT05CTE9DSywgMDY2Nik7
CisgICAgICAgIGlmIChmZCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgQ2Fj
aGVkQnl0ZWNvZGUgY2FjaGVkQnl0ZWNvZGUgPSBnZW5lcmF0b3IoKTsKKyAgICAgICAgd3JpdGUo
ZmQsIGNhY2hlZEJ5dGVjb2RlLmRhdGEoKSwgY2FjaGVkQnl0ZWNvZGUuc2l6ZSgpKTsKKyAgICAg
ICAgY2xvc2UoZmQpOworI2VuZGlmCisgICAgfQorCitwcml2YXRlOgorICAgIFN0cmluZyBjYWNo
ZVBhdGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgY29uc3QgY2hhciogY2FjaGVQYXRoID0gT3B0
aW9uczo6ZGlza0NhY2hlUGF0aCgpOworICAgICAgICBpZiAoIWNhY2hlUGF0aCkKKyAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obnVsbHB0cik7CisgICAgICAgIFN0
cmluZyBmaWxlbmFtZSA9IHNvdXJjZU9yaWdpbigpLnN0cmluZygpOworICAgICAgICBmaWxlbmFt
ZS5yZXBsYWNlKCcvJywgJ18nKTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoY2FjaGVQYXRo
LCAnLycsIHNvdXJjZSgpLnRvU3RyaW5nKCkuaGFzaCgpLCAnLScsIGZpbGVuYW1lLCAiLmJ5dGVj
b2RlLWNhY2hlIik7CisgICAgfQorCisgICAgdm9pZCBsb2FkQnl0ZWNvZGUoKQorICAgIHsKKyNp
ZiBPUyhEQVJXSU4pCisgICAgICAgIFN0cmluZyBmaWxlbmFtZSA9IGNhY2hlUGF0aCgpOworICAg
ICAgICBpZiAoZmlsZW5hbWUuaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgaW50IGZkID0gb3BlbihmaWxlbmFtZS51dGY4KCkuZGF0YSgpLCBPX1JET05MWSB8IE9fU0hM
T0NLIHwgT19OT05CTE9DSyk7CisgICAgICAgIGlmIChmZCA9PSAtMSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBhdXRvIGNsb3NlRkQgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAg
ICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIH0pOworCisgICAgICAgIHN0cnVjdCBzdGF0IHNi
OworICAgICAgICBpbnQgcmVzID0gZnN0YXQoZmQsICZzYik7CisgICAgICAgIHNpemVfdCBzaXpl
ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzYi5zdF9zaXplKTsKKyAgICAgICAgaWYgKHJlcyB8fCAh
c2l6ZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2b2lkKiBidWZmZXIgPSBtbWFw
KG51bGxwdHIsIHNpemUsIFBST1RfUkVBRCwgTUFQX1BSSVZBVEUsIGZkLCAwKTsKKyAgICAgICAg
aWYgKGJ1ZmZlciA9PSBNQVBfRkFJTEVEKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBt
X2NhY2hlZEJ5dGVjb2RlID0gQ2FjaGVkQnl0ZWNvZGUgeyBidWZmZXIsIHNpemUgfTsKKyNlbmRp
ZgorICAgIH0KKworICAgIFNoZWxsU291cmNlUHJvdmlkZXIoY29uc3QgU3RyaW5nJiBzb3VyY2Us
IGNvbnN0IFNvdXJjZU9yaWdpbiYgc291cmNlT3JpZ2luLCBVUkwmJiB1cmwsIGNvbnN0IFRleHRQ
b3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5
cGUpCisgICAgICAgIDogU3RyaW5nU291cmNlUHJvdmlkZXIoc291cmNlLCBzb3VyY2VPcmlnaW4s
IFdURk1vdmUodXJsKSwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlwZSkKKyAgICB7CisgICAgICAg
IGxvYWRCeXRlY29kZSgpOworICAgIH0KKworICAgIENhY2hlZEJ5dGVjb2RlIG1fY2FjaGVkQnl0
ZWNvZGU7Cit9OworCitzdGF0aWMgaW5saW5lIFNvdXJjZUNvZGUganNjU291cmNlKGNvbnN0IFN0
cmluZyYgc291cmNlLCBjb25zdCBTb3VyY2VPcmlnaW4mIHNvdXJjZU9yaWdpbiwgVVJMJiYgdXJs
ID0gVVJMKCksIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiA9IFRleHRQb3NpdGlv
bigpLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNlVHlwZSA9IFNvdXJjZVByb3ZpZGVy
U291cmNlVHlwZTo6UHJvZ3JhbSkKK3sKKyAgICByZXR1cm4gU291cmNlQ29kZShTaGVsbFNvdXJj
ZVByb3ZpZGVyOjpjcmVhdGUoc291cmNlLCBzb3VyY2VPcmlnaW4sIFdURk1vdmUodXJsKSwgc3Rh
cnRQb3NpdGlvbiwgc291cmNlVHlwZSksIHN0YXJ0UG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50
KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSk7Cit9CisKIHRlbXBsYXRl
PHR5cGVuYW1lIFZlY3Rvcj4KIHN0YXRpYyBpbmxpbmUgU291cmNlQ29kZSBqc2NTb3VyY2UoY29u
c3QgVmVjdG9yJiB1dGY4LCBjb25zdCBTb3VyY2VPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIGFuIGFi
c29sdXRlIGZpbGUgVVJMIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTMwNzcKICAgICBTdHJpbmcgc3RyID0gc3RyaW5nRnJvbVVURih1dGY4KTsKLSAgICByZXR1cm4g
bWFrZVNvdXJjZShzdHIsIHNvdXJjZU9yaWdpbiwgVVJMKHsgfSwgZmlsZW5hbWUpKTsKKyAgICBy
ZXR1cm4ganNjU291cmNlKHN0ciwgc291cmNlT3JpZ2luLCBVUkwoeyB9LCBmaWxlbmFtZSkpOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3I+CkBAIC0xMDQyLDcgKzExMzEsNyBAQCBKU0lu
dGVybmFsUHJvbWlzZSogR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LAogICAgIH0KICNlbmRpZgogCi0gICAgYXV0byBzb3VyY2VDb2Rl
ID0gSlNTb3VyY2VDb2RlOjpjcmVhdGUodm0sIG1ha2VTb3VyY2Uoc3RyaW5nRnJvbVVURihidWZm
ZXIpLCBTb3VyY2VPcmlnaW4geyBtb2R1bGVLZXkgfSwgV1RGTW92ZShtb2R1bGVVUkwpLCBUZXh0
UG9zaXRpb24oKSwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpNb2R1bGUpKTsKKyAgICBhdXRv
IHNvdXJjZUNvZGUgPSBKU1NvdXJjZUNvZGU6OmNyZWF0ZSh2bSwganNjU291cmNlKHN0cmluZ0Zy
b21VVEYoYnVmZmVyKSwgU291cmNlT3JpZ2luIHsgbW9kdWxlS2V5IH0sIFdURk1vdmUobW9kdWxl
VVJMKSwgVGV4dFBvc2l0aW9uKCksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6TW9kdWxlKSk7
CiAgICAgY2F0Y2hTY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICBhdXRvIHJl
c3VsdCA9IGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIHNvdXJjZUNvZGUpOwogICAgIGNhdGNoU2Nv
cGUuY2xlYXJFeGNlcHRpb24oKTsKQEAgLTE3MTUsNyArMTgwNCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJFdmFsU2NyaXB0KEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgY3JlYXRlRXJyb3IoZXhlYywgIkV4cGVjdGVkIGdsb2JhbCB0byBwb2ludCB0byBhIGdsb2Jh
bCBvYmplY3QiX3MpKSk7CiAgICAgCiAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9u
RXhjZXB0aW9uOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCksIG1ha2VTb3VyY2Uoc291cmNlQ29kZSwgZXhlYy0+Y2FsbGVyU291cmNlT3Jp
Z2luKCkpLCBKU1ZhbHVlKCksIGV2YWx1YXRpb25FeGNlcHRpb24pOworICAgIEpTVmFsdWUgcmVz
dWx0ID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShzb3Vy
Y2VDb2RlLCBleGVjLT5jYWxsZXJTb3VyY2VPcmlnaW4oKSksIEpTVmFsdWUoKSwgZXZhbHVhdGlv
bkV4Y2VwdGlvbik7CiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCiAgICAgICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yNDcxLDcgKzI1NjAsNyBAQCBzdGF0aWMgdm9p
ZCBydW5XaXRoT3B0aW9ucyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29tbWFuZExpbmUm
IG9wdGlvbnMsIGJvbwogICAgICAgICBpZiAoaXNNb2R1bGUpIHsKICAgICAgICAgICAgIGlmICgh
cHJvbWlzZSkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgYW4g
YWJzb2x1dGUgZmlsZSBVUkwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5MzA3NwotICAgICAgICAgICAgICAgIHByb21pc2UgPSBsb2FkQW5kRXZhbHVhdGVNb2R1bGUo
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIG1ha2VTb3VyY2Uoc3RyaW5nRnJvbVVURihzY3Jp
cHRCdWZmZXIpLCBTb3VyY2VPcmlnaW4geyBhYnNvbHV0ZVBhdGgoZmlsZU5hbWUpIH0sIFVSTCh7
IH0sIGZpbGVOYW1lKSwgVGV4dFBvc2l0aW9uKCksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6
TW9kdWxlKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICAgICAgcHJvbWlzZSA9IGxvYWRB
bmRFdmFsdWF0ZU1vZHVsZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHN0
cmluZ0Zyb21VVEYoc2NyaXB0QnVmZmVyKSwgU291cmNlT3JpZ2luIHsgYWJzb2x1dGVQYXRoKGZp
bGVOYW1lKSB9LCBVUkwoeyB9LCBmaWxlTmFtZSksIFRleHRQb3NpdGlvbigpLCBTb3VyY2VQcm92
aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSksIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCmluZGV4IDJmMGRjZjAyNWYzMjdiZjkwNmJl
Y2I1ZmE3NDVkMTQ0NzdjOGZmNTkuLjI0OTNkNzU1ZTMzOGQ2NWVhNDNiMTQwMGJmMmRjMjE2MmE0
M2FjMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJv
dmlkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVy
LmgKQEAgLTEwNCw2ICsxMDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3Qgdm9p
ZCogbV9kYXRhOwogICAgIH07CiAKKyAgICB1c2luZyBCeXRlY29kZUNhY2hlR2VuZXJhdG9yID0g
RnVuY3Rpb248Q2FjaGVkQnl0ZWNvZGUoKT47CiAKICAgICBjbGFzcyBTb3VyY2VQcm92aWRlciA6
IHB1YmxpYyBSZWZDb3VudGVkPFNvdXJjZVByb3ZpZGVyPiB7CiAgICAgcHVibGljOgpAQCAtMTE2
LDYgKzExNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIGhh
c2goKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nVmlldyBzb3VyY2UoKSBjb25z
dCA9IDA7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgQ2FjaGVkQnl0ZWNvZGUqIGNhY2hlZEJ5dGVj
b2RlKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgY2Fj
aGVCeXRlY29kZShjb25zdCBCeXRlY29kZUNhY2hlR2VuZXJhdG9yJikgY29uc3QgeyB9CiAKICAg
ICAgICAgU3RyaW5nVmlldyBnZXRSYW5nZShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0CiAgICAg
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNo
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4
IDJiZmIwNDQyNDg1OTAyYzVkNTBkNWFkYjY3MjNiNmY1N2NjYjBlYTguLmZkNWY5Njg3NjE2Zjcx
NDUwMTNhYzI4NzA2YmQ1ZjcxNDY2OGE4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtMTk1LDMwICsxOTUsMTQgQEAgdm9pZCBnZW5lcmF0ZVVu
bGlua2VkQ29kZUJsb2NrRm9yRnVuY3Rpb25zKFZNJiB2bSwgVW5saW5rZWRDb2RlQmxvY2sqIHVu
bGlua2VkQ28KIAogdm9pZCB3cml0ZUNvZGVCbG9jayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGVL
ZXkmIGtleSwgY29uc3QgU291cmNlQ29kZVZhbHVlJiB2YWx1ZSkKIHsKLSNpZiBPUyhEQVJXSU4p
Ci0gICAgY29uc3QgY2hhciogY2FjaGVQYXRoID0gT3B0aW9uczo6ZGlza0NhY2hlUGF0aCgpOwot
ICAgIGlmIChMSUtFTFkoIWNhY2hlUGF0aCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIFVubGlu
a2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBqc0R5bmFtaWNDYXN0PFVubGlua2VkQ29kZUJsb2Nr
Kj4odm0sIHZhbHVlLmNlbGwuZ2V0KCkpOwogICAgIGlmICghY29kZUJsb2NrKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBzdGQ6OnBhaXI8TWFsbG9jUHRyPHVpbnQ4X3Q+LCBzaXplX3Q+IHJlc3Vs
dCA9IGVuY29kZUNvZGVCbG9jayh2bSwga2V5LCBjb2RlQmxvY2spOwotCi0gICAgU3RyaW5nIGZp
bGVuYW1lID0gbWFrZVN0cmluZyhjYWNoZVBhdGgsICcvJywga2V5Lmhhc2goKSwgIi5jYWNoZSIp
OwotICAgIGludCBmZCA9IG9wZW4oZmlsZW5hbWUudXRmOCgpLmRhdGEoKSwgT19DUkVBVCB8IE9f
V1JPTkxZLCAwNjY2KTsKLSAgICBpZiAoZmQgPT0gLTEpCi0gICAgICAgIHJldHVybjsKLSAgICBp
bnQgcmMgPSBmbG9jayhmZCwgTE9DS19FWCB8IExPQ0tfTkIpOwotICAgIGlmICghcmMpCi0gICAg
ICAgIDo6d3JpdGUoZmQsIHJlc3VsdC5maXJzdC5nZXQoKSwgcmVzdWx0LnNlY29uZCk7Ci0gICAg
Y2xvc2UoZmQpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0odm0pOwotICAgIFVOVVNFRF9QQVJB
TShrZXkpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Ci0jZW5kaWYKKyAgICBrZXkuc291cmNl
KCkucHJvdmlkZXIoKS5jYWNoZUJ5dGVjb2RlKFsmXSB7CisgICAgICAgIHN0ZDo6cGFpcjxNYWxs
b2NQdHI8dWludDhfdD4sIHNpemVfdD4gcmVzdWx0ID0gZW5jb2RlQ29kZUJsb2NrKHZtLCBrZXks
IGNvZGVCbG9jayk7CisgICAgICAgIHJldHVybiBDYWNoZWRCeXRlY29kZSB7IFdURk1vdmUocmVz
dWx0LmZpcnN0KSwgcmVzdWx0LnNlY29uZCB9OworICAgIH0pOwogfQogCiBDYWNoZWRCeXRlY29k
ZSBzZXJpYWxpemVCeXRlY29kZShWTSYgdm0sIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgU291cmNlQ29kZVR5cGUgY29kZVR5cGUsIEpTUGFy
c2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwg
RGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29kZUNhY2hlLmgKaW5kZXggMGU0MWUwMjExY2FkOWM1ZGIzZmNkODhhZGNhNjQzM2U0ZWI3OGUy
ZS4uZjE0YzI3YjRlNDkxYTMzNGY4MzBiMzQ2MDdkZWQzZDZkZGNkNDc4MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKQEAgLTM5LDEwICszOSw2IEBACiAjaW5j
bHVkZSAiVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIlVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jay5oIgogI2luY2x1ZGUgIlVubGlua2VkUHJvZ3JhbUNvZGVCbG9j
ay5oIgotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNp
bmNsdWRlIDx3dGYvU2NvcGUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CiAKQEAgLTExMCw2MCArMTA2LDE0IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVbmxpbmtlZENvZGVCbG9ja1R5cGU+CiAgICAgVW5saW5rZWRDb2RlQmxv
Y2tUeXBlKiBmZXRjaEZyb21EaXNrSW1wbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtl
eSkKICAgICB7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IGF1dG8qIGNhY2hlZEJ5dGVj
b2RlID0ga2V5LnNvdXJjZSgpLnByb3ZpZGVyKCkuY2FjaGVkQnl0ZWNvZGUoKTsKLSAgICAgICAg
ICAgIGlmIChjYWNoZWRCeXRlY29kZSAmJiBjYWNoZWRCeXRlY29kZS0+c2l6ZSgpKSB7Ci0gICAg
ICAgICAgICAgICAgVkVSQk9TRV9MT0coIkZvdW5kIGNhY2hlZCBDb2RlQmxvY2sgaW4gdGhlIFNv
dXJjZVByb3ZpZGVyIik7Ci0gICAgICAgICAgICAgICAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiB1
bmxpbmtlZENvZGVCbG9jayA9IGRlY29kZUNvZGVCbG9jazxVbmxpbmtlZENvZGVCbG9ja1R5cGU+
KHZtLCBrZXksIGNhY2hlZEJ5dGVjb2RlLT5kYXRhKCksIGNhY2hlZEJ5dGVjb2RlLT5zaXplKCkp
OwotICAgICAgICAgICAgICAgIGlmICh1bmxpbmtlZENvZGVCbG9jaykKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHVubGlua2VkQ29kZUJsb2NrOwotICAgICAgICAgICAgfQorICAgICAgICBj
b25zdCBDYWNoZWRCeXRlY29kZSogY2FjaGVkQnl0ZWNvZGUgPSBrZXkuc291cmNlKCkucHJvdmlk
ZXIoKS5jYWNoZWRCeXRlY29kZSgpOworICAgICAgICBpZiAoY2FjaGVkQnl0ZWNvZGUgJiYgY2Fj
aGVkQnl0ZWNvZGUtPnNpemUoKSkgeworICAgICAgICAgICAgVkVSQk9TRV9MT0coIkZvdW5kIGNh
Y2hlZCBDb2RlQmxvY2sgaW4gdGhlIFNvdXJjZVByb3ZpZGVyIik7CisgICAgICAgICAgICBVbmxp
bmtlZENvZGVCbG9ja1R5cGUqIHVubGlua2VkQ29kZUJsb2NrID0gZGVjb2RlQ29kZUJsb2NrPFVu
bGlua2VkQ29kZUJsb2NrVHlwZT4odm0sIGtleSwgY2FjaGVkQnl0ZWNvZGUtPmRhdGEoKSwgY2Fj
aGVkQnl0ZWNvZGUtPnNpemUoKSk7CisgICAgICAgICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2sp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHVubGlua2VkQ29kZUJsb2NrOwogICAgICAgICB9Ci0K
LSNpZiBPUyhEQVJXSU4pCi0gICAgICAgIGNvbnN0IGNoYXIqIGNhY2hlUGF0aCA9IE9wdGlvbnM6
OmRpc2tDYWNoZVBhdGgoKTsKLSAgICAgICAgaWYgKCFjYWNoZVBhdGgpCi0gICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICB1bnNpZ25lZCBoYXNoID0ga2V5Lmhhc2goKTsKLSAg
ICAgICAgY2hhciBmaWxlbmFtZVs1MTJdOwotICAgICAgICBpbnQgY291bnQgPSBzbnByaW50Zihm
aWxlbmFtZSwgNTEyLCAiJXMvJXUuY2FjaGUiLCBjYWNoZVBhdGgsIGhhc2gpOwotICAgICAgICBp
ZiAoY291bnQgPCAwIHx8IGNvdW50ID4gNTEyKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICAgICAgaW50IGZkID0gb3BlbihmaWxlbmFtZSwgT19SRE9OTFkpOwotICAgICAgICBp
ZiAoZmQgPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICBhdXRv
IGNsb3NlRkQgPSBtYWtlU2NvcGVFeGl0KFsmXSB7Ci0gICAgICAgICAgICBjbG9zZShmZCk7Ci0g
ICAgICAgIH0pOwotCi0gICAgICAgIGludCByYyA9IGZsb2NrKGZkLCBMT0NLX1NIIHwgTE9DS19O
Qik7Ci0gICAgICAgIGlmIChyYykKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
ICAgIHN0cnVjdCBzdGF0IHNiOwotICAgICAgICBpbnQgcmVzID0gZnN0YXQoZmQsICZzYik7Ci0g
ICAgICAgIHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzYi5zdF9zaXplKTsKLSAg
ICAgICAgaWYgKHJlcyB8fCAhc2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgICAgIHZvaWQqIGJ1ZmZlciA9IG1tYXAobnVsbHB0ciwgc2l6ZSwgUFJPVF9SRUFELCBNQVBf
UFJJVkFURSwgZmQsIDApOwotICAgICAgICBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIHVubGlua2Vk
Q29kZUJsb2NrID0gZGVjb2RlQ29kZUJsb2NrPFVubGlua2VkQ29kZUJsb2NrVHlwZT4odm0sIGtl
eSwgYnVmZmVyLCBzaXplKTsKLSAgICAgICAgbXVubWFwKGJ1ZmZlciwgc2l6ZSk7Ci0KLSAgICAg
ICAgaWYgKCF1bmxpbmtlZENvZGVCbG9jaykKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgICAgIFZFUkJPU0VfTE9HKCJGb3VuZCBjYWNoZWQgQ29kZUJsb2NrIG9uIGRpc2siKTsK
LSAgICAgICAgYWRkQ2FjaGUoa2V5LCBTb3VyY2VDb2RlVmFsdWUodm0sIHVubGlua2VkQ29kZUJs
b2NrLCBtX2FnZSwgdHJ1ZSkpOwotICAgICAgICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2s7Ci0j
ZWxzZQotICAgICAgICBVTlVTRURfUEFSQU0odm0pOwotICAgICAgICBVTlVTRURfUEFSQU0oa2V5
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVbmxpbmtlZENvZGVCbG9ja1R5cGU+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>