<?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>174438</bug_id>
          
          <creation_ts>2017-07-12 15:54:45 -0700</creation_ts>
          <short_desc>Add script to rebase patches during the WebKit2-&gt;WebKit/WebKit-&gt;WebKitLegacy transition</short_desc>
          <delta_ts>2017-07-14 08:09:29 -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>Tools / Tests</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="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>dbates</cc>
    
    <cc>lforschler</cc>
    
    <cc>matthew_hanson</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1328257</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-07-12 15:54:45 -0700</bug_when>
    <thetext>We need a script to rebase patches during the WebKit2-&gt;WebKit/WebKit-&gt;WebKitLegacy transition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328258</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-07-12 15:55:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/33277112&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328264</commentid>
    <comment_count>2</comment_count>
      <attachid>315296</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-07-12 15:58:58 -0700</bug_when>
    <thetext>Created attachment 315296
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328323</commentid>
    <comment_count>3</comment_count>
      <attachid>315296</attachid>
    <who name="Matthew Hanson">matthew_hanson</who>
    <bug_when>2017-07-12 17:29:45 -0700</bug_when>
    <thetext>Comment on attachment 315296
Patch

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

Looks good to me pending successful tests cases for the most likely scenarios:
1. Patch that has not been rebased but touches WebKit (now WebKitLegacy)
2. Patch that has not been rebased but touches WebKit2 (now WebKit)
3. Patch that has not been rebased but touches both WebKit (now WebKitLegacy) and WebKIt2 (now WebKit)
4. Already rebased patch

&gt; Tools/Scripts/rebase-patch-after-webkit-move:35
&gt; +

Please include two lines between above function definitions.

&gt; Tools/Scripts/rebase-patch-after-webkit-move:44
&gt; +

I think that your approach is very clear.

I have two comments:
1. Is the lack of space after &apos;+++&apos; intentional? The first two cases have trailing spaces.
2. Functional techniques provide an elegant solution for this type of problem if the scope is larger. This function could be written as:

def is_editable_line(line):
    editable_prefixes = (&apos;Index: &apos;, &apos;--- &apos;, &apos;+++&apos;)
    return any(map(line.startswith, editable_prefixes))

&gt; Tools/Scripts/rebase-patch-after-webkit-move:52
&gt; +            return ALREADY_REBASED

It would be good to call out that the `not in REBASE_DICTIONARY` check accounts for rebased paths that contain Source/WebKit (which could be either a source or a destination).

Ditto for current paths below.

&gt; Tools/Scripts/rebase-patch-after-webkit-move:60
&gt; +        if os.path.join(&apos;Source&apos;, current_name) in line:

The `os.path.join(&apos;Source, foo) in line` idiom is repeated a lot. I think a function would make it even easier to read.

&gt; Tools/Scripts/rebase-patch-after-webkit-move:81
&gt; +

I would like to see an isolated function parse the command line inputs / stdin and for this function to simply take the lines. Perhaps you could pass in a source keyword argument as well.

&gt; Tools/Scripts/rebase-patch-after-webkit-move:89
&gt; +            rebase_status = line_status

You could rewrite this phrase as:

rebase_status = max(rebase_status, line_status)

&gt; Tools/Scripts/rebase-patch-after-webkit-move:97
&gt; +

I&apos;m tempted to suggest forcing input to stdin. That way you avoid situations like this where you are implicitly doing nothing for files.

&gt; Tools/Scripts/rebase-patch-after-webkit-move:100
&gt; +

Perhaps we could prompt instead of always rebasing?

Or check for the existence of the existing paths?

&gt; Tools/Scripts/rebase-patch-after-webkit-move:110
&gt; +

I suggest embedding your top-level script in a block like this:

if __name__ == &apos;__main__&apos;:
    ....

This prevents your script from running if it is ever imported as a module. That shouldn&apos;t happen here, but could easily happen if unit tests were ever added, for example.

&gt; Tools/Scripts/rebase-patch-after-webkit-move:124
&gt; +    exit(0)

It&apos;s not necessary for this script, but you should look into the argparse module the next time you need to parse arguments from the command line.

&gt; Tools/Scripts/rebase-patch-after-webkit-move:126
&gt; +if len(files_to_rebase) == 0:

You can just write:

if files_to_rebase:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328428</commentid>
    <comment_count>4</comment_count>
      <attachid>315296</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-07-13 07:10:19 -0700</bug_when>
    <thetext>Comment on attachment 315296
Patch

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

&gt;&gt; Tools/Scripts/rebase-patch-after-webkit-move:81
&gt;&gt; +
&gt; 
&gt; I would like to see an isolated function parse the command line inputs / stdin and for this function to simply take the lines. Perhaps you could pass in a source keyword argument as well.

This is going to render your comment on line 97 moot.

&gt;&gt; Tools/Scripts/rebase-patch-after-webkit-move:124
&gt;&gt; +    exit(0)
&gt; 
&gt; It&apos;s not necessary for this script, but you should look into the argparse module the next time you need to parse arguments from the command line.

