<?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>176186</bug_id>
          
          <creation_ts>2017-08-31 14:36:30 -0700</creation_ts>
          <short_desc>Allow classes to have modern and legacy decoders to aid transition</short_desc>
          <delta_ts>2017-09-27 12:47:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1344137</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-31 14:36:30 -0700</bug_when>
    <thetext>Allow classes to have modern and legacy decoders to aid transition</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344139</commentid>
    <comment_count>1</comment_count>
      <attachid>319524</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-31 14:39:37 -0700</bug_when>
    <thetext>Created attachment 319524
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344268</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-31 18:48:25 -0700</bug_when>
    <thetext>Could someone look into the linux build failures?  It looks like a bug in gcc or something, and I&apos;m not sure how to make a workaround.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344362</commentid>
    <comment_count>3</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-09-01 03:27:39 -0700</bug_when>
    <thetext>&gt; ../../Source/WebKit/Platform/IPC/ArgumentCoder.h:61:41: fatal error: template instantiation depth exceeds maximum of 900 (use -ftemplate-depth= to increase the maximum)
&gt; compilation terminated.

GCC bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344430</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-01 09:51:54 -0700</bug_when>
    <thetext>Well, I would like to commit this change so we can move forward.  Could someone on Linux find a workaround?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344520</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-09-01 12:28:58 -0700</bug_when>
    <thetext>Why do you think it is a compiler bug?

I can reproduce with GCC 7. Here is the error message I see:

In file included from ../../Source/WebKit/Platform/IPC/Decoder.h:28:0,
                 from ../../Source/WebKit/Platform/IPC/ArgumentCoders.h:28,
                 from ../../Source/WebKit/NetworkProcess/cache/CacheStorageEngineConnection.h:28,
                 from ../../Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:29,
                 from ../../Source/WebKit/NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:30:
../../Source/WebKit/Platform/IPC/ArgumentCoder.h: In substitution of ‘template&lt;class T&gt; static uint8_t IPC::UsesLegacyDecoder&lt;long unsigned int&gt;::checkArgumentCoder&lt;T&gt;(IPC::UsesLegacyDecoder&lt;long unsigned int&gt;::Helper&lt;bool (*)(IPC::Decoder&amp;, long unsigned int&amp;), (&amp; IPC::ArgumentCoder&lt;T&gt;::decode)&gt;*) [with T = long unsigned int]’:
../../Source/WebKit/Platform/IPC/ArgumentCoder.h:64:111:   required from ‘constexpr const bool IPC::UsesLegacyDecoder&lt;long unsigned int&gt;::value’
../../Source/WebKit/Platform/IPC/ArgumentCoder.h:95:79:   required by substitution of ‘template&lt;class U, std::enable_if_t&lt;IPC::UsesLegacyDecoder&lt;U&gt;::value, void&gt;* &lt;anonymous&gt; &gt; static bool IPC::ArgumentCoder&lt;long unsigned int&gt;::decode&lt;U, &lt;enumerator&gt; &gt;(IPC::Decoder&amp;, U&amp;) [with U = long unsigned int; std::enable_if_t&lt;IPC::UsesLegacyDecoder&lt;U&gt;::value, void&gt;* &lt;anonymous&gt; = &lt;missing&gt;]’
../../Source/WebKit/Platform/IPC/ArgumentCoder.h:61:41:   required by substitution of ‘template&lt;class T&gt; static uint8_t IPC::UsesLegacyDecoder&lt;long unsigned int&gt;::checkArgumentCoder&lt;T&gt;(IPC::UsesLegacyDecoder&lt;long unsigned int&gt;::Helper&lt;bool (*)(IPC::Decoder&amp;, long unsigned int&amp;), (&amp; IPC::ArgumentCoder&lt;T&gt;::decode)&gt;*) [with T = long unsigned int]’
../../Source/WebKit/Platform/IPC/ArgumentCoder.h:64:111:   required from ‘constexpr const bool IPC::UsesLegacyDecoder&lt;long unsigned int&gt;::value’
../../Source/WebKit/Platform/IPC/ArgumentCoder.h:95:79:   required by substitution of ‘template&lt;class U, std::enable_if_t&lt;IPC::UsesLegacyDecoder&lt;U&gt;::value, void&gt;* &lt;anonymous&gt; &gt; static bool IPC::ArgumentCoder&lt;long unsigned int&gt;::decode&lt;U, &lt;enumerator&gt; &gt;(IPC::Decoder&amp;, U&amp;) [with U = long unsigned int; std::enable_if_t&lt;IPC::UsesLegacyDecoder&lt;U&gt;::value, void&gt;* &lt;anonymous&gt; = &lt;missing&gt;]’
../../Source/WebKit/Platform/IPC/ArgumentCoder.h:61:41:   [ skipping 889 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
../../Source/WebKit/Platform/IPC/ArgumentCoder.h:64:111:   required from ‘constexpr const bool IPC::UsesLegacyDecoder&lt;long unsigned int&gt;::value’
../../Source/WebKit/Platform/IPC/ArgumentCoder.h:95:79:   required by substitution of ‘template&lt;class U, std::enable_if_t&lt;IPC::UsesLegacyDecoder&lt;U&gt;::value, void&gt;* &lt;anonymous&gt; &gt; static bool IPC::ArgumentCoder&lt;long unsigned int&gt;::decode&lt;U, &lt;enumerator&gt; &gt;(IPC::Decoder&amp;, U&amp;) [with U = long unsigned int; std::enable_if_t&lt;IPC::UsesLegacyDecoder&lt;U&gt;::value, void&gt;* &lt;anonymous&gt; = &lt;missing&gt;]’
../../Source/WebKit/Platform/IPC/ArgumentCoder.h:61:41:   required by substitution of ‘template&lt;class T&gt; static uint8_t IPC::UsesLegacyDecoder&lt;long unsigned int&gt;::checkArgumentCoder&lt;T&gt;(IPC::UsesLegacyDecoder&lt;long unsigned int&gt;::Helper&lt;bool (*)(IPC::Decoder&amp;, long unsigned int&amp;), (&amp; IPC::ArgumentCoder&lt;T&gt;::decode)&gt;*) [with T = long unsigned int]’
../../Source/WebKit/Platform/IPC/ArgumentCoder.h:64:111:   required from ‘constexpr const bool IPC::UsesLegacyDecoder&lt;long unsigned int&gt;::value’
../../Source/WebKit/Platform/IPC/Decoder.h:126:67:   required by substitution of ‘template&lt;class T, std::enable_if_t&lt;((! std::is_enum&lt;_Tp&gt;::value) &amp;&amp; IPC::UsesLegacyDecoder&lt;U&gt;::value)&gt;* &lt;anonymous&gt; &gt; bool IPC::Decoder::decode(T&amp;) [with T = long unsigned int; std::enable_if_t&lt;((! std::is_enum&lt;_Tp&gt;::value) &amp;&amp; IPC::UsesLegacyDecoder&lt;U&gt;::value)&gt;* &lt;anonymous&gt; = &lt;missing&gt;]’
../../Source/WebKit/Platform/IPC/Decoder.h:94:26:   required from here
../../Source/WebKit/Platform/IPC/ArgumentCoder.h:61:41: fatal error: template instantiation depth exceeds maximum of 900 (use -ftemplate-depth= to increase the maximum)
     template&lt;typename T&gt; static uint8_t checkArgumentCoder(Helper&lt;bool (*)(Decoder&amp;, U&amp;), &amp;ArgumentCoder&lt;T&gt;::decode&gt;*);
                                         ^~~~~~~~~~~~~~~~~~
compilation terminated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344527</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-01 12:37:13 -0700</bug_when>
    <thetext>This exact code works fine on clang.  It should not be making 889 instantiation contexts.  This is just sfinae.

The point of me cc&apos;ing linux folks is that we would like to move forward with landing this and we request someone on linux find a workaround to get this to compile so we don&apos;t have to break the linux build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344798</commentid>
    <comment_count>7</comment_count>
      <attachid>319714</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-09-02 06:14:49 -0700</bug_when>
    <thetext>Created attachment 319714
Proposed Linux fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344800</commentid>
    <comment_count>8</comment_count>
      <attachid>319714</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-09-02 06:34:26 -0700</bug_when>
    <thetext>Comment on attachment 319714
Proposed Linux fixes

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

&gt; Source/WebKit/Platform/IPC/ArgumentCoder.h:92
&gt; +    template&lt;typename U = T, std::enable_if_t&lt;UsesLegacyDecoder&lt;U&gt;::argumentCoderValue&gt;* = nullptr&gt;

The problem on GCC manifests because of how UsesLegacyDecoder&lt;U&gt;::value is computed. The checkArgumentCoder() function used in that computation tries to test the ArgumentCoder&lt;T&gt;::decode signature of whatever function is enabled through SFINAE, but on GCC that again requires computation of UsesLegacyDecoder&lt;U&gt;::value, and an infinite loop is entered until GCC breaks it by erring out of the compilation. I think UsesLegacyDecoder&lt;String&gt;::value wouldn&apos;t have that problem because of the added ArgumentCoder&lt;String&gt;::decode() overload.

This fix proposes only testing for the T::decode() signature when performing SFINAE for the generic ArgumentCoder&lt;T&gt;::decode() functions. This is done by adding the argumentCoderValue constexpr boolean to UsesModernDecoder and UsesLegacyDecoder classes. The helper DefaultDecoderValues class can be inherited from the UsesModernDecoder and UsesLegacyDecoder specializations that enforce specific encoders for a given type. This could be further simplified if UsesModernDecoder and UsesLegacyDecoder were merged into a single struct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345336</commentid>
    <comment_count>9</comment_count>
      <attachid>319876</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-04 21:53:33 -0700</bug_when>
    <thetext>Created attachment 319876
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345339</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-04 22:03:19 -0700</bug_when>
    <thetext>Thanks, Zan!
This is definitely one of the more interesting compiler quirks I&apos;ve ever seen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345503</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-05 10:33:25 -0700</bug_when>
    <thetext>http://trac.webkit.org/r221620</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353648</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:47:02 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693974&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319524</attachid>
            <date>2017-08-31 14:39:37 -0700</date>
            <delta_ts>2017-09-04 21:53:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176186-20170831143937.patch</filename>
            <type>text/plain</type>
            <size>7429</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjE0NDQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE3LTA4LTMxICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWxsb3cgY2xhc3Nl
cyB0byBoYXZlIG1vZGVybiBhbmQgbGVnYWN5IGRlY29kZXJzIHRvIGFpZCB0cmFuc2l0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYxODYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBpbGx1c3Ry
YXRlIHRoaXMsIEkgbWFkZSBsZWdhY3kgYW5kIG1vZGVybiBkZWNvZGVycyB0byBXVEY6OlN0cmlu
ZyBhbmQgdHJhbnNpdGlvbmVkIG9uZSBTdHJpbmcgZGVjb2Rlci4KKworICAgICAgICAqIFBsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50
Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTdHJpbmc+OjpkZWNvZGUp
OgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9EZWNvZGVyLmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUpOgorCiAyMDE3LTA4LTMxICBEYXZpZCBRdWVzYWRhICA8ZGF2aWRfcXVlc2FkYUBh
cHBsZS5jb20+CiAKICAgICAgICAgV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlIGNsaWVudCBy
ZWRpcmVjdCBTUEkgbmVlZHMgdG8gYmUgYWJsZSB0byBkZXRlY3QgcmVkaXJlY3RzIHNjaGVkdWxl
ZCBiZWZvcmUgdGhlIGRvY3VtZW50IGZpbmlzaGVzIGxvYWRpbmcKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgJKHJldmlzaW9uIDIyMTM5MSkKKysrIFNv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsMTkgKzI3LDYzIEBACiAKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAorbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgSW50Q29uc3RyYWludDsKK2NsYXNzIERvdWJsZUNvbnN0cmFp
bnQ7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworfQorCiBuYW1lc3BhY2UgSVBDIHsKIAogY2xh
c3MgRGVjb2RlcjsKIGNsYXNzIEVuY29kZXI7CiAKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjsKKwogdGVtcGxhdGU8dHlwZW5hbWUgVT4KIGNsYXNzIFVzZXNNb2Rlcm5E
ZWNvZGVyIHsKIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgVD4gc3RydWN0IEhl
bHBlcjsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdWludDhfdCBjaGVjayhIZWxw
ZXI8c3RkOjpvcHRpb25hbDxVPiAoKikoRGVjb2RlciYpLCAmVDo6ZGVjb2RlPiopOwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1aW50MTZfdCBjaGVjayguLi4pOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1aW50OF90IGNoZWNrQXJndW1lbnRDb2RlcihIZWxwZXI8
c3RkOjpvcHRpb25hbDxVPiAoKikoRGVjb2RlciYpLCAmQXJndW1lbnRDb2RlcjxUPjo6ZGVjb2Rl
PiopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1aW50MTZfdCBjaGVja0FyZ3Vt
ZW50Q29kZXIoLi4uKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUg
PSBzaXplb2YoY2hlY2s8VT4obnVsbHB0cikpID09IHNpemVvZih1aW50OF90KSB8fCBzaXplb2Yo
Y2hlY2tBcmd1bWVudENvZGVyPFU+KG51bGxwdHIpKSA9PSBzaXplb2YodWludDhfdCk7Cit9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorY2xhc3MgVXNlc0xlZ2FjeURlY29kZXIgeworcHJpdmF0
ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBUPiBzdHJ1Y3QgSGVscGVyOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1aW50OF90IGNoZWNrKEhlbHBlcjxib29sICgqKShEZWNv
ZGVyJiwgVSYpLCAmVDo6ZGVjb2RlPiopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRp
YyB1aW50MTZfdCBjaGVjayguLi4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1
aW50OF90IGNoZWNrQXJndW1lbnRDb2RlcihIZWxwZXI8Ym9vbCAoKikoRGVjb2RlciYsIFUmKSwg
JkFyZ3VtZW50Q29kZXI8VD46OmRlY29kZT4qKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dGF0aWMgdWludDE2X3QgY2hlY2tBcmd1bWVudENvZGVyKC4uLik7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIHZhbHVlID0gc2l6ZW9mKGNoZWNrPFU+KDApKSA9PSBzaXplb2Yo
dWludDhfdCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZhbHVlID0gc2l6ZW9mKGNoZWNr
PFU+KG51bGxwdHIpKSA9PSBzaXplb2YodWludDhfdCkgfHwgc2l6ZW9mKGNoZWNrQXJndW1lbnRD
b2RlcjxVPihudWxscHRyKSkgPT0gc2l6ZW9mKHVpbnQ4X3QpOworfTsKKworLy8gUmVzb3VyY2VS
ZXNwb25zZUJhc2UgaGFzIHRoZSBsZWdhY3kgZGVjb2RlIHRlbXBsYXRlLCBub3QgUmVzb3VyY2VS
ZXNwb25zZS4KK3RlbXBsYXRlPD4gY2xhc3MgVXNlc01vZGVybkRlY29kZXI8V2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZT4geworICAgIHB1YmxpYzogc3RhdGljIGNvbnN0ZXhwciBib29sIHZhbHVl
ID0gZmFsc2U7Cit9OwordGVtcGxhdGU8PiBjbGFzcyBVc2VzTGVnYWN5RGVjb2RlcjxXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlPiB7CisgICAgcHVibGljOiBzdGF0aWMgY29uc3RleHByIGJvb2wg
dmFsdWUgPSB0cnVlOworfTsKKworLy8gSW50Q29uc3RyYWludCBhbmQgRG91YmxlQ29uc3RyYWlu
dCBoYXZlIHRoZWlyIGxlZ2FjeSBkZWNvZGVyIHRlbXBsYXRlcyBpbiBOdW1lcmljQ29uc3RyYWlu
dC4KK3RlbXBsYXRlPD4gY2xhc3MgVXNlc01vZGVybkRlY29kZXI8V2ViQ29yZTo6SW50Q29uc3Ry
YWludD4geworICAgIHB1YmxpYzogc3RhdGljIGNvbnN0ZXhwciBib29sIHZhbHVlID0gZmFsc2U7
Cit9OwordGVtcGxhdGU8PiBjbGFzcyBVc2VzTGVnYWN5RGVjb2RlcjxXZWJDb3JlOjpJbnRDb25z
dHJhaW50PiB7CisgICAgcHVibGljOiBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSB0cnVl
OworfTsKK3RlbXBsYXRlPD4gY2xhc3MgVXNlc01vZGVybkRlY29kZXI8V2ViQ29yZTo6RG91Ymxl
Q29uc3RyYWludD4geworICAgIHB1YmxpYzogc3RhdGljIGNvbnN0ZXhwciBib29sIHZhbHVlID0g
ZmFsc2U7Cit9OwordGVtcGxhdGU8PiBjbGFzcyBVc2VzTGVnYWN5RGVjb2RlcjxXZWJDb3JlOjpE
b3VibGVDb25zdHJhaW50PiB7CisgICAgcHVibGljOiBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFs
dWUgPSB0cnVlOwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXIgewpAQCAtNDgsNyArOTIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1l
bnRDb2RlCiAgICAgICAgIHQuZW5jb2RlKGVuY29kZXIpOwogICAgIH0KIAotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFUgPSBULCBzdGQ6OmVuYWJsZV9pZl90PCFVc2VzTW9kZXJuRGVjb2RlcjxVPjo6
dmFsdWU+KiA9IG51bGxwdHI+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQsIHN0ZDo6ZW5h
YmxlX2lmX3Q8VXNlc0xlZ2FjeURlY29kZXI8VT46OnZhbHVlPiogPSBudWxscHRyPgogICAgIHN0
YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBVJiB1KQogICAgIHsKICAgICAgICAg
cmV0dXJuIFU6OmRlY29kZShkZWNvZGVyLCB1KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAJKHJldmlzaW9uIDIyMTM5MSkKKysrIFNvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTUzLDcgKzE1Myw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjpkZWNvZGUoRGVj
b2QKICAgICB9CiAKICAgICBib29sIGlzOEJpdDsKLQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aXM4Qml0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xNjIsNiArMTYxLDMxIEBAIGJv
b2wgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjpkZWNvZGUoRGVjb2QKICAgICByZXR1cm4gZGVjb2Rl
U3RyaW5nVGV4dDxVQ2hhcj4oZGVjb2RlciwgbGVuZ3RoLCByZXN1bHQpOwogfQogCitzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gQXJndW1lbnRDb2RlcjxTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3sKKyAgICB1aW50MzJfdCBsZW5ndGg7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShs
ZW5ndGgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIAorICAgIGlmIChsZW5n
dGggPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKSB7CisgICAgICAgIC8v
IFRoaXMgaXMgdGhlIG51bGwgc3RyaW5nLgorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAg
fQorICAgIAorICAgIGJvb2wgaXM4Qml0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXM4Qml0
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAKKyAgICBTdHJpbmcgcmVzdWx0
OworICAgIGlmIChpczhCaXQpIHsKKyAgICAgICAgaWYgKCFkZWNvZGVTdHJpbmdUZXh0PExDaGFy
PihkZWNvZGVyLCBsZW5ndGgsIHJlc3VsdCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBpZiAoIWRlY29kZVN0cmlu
Z1RleHQ8VUNoYXI+KGRlY29kZXIsIGxlbmd0aCwgcmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gcmVzdWx0OworfQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8
U0hBMTo6RGlnZXN0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNIQTE6OkRpZ2Vz
dCYgZGlnZXN0KQogewpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRD
b2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVycy5oCShyZXZpc2lvbiAyMjEzOTEpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Bcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDYsNiArNDQ2LDcgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxDU3RyaW5nPgogdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxTdHJpbmc+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYs
IGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgU3RyaW5n
Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkZWNvZGUoRGVjb2RlciYpOwog
fTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTSEExOjpEaWdlc3Q+IHsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgJKHJldmlzaW9uIDIyMTM5MSkKKysr
IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJ1ZmZlcklzTGFyZ2VFbm91
Z2hUb0NvbnRhaW4oYWxpZ25vZihUKSwgbnVtRWxlbWVudHMgKiBzaXplb2YoVCkpOwogICAgIH0K
IAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51
bTxUPjo6dmFsdWUgJiYgIVVzZXNNb2Rlcm5EZWNvZGVyPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08
VD46OnZhbHVlICYmIFVzZXNMZWdhY3lEZWNvZGVyPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAg
ICBib29sIGRlY29kZShUJiB0KQogICAgIHsKICAgICAgICAgcmV0dXJuIEFyZ3VtZW50Q29kZXI8
VD46OmRlY29kZSgqdGhpcywgdCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjIxMzkxKQorKysgU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0NCw4ICsxNDQsMTEgQEAgc3RkOjpvcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzPgogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy5wYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
dXNlckFnZW50KSkKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdXNlckFnZW50OworICAgIGRl
Y29kZXIgPj4gdXNlckFnZW50OworICAgIGlmICghdXNlckFnZW50KQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMudXNlckFnZW50ID0gV1RGTW92ZSgqdXNlckFn
ZW50KTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuaXRlbVN0YXRlcykpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLnNlc3Npb25JRCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319714</attachid>
            <date>2017-09-02 06:14:49 -0700</date>
            <delta_ts>2017-09-04 21:53:31 -0700</delta_ts>
            <desc>Proposed Linux fixes</desc>
            <filename>argumentcoder.patch</filename>
            <type>text/plain</type>
            <size>4044</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAppbmRleCBmODFjYzM5
Mzc3OC4uNWFiMDhhZmNhNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVyLmgKQEAgLTQ5LDcgKzQ5LDggQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdGF0aWMgdWludDhfdCBjaGVja0FyZ3VtZW50Q29kZXIoSGVscGVyPHN0ZDo6b3B0aW9u
YWw8VT4gKCopKERlY29kZXImKSwgJkFyZ3VtZW50Q29kZXI8VD46OmRlY29kZT4qKTsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdWludDE2X3QgY2hlY2tBcmd1bWVudENvZGVyKC4u
Lik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZhbHVlID0gc2l6ZW9mKGNo
ZWNrPFU+KG51bGxwdHIpKSA9PSBzaXplb2YodWludDhfdCkgfHwgc2l6ZW9mKGNoZWNrQXJndW1l
bnRDb2RlcjxVPihudWxscHRyKSkgPT0gc2l6ZW9mKHVpbnQ4X3QpOworICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBhcmd1bWVudENvZGVyVmFsdWUgPSBzaXplb2YoY2hlY2s8VT4obnVsbHB0cikp
ID09IHNpemVvZih1aW50OF90KTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSBh
cmd1bWVudENvZGVyVmFsdWUgfHwgc2l6ZW9mKGNoZWNrQXJndW1lbnRDb2RlcjxVPihudWxscHRy
KSkgPT0gc2l6ZW9mKHVpbnQ4X3QpOwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVT4KQEAgLTYx
LDMwICs2MiwyNiBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1
aW50OF90IGNoZWNrQXJndW1lbnRDb2RlcihIZWxwZXI8Ym9vbCAoKikoRGVjb2RlciYsIFUmKSwg
JkFyZ3VtZW50Q29kZXI8VD46OmRlY29kZT4qKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dGF0aWMgdWludDE2X3QgY2hlY2tBcmd1bWVudENvZGVyKC4uLik7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIHZhbHVlID0gc2l6ZW9mKGNoZWNrPFU+KG51bGxwdHIpKSA9PSBz
aXplb2YodWludDhfdCkgfHwgc2l6ZW9mKGNoZWNrQXJndW1lbnRDb2RlcjxVPihudWxscHRyKSkg
PT0gc2l6ZW9mKHVpbnQ4X3QpOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBhcmd1bWVudENv
ZGVyVmFsdWUgPSBzaXplb2YoY2hlY2s8VT4obnVsbHB0cikpID09IHNpemVvZih1aW50OF90KTsK
KyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSBhcmd1bWVudENvZGVyVmFsdWUgfHwg
c2l6ZW9mKGNoZWNrQXJndW1lbnRDb2RlcjxVPihudWxscHRyKSkgPT0gc2l6ZW9mKHVpbnQ4X3Qp
OwogfTsKIAotLy8gUmVzb3VyY2VSZXNwb25zZUJhc2UgaGFzIHRoZSBsZWdhY3kgZGVjb2RlIHRl
bXBsYXRlLCBub3QgUmVzb3VyY2VSZXNwb25zZS4KLXRlbXBsYXRlPD4gY2xhc3MgVXNlc01vZGVy
bkRlY29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZT4gewotICAgIHB1YmxpYzogc3RhdGlj
IGNvbnN0ZXhwciBib29sIHZhbHVlID0gZmFsc2U7Ci19OwotdGVtcGxhdGU8PiBjbGFzcyBVc2Vz
TGVnYWN5RGVjb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlPiB7Ci0gICAgcHVibGljOiBz
dGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSB0cnVlOwordGVtcGxhdGU8dHlwZW5hbWUgQm9v
bFR5cGU+CitjbGFzcyBEZWZhdWx0RGVjb2RlclZhbHVlcyB7CitwdWJsaWM6CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGFyZ3VtZW50Q29kZXJWYWx1ZSA9IEJvb2xUeXBlOjp2YWx1ZTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSBCb29sVHlwZTo6dmFsdWU7CiB9OwogCisv
LyBSZXNvdXJjZVJlc3BvbnNlQmFzZSBoYXMgdGhlIGxlZ2FjeSBkZWNvZGUgdGVtcGxhdGUsIG5v
dCBSZXNvdXJjZVJlc3BvbnNlLgordGVtcGxhdGU8PiBjbGFzcyBVc2VzTW9kZXJuRGVjb2RlcjxX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlPiA6IHB1YmxpYyBEZWZhdWx0RGVjb2RlclZhbHVlczxz
dGQ6OmZhbHNlX3R5cGU+IHsgfTsKK3RlbXBsYXRlPD4gY2xhc3MgVXNlc0xlZ2FjeURlY29kZXI8
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZT4gOiBwdWJsaWMgRGVmYXVsdERlY29kZXJWYWx1ZXM8
c3RkOjp0cnVlX3R5cGU+IHsgfTsKKwogLy8gSW50Q29uc3RyYWludCBhbmQgRG91YmxlQ29uc3Ry
YWludCBoYXZlIHRoZWlyIGxlZ2FjeSBkZWNvZGVyIHRlbXBsYXRlcyBpbiBOdW1lcmljQ29uc3Ry
YWludC4KLXRlbXBsYXRlPD4gY2xhc3MgVXNlc01vZGVybkRlY29kZXI8V2ViQ29yZTo6SW50Q29u
c3RyYWludD4gewotICAgIHB1YmxpYzogc3RhdGljIGNvbnN0ZXhwciBib29sIHZhbHVlID0gZmFs
c2U7Ci19OwotdGVtcGxhdGU8PiBjbGFzcyBVc2VzTGVnYWN5RGVjb2RlcjxXZWJDb3JlOjpJbnRD
b25zdHJhaW50PiB7Ci0gICAgcHVibGljOiBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSB0
cnVlOwotfTsKLXRlbXBsYXRlPD4gY2xhc3MgVXNlc01vZGVybkRlY29kZXI8V2ViQ29yZTo6RG91
YmxlQ29uc3RyYWludD4gewotICAgIHB1YmxpYzogc3RhdGljIGNvbnN0ZXhwciBib29sIHZhbHVl
ID0gZmFsc2U7Ci19OwotdGVtcGxhdGU8PiBjbGFzcyBVc2VzTGVnYWN5RGVjb2RlcjxXZWJDb3Jl
OjpEb3VibGVDb25zdHJhaW50PiB7Ci0gICAgcHVibGljOiBzdGF0aWMgY29uc3RleHByIGJvb2wg
dmFsdWUgPSB0cnVlOwotfTsKK3RlbXBsYXRlPD4gY2xhc3MgVXNlc01vZGVybkRlY29kZXI8V2Vi
Q29yZTo6SW50Q29uc3RyYWludD4gOiBwdWJsaWMgRGVmYXVsdERlY29kZXJWYWx1ZXM8c3RkOjpm
YWxzZV90eXBlPiB7IH07Cit0ZW1wbGF0ZTw+IGNsYXNzIFVzZXNMZWdhY3lEZWNvZGVyPFdlYkNv
cmU6OkludENvbnN0cmFpbnQ+IDogcHVibGljIERlZmF1bHREZWNvZGVyVmFsdWVzPHN0ZDo6dHJ1
ZV90eXBlPiB7IH07Cit0ZW1wbGF0ZTw+IGNsYXNzIFVzZXNNb2Rlcm5EZWNvZGVyPFdlYkNvcmU6
OkRvdWJsZUNvbnN0cmFpbnQ+IDogcHVibGljIERlZmF1bHREZWNvZGVyVmFsdWVzPHN0ZDo6ZmFs
c2VfdHlwZT4geyB9OwordGVtcGxhdGU8PiBjbGFzcyBVc2VzTGVnYWN5RGVjb2RlcjxXZWJDb3Jl
OjpEb3VibGVDb25zdHJhaW50PiA6IHB1YmxpYyBEZWZhdWx0RGVjb2RlclZhbHVlczxzdGQ6OnRy
dWVfdHlwZT4geyB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
ciB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFQmIHQp
CkBAIC05MiwxMyArODksMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50
Q29kZXIgewogICAgICAgICB0LmVuY29kZShlbmNvZGVyKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVID0gVCwgc3RkOjplbmFibGVfaWZfdDxVc2VzTGVnYWN5RGVjb2RlcjxVPjo6
dmFsdWU+KiA9IG51bGxwdHI+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQsIHN0ZDo6ZW5h
YmxlX2lmX3Q8VXNlc0xlZ2FjeURlY29kZXI8VT46OmFyZ3VtZW50Q29kZXJWYWx1ZT4qID0gbnVs
bHB0cj4KICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVSYgdSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBVOjpkZWNvZGUoZGVjb2RlciwgdSk7CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8VXNlc01vZGVybkRlY29k
ZXI8VT46OnZhbHVlPiogPSBudWxscHRyPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBULCBz
dGQ6OmVuYWJsZV9pZl90PFVzZXNNb2Rlcm5EZWNvZGVyPFU+Ojphcmd1bWVudENvZGVyVmFsdWU+
KiA9IG51bGxwdHI+CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VT4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgewogICAgICAgICByZXR1cm4gVTo6ZGVjb2RlKGRlY29kZXIpOwoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319876</attachid>
            <date>2017-09-04 21:53:33 -0700</date>
            <delta_ts>2017-09-04 22:02:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176186-20170904215332.patch</filename>
            <type>text/plain</type>
            <size>7985</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjE1MDMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE3LTA5LTA0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWxsb3cgY2xhc3Nl
cyB0byBoYXZlIG1vZGVybiBhbmQgbGVnYWN5IGRlY29kZXJzIHRvIGFpZCB0cmFuc2l0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYxODYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBaYW4gRG9iZXJzZWsuCisKKyAgICAgICAgVG8gaWxsdXN0cmF0
ZSB0aGlzLCBJIG1hZGUgbGVnYWN5IGFuZCBtb2Rlcm4gZGVjb2RlcnMgdG8gV1RGOjpTdHJpbmcg
YW5kIHRyYW5zaXRpb25lZCBvbmUgU3RyaW5nIGRlY29kZXIuCisKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvQXJndW1lbnRDb2Rlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZGVjb2RlKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvRGVjb2Rlci5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKToKKwogMjAxNy0wOS0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBXS1VJRGVsZWdhdGVQcml2YXRlIGVxdWl2YWxlbnQg
b2YgV0tQYWdlVUlDbGllbnQncyB0b29sYmFyc0FyZVZpc2libGUKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgJKHJldmlzaW9uIDIyMTQ2NykKKysrIFNv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsMzQgKzI3LDc1IEBACiAKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAorbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgSW50Q29uc3RyYWludDsKK2NsYXNzIERvdWJsZUNvbnN0cmFp
bnQ7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworfQorCiBuYW1lc3BhY2UgSVBDIHsKIAogY2xh
c3MgRGVjb2RlcjsKIGNsYXNzIEVuY29kZXI7CiAKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjsKKwogdGVtcGxhdGU8dHlwZW5hbWUgVT4KIGNsYXNzIFVzZXNNb2Rlcm5E
ZWNvZGVyIHsKIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgVD4gc3RydWN0IEhl
bHBlcjsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdWludDhfdCBjaGVjayhIZWxw
ZXI8c3RkOjpvcHRpb25hbDxVPiAoKikoRGVjb2RlciYpLCAmVDo6ZGVjb2RlPiopOwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1aW50MTZfdCBjaGVjayguLi4pOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1aW50OF90IGNoZWNrQXJndW1lbnRDb2RlcihIZWxwZXI8
c3RkOjpvcHRpb25hbDxVPiAoKikoRGVjb2RlciYpLCAmQXJndW1lbnRDb2RlcjxUPjo6ZGVjb2Rl
PiopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1aW50MTZfdCBjaGVja0FyZ3Vt
ZW50Q29kZXIoLi4uKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgYXJndW1l
bnRDb2RlclZhbHVlID0gc2l6ZW9mKGNoZWNrPFU+KG51bGxwdHIpKSA9PSBzaXplb2YodWludDhf
dCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZhbHVlID0gYXJndW1lbnRDb2RlclZhbHVl
IHx8IHNpemVvZihjaGVja0FyZ3VtZW50Q29kZXI8VT4obnVsbHB0cikpID09IHNpemVvZih1aW50
OF90KTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFU+CitjbGFzcyBVc2VzTGVnYWN5RGVjb2Rl
ciB7Citwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIFQ+IHN0cnVjdCBIZWxwZXI7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHVpbnQ4X3QgY2hlY2soSGVscGVyPGJv
b2wgKCopKERlY29kZXImLCBVJiksICZUOjpkZWNvZGU+Kik7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RhdGljIHVpbnQxNl90IGNoZWNrKC4uLik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RhdGljIHVpbnQ4X3QgY2hlY2tBcmd1bWVudENvZGVyKEhlbHBlcjxib29sICgqKShEZWNv
ZGVyJiwgVSYpLCAmQXJndW1lbnRDb2RlcjxUPjo6ZGVjb2RlPiopOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0YXRpYyB1aW50MTZfdCBjaGVja0FyZ3VtZW50Q29kZXIoLi4uKTsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSBzaXplb2YoY2hlY2s8VT4oMCkp
ID09IHNpemVvZih1aW50OF90KTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgYXJndW1lbnRD
b2RlclZhbHVlID0gc2l6ZW9mKGNoZWNrPFU+KG51bGxwdHIpKSA9PSBzaXplb2YodWludDhfdCk7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZhbHVlID0gYXJndW1lbnRDb2RlclZhbHVlIHx8
IHNpemVvZihjaGVja0FyZ3VtZW50Q29kZXI8VT4obnVsbHB0cikpID09IHNpemVvZih1aW50OF90
KTsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEJvb2xUeXBlPgorY2xhc3MgRGVmYXVsdERlY29k
ZXJWYWx1ZXMgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBhcmd1bWVudENv
ZGVyVmFsdWUgPSBCb29sVHlwZTo6dmFsdWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZh
bHVlID0gQm9vbFR5cGU6OnZhbHVlOworfTsKKworLy8gUmVzb3VyY2VSZXNwb25zZUJhc2UgaGFz
IHRoZSBsZWdhY3kgZGVjb2RlIHRlbXBsYXRlLCBub3QgUmVzb3VyY2VSZXNwb25zZS4KK3RlbXBs
YXRlPD4gY2xhc3MgVXNlc01vZGVybkRlY29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZT4g
OiBwdWJsaWMgRGVmYXVsdERlY29kZXJWYWx1ZXM8c3RkOjpmYWxzZV90eXBlPiB7IH07Cit0ZW1w
bGF0ZTw+IGNsYXNzIFVzZXNMZWdhY3lEZWNvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U+
IDogcHVibGljIERlZmF1bHREZWNvZGVyVmFsdWVzPHN0ZDo6dHJ1ZV90eXBlPiB7IH07CisKKy8v
IEludENvbnN0cmFpbnQgYW5kIERvdWJsZUNvbnN0cmFpbnQgaGF2ZSB0aGVpciBsZWdhY3kgZGVj
b2RlciB0ZW1wbGF0ZXMgaW4gTnVtZXJpY0NvbnN0cmFpbnQuCit0ZW1wbGF0ZTw+IGNsYXNzIFVz
ZXNNb2Rlcm5EZWNvZGVyPFdlYkNvcmU6OkludENvbnN0cmFpbnQ+IDogcHVibGljIERlZmF1bHRE
ZWNvZGVyVmFsdWVzPHN0ZDo6ZmFsc2VfdHlwZT4geyB9OwordGVtcGxhdGU8PiBjbGFzcyBVc2Vz
TGVnYWN5RGVjb2RlcjxXZWJDb3JlOjpJbnRDb25zdHJhaW50PiA6IHB1YmxpYyBEZWZhdWx0RGVj
b2RlclZhbHVlczxzdGQ6OnRydWVfdHlwZT4geyB9OwordGVtcGxhdGU8PiBjbGFzcyBVc2VzTW9k
ZXJuRGVjb2RlcjxXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50PiA6IHB1YmxpYyBEZWZhdWx0RGVj
b2RlclZhbHVlczxzdGQ6OmZhbHNlX3R5cGU+IHsgfTsKK3RlbXBsYXRlPD4gY2xhc3MgVXNlc0xl
Z2FjeURlY29kZXI8V2ViQ29yZTo6RG91YmxlQ29uc3RyYWludD4gOiBwdWJsaWMgRGVmYXVsdERl
Y29kZXJWYWx1ZXM8c3RkOjp0cnVlX3R5cGU+IHsgfTsKKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IEFyZ3VtZW50Q29kZXIgewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBUJiB0KQogICAgIHsKICAgICAgICAgdC5lbmNvZGUoZW5jb2Rlcik7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IVVz
ZXNNb2Rlcm5EZWNvZGVyPFU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVID0gVCwgc3RkOjplbmFibGVfaWZfdDxVc2VzTGVnYWN5RGVjb2RlcjxVPjo6YXJndW1l
bnRDb2RlclZhbHVlPiogPSBudWxscHRyPgogICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBVJiB1KQogICAgIHsKICAgICAgICAgcmV0dXJuIFU6OmRlY29kZShkZWNvZGVy
LCB1KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVCwgc3RkOjplbmFibGVf
aWZfdDxVc2VzTW9kZXJuRGVjb2RlcjxVPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVSA9IFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8VXNlc01vZGVybkRlY29kZXI8VT46
OmFyZ3VtZW50Q29kZXJWYWx1ZT4qID0gbnVsbHB0cj4KICAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxVPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAgICAgICAgIHJldHVybiBVOjpk
ZWNvZGUoZGVjb2Rlcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJn
dW1lbnRDb2RlcnMuY3BwCShyZXZpc2lvbiAyMjE0NjcpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsxNTMs
NiBAQCBib29sIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZGVjb2RlKERlY29kCiAgICAgfQogCiAg
ICAgYm9vbCBpczhCaXQ7Ci0KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzOEJpdCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTYyLDYgKzE2MSwzMSBAQCBib29sIEFyZ3VtZW50Q29k
ZXI8U3RyaW5nPjo6ZGVjb2RlKERlY29kCiAgICAgcmV0dXJuIGRlY29kZVN0cmluZ1RleHQ8VUNo
YXI+KGRlY29kZXIsIGxlbmd0aCwgcmVzdWx0KTsKIH0KIAorc3RkOjpvcHRpb25hbDxTdHJpbmc+
IEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAg
dWludDMyX3QgbGVuZ3RoOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGVuZ3RoKSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAKKyAgICBpZiAobGVuZ3RoID09IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkgeworICAgICAgICAvLyBUaGlzIGlzIHRoZSBu
dWxsIHN0cmluZy4KKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KKyAgICAKKyAgICBi
b29sIGlzOEJpdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzOEJpdCkpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgU3RyaW5nIHJlc3VsdDsKKyAgICBpZiAoaXM4
Qml0KSB7CisgICAgICAgIGlmICghZGVjb2RlU3RyaW5nVGV4dDxMQ2hhcj4oZGVjb2RlciwgbGVu
Z3RoLCByZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgaWYgKCFkZWNvZGVTdHJpbmdUZXh0PFVDaGFyPihk
ZWNvZGVyLCBsZW5ndGgsIHJlc3VsdCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KIAogdm9pZCBBcmd1bWVudENvZGVyPFNIQTE6OkRpZ2VzdD46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTSEExOjpEaWdlc3QmIGRpZ2VzdCkKIHsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAkocmV2
aXNpb24gMjIxNDY3KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rl
cnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDQ2LDYgKzQ0Niw3IEBAIHRlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8Q1N0cmluZz4KIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
U3RyaW5nPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBTdHJpbmcm
KTsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFN0cmluZyYpOworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8U0hBMTo6RGlnZXN0PiB7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRGVjb2Rlci5oCShyZXZpc2lvbiAyMjE0NjcpCisrKyBTb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw3ICsxMjMsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKGFs
aWdub2YoVCksIG51bUVsZW1lbnRzICogc2l6ZW9mKFQpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08VD46OnZhbHVlICYm
ICFVc2VzTW9kZXJuRGVjb2RlcjxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSAmJiBV
c2VzTGVnYWN5RGVjb2RlcjxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgYm9vbCBkZWNvZGUo
VCYgdCkKICAgICB7CiAgICAgICAgIHJldHVybiBBcmd1bWVudENvZGVyPFQ+OjpkZWNvZGUoKnRo
aXMsIHQpOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDIyMTQ2NykKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQs
OCArMTQ0LDExIEBAIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4KICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMucGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVzZXJBZ2VudCkpCisg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHVzZXJBZ2VudDsKKyAgICBkZWNvZGVyID4+IHVzZXJB
Z2VudDsKKyAgICBpZiAoIXVzZXJBZ2VudCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICBwYXJhbWV0ZXJzLnVzZXJBZ2VudCA9IFdURk1vdmUoKnVzZXJBZ2VudCk7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLml0ZW1TdGF0ZXMpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zZXNzaW9u
SUQpKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>