I&apos;m aware of argparse.  I figured that given the simplicity of this script, it was better to just manually parse them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328429</commentid>
    <comment_count>5</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-07-13 07:19:28 -0700</bug_when>
    <thetext>(In reply to Matthew Hanson from comment #3)
&gt; Comment on attachment 315296 [details]
&gt; Patch

I have comments on each of your 4 cases.
 
&gt; Looks good to me pending successful tests cases for the most likely
&gt; scenarios:
&gt; 1. Patch that has not been rebased but touches WebKit (now WebKitLegacy)

This is the complicated case.  In this instance, we can&apos;t tell if the patch has already been rebased (ie, those paths were originally WebKit2).  As I mention in my response to #4, I like the idea of prompting the user, but that will only work for files.

&gt; 2. Patch that has not been rebased but touches WebKit2 (now WebKit)

Definitely works.  These patches will trigger the NEED_REBASE code path.

&gt; 3. Patch that has not been rebased but touches both WebKit (now
&gt; WebKitLegacy) and WebKIt2 (now WebKit)

Definitely works.  Like situation 2, this type of patch will trigger the NEED_REBASE code path.

&gt; 4. Already rebased patch

If the patch contains WebKitLegacy, it will trigger the DO_NOT_NEED_REBASE path.  This is the same path triggered by a patch which does not contain WebKit or WebKit2 in it.

If, however, the patch only contains WebKit in it, we are in the same situation as #1.  I think your suggestion to prompt is a good one, although, we can&apos;t prompt if the file was passed through stdin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328444</commentid>
    <comment_count>6</comment_count>
      <attachid>315347</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-07-13 08:41:05 -0700</bug_when>
    <thetext>Created attachment 315347
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328517</commentid>
    <comment_count>7</comment_count>
      <attachid>315361</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-07-13 11:26:38 -0700</bug_when>
    <thetext>Created attachment 315361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328518</commentid>
    <comment_count>8</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-07-13 11:27:00 -0700</bug_when>
    <thetext>Needed to add support for git-svn patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328583</commentid>
    <comment_count>9</comment_count>
      <attachid>315378</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-07-13 15:34:46 -0700</bug_when>
    <thetext>Created attachment 315378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328605</commentid>
    <comment_count>10</comment_count>
      <attachid>315384</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-07-13 16:58:09 -0700</bug_when>
    <thetext>Created attachment 315384
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328608</commentid>
    <comment_count>11</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-07-13 17:20:13 -0700</bug_when>
    <thetext>Committed r219477: &lt;http://trac.webkit.org/changeset/219477&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328649</commentid>
    <comment_count>12</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-07-13 19:44:24 -0700</bug_when>
    <thetext>While I like the idea of behind this script historically we have used svn-apply to do such migrations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328652</commentid>
    <comment_count>13</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-07-13 19:50:25 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #12)
&gt; While I like the idea of behind this script historically we have used
&gt; svn-apply to do such migrations.

To elaborate further the reason we use svn-apply to do such migrations is because svn-apply familiar to those that use a SVN checkout of WebKit, is used by the EWS bots, commit queue, and webkit-patch. This has the benefit that patches posted to Bugzilla pre-migration can be migrated by the commit queue on landing among other benefits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328754</commentid>
    <comment_count>14</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-07-14 08:09:29 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #13)
&gt; (In reply to Daniel Bates from comment #12)
&gt; &gt; While I like the idea of behind this script historically we have used
&gt; &gt; svn-apply to do such migrations.
&gt; 
&gt; To elaborate further the reason we use svn-apply to do such migrations is
&gt; because svn-apply familiar to those that use a SVN checkout of WebKit, is
&gt; used by the EWS bots, commit queue, and webkit-patch. This has the benefit
&gt; that patches posted to Bugzilla pre-migration can be migrated by the commit
&gt; queue on landing among other benefits.

I had considered using SVN apply to do this, but the trouble is, since this is a double move, it&apos;s very easy to construct a patch where the script cannot know if it has already been rebased.  Any patch with a &apos;Source/WebKit/...&apos; path in it may require a rebase, or it may not.  Since we can&apos;t prompt the user on bots, I decided a temporary stand-alone script would be best in this case.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315296</attachid>
            <date>2017-07-12 15:58:58 -0700</date>
            <delta_ts>2017-07-13 08:41:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174438-20170712155857.patch</filename>
            <type>text/plain</type>
            <size>6942</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxOTQyOSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE5IEBACisyMDE3LTA3LTEyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgc2NyaXB0IHRvIHJlYmFzZSBwYXRjaGVzIGR1cmluZyB0aGUgV2Vi
S2l0Mi0+V2ViS2l0L1dlYktpdC0+V2ViS2l0TGVnYWN5IHRhbnNpdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NDM4CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8zMzI3NzExMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBHaXZlbiBhIHBhdGNoLCB0aGlzIHdpbGwgY29udmVydCB0aGUgY2hhbmdl
cyBmcm9tIHRoZSBwYXRoIHRvIHRoZSBuZXcgZGlyZWN0b3J5IHN0cnVjdHVyZS4KKworICAgICAg
ICAqIFNjcmlwdHMvcmViYXNlLXBhdGNoLWFmdGVyLXdlYmtpdC1tb3ZlOiBBZGRlZC4KKyAgICAg
ICAgKGlzX2VkaXRhYmxlX2xpbmUpOiBSZXR1cm4gdHJ1ZSBpZiBhIGxpbmUgdGhlIHNjcmlwdCBl
eHBlY3RzIHRvIG1vZGlmeS4KKyAgICAgICAgKG5lZWRzX3JlYmFzZSk6IFJldHVybiBpZiBhIGxp
bmUgbmVlZHMgdG8gYmUgcmViYXNlZCBiYXNlZCBvbiBpdCdzIGNvbnRlbnQuCisgICAgICAgIChy
ZWJhc2VfbGluZSk6IFJlYmFzZSB0aGUgcHJvdmlkZWQgbGluZS4KKyAgICAgICAgKHJlYmFzZSk6
IFJlYmFzZSBhIHBhdGNoIGdpdmVuIGEgcGF0aCB0byB0aGF0IHBhdGNoLgorCiAyMDE3LTA3LTEy
ICBOYW4gV2FuZyAgPG5fd2FuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IFtpT1NdIEltcGxl
bWVudCBhIHdheSB0byByZXRyaWV2ZSBhIHRleHQgbWFya2VyIHJhbmdlIHdpdGggZGVzaXJlZCB0
ZXh0IHRoYXQgaXMgY2xvc2VzdCB0byBhIHBvc2l0aW9uCkluZGV4OiBUb29scy9TY3JpcHRzL3Jl
YmFzZS1wYXRjaC1hZnRlci13ZWJraXQtbW92ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3JlYmFzZS1wYXRjaC1hZnRlci13ZWJraXQtbW92ZQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9T
Y3JpcHRzL3JlYmFzZS1wYXRjaC1hZnRlci13ZWJraXQtbW92ZQkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDEzNyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworCitSRUJBU0VfRElD
VElPTkFSWSA9IHsKKyAgICAnV2ViS2l0Mi8nOiAnV2ViS2l0LycsCisgICAgJ1dlYktpdC8nOiAn
V2ViS2l0TGVnYWN5LycKK30KK0RPX05PVF9ORUVEX1JFQkFTRSA9IDAKK01BWUJFX05FRURfUkVC
QVNFID0gMQorTkVFRF9SRUJBU0UgPSAyCitBTFJFQURZX1JFQkFTRUQgPSAzCisKK2RlZiBpc19l
ZGl0YWJsZV9saW5lKGxpbmUpOgorICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnSW5kZXg6ICcpOgor
ICAgICAgICByZXR1cm4gVHJ1ZQorICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCctLS0gJyk6Cisg
ICAgICAgIHJldHVybiBUcnVlCisgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJysrKycpOgorICAg
ICAgICByZXR1cm4gVHJ1ZQorICAgIHJldHVybiBGYWxzZQorCitkZWYgbmVlZHNfcmViYXNlKGxp
bmUpOgorICAgIGlmIG5vdCBpc19lZGl0YWJsZV9saW5lKGxpbmUpOgorICAgICAgICByZXR1cm4g
RE9fTk9UX05FRURfUkVCQVNFCisKKyAgICBmb3IgY3VycmVudF9uYW1lLCByZWJhc2VkX25hbWUg
aW4gUkVCQVNFX0RJQ1RJT05BUlkuaXRlcml0ZW1zKCk6CisgICAgICAgICMgQ2hlY2sgaWYgd2Un
dmUgYWxyZWFkeSByZWJhc2VkCisgICAgICAgIGlmIG9zLnBhdGguam9pbignU291cmNlJywgcmVi
YXNlZF9uYW1lKSBpbiBsaW5lIGFuZCByZWJhc2VkX25hbWUgbm90IGluIFJFQkFTRV9ESUNUSU9O
QVJZOgorICAgICAgICAgICAgcmV0dXJuIEFMUkVBRFlfUkVCQVNFRAorCisgICAgICAgICMgQ2hl
Y2sgaWYgd2UgbmVlZCB0byByZWJhc2UKKyAgICAgICAgaWYgb3MucGF0aC5qb2luKCdTb3VyY2Un
LCBjdXJyZW50X25hbWUpIGluIGxpbmUgYW5kIGN1cnJlbnRfbmFtZSBub3QgaW4gUkVCQVNFX0RJ
Q1RJT05BUlkudmFsdWVzKCk6CisgICAgICAgICAgICByZXR1cm4gTkVFRF9SRUJBU0UKKworICAg
ICMgQ2hlY2sgaWYgd2UgbWlnaHQgbmVlZCBhIHJlYmFzZQorICAgIGZvciBjdXJyZW50X25hbWUs
IHJlYmFzZWRfbmFtZSBpbiBSRUJBU0VfRElDVElPTkFSWS5pdGVyaXRlbXMoKToKKyAgICAgICAg
aWYgb3MucGF0aC5qb2luKCdTb3VyY2UnLCBjdXJyZW50X25hbWUpIGluIGxpbmU6CisgICAgICAg
ICAgICByZXR1cm4gTUFZQkVfTkVFRF9SRUJBU0UKKworICAgIHJldHVybiBET19OT1RfTkVFRF9S
RUJBU0UKKworZGVmIHJlYmFzZV9saW5lKGxpbmUpOgorICAgIGlmIG5vdCBpc19lZGl0YWJsZV9s
aW5lKGxpbmUpOgorICAgICAgICBmb3IgY3VycmVudF9uYW1lLCByZWJhc2VkX25hbWUgaW4gUkVC
QVNFX0RJQ1RJT05BUlkuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBpZiBjdXJyZW50X25hbWUg
aW4gbGluZToKKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdGb3VuZCBhbiBpbnN0
YW5jZSBvZiB7fSBpbiB0aGUgcGF0Y2guICBEaWQgeW91IG1lYW4gdG8gcmVwbGFjZSBpdCB3aXRo
IHt9P1xuJy5mb3JtYXQoY3VycmVudF9uYW1lLCByZWJhc2VkX25hbWUpKQorICAgICAgICByZXR1
cm4gbGluZQorICAgIGZvciBjdXJyZW50X25hbWUsIHJlYmFzZWRfbmFtZSBpbiBSRUJBU0VfRElD
VElPTkFSWS5pdGVyaXRlbXMoKToKKyAgICAgICAgaWYgb3MucGF0aC5qb2luKCdTb3VyY2UnLCBj
dXJyZW50X25hbWUpIGluIGxpbmU6CisgICAgICAgICAgICByZXR1cm4gbGluZS5yZXBsYWNlKG9z
LnBhdGguam9pbignU291cmNlJywgY3VycmVudF9uYW1lKSwgb3MucGF0aC5qb2luKCdTb3VyY2Un
LCByZWJhc2VkX25hbWUpKQorICAgIHJldHVybiBsaW5lCisKK2RlZiByZWJhc2UocGF0aF90b19w
YXRjaCk6CisgICAgaWYgcGF0aF90b19wYXRjaDoKKyAgICAgICAgY29udGVudCA9IG9wZW4ocGF0
aF90b19wYXRjaCwgJ3InKS5yZWFkbGluZXMoKQorICAgIGVsc2U6CisgICAgICAgIGNvbnRlbnQg
PSBzeXMuc3RkaW4ucmVhZGxpbmVzKCkKKworICAgIHJlYmFzZV9zdGF0dXMgPSBET19OT1RfTkVF
RF9SRUJBU0UKKyAgICBmb3IgbGluZSBpbiBjb250ZW50OgorICAgICAgICBsaW5lX3N0YXR1cyA9
IG5lZWRzX3JlYmFzZShsaW5lKQorICAgICAgICBpZiAocmViYXNlX3N0YXR1cyA9PSBORUVEX1JF
QkFTRSBhbmQgbGluZV9zdGF0dXMgPT0gQUxSRUFEWV9SRUJBU0VEKSBvciAocmViYXNlX3N0YXR1
cyA9PSBBTFJFQURZX1JFQkFTRUQgYW5kIGxpbmVfc3RhdHVzID09IE5FRURfUkVCQVNFKToKKyAg
ICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ3t9IGlzIGEgcGFydGlhbGx5IHJlYmFzZWQgcGF0
Y2hcbicuZm9ybWF0KHBhdGhfdG9fcGF0Y2ggaWYgcGF0aF90b19wYXRjaCBlbHNlICdTVERJTicp
KQorICAgICAgICAgICAgcmV0dXJuIC0xCisgICAgICAgIGlmIGxpbmVfc3RhdHVzID4gcmViYXNl
X3N0YXR1czoKKyAgICAgICAgICAgIHJlYmFzZV9zdGF0dXMgPSBsaW5lX3N0YXR1cworCisgICAg
aWYgcmViYXNlX3N0YXR1cyA9PSBBTFJFQURZX1JFQkFTRUQgb3IgcmViYXNlX3N0YXR1cyA9PSBE
T19OT1RfTkVFRF9SRUJBU0U6CisgICAgICAgICMgT3V0cHV0IHRoZSBwcm92aWRlZCBwYXRjaCBp
ZiBubyByZS1iYXNlIGlzIHJlcXVpcmVkCisgICAgICAgIGlmIHBhdGhfdG9fcGF0Y2ggaXMgTm9u
ZToKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGNvbnRlbnQ6CisgICAgICAgICAgICAgICAgc3lz
LnN0ZG91dC53cml0ZShsaW5lKQorICAgICAgICByZXR1cm4gMAorCisgICAgaWYgcmViYXNlX3N0
YXR1cyA9PSBNQVlCRV9ORUVEX1JFQkFTRToKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnQ2Fu
bm90IGRldGVybWluZSBpZiB7fSBoYXMgYWxyZWFkeSBiZWVuIHJlYmFzZWQsIHJlYmFzaW5nIGFu
eXdheXNcbicuZm9ybWF0KHBhdGhfdG9fcGF0Y2ggaWYgcGF0aF90b19wYXRjaCBlbHNlICdTVERJ
TicpKQorCisgICAgaWYgcGF0aF90b19wYXRjaDoKKyAgICAgICAgb3V0cHV0X2ZpbGUgPSBvcGVu
KHBhdGhfdG9fcGF0Y2gsICd3JykKKyAgICBlbHNlOgorICAgICAgICBvdXRwdXRfZmlsZSA9IHN5
cy5zdGRvdXQKKworICAgIGZvciBsaW5lIGluIGNvbnRlbnQ6CisgICAgICAgIG91dHB1dF9maWxl
LndyaXRlKHJlYmFzZV9saW5lKGxpbmUpKQorCisgICAgcmV0dXJuIDAKKworZmlsZXNfdG9fcmVi
YXNlID0gW10KKworaWYgbGVuKHN5cy5hcmd2KSA9PSAxOgorICAgIHN5cy5zdGRlcnIud3JpdGUo
J1JlYWRpbmcgcGF0Y2ggZnJvbSBzdGRpblxuJykKKyAgICBmaWxlc190b19yZWJhc2UuYXBwZW5k
KE5vbmUpCitlbGlmIHN5cy5hcmd2WzFdID09ICctaCcgb3Igc3lzLmFyZ3ZbMV0gPT0gJ2hlbHAn
OgorICAgIHByaW50ICdyZWJhc2UtcGF0Y2gtYWZ0ZXItd2Via2l0LW1vdmUgdXNhZ2U6JworICAg
IHByaW50ICdcdHJlYmFzZS1wYXRjaC1hZnRlci13ZWJraXQtbW92ZSAtaCwgaGVscCcKKyAgICBw
cmludCAnXHRcdFByaW50IHRoaXMgbWVzc2FnZScKKyAgICBwcmludCAnXHRyZWJhc2UtcGF0Y2gt
YWZ0ZXItd2Via2l0LW1vdmUgPHBhdGggdG8gcGF0Y2g+JworICAgIHByaW50ICdcdFx0UmVwbGFj
ZSB0aGUgcGF0Y2ggYXQgdGhlIHByb3ZpZGVkIHBhdGggd2l0aCBhIHJlYmFzZWQgcGF0Y2gnCisg
ICAgcHJpbnQgJ1x0cmViYXNlLXBhdGNoLWFmdGVyLXdlYmtpdC1tb3ZlJworICAgIHByaW50ICdc
dFx0VHJlYXQgc3RkaW4gYXMgdGhlIHBhdGNoIHRvIGJlIHJlYmFzZWQnCisgICAgZXhpdCgwKQor
CitpZiBsZW4oZmlsZXNfdG9fcmViYXNlKSA9PSAwOgorICAgIGZvciBwYXRoIGluIHN5cy5hcmd2
WzE6XToKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKHBhdGgpOgorICAgICAgICAgICAg
c3lzLnN0ZGVyci53cml0ZSgne30gZG9lcyBub3QgZXhpc3QsIGNhbm5vdCByZWJhc2UgcGF0Y2hc
bicuZm9ybWF0KHBhdGgpKQorICAgICAgICAgICAgZXhpdCgxKQorICAgICAgICBmaWxlc190b19y
ZWJhc2UuYXBwZW5kKHBhdGgpCisKK3Jlc3VsdCA9IDAKK2ZvciBwYXRoIGluIGZpbGVzX3RvX3Jl
YmFzZToKKyAgICBpZiByZWJhc2UocGF0aCkgIT0gMDoKKyAgICAgICAgcmVzdWx0ID0gMQorZXhp
dChyZXN1bHQpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9TY3JpcHRzL3JlYmFzZS1wYXRj
aC1hZnRlci13ZWJraXQtbW92ZQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQojIyAt
MCwwICsxICMjCisqClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315347</attachid>
            <date>2017-07-13 08:41:05 -0700</date>
            <delta_ts>2017-07-13 11:26:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174438-20170713084104.patch</filename>
            <type>text/plain</type>
            <size>7837</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxOTQ0OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIwIEBACisyMDE3LTA3LTEzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgc2NyaXB0IHRvIHJlYmFzZSBwYXRjaGVzIGR1cmluZyB0aGUgV2Vi
S2l0Mi0+V2ViS2l0L1dlYktpdC0+V2ViS2l0TGVnYWN5IHRyYW5zaXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDQzOAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzMyNzcxMTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgR2l2ZW4gYSBwYXRjaCwgdGhpcyB3aWxsIGNvbnZlcnQgdGhlIGNoYW5n
ZXMgZnJvbSB0aGUgcGF0aCB0byB0aGUgbmV3IGRpcmVjdG9yeSBzdHJ1Y3R1cmUuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3JlYmFzZS1wYXRjaC1hZnRlci13ZWJraXQtbW92ZTogQWRkZWQuCisgICAg
ICAgIChhcHBlbmRfc291cmNlKTogQXBwZW5kICdTb3VyY2UnIHRvIHRoZSBwcm92aWRlZCBwYXRo
LgorICAgICAgICAoaXNfZWRpdGFibGVfbGluZSk6IFJldHVybiB0cnVlIGlmIGEgbGluZSB0aGUg
c2NyaXB0IGV4cGVjdHMgdG8gbW9kaWZ5LgorICAgICAgICAobmVlZHNfcmViYXNlKTogUmV0dXJu
IGlmIGEgbGluZSBuZWVkcyB0byBiZSByZWJhc2VkIGJhc2VkIG9uIGl0J3MgY29udGVudC4KKyAg
ICAgICAgKHJlYmFzZV9saW5lKTogUmViYXNlIHRoZSBwcm92aWRlZCBsaW5lLgorICAgICAgICAo
cmViYXNlKTogUmViYXNlIGEgcGF0Y2ggZ2l2ZW4gYSBwYXRoIHRvIHRoYXQgcGF0Y2guCisKIDIw
MTctMDctMTIgIE5hbiBXYW5nICA8bl93YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogW2lP
U10gSW1wbGVtZW50IGEgd2F5IHRvIHJldHJpZXZlIGEgdGV4dCBtYXJrZXIgcmFuZ2Ugd2l0aCBk
ZXNpcmVkIHRleHQgdGhhdCBpcyBjbG9zZXN0IHRvIGEgcG9zaXRpb24KSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvcmViYXNlLXBhdGNoLWFmdGVyLXdlYmtpdC1tb3ZlCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvcmViYXNlLXBhdGNoLWFmdGVyLXdlYmtpdC1tb3ZlCShub25leGlzdGVudCkKKysr
IFRvb2xzL1NjcmlwdHMvcmViYXNlLXBhdGNoLWFmdGVyLXdlYmtpdC1tb3ZlCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTQ4IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisj
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCisKK1JF
QkFTRV9ESUNUSU9OQVJZID0geworICAgICdXZWJLaXQyLyc6ICdXZWJLaXQvJywKKyAgICAnV2Vi
S2l0Lyc6ICdXZWJLaXRMZWdhY3kvJworfQorRE9fTk9UX05FRURfUkVCQVNFID0gMAorTUFZQkVf
TkVFRF9SRUJBU0UgPSAxCitORUVEX1JFQkFTRSA9IDIKK0FMUkVBRFlfUkVCQVNFRCA9IDMKKwor
CitkZWYgYXBwZW5kX3NvdXJjZShwYXRoKToKKyAgICByZXR1cm4gb3MucGF0aC5qb2luKCdTb3Vy
Y2UnLCBwYXRoKQorCisKK2RlZiBpc19lZGl0YWJsZV9saW5lKGxpbmUpOgorICAgIGVkaXRhYmxl
X3ByZWZpeGVzID0gKCdJbmRleDogJywgJy0tLSAnLCAnKysrICcpCisgICAgcmV0dXJuIGFueSht
YXAobGluZS5zdGFydHN3aXRoLCBlZGl0YWJsZV9wcmVmaXhlcykpCisKKworZGVmIG5lZWRzX3Jl
YmFzZShsaW5lKToKKyAgICBpZiBub3QgaXNfZWRpdGFibGVfbGluZShsaW5lKToKKyAgICAgICAg
cmV0dXJuIERPX05PVF9ORUVEX1JFQkFTRQorCisgICAgZm9yIGN1cnJlbnRfbmFtZSwgcmViYXNl
ZF9uYW1lIGluIFJFQkFTRV9ESUNUSU9OQVJZLml0ZXJpdGVtcygpOgorICAgICAgICAjIENoZWNr
IGlmIHdlJ3ZlIGFscmVhZHkgcmViYXNlZC4gV2UgbmVlZCB0byBjaGVjayBpZiB0aGUgcmViYXNl
ZF9uYW1lIGlzIGFscmVhZHkgaW4gdGhlIFJFQkFTRV9ESUNUSU9OQVJZLAorICAgICAgICAjIGlu
IHRoaXMgY2FzZSwgd2UgZG9uJ3Qga25vdyBpZiB3ZSd2ZSBhbHJlYWR5IGJlZW4gcmViYXNlZC4K
KyAgICAgICAgaWYgYXBwZW5kX3NvdXJjZShyZWJhc2VkX25hbWUpIGluIGxpbmUgYW5kIHJlYmFz
ZWRfbmFtZSBub3QgaW4gUkVCQVNFX0RJQ1RJT05BUlk6CisgICAgICAgICAgICByZXR1cm4gQUxS
RUFEWV9SRUJBU0VECisKKyAgICAgICAgIyBDaGVjayBpZiB3ZSBuZWVkIHRvIHJlYmFzZS4gV2Ug
bmVlZCB0byBjaGVjayBpZiB0aGUgY3VycmVudCBuYW1lIGlzIG9uZSBvZiB0aGUgcG90ZW50aWFs
IHJlYmFzZSBuYW1lcy4KKyAgICAgICAgIyBJbiB0aGlzIGNhc2UsIHdlIGRvbid0IGtub3cgaWYg
d2UgbmVlZCB0aGUgcmViYXNlLgorICAgICAgICBpZiBhcHBlbmRfc291cmNlKGN1cnJlbnRfbmFt
ZSkgaW4gbGluZSBhbmQgY3VycmVudF9uYW1lIG5vdCBpbiBSRUJBU0VfRElDVElPTkFSWS52YWx1
ZXMoKToKKyAgICAgICAgICAgIHJldHVybiBORUVEX1JFQkFTRQorCisgICAgIyBDaGVjayBpZiB3
ZSBtaWdodCBuZWVkIGEgcmViYXNlCisgICAgZm9yIGN1cnJlbnRfbmFtZSwgcmViYXNlZF9uYW1l
IGluIFJFQkFTRV9ESUNUSU9OQVJZLml0ZXJpdGVtcygpOgorICAgICAgICBpZiBhcHBlbmRfc291
cmNlKGN1cnJlbnRfbmFtZSkgaW4gbGluZToKKyAgICAgICAgICAgIHJldHVybiBNQVlCRV9ORUVE
X1JFQkFTRQorCisgICAgcmV0dXJuIERPX05PVF9ORUVEX1JFQkFTRQorCisKK2RlZiByZWJhc2Vf
bGluZShsaW5lKToKKyAgICBpZiBub3QgaXNfZWRpdGFibGVfbGluZShsaW5lKToKKyAgICAgICAg
Zm9yIGN1cnJlbnRfbmFtZSwgcmViYXNlZF9uYW1lIGluIFJFQkFTRV9ESUNUSU9OQVJZLml0ZXJp
dGVtcygpOgorICAgICAgICAgICAgaWYgY3VycmVudF9uYW1lIGluIGxpbmU6CisgICAgICAgICAg
ICAgICAgc3lzLnN0ZGVyci53cml0ZSgnRm91bmQgYW4gaW5zdGFuY2Ugb2Yge30gaW4gdGhlIHBh
dGNoLiAgRGlkIHlvdSBtZWFuIHRvIHJlcGxhY2UgaXQgd2l0aCB7fT9cbicuZm9ybWF0KGN1cnJl
bnRfbmFtZSwgcmViYXNlZF9uYW1lKSkKKyAgICAgICAgcmV0dXJuIGxpbmUKKyAgICBmb3IgY3Vy
cmVudF9uYW1lLCByZWJhc2VkX25hbWUgaW4gUkVCQVNFX0RJQ1RJT05BUlkuaXRlcml0ZW1zKCk6
CisgICAgICAgIGlmIGFwcGVuZF9zb3VyY2UoY3VycmVudF9uYW1lKSBpbiBsaW5lOgorICAgICAg
ICAgICAgcmV0dXJuIGxpbmUucmVwbGFjZShhcHBlbmRfc291cmNlKGN1cnJlbnRfbmFtZSksIGFw
cGVuZF9zb3VyY2UocmViYXNlZF9uYW1lKSkKKyAgICByZXR1cm4gbGluZQorCisKK2RlZiByZWJh
c2UocGF0Y2hfY29udGVudCwgb3V0cHV0X2ZpbGUsIHBhdGNoX25hbWUpOgorICAgIHJlYmFzZV9z
dGF0dXMgPSBET19OT1RfTkVFRF9SRUJBU0UKKyAgICBmb3IgbGluZSBpbiBwYXRjaF9jb250ZW50
OgorICAgICAgICBsaW5lX3N0YXR1cyA9IG5lZWRzX3JlYmFzZShsaW5lKQorICAgICAgICBpZiAo
cmViYXNlX3N0YXR1cyA9PSBORUVEX1JFQkFTRSBhbmQgbGluZV9zdGF0dXMgPT0gQUxSRUFEWV9S
RUJBU0VEKSBvciAocmViYXNlX3N0YXR1cyA9PSBBTFJFQURZX1JFQkFTRUQgYW5kIGxpbmVfc3Rh
dHVzID09IE5FRURfUkVCQVNFKToKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ3t9IGlz
IGEgcGFydGlhbGx5IHJlYmFzZWQgcGF0Y2hcbicuZm9ybWF0KHBhdGNoX25hbWUpKQorICAgICAg
ICAgICAgcmV0dXJuIC0xCisgICAgICAgIHJlYmFzZV9zdGF0dXMgPSBtYXgocmViYXNlX3N0YXR1
cywgbGluZV9zdGF0dXMpCisKKyAgICBpZiByZWJhc2Vfc3RhdHVzID09IE1BWUJFX05FRURfUkVC
QVNFIGFuZCBvdXRwdXRfZmlsZSA9PSBzeXMuc3Rkb3V0OgorICAgICAgICBzeXMuc3RkZXJyLndy
aXRlKCdDYW5ub3QgZGV0ZXJtaW5lIGlmIHBhdGggZnJvbSB7fSBoYXMgYWxyZWFkeSBiZWVuIHJl
YmFzZWQsIHJlYmFzaW5nIGFueXdheXNcbicuZm9ybWF0KHBhdGNoX25hbWUpKQorICAgIGVsaWYg
cmViYXNlX3N0YXR1cyA9PSBNQVlCRV9ORUVEX1JFQkFTRToKKyAgICAgICAgc3lzLnN0ZG91dC53
cml0ZSgne30gbWF5IGhhdmUgYWxyZWFkeSBiZWVuIHJlYmFzZWQsIGFyZSB5b3Ugc3VyZSB5b3Ug
d2FudCB0byByZWJhc2UgaXQ/XG5ZL24/XG4nLmZvcm1hdChwYXRjaF9uYW1lKSkKKyAgICAgICAg
bGluZSA9IHN5cy5zdGRpbi5yZWFkbGluZSgpCisgICAgICAgIGlmIGxpbmUudXBwZXIoKSA9PSAn
WVxuJyBvciBsaW5lLnVwcGVyKCkgPT0gJ1lFU1xuJzoKKyAgICAgICAgICAgIHJlYmFzZV9zdGF0
dXMgPSBORUVEX1JFQkFTRQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmViYXNlX3N0YXR1
cyA9IERPX05PVF9ORUVEX1JFQkFTRQorCisgICAgaWYgcmViYXNlX3N0YXR1cyA9PSBBTFJFQURZ
X1JFQkFTRUQgb3IgcmViYXNlX3N0YXR1cyA9PSBET19OT1RfTkVFRF9SRUJBU0U6CisgICAgICAg
ICMgT3V0cHV0IHRoZSBwcm92aWRlZCBwYXRjaCBpZiBubyByZS1iYXNlIGlzIHJlcXVpcmVkCisg
ICAgICAgIGZvciBsaW5lIGluIHBhdGNoX2NvbnRlbnQ6CisgICAgICAgICAgICBvdXRwdXRfZmls
ZS53cml0ZShsaW5lKQorICAgICAgICByZXR1cm4gMAorCisgICAgaWYgcmViYXNlX3N0YXR1cyA9
PSBNQVlCRV9ORUVEX1JFQkFTRToKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnQ2Fubm90IGRl
dGVybWluZSBpZiBwYXRoIGZyb20ge30gaGFzIGFscmVhZHkgYmVlbiByZWJhc2VkLCByZWJhc2lu
ZyBhbnl3YXlzXG4nLmZvcm1hdChwYXRjaF9uYW1lKSkKKworICAgIGZvciBsaW5lIGluIGNvbnRl
bnQ6CisgICAgICAgIG91dHB1dF9maWxlLndyaXRlKHJlYmFzZV9saW5lKGxpbmUpKQorCisgICAg
cmV0dXJuIDAKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBmaWxlc190b19yZWJh
c2UgPSBbXQorCisgICAgaWYgbGVuKHN5cy5hcmd2KSA9PSAxOgorICAgICAgICBzeXMuc3RkZXJy
LndyaXRlKCdSZWFkaW5nIHBhdGNoIGZyb20gc3RkaW5cbicpCisgICAgICAgIGZpbGVzX3RvX3Jl
YmFzZS5hcHBlbmQoTm9uZSkKKyAgICBlbGlmIHN5cy5hcmd2WzFdID09ICctaCcgb3Igc3lzLmFy
Z3ZbMV0gPT0gJ2hlbHAnOgorICAgICAgICBwcmludCAncmViYXNlLXBhdGNoLWFmdGVyLXdlYmtp
dC1tb3ZlIHVzYWdlOicKKyAgICAgICAgcHJpbnQgJ1x0cmViYXNlLXBhdGNoLWFmdGVyLXdlYmtp
dC1tb3ZlIC1oLCBoZWxwJworICAgICAgICBwcmludCAnXHRcdFByaW50IHRoaXMgbWVzc2FnZScK
KyAgICAgICAgcHJpbnQgJ1x0cmViYXNlLXBhdGNoLWFmdGVyLXdlYmtpdC1tb3ZlIDxwYXRoIHRv
IHBhdGNoPicKKyAgICAgICAgcHJpbnQgJ1x0XHRSZXBsYWNlIHRoZSBwYXRjaCBhdCB0aGUgcHJv
dmlkZWQgcGF0aCB3aXRoIGEgcmViYXNlZCBwYXRjaCcKKyAgICAgICAgcHJpbnQgJ1x0cmViYXNl
LXBhdGNoLWFmdGVyLXdlYmtpdC1tb3ZlJworICAgICAgICBwcmludCAnXHRcdFRyZWF0IHN0ZGlu
IGFzIHRoZSBwYXRjaCB0byBiZSByZWJhc2VkJworICAgICAgICBleGl0KDApCisKKyAgICBpZiBu
b3QgZmlsZXNfdG9fcmViYXNlOgorICAgICAgICBmb3IgcGF0aCBpbiBzeXMuYXJndlsxOl06Cisg
ICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUocGF0aCk6CisgICAgICAgICAgICAgICAg
c3lzLnN0ZGVyci53cml0ZSgne30gZG9lcyBub3QgZXhpc3QsIGNhbm5vdCByZWJhc2UgcGF0Y2hc
bicuZm9ybWF0KHBhdGgpKQorICAgICAgICAgICAgICAgIGV4aXQoMSkKKyAgICAgICAgICAgIGZp
bGVzX3RvX3JlYmFzZS5hcHBlbmQocGF0aCkKKworICAgIHJlc3VsdCA9IDAKKyAgICBmb3IgcGF0
aCBpbiBmaWxlc190b19yZWJhc2U6CisgICAgICAgIGlmIHBhdGg6CisgICAgICAgICAgICBjb250
ZW50ID0gb3BlbihwYXRoLCAncicpLnJlYWRsaW5lcygpCisgICAgICAgICAgICBvdXRwdXQgPSBv
cGVuKHBhdGgsICd3JykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbnRlbnQgPSBzeXMu
c3RkaW4ucmVhZGxpbmVzKCkKKyAgICAgICAgICAgIG91dHB1dCA9IHN5cy5zdGRvdXQKKworICAg
ICAgICBpZiByZWJhc2UoY29udGVudCwgb3V0cHV0LCBwYXRoIGlmIHBhdGggZWxzZSAnU1RESU4n
KSAhPSAwOgorICAgICAgICAgICAgcmVzdWx0ID0gMQorICAgIGV4aXQocmVzdWx0KQoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogVG9vbHMvU2NyaXB0cy9yZWJhc2UtcGF0Y2gtYWZ0ZXItd2Via2l0LW1v
dmUKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTAsMCArMSAjIworKgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315361</attachid>
            <date>2017-07-13 11:26:38 -0700</date>
            <delta_ts>2017-07-13 15:34:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174438-20170713112637.patch</filename>
            <type>text/plain</type>
            <size>7852</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxOTQ0OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIwIEBACisyMDE3LTA3LTEzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgc2NyaXB0IHRvIHJlYmFzZSBwYXRjaGVzIGR1cmluZyB0aGUgV2Vi
S2l0Mi0+V2ViS2l0L1dlYktpdC0+V2ViS2l0TGVnYWN5IHRyYW5zaXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDQzOAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzMyNzcxMTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgR2l2ZW4gYSBwYXRjaCwgdGhpcyB3aWxsIGNvbnZlcnQgdGhlIGNoYW5n
ZXMgZnJvbSB0aGUgcGF0aCB0byB0aGUgbmV3IGRpcmVjdG9yeSBzdHJ1Y3R1cmUuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3JlYmFzZS1wYXRjaC1hZnRlci13ZWJraXQtbW92ZTogQWRkZWQuCisgICAg
ICAgIChhcHBlbmRfc291cmNlKTogQXBwZW5kICdTb3VyY2UnIHRvIHRoZSBwcm92aWRlZCBwYXRo
LgorICAgICAgICAoaXNfZWRpdGFibGVfbGluZSk6IFJldHVybiB0cnVlIGlmIGEgbGluZSB0aGUg
c2NyaXB0IGV4cGVjdHMgdG8gbW9kaWZ5LgorICAgICAgICAobmVlZHNfcmViYXNlKTogUmV0dXJu
IGlmIGEgbGluZSBuZWVkcyB0byBiZSByZWJhc2VkIGJhc2VkIG9uIGl0J3MgY29udGVudC4KKyAg
ICAgICAgKHJlYmFzZV9saW5lKTogUmViYXNlIHRoZSBwcm92aWRlZCBsaW5lLgorICAgICAgICAo
cmViYXNlKTogUmViYXNlIGEgcGF0Y2ggZ2l2ZW4gYSBwYXRoIHRvIHRoYXQgcGF0Y2guCisKIDIw
MTctMDctMTIgIE5hbiBXYW5nICA8bl93YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogW2lP
U10gSW1wbGVtZW50IGEgd2F5IHRvIHJldHJpZXZlIGEgdGV4dCBtYXJrZXIgcmFuZ2Ugd2l0aCBk
ZXNpcmVkIHRleHQgdGhhdCBpcyBjbG9zZXN0IHRvIGEgcG9zaXRpb24KSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvcmViYXNlLXBhdGNoLWFmdGVyLXdlYmtpdC1tb3ZlCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvcmViYXNlLXBhdGNoLWFmdGVyLXdlYmtpdC1tb3ZlCShub25leGlzdGVudCkKKysr
IFRvb2xzL1NjcmlwdHMvcmViYXNlLXBhdGNoLWFmdGVyLXdlYmtpdC1tb3ZlCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTQ4IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisj
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCisKK1JF
QkFTRV9ESUNUSU9OQVJZID0geworICAgICdXZWJLaXQyLyc6ICdXZWJLaXQvJywKKyAgICAnV2Vi
S2l0Lyc6ICdXZWJLaXRMZWdhY3kvJworfQorRE9fTk9UX05FRURfUkVCQVNFID0gMAorTUFZQkVf
TkVFRF9SRUJBU0UgPSAxCitORUVEX1JFQkFTRSA9IDIKK0FMUkVBRFlfUkVCQVNFRCA9IDMKKwor
CitkZWYgYXBwZW5kX3NvdXJjZShwYXRoKToKKyAgICByZXR1cm4gb3MucGF0aC5qb2luKCdTb3Vy
Y2UnLCBwYXRoKQorCisKK2RlZiBpc19lZGl0YWJsZV9saW5lKGxpbmUpOgorICAgIGVkaXRhYmxl
X3ByZWZpeGVzID0gKCdJbmRleDogJywgJy0tLSAnLCAnKysrICcsICdkaWZmIC0tZ2l0ICcpCisg
ICAgcmV0dXJuIGFueShtYXAobGluZS5zdGFydHN3aXRoLCBlZGl0YWJsZV9wcmVmaXhlcykpCisK
KworZGVmIG5lZWRzX3JlYmFzZShsaW5lKToKKyAgICBpZiBub3QgaXNfZWRpdGFibGVfbGluZShs
aW5lKToKKyAgICAgICAgcmV0dXJuIERPX05PVF9ORUVEX1JFQkFTRQorCisgICAgZm9yIGN1cnJl
bnRfbmFtZSwgcmViYXNlZF9uYW1lIGluIFJFQkFTRV9ESUNUSU9OQVJZLml0ZXJpdGVtcygpOgor
ICAgICAgICAjIENoZWNrIGlmIHdlJ3ZlIGFscmVhZHkgcmViYXNlZC4gV2UgbmVlZCB0byBjaGVj
ayBpZiB0aGUgcmViYXNlZF9uYW1lIGlzIGFscmVhZHkgaW4gdGhlIFJFQkFTRV9ESUNUSU9OQVJZ
LAorICAgICAgICAjIGluIHRoaXMgY2FzZSwgd2UgZG9uJ3Qga25vdyBpZiB3ZSd2ZSBhbHJlYWR5
IGJlZW4gcmViYXNlZC4KKyAgICAgICAgaWYgYXBwZW5kX3NvdXJjZShyZWJhc2VkX25hbWUpIGlu
IGxpbmUgYW5kIHJlYmFzZWRfbmFtZSBub3QgaW4gUkVCQVNFX0RJQ1RJT05BUlk6CisgICAgICAg
ICAgICByZXR1cm4gQUxSRUFEWV9SRUJBU0VECisKKyAgICAgICAgIyBDaGVjayBpZiB3ZSBuZWVk
IHRvIHJlYmFzZS4gV2UgbmVlZCB0byBjaGVjayBpZiB0aGUgY3VycmVudCBuYW1lIGlzIG9uZSBv
ZiB0aGUgcG90ZW50aWFsIHJlYmFzZSBuYW1lcy4KKyAgICAgICAgIyBJbiB0aGlzIGNhc2UsIHdl
IGRvbid0IGtub3cgaWYgd2UgbmVlZCB0aGUgcmViYXNlLgorICAgICAgICBpZiBhcHBlbmRfc291
cmNlKGN1cnJlbnRfbmFtZSkgaW4gbGluZSBhbmQgY3VycmVudF9uYW1lIG5vdCBpbiBSRUJBU0Vf
RElDVElPTkFSWS52YWx1ZXMoKToKKyAgICAgICAgICAgIHJldHVybiBORUVEX1JFQkFTRQorCisg
ICAgIyBDaGVjayBpZiB3ZSBtaWdodCBuZWVkIGEgcmViYXNlCisgICAgZm9yIGN1cnJlbnRfbmFt
ZSwgcmViYXNlZF9uYW1lIGluIFJFQkFTRV9ESUNUSU9OQVJZLml0ZXJpdGVtcygpOgorICAgICAg
ICBpZiBhcHBlbmRfc291cmNlKGN1cnJlbnRfbmFtZSkgaW4gbGluZToKKyAgICAgICAgICAgIHJl
dHVybiBNQVlCRV9ORUVEX1JFQkFTRQorCisgICAgcmV0dXJuIERPX05PVF9ORUVEX1JFQkFTRQor
CisKK2RlZiByZWJhc2VfbGluZShsaW5lKToKKyAgICBpZiBub3QgaXNfZWRpdGFibGVfbGluZShs
aW5lKToKKyAgICAgICAgZm9yIGN1cnJlbnRfbmFtZSwgcmViYXNlZF9uYW1lIGluIFJFQkFTRV9E
SUNUSU9OQVJZLml0ZXJpdGVtcygpOgorICAgICAgICAgICAgaWYgY3VycmVudF9uYW1lIGluIGxp
bmU6CisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnRm91bmQgYW4gaW5zdGFuY2Ug
b2Yge30gaW4gdGhlIHBhdGNoLiAgRGlkIHlvdSBtZWFuIHRvIHJlcGxhY2UgaXQgd2l0aCB7fT9c
bicuZm9ybWF0KGN1cnJlbnRfbmFtZSwgcmViYXNlZF9uYW1lKSkKKyAgICAgICAgcmV0dXJuIGxp
bmUKKyAgICBmb3IgY3VycmVudF9uYW1lLCByZWJhc2VkX25hbWUgaW4gUkVCQVNFX0RJQ1RJT05B
UlkuaXRlcml0ZW1zKCk6CisgICAgICAgIGlmIGFwcGVuZF9zb3VyY2UoY3VycmVudF9uYW1lKSBp
biBsaW5lOgorICAgICAgICAgICAgcmV0dXJuIGxpbmUucmVwbGFjZShhcHBlbmRfc291cmNlKGN1
cnJlbnRfbmFtZSksIGFwcGVuZF9zb3VyY2UocmViYXNlZF9uYW1lKSkKKyAgICByZXR1cm4gbGlu
ZQorCisKK2RlZiByZWJhc2UocGF0Y2hfY29udGVudCwgb3V0cHV0X2ZpbGUsIHBhdGNoX25hbWUp
OgorICAgIHJlYmFzZV9zdGF0dXMgPSBET19OT1RfTkVFRF9SRUJBU0UKKyAgICBmb3IgbGluZSBp
biBwYXRjaF9jb250ZW50OgorICAgICAgICBsaW5lX3N0YXR1cyA9IG5lZWRzX3JlYmFzZShsaW5l
KQorICAgICAgICBpZiAocmViYXNlX3N0YXR1cyA9PSBORUVEX1JFQkFTRSBhbmQgbGluZV9zdGF0
dXMgPT0gQUxSRUFEWV9SRUJBU0VEKSBvciAocmViYXNlX3N0YXR1cyA9PSBBTFJFQURZX1JFQkFT
RUQgYW5kIGxpbmVfc3RhdHVzID09IE5FRURfUkVCQVNFKToKKyAgICAgICAgICAgIHN5cy5zdGRl
cnIud3JpdGUoJ3t9IGlzIGEgcGFydGlhbGx5IHJlYmFzZWQgcGF0Y2hcbicuZm9ybWF0KHBhdGNo
X25hbWUpKQorICAgICAgICAgICAgcmV0dXJuIC0xCisgICAgICAgIHJlYmFzZV9zdGF0dXMgPSBt
YXgocmViYXNlX3N0YXR1cywgbGluZV9zdGF0dXMpCisKKyAgICBpZiByZWJhc2Vfc3RhdHVzID09
IE1BWUJFX05FRURfUkVCQVNFIGFuZCBvdXRwdXRfZmlsZSA9PSBzeXMuc3Rkb3V0OgorICAgICAg
ICBzeXMuc3RkZXJyLndyaXRlKCdDYW5ub3QgZGV0ZXJtaW5lIGlmIHBhdGggZnJvbSB7fSBoYXMg
YWxyZWFkeSBiZWVuIHJlYmFzZWQsIHJlYmFzaW5nIGFueXdheXNcbicuZm9ybWF0KHBhdGNoX25h
bWUpKQorICAgIGVsaWYgcmViYXNlX3N0YXR1cyA9PSBNQVlCRV9ORUVEX1JFQkFTRToKKyAgICAg
ICAgc3lzLnN0ZG91dC53cml0ZSgne30gbWF5IGhhdmUgYWxyZWFkeSBiZWVuIHJlYmFzZWQsIGFy
ZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZWJhc2UgaXQ/XG5ZL24/XG4nLmZvcm1hdChwYXRjaF9u
YW1lKSkKKyAgICAgICAgbGluZSA9IHN5cy5zdGRpbi5yZWFkbGluZSgpCisgICAgICAgIGlmIGxp
bmUudXBwZXIoKSA9PSAnWVxuJyBvciBsaW5lLnVwcGVyKCkgPT0gJ1lFU1xuJzoKKyAgICAgICAg
ICAgIHJlYmFzZV9zdGF0dXMgPSBORUVEX1JFQkFTRQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgcmViYXNlX3N0YXR1cyA9IERPX05PVF9ORUVEX1JFQkFTRQorCisgICAgaWYgcmViYXNlX3N0
YXR1cyA9PSBBTFJFQURZX1JFQkFTRUQgb3IgcmViYXNlX3N0YXR1cyA9PSBET19OT1RfTkVFRF9S
RUJBU0U6CisgICAgICAgICMgT3V0cHV0IHRoZSBwcm92aWRlZCBwYXRjaCBpZiBubyByZS1iYXNl
IGlzIHJlcXVpcmVkCisgICAgICAgIGZvciBsaW5lIGluIHBhdGNoX2NvbnRlbnQ6CisgICAgICAg
ICAgICBvdXRwdXRfZmlsZS53cml0ZShsaW5lKQorICAgICAgICByZXR1cm4gMAorCisgICAgaWYg
cmViYXNlX3N0YXR1cyA9PSBNQVlCRV9ORUVEX1JFQkFTRToKKyAgICAgICAgc3lzLnN0ZGVyci53
cml0ZSgnQ2Fubm90IGRldGVybWluZSBpZiBwYXRoIGZyb20ge30gaGFzIGFscmVhZHkgYmVlbiBy
ZWJhc2VkLCByZWJhc2luZyBhbnl3YXlzXG4nLmZvcm1hdChwYXRjaF9uYW1lKSkKKworICAgIGZv
ciBsaW5lIGluIGNvbnRlbnQ6CisgICAgICAgIG91dHB1dF9maWxlLndyaXRlKHJlYmFzZV9saW5l
KGxpbmUpKQorCisgICAgcmV0dXJuIDAKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAg
ICBmaWxlc190b19yZWJhc2UgPSBbXQorCisgICAgaWYgbGVuKHN5cy5hcmd2KSA9PSAxOgorICAg
ICAgICBzeXMuc3RkZXJyLndyaXRlKCdSZWFkaW5nIHBhdGNoIGZyb20gc3RkaW5cbicpCisgICAg
ICAgIGZpbGVzX3RvX3JlYmFzZS5hcHBlbmQoTm9uZSkKKyAgICBlbGlmIHN5cy5hcmd2WzFdID09
ICctaCcgb3Igc3lzLmFyZ3ZbMV0gPT0gJ2hlbHAnOgorICAgICAgICBwcmludCAncmViYXNlLXBh
dGNoLWFmdGVyLXdlYmtpdC1tb3ZlIHVzYWdlOicKKyAgICAgICAgcHJpbnQgJ1x0cmViYXNlLXBh
dGNoLWFmdGVyLXdlYmtpdC1tb3ZlIC1oLCBoZWxwJworICAgICAgICBwcmludCAnXHRcdFByaW50
IHRoaXMgbWVzc2FnZScKKyAgICAgICAgcHJpbnQgJ1x0cmViYXNlLXBhdGNoLWFmdGVyLXdlYmtp
dC1tb3ZlIDxwYXRoIHRvIHBhdGNoPicKKyAgICAgICAgcHJpbnQgJ1x0XHRSZXBsYWNlIHRoZSBw
YXRjaCBhdCB0aGUgcHJvdmlkZWQgcGF0aCB3aXRoIGEgcmViYXNlZCBwYXRjaCcKKyAgICAgICAg
cHJpbnQgJ1x0cmViYXNlLXBhdGNoLWFmdGVyLXdlYmtpdC1tb3ZlJworICAgICAgICBwcmludCAn
XHRcdFRyZWF0IHN0ZGluIGFzIHRoZSBwYXRjaCB0byBiZSByZWJhc2VkJworICAgICAgICBleGl0
KDApCisKKyAgICBpZiBub3QgZmlsZXNfdG9fcmViYXNlOgorICAgICAgICBmb3IgcGF0aCBpbiBz
eXMuYXJndlsxOl06CisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUocGF0aCk6Cisg
ICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgne30gZG9lcyBub3QgZXhpc3QsIGNhbm5v
dCByZWJhc2UgcGF0Y2hcbicuZm9ybWF0KHBhdGgpKQorICAgICAgICAgICAgICAgIGV4aXQoMSkK
KyAgICAgICAgICAgIGZpbGVzX3RvX3JlYmFzZS5hcHBlbmQocGF0aCkKKworICAgIHJlc3VsdCA9
IDAKKyAgICBmb3IgcGF0aCBpbiBmaWxlc190b19yZWJhc2U6CisgICAgICAgIGlmIHBhdGg6Cisg
ICAgICAgICAgICBjb250ZW50ID0gb3BlbihwYXRoLCAncicpLnJlYWRsaW5lcygpCisgICAgICAg
ICAgICBvdXRwdXQgPSBvcGVuKHBhdGgsICd3JykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IGNvbnRlbnQgPSBzeXMuc3RkaW4ucmVhZGxpbmVzKCkKKyAgICAgICAgICAgIG91dHB1dCA9IHN5
cy5zdGRvdXQKKworICAgICAgICBpZiByZWJhc2UoY29udGVudCwgb3V0cHV0LCBwYXRoIGlmIHBh
dGggZWxzZSAnU1RESU4nKSAhPSAwOgorICAgICAgICAgICAgcmVzdWx0ID0gMQorICAgIGV4aXQo
cmVzdWx0KQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvU2NyaXB0cy9yZWJhc2UtcGF0Y2gt
YWZ0ZXItd2Via2l0LW1vdmUKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTAs
MCArMSAjIworKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315378</attachid>
            <date>2017-07-13 15:34:46 -0700</date>
            <delta_ts>2017-07-13 16:58:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174438-20170713153445.patch</filename>
            <type>text/plain</type>
            <size>7850</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxOTQ2OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIwIEBACisyMDE3LTA3LTEzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgc2NyaXB0IHRvIHJlYmFzZSBwYXRjaGVzIGR1cmluZyB0aGUgV2Vi
S2l0Mi0+V2ViS2l0L1dlYktpdC0+V2ViS2l0TGVnYWN5IHRyYW5zaXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDQzOAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzMyNzcxMTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgR2l2ZW4gYSBwYXRjaCwgdGhpcyB3aWxsIGNvbnZlcnQgdGhlIGNoYW5n
ZXMgZnJvbSB0aGUgcGF0aCB0byB0aGUgbmV3IGRpcmVjdG9yeSBzdHJ1Y3R1cmUuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3JlYmFzZS1wYXRjaC1hZnRlci13ZWJraXQtbW92ZTogQWRkZWQuCisgICAg
ICAgIChhcHBlbmRfc291cmNlKTogQXBwZW5kICdTb3VyY2UnIHRvIHRoZSBwcm92aWRlZCBwYXRo
LgorICAgICAgICAoaXNfZWRpdGFibGVfbGluZSk6IFJldHVybiB0cnVlIGlmIGEgbGluZSB0aGUg
c2NyaXB0IGV4cGVjdHMgdG8gbW9kaWZ5LgorICAgICAgICAobmVlZHNfcmViYXNlKTogUmV0dXJu
IGlmIGEgbGluZSBuZWVkcyB0byBiZSByZWJhc2VkIGJhc2VkIG9uIGl0J3MgY29udGVudC4KKyAg
ICAgICAgKHJlYmFzZV9saW5lKTogUmViYXNlIHRoZSBwcm92aWRlZCBsaW5lLgorICAgICAgICAo
cmViYXNlKTogUmViYXNlIGEgcGF0Y2ggZ2l2ZW4gYSBwYXRoIHRvIHRoYXQgcGF0Y2guCisKIDIw
MTctMDctMTIgIE5hbiBXYW5nICA8bl93YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogW2lP
U10gSW1wbGVtZW50IGEgd2F5IHRvIHJldHJpZXZlIGEgdGV4dCBtYXJrZXIgcmFuZ2Ugd2l0aCBk
ZXNpcmVkIHRleHQgdGhhdCBpcyBjbG9zZXN0IHRvIGEgcG9zaXRpb24KSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvcmViYXNlLXBhdGNoLWFmdGVyLXdlYmtpdC1tb3ZlCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvcmViYXNlLXBhdGNoLWFmdGVyLXdlYmtpdC1tb3ZlCShub25leGlzdGVudCkKKysr
IFRvb2xzL1NjcmlwdHMvcmViYXNlLXBhdGNoLWFmdGVyLXdlYmtpdC1tb3ZlCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTQ4IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisj
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCisKK1JF
QkFTRV9ESUNUSU9OQVJZID0geworICAgICdXZWJLaXQyLyc6ICdXZWJLaXQvJywKKyAgICAnV2Vi
S2l0Lyc6ICdXZWJLaXRMZWdhY3kvJworfQorRE9fTk9UX05FRURfUkVCQVNFID0gMAorTUFZQkVf
TkVFRF9SRUJBU0UgPSAxCitORUVEX1JFQkFTRSA9IDIKK0FMUkVBRFlfUkVCQVNFRCA9IDMKKwor
CitkZWYgYXBwZW5kX3NvdXJjZShwYXRoKToKKyAgICByZXR1cm4gb3MucGF0aC5qb2luKCdTb3Vy
Y2UnLCBwYXRoKQorCisKK2RlZiBpc19lZGl0YWJsZV9saW5lKGxpbmUpOgorICAgIGVkaXRhYmxl
X3ByZWZpeGVzID0gKCdJbmRleDogJywgJy0tLSAnLCAnKysrICcsICdkaWZmIC0tZ2l0ICcpCisg
ICAgcmV0dXJuIGFueShtYXAobGluZS5zdGFydHN3aXRoLCBlZGl0YWJsZV9wcmVmaXhlcykpCisK
KworZGVmIG5lZWRzX3JlYmFzZShsaW5lKToKKyAgICBpZiBub3QgaXNfZWRpdGFibGVfbGluZShs
aW5lKToKKyAgICAgICAgcmV0dXJuIERPX05PVF9ORUVEX1JFQkFTRQorCisgICAgZm9yIGN1cnJl
bnRfbmFtZSwgcmViYXNlZF9uYW1lIGluIFJFQkFTRV9ESUNUSU9OQVJZLml0ZXJpdGVtcygpOgor
ICAgICAgICAjIENoZWNrIGlmIHdlJ3ZlIGFscmVhZHkgcmViYXNlZC4gV2UgbmVlZCB0byBjaGVj
ayBpZiB0aGUgcmViYXNlZF9uYW1lIGlzIGFscmVhZHkgaW4gdGhlIFJFQkFTRV9ESUNUSU9OQVJZ
LAorICAgICAgICAjIGluIHRoaXMgY2FzZSwgd2UgZG9uJ3Qga25vdyBpZiB3ZSd2ZSBhbHJlYWR5
IGJlZW4gcmViYXNlZC4KKyAgICAgICAgaWYgYXBwZW5kX3NvdXJjZShyZWJhc2VkX25hbWUpIGlu
IGxpbmUgYW5kIHJlYmFzZWRfbmFtZSBub3QgaW4gUkVCQVNFX0RJQ1RJT05BUlk6CisgICAgICAg
ICAgICByZXR1cm4gQUxSRUFEWV9SRUJBU0VECisKKyAgICAgICAgIyBDaGVjayBpZiB3ZSBuZWVk
IHRvIHJlYmFzZS4gV2UgbmVlZCB0byBjaGVjayBpZiB0aGUgY3VycmVudCBuYW1lIGlzIG9uZSBv
ZiB0aGUgcG90ZW50aWFsIHJlYmFzZSBuYW1lcy4KKyAgICAgICAgIyBJbiB0aGlzIGNhc2UsIHdl
IGRvbid0IGtub3cgaWYgd2UgbmVlZCB0aGUgcmViYXNlLgorICAgICAgICBpZiBhcHBlbmRfc291
cmNlKGN1cnJlbnRfbmFtZSkgaW4gbGluZSBhbmQgY3VycmVudF9uYW1lIG5vdCBpbiBSRUJBU0Vf
RElDVElPTkFSWS52YWx1ZXMoKToKKyAgICAgICAgICAgIHJldHVybiBORUVEX1JFQkFTRQorCisg
ICAgIyBDaGVjayBpZiB3ZSBtaWdodCBuZWVkIGEgcmViYXNlCisgICAgZm9yIGN1cnJlbnRfbmFt
ZSwgcmViYXNlZF9uYW1lIGluIFJFQkFTRV9ESUNUSU9OQVJZLml0ZXJpdGVtcygpOgorICAgICAg
ICBpZiBhcHBlbmRfc291cmNlKGN1cnJlbnRfbmFtZSkgaW4gbGluZToKKyAgICAgICAgICAgIHJl
dHVybiBNQVlCRV9ORUVEX1JFQkFTRQorCisgICAgcmV0dXJuIERPX05PVF9ORUVEX1JFQkFTRQor
CisKK2RlZiByZWJhc2VfbGluZShsaW5lKToKKyAgICBpZiBub3QgaXNfZWRpdGFibGVfbGluZShs
aW5lKToKKyAgICAgICAgZm9yIGN1cnJlbnRfbmFtZSwgcmViYXNlZF9uYW1lIGluIFJFQkFTRV9E
SUNUSU9OQVJZLml0ZXJpdGVtcygpOgorICAgICAgICAgICAgaWYgY3VycmVudF9uYW1lIGluIGxp
bmU6CisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnRm91bmQgYW4gaW5zdGFuY2Ug
b2Yge30gaW4gdGhlIHBhdGNoLiAgRGlkIHlvdSBtZWFuIHRvIHJlcGxhY2UgaXQgd2l0aCB7fT9c
bicuZm9ybWF0KGN1cnJlbnRfbmFtZSwgcmViYXNlZF9uYW1lKSkKKyAgICAgICAgcmV0dXJuIGxp
bmUKKyAgICBmb3IgY3VycmVudF9uYW1lLCByZWJhc2VkX25hbWUgaW4gUkVCQVNFX0RJQ1RJT05B
UlkuaXRlcml0ZW1zKCk6CisgICAgICAgIGlmIGFwcGVuZF9zb3VyY2UoY3VycmVudF9uYW1lKSBp
biBsaW5lOgorICAgICAgICAgICAgcmV0dXJuIGxpbmUucmVwbGFjZShhcHBlbmRfc291cmNlKGN1
cnJlbnRfbmFtZSksIGFwcGVuZF9zb3VyY2UocmViYXNlZF9uYW1lKSkKKyAgICByZXR1cm4gbGlu
ZQorCisKK2RlZiByZWJhc2UocGF0Y2hfY29udGVudCwgb3V0cHV0X2ZpbGUsIHBhdGNoX25hbWUp
OgorICAgIHJlYmFzZV9zdGF0dXMgPSBET19OT1RfTkVFRF9SRUJBU0UKKyAgICBmb3IgbGluZSBp
biBwYXRjaF9jb250ZW50OgorICAgICAgICBsaW5lX3N0YXR1cyA9IG5lZWRzX3JlYmFzZShsaW5l
KQorICAgICAgICBpZiAocmViYXNlX3N0YXR1cyA9PSBORUVEX1JFQkFTRSBhbmQgbGluZV9zdGF0
dXMgPT0gQUxSRUFEWV9SRUJBU0VEKSBvciAocmViYXNlX3N0YXR1cyA9PSBBTFJFQURZX1JFQkFT
RUQgYW5kIGxpbmVfc3RhdHVzID09IE5FRURfUkVCQVNFKToKKyAgICAgICAgICAgIHN5cy5zdGRl
cnIud3JpdGUoJ3t9IGlzIGEgcGFydGlhbGx5IHJlYmFzZWQgcGF0Y2hcbicuZm9ybWF0KHBhdGNo
X25hbWUpKQorICAgICAgICAgICAgcmV0dXJuIC0xCisgICAgICAgIHJlYmFzZV9zdGF0dXMgPSBt
YXgocmViYXNlX3N0YXR1cywgbGluZV9zdGF0dXMpCisKKyAgICBpZiByZWJhc2Vfc3RhdHVzID09
IE1BWUJFX05FRURfUkVCQVNFIGFuZCBvdXRwdXRfZmlsZSA9PSBzeXMuc3Rkb3V0OgorICAgICAg
ICBzeXMuc3RkZXJyLndyaXRlKCdDYW5ub3QgZGV0ZXJtaW5lIGlmIHBhdGggZnJvbSB7fSBoYXMg
YWxyZWFkeSBiZWVuIHJlYmFzZWQsIHJlYmFzaW5nIGFueXdheXNcbicuZm9ybWF0KHBhdGNoX25h
bWUpKQorICAgIGVsaWYgcmViYXNlX3N0YXR1cyA9PSBNQVlCRV9ORUVEX1JFQkFTRToKKyAgICAg
ICAgc3lzLnN0ZG91dC53cml0ZSgne30gbWF5IGhhdmUgYWxyZWFkeSBiZWVuIHJlYmFzZWQsIGFy
ZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZWJhc2UgaXQgWS9uP1xuJy5mb3JtYXQocGF0Y2hfbmFt
ZSkpCisgICAgICAgIGxpbmUgPSBzeXMuc3RkaW4ucmVhZGxpbmUoKQorICAgICAgICBpZiBsaW5l
LnVwcGVyKCkgPT0gJ1lcbicgb3IgbGluZS51cHBlcigpID09ICdZRVNcbic6CisgICAgICAgICAg
ICByZWJhc2Vfc3RhdHVzID0gTkVFRF9SRUJBU0UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IHJlYmFzZV9zdGF0dXMgPSBET19OT1RfTkVFRF9SRUJBU0UKKworICAgIGlmIHJlYmFzZV9zdGF0
dXMgPT0gQUxSRUFEWV9SRUJBU0VEIG9yIHJlYmFzZV9zdGF0dXMgPT0gRE9fTk9UX05FRURfUkVC
QVNFOgorICAgICAgICAjIE91dHB1dCB0aGUgcHJvdmlkZWQgcGF0Y2ggaWYgbm8gcmUtYmFzZSBp
cyByZXF1aXJlZAorICAgICAgICBmb3IgbGluZSBpbiBwYXRjaF9jb250ZW50OgorICAgICAgICAg
ICAgb3V0cHV0X2ZpbGUud3JpdGUobGluZSkKKyAgICAgICAgcmV0dXJuIDAKKworICAgIGlmIHJl
YmFzZV9zdGF0dXMgPT0gTUFZQkVfTkVFRF9SRUJBU0U6CisgICAgICAgIHN5cy5zdGRlcnIud3Jp
dGUoJ0Nhbm5vdCBkZXRlcm1pbmUgaWYgcGF0aCBmcm9tIHt9IGhhcyBhbHJlYWR5IGJlZW4gcmVi
YXNlZCwgcmViYXNpbmcgYW55d2F5c1xuJy5mb3JtYXQocGF0Y2hfbmFtZSkpCisKKyAgICBmb3Ig
bGluZSBpbiBjb250ZW50OgorICAgICAgICBvdXRwdXRfZmlsZS53cml0ZShyZWJhc2VfbGluZShs
aW5lKSkKKworICAgIHJldHVybiAwCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAg
ZmlsZXNfdG9fcmViYXNlID0gW10KKworICAgIGlmIGxlbihzeXMuYXJndikgPT0gMToKKyAgICAg
ICAgc3lzLnN0ZGVyci53cml0ZSgnUmVhZGluZyBwYXRjaCBmcm9tIHN0ZGluXG4nKQorICAgICAg
ICBmaWxlc190b19yZWJhc2UuYXBwZW5kKE5vbmUpCisgICAgZWxpZiBzeXMuYXJndlsxXSA9PSAn
LWgnIG9yIHN5cy5hcmd2WzFdID09ICdoZWxwJzoKKyAgICAgICAgcHJpbnQgJ3JlYmFzZS1wYXRj
aC1hZnRlci13ZWJraXQtbW92ZSB1c2FnZTonCisgICAgICAgIHByaW50ICdcdHJlYmFzZS1wYXRj
aC1hZnRlci13ZWJraXQtbW92ZSAtaCwgaGVscCcKKyAgICAgICAgcHJpbnQgJ1x0XHRQcmludCB0
aGlzIG1lc3NhZ2UnCisgICAgICAgIHByaW50ICdcdHJlYmFzZS1wYXRjaC1hZnRlci13ZWJraXQt
bW92ZSA8cGF0aCB0byBwYXRjaD4nCisgICAgICAgIHByaW50ICdcdFx0UmVwbGFjZSB0aGUgcGF0
Y2ggYXQgdGhlIHByb3ZpZGVkIHBhdGggd2l0aCBhIHJlYmFzZWQgcGF0Y2gnCisgICAgICAgIHBy
aW50ICdcdHJlYmFzZS1wYXRjaC1hZnRlci13ZWJraXQtbW92ZScKKyAgICAgICAgcHJpbnQgJ1x0
XHRUcmVhdCBzdGRpbiBhcyB0aGUgcGF0Y2ggdG8gYmUgcmViYXNlZCcKKyAgICAgICAgZXhpdCgw
KQorCisgICAgaWYgbm90IGZpbGVzX3RvX3JlYmFzZToKKyAgICAgICAgZm9yIHBhdGggaW4gc3lz
LmFyZ3ZbMTpdOgorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKHBhdGgpOgorICAg
ICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ3t9IGRvZXMgbm90IGV4aXN0LCBjYW5ub3Qg
cmViYXNlIHBhdGNoXG4nLmZvcm1hdChwYXRoKSkKKyAgICAgICAgICAgICAgICBleGl0KDEpCisg
ICAgICAgICAgICBmaWxlc190b19yZWJhc2UuYXBwZW5kKHBhdGgpCisKKyAgICByZXN1bHQgPSAw
CisgICAgZm9yIHBhdGggaW4gZmlsZXNfdG9fcmViYXNlOgorICAgICAgICBpZiBwYXRoOgorICAg
ICAgICAgICAgY29udGVudCA9IG9wZW4ocGF0aCwgJ3InKS5yZWFkbGluZXMoKQorICAgICAgICAg
ICAgb3V0cHV0ID0gb3BlbihwYXRoLCAndycpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBj
b250ZW50ID0gc3lzLnN0ZGluLnJlYWRsaW5lcygpCisgICAgICAgICAgICBvdXRwdXQgPSBzeXMu
c3Rkb3V0CisKKyAgICAgICAgaWYgcmViYXNlKGNvbnRlbnQsIG91dHB1dCwgcGF0aCBpZiBwYXRo
IGVsc2UgJ1NURElOJykgIT0gMDoKKyAgICAgICAgICAgIHJlc3VsdCA9IDEKKyAgICBleGl0KHJl
c3VsdCkKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL1NjcmlwdHMvcmViYXNlLXBhdGNoLWFm
dGVyLXdlYmtpdC1tb3ZlCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAg
KzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315384</attachid>
            <date>2017-07-13 16:58:09 -0700</date>
            <delta_ts>2017-07-13 17:12:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174438-20170713165809.patch</filename>
            <type>text/plain</type>
            <size>8057</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxOTQ2OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIyIEBACisyMDE3LTA3LTEzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgc2NyaXB0IHRvIHJlYmFzZSBwYXRjaGVzIGR1cmluZyB0aGUgV2Vi
S2l0Mi0+V2ViS2l0L1dlYktpdC0+V2ViS2l0TGVnYWN5IHRyYW5zaXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDQzOAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzMyNzcxMTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgR2l2ZW4gYSBwYXRjaCwgdGhpcyB3aWxsIGNvbnZlcnQgdGhlIGNoYW5n
ZXMgZnJvbSB0aGUgcGF0aCB0byB0aGUgbmV3IGRpcmVjdG9yeSBzdHJ1Y3R1cmUuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3JlYmFzZS1wYXRjaC1hZnRlci13ZWJraXQtbW92ZTogQWRkZWQuCisgICAg
ICAgIChhcHBlbmRfc291cmNlKTogQXBwZW5kICdTb3VyY2UnIHRvIHRoZSBwcm92aWRlZCBwYXRo
LgorICAgICAgICAoaXNfZWRpdGFibGVfbGluZSk6IFJldHVybiB0cnVlIGlmIGEgbGluZSB0aGUg
c2NyaXB0IGV4cGVjdHMgdG8gbW9kaWZ5LgorICAgICAgICAobmVlZHNfcmViYXNlKTogUmV0dXJu
IGlmIGEgbGluZSBuZWVkcyB0byBiZSByZWJhc2VkIGJhc2VkIG9uIGl0J3MgY29udGVudC4KKyAg
ICAgICAgKHJlYmFzZV9saW5lKTogUmViYXNlIHRoZSBwcm92aWRlZCBsaW5lLgorICAgICAgICAo
cmViYXNlKTogUmViYXNlIGEgcGF0Y2ggZ2l2ZW4gdGhlIGxpbmVzIG9mIHRoYXQgcGF0Y2ggYW5k
IGEgZmlsZSB0byBvdXRwdXQgdGhlIHJlYmFzZWQgcGF0Y2ggdG8uCisgICAgICAgIChwYXJzZV9h
cmd1bWVudHMpOiBQYXJzZSB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBhbmQgcmV0dXJuIHRo
ZSBwYXRjaGVzIHRvIGJlIHJlYmFzZWQsIGlmIHRoZXkKKyAgICAgICAgd2VyZSBwcm92aWRlZC4K
KwogMjAxNy0wNy0xMiAgTmFuIFdhbmcgIDxuX3dhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFY
OiBbaU9TXSBJbXBsZW1lbnQgYSB3YXkgdG8gcmV0cmlldmUgYSB0ZXh0IG1hcmtlciByYW5nZSB3
aXRoIGRlc2lyZWQgdGV4dCB0aGF0IGlzIGNsb3Nlc3QgdG8gYSBwb3NpdGlvbgpJbmRleDogVG9v
bHMvU2NyaXB0cy9yZWJhc2UtcGF0Y2gtYWZ0ZXItd2Via2l0LW1vdmUKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy9yZWJhc2UtcGF0Y2gtYWZ0ZXItd2Via2l0LW1vdmUJKG5vbmV4aXN0ZW50
KQorKysgVG9vbHMvU2NyaXB0cy9yZWJhc2UtcGF0Y2gtYWZ0ZXItd2Via2l0LW1vdmUJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxNDggQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMK
KworUkVCQVNFX0RJQ1RJT05BUlkgPSB7CisgICAgJ1dlYktpdDIvJzogJ1dlYktpdC8nLAorICAg
ICdXZWJLaXQvJzogJ1dlYktpdExlZ2FjeS8nCit9CitjbGFzcyBSZWJhc2VTdGF0dXM6CisgICAg
RE9fTk9UX05FRUQgPSAwCisgICAgTUFZQkVfTkVFRCA9IDEKKyAgICBORUVEID0gMgorICAgIEFM
UkVBRFkgPSAzCisKKworZGVmIGFwcGVuZF9zb3VyY2UocGF0aCk6CisgICAgcmV0dXJuIG9zLnBh
dGguam9pbignU291cmNlJywgcGF0aCkKKworCitkZWYgaXNfZWRpdGFibGVfbGluZShsaW5lKToK
KyAgICBlZGl0YWJsZV9wcmVmaXhlcyA9ICgnSW5kZXg6ICcsICctLS0gJywgJysrKyAnLCAnZGlm
ZiAtLWdpdCAnKQorICAgIHJldHVybiBhbnkobWFwKGxpbmUuc3RhcnRzd2l0aCwgZWRpdGFibGVf
cHJlZml4ZXMpKQorCisKK2RlZiBuZWVkc19yZWJhc2UobGluZSk6CisgICAgaWYgbm90IGlzX2Vk
aXRhYmxlX2xpbmUobGluZSk6CisgICAgICAgIHJldHVybiBSZWJhc2VTdGF0dXMuRE9fTk9UX05F
RUQKKworICAgIGZvciBjdXJyZW50X25hbWUsIHJlYmFzZWRfbmFtZSBpbiBSRUJBU0VfRElDVElP
TkFSWS5pdGVyaXRlbXMoKToKKyAgICAgICAgIyBDaGVjayBpZiB3ZSd2ZSBhbHJlYWR5IHJlYmFz
ZWQuIFdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlIHJlYmFzZWRfbmFtZSBpcyBhbHJlYWR5IGluIHRo
ZSBSRUJBU0VfRElDVElPTkFSWSwKKyAgICAgICAgIyBpbiB0aGlzIGNhc2UsIHdlIGRvbid0IGtu
b3cgaWYgd2UndmUgYWxyZWFkeSBiZWVuIHJlYmFzZWQuCisgICAgICAgIGlmIGFwcGVuZF9zb3Vy
Y2UocmViYXNlZF9uYW1lKSBpbiBsaW5lIGFuZCByZWJhc2VkX25hbWUgbm90IGluIFJFQkFTRV9E
SUNUSU9OQVJZOgorICAgICAgICAgICAgcmV0dXJuIFJlYmFzZVN0YXR1cy5BTFJFQURZCisKKyAg
ICAgICAgIyBDaGVjayBpZiB3ZSBuZWVkIHRvIHJlYmFzZS4gV2UgbmVlZCB0byBjaGVjayBpZiB0
aGUgY3VycmVudCBuYW1lIGlzIG9uZSBvZiB0aGUgcG90ZW50aWFsIHJlYmFzZSBuYW1lcy4KKyAg
ICAgICAgIyBJbiB0aGlzIGNhc2UsIHdlIGRvbid0IGtub3cgaWYgd2UgbmVlZCB0aGUgcmViYXNl
LgorICAgICAgICBpZiBhcHBlbmRfc291cmNlKGN1cnJlbnRfbmFtZSkgaW4gbGluZSBhbmQgY3Vy
cmVudF9uYW1lIG5vdCBpbiBSRUJBU0VfRElDVElPTkFSWS52YWx1ZXMoKToKKyAgICAgICAgICAg
IHJldHVybiBSZWJhc2VTdGF0dXMuTkVFRAorCisgICAgIyBDaGVjayBpZiB3ZSBtaWdodCBuZWVk
IGEgcmViYXNlCisgICAgZm9yIGN1cnJlbnRfbmFtZSwgcmViYXNlZF9uYW1lIGluIFJFQkFTRV9E
SUNUSU9OQVJZLml0ZXJpdGVtcygpOgorICAgICAgICBpZiBhcHBlbmRfc291cmNlKGN1cnJlbnRf
bmFtZSkgaW4gbGluZToKKyAgICAgICAgICAgIHJldHVybiBSZWJhc2VTdGF0dXMuTUFZQkVfTkVF
RAorCisgICAgcmV0dXJuIFJlYmFzZVN0YXR1cy5ET19OT1RfTkVFRAorCisKK2RlZiByZWJhc2Vf
bGluZShsaW5lKToKKyAgICBpZiBub3QgaXNfZWRpdGFibGVfbGluZShsaW5lKToKKyAgICAgICAg
Zm9yIGN1cnJlbnRfbmFtZSwgcmViYXNlZF9uYW1lIGluIFJFQkFTRV9ESUNUSU9OQVJZLml0ZXJp
dGVtcygpOgorICAgICAgICAgICAgaWYgY3VycmVudF9uYW1lIGluIGxpbmU6CisgICAgICAgICAg
ICAgICAgc3lzLnN0ZGVyci53cml0ZSgnRm91bmQgYW4gaW5zdGFuY2Ugb2Yge30gaW4gdGhlIHBh
dGNoLiAgRGlkIHlvdSBtZWFuIHRvIHJlcGxhY2UgaXQgd2l0aCB7fT9cbicuZm9ybWF0KGN1cnJl
bnRfbmFtZSwgcmViYXNlZF9uYW1lKSkKKyAgICAgICAgcmV0dXJuIGxpbmUKKyAgICBmb3IgY3Vy
cmVudF9uYW1lLCByZWJhc2VkX25hbWUgaW4gUkVCQVNFX0RJQ1RJT05BUlkuaXRlcml0ZW1zKCk6
CisgICAgICAgIGlmIGFwcGVuZF9zb3VyY2UoY3VycmVudF9uYW1lKSBpbiBsaW5lOgorICAgICAg
ICAgICAgcmV0dXJuIGxpbmUucmVwbGFjZShhcHBlbmRfc291cmNlKGN1cnJlbnRfbmFtZSksIGFw
cGVuZF9zb3VyY2UocmViYXNlZF9uYW1lKSkKKyAgICByZXR1cm4gbGluZQorCisKK2RlZiByZWJh
c2UocGF0Y2hfY29udGVudCwgb3V0cHV0X2ZpbGUsIHBhdGNoX25hbWUpOgorICAgIHJlYmFzZV9z
dGF0dXMgPSBSZWJhc2VTdGF0dXMuRE9fTk9UX05FRUQKKyAgICBmb3IgbGluZSBpbiBwYXRjaF9j
b250ZW50OgorICAgICAgICBsaW5lX3N0YXR1cyA9IG5lZWRzX3JlYmFzZShsaW5lKQorICAgICAg
ICBpZiAocmViYXNlX3N0YXR1cyA9PSBSZWJhc2VTdGF0dXMuTkVFRCBhbmQgbGluZV9zdGF0dXMg
PT0gUmViYXNlU3RhdHVzLkFMUkVBRFkpIG9yIChyZWJhc2Vfc3RhdHVzID09IFJlYmFzZVN0YXR1
cy5BTFJFQURZIGFuZCBsaW5lX3N0YXR1cyA9PSBSZWJhc2VTdGF0dXMuTkVFRCk6CisgICAgICAg
ICAgICBzeXMuc3RkZXJyLndyaXRlKCd7fSBpcyBhIHBhcnRpYWxseSByZWJhc2VkIHBhdGNoXG4n
LmZvcm1hdChwYXRjaF9uYW1lKSkKKyAgICAgICAgICAgIHJldHVybiAtMQorICAgICAgICByZWJh
c2Vfc3RhdHVzID0gbWF4KHJlYmFzZV9zdGF0dXMsIGxpbmVfc3RhdHVzKQorCisgICAgaWYgcmVi
YXNlX3N0YXR1cyA9PSBSZWJhc2VTdGF0dXMuTUFZQkVfTkVFRCBhbmQgb3V0cHV0X2ZpbGUgPT0g
c3lzLnN0ZG91dDoKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnQ2Fubm90IGRldGVybWluZSBp
ZiBwYXRoIGZyb20ge30gaGFzIGFscmVhZHkgYmVlbiByZWJhc2VkLCByZWJhc2luZyBhbnl3YXlz
XG4nLmZvcm1hdChwYXRjaF9uYW1lKSkKKyAgICBlbGlmIHJlYmFzZV9zdGF0dXMgPT0gUmViYXNl
U3RhdHVzLk1BWUJFX05FRUQ6CisgICAgICAgIHJlYmFzZV9zdGF0dXMgPSBSZWJhc2VTdGF0dXMu
TUFZQkVfTkVFRAorICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCd7fSBtYXkgaGF2ZSBhbHJlYWR5
IGJlZW4gcmViYXNlZCwgYXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlYmFzZSBpdCBZL24/XG4n
LmZvcm1hdChwYXRjaF9uYW1lKSkKKyAgICAgICAgbGluZSA9IHN5cy5zdGRpbi5yZWFkbGluZSgp
LnJzdHJpcCgpCisgICAgICAgIGlmIGxpbmUudXBwZXIoKSA9PSAnWScgb3IgbGluZS51cHBlcigp
ID09ICdZRVMnOgorICAgICAgICAgICAgcmViYXNlX3N0YXR1cyA9IFJlYmFzZVN0YXR1cy5ORUVE
CisKKyAgICBpZiByZWJhc2Vfc3RhdHVzID09IFJlYmFzZVN0YXR1cy5BTFJFQURZIG9yIHJlYmFz
ZV9zdGF0dXMgPT0gUmViYXNlU3RhdHVzLk1BWUJFX05FRUQ6CisgICAgICAgICMgT3V0cHV0IHRo
ZSBwcm92aWRlZCBwYXRjaCBpZiBubyByZS1iYXNlIGlzIHJlcXVpcmVkCisgICAgICAgIGZvciBs
aW5lIGluIHBhdGNoX2NvbnRlbnQ6CisgICAgICAgICAgICBvdXRwdXRfZmlsZS53cml0ZShsaW5l
KQorICAgICAgICByZXR1cm4gMAorCisgICAgaWYgcmViYXNlX3N0YXR1cyA9PSBSZWJhc2VTdGF0
dXMuTUFZQkVfTkVFRDoKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnQ2Fubm90IGRldGVybWlu
ZSBpZiBwYXRoIGZyb20ge30gaGFzIGFscmVhZHkgYmVlbiByZWJhc2VkLCByZWJhc2luZyBhbnl3
YXlzXG4nLmZvcm1hdChwYXRjaF9uYW1lKSkKKworICAgIGZvciBsaW5lIGluIHBhdGNoX2NvbnRl
bnQ6CisgICAgICAgIG91dHB1dF9maWxlLndyaXRlKHJlYmFzZV9saW5lKGxpbmUpKQorCisgICAg
cmV0dXJuIDAKKworCitkZWYgcGFyc2VfYXJndW1lbnRzKCk6CisgICAgZmlsZXNfdG9fcmViYXNl
ID0gW10KKyAgICBpZiBsZW4oc3lzLmFyZ3YpID09IDE6CisgICAgICAgIHN5cy5zdGRlcnIud3Jp
dGUoJ1JlYWRpbmcgcGF0Y2ggZnJvbSBzdGRpblxuJykKKyAgICAgICAgcmV0dXJuIFtdCisgICAg
ZWxpZiBzeXMuYXJndlsxXSA9PSAnLWgnIG9yIHN5cy5hcmd2WzFdID09ICdoZWxwJzoKKyAgICAg
ICAgcHJpbnQgJ3JlYmFzZS1wYXRjaC1hZnRlci13ZWJraXQtbW92ZSB1c2FnZTonCisgICAgICAg
IHByaW50ICdcdHJlYmFzZS1wYXRjaC1hZnRlci13ZWJraXQtbW92ZSAtaCwgaGVscCcKKyAgICAg
ICAgcHJpbnQgJ1x0XHRQcmludCB0aGlzIG1lc3NhZ2UnCisgICAgICAgIHByaW50ICdcdHJlYmFz
ZS1wYXRjaC1hZnRlci13ZWJraXQtbW92ZSA8cGF0aCB0byBwYXRjaD4nCisgICAgICAgIHByaW50
ICdcdFx0UmVwbGFjZSB0aGUgcGF0Y2ggYXQgdGhlIHByb3ZpZGVkIHBhdGggd2l0aCBhIHJlYmFz
ZWQgcGF0Y2gnCisgICAgICAgIHByaW50ICdcdHJlYmFzZS1wYXRjaC1hZnRlci13ZWJraXQtbW92
ZScKKyAgICAgICAgcHJpbnQgJ1x0XHRUcmVhdCBzdGRpbiBhcyB0aGUgcGF0Y2ggdG8gYmUgcmVi
YXNlZCcKKyAgICAgICAgZXhpdCgwKQorCisgICAgZm9yIHBhdGggaW4gc3lzLmFyZ3ZbMTpdOgor
ICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUocGF0aCk6CisgICAgICAgICAgICBzeXMuc3Rk
ZXJyLndyaXRlKCd7fSBkb2VzIG5vdCBleGlzdCwgY2Fubm90IHJlYmFzZSBwYXRjaFxuJy5mb3Jt
YXQocGF0aCkpCisgICAgICAgICAgICBleGl0KDEpCisgICAgICAgIGZpbGVzX3RvX3JlYmFzZS5h
cHBlbmQocGF0aCkKKworICAgIHJldHVybiBmaWxlc190b19yZWJhc2UKKworCitpZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgorICAgIGZpbGVzX3RvX3JlYmFzZSA9IHBhcnNlX2FyZ3VtZW50cygp
CisKKyAgICByZXN1bHQgPSAwCisgICAgZm9yIHBhdGggaW4gZmlsZXNfdG9fcmViYXNlOgorICAg
ICAgICBpZiByZWJhc2Uob3BlbihwYXRoLCAncicpLnJlYWRsaW5lcygpLCBvcGVuKHBhdGgsICd3
JyksIHBhdGgpICE9IDA6CisgICAgICAgICAgICByZXN1bHQgPSAxCisgICAgaWYgbm90IGZpbGVz
X3RvX3JlYmFzZToKKyAgICAgICAgcmVzdWx0ID0gcmViYXNlKHN5cy5zdGRpbi5yZWFkbGluZXMo
KSwgc3lzLnN0ZG91dCwgJ1NURElOJykKKyAgICBleGl0KHJlc3VsdCkKClByb3BlcnR5IGNoYW5n
ZXMgb246IFRvb2xzL1NjcmlwdHMvcmViYXNlLXBhdGNoLWFmdGVyLXdlYmtpdC1tb3ZlCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQo=
</data>
<flag name="review"
          id="336232"
          type_id="1"
          status="+"
          setter="aakash_jain"
    />
          </attachment>
      

    </bug>

</bugzilla>