<?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>180828</bug_id>
          
          <creation_ts>2017-12-14 12:20:36 -0800</creation_ts>
          <short_desc>Improve leaks detector output</short_desc>
          <delta_ts>2017-12-14 15:32:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Local 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="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>joepeck</cc>
    
    <cc>lforschler</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1381745</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-12-14 12:20:36 -0800</bug_when>
    <thetext>Fixing two issues:
1. run-leaks omits many lines from leaks tool output, making it incompatible with other tools. Notably, symbolication cannot be performed.
2. run-leaks output goes to &quot;run-webkit-tests --debug-rwt-logging&quot; output. This makes it much longer than needed, sometimes even overloading buildbot. We don&apos;t need full output in test log, as separate files are created for each of these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381747</commentid>
    <comment_count>1</comment_count>
      <attachid>329382</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-12-14 12:24:32 -0800</bug_when>
    <thetext>Created attachment 329382
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381751</commentid>
    <comment_count>2</comment_count>
      <attachid>329382</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-12-14 12:30:35 -0800</bug_when>
    <thetext>Comment on attachment 329382
proposed patch

Need to make tests pass, and also need to delete files that show 0 leaks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381777</commentid>
    <comment_count>3</comment_count>
      <attachid>329392</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-12-14 13:25:11 -0800</bug_when>
    <thetext>Created attachment 329392
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381788</commentid>
    <comment_count>4</comment_count>
      <attachid>329382</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-12-14 13:49:25 -0800</bug_when>
    <thetext>Comment on attachment 329382
proposed patch

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

&gt; Tools/Scripts/run-leaks:154
&gt; +        if ($line =~ /^Process [0-9]+: [0-9]+ leaks?/) {
&gt; +            ($leakCount) = ($line =~ /[[:blank:]]+([0-9]+)[[:blank:]]+leaks?/);
&gt; +            if (!defined($leakCount)) {
&gt; +                reportError(&quot;Could not parse leak count reported by leaks tool.&quot;);
&gt; +                return;
&gt; +            }
&gt; +        }

Nit: In these regular expressions `[0-9]+` can be `\d+`, and `[[:blank:]]+` can be `\s+` which I think is more normal. Up to you.

Either way you also don&apos;t need to run the regex twice, in multiple differing formats, and I don&apos;t think the !defined($leakCount) branch can ever be reached because of the check on line 148.

This can be simplified to:

    if ($line =~ /^Process \d+: (\d+) leaks?/) {
        $leakCount = $1;
        next;
    }

&gt; Tools/Scripts/run-leaks:164
&gt;              if (!defined($address)) {

There is code in this section that checks the type:

    175            my ($type) = ($line =~ /&apos;([^&apos;]+)&apos;/); #&apos;
    176            if (!defined($type)) {
    177                $type = &quot;&quot;; # The leaks tool sometimes omits the type.
    178            }

This looks wrong to me. I have never seen types quoted in single quotes in leaks output. Some example lines (from a bunch of leaks logs) are:

    Leak: 0x60400003a9e0  size=32  zone: DefaultMallocZone_0x102a98000
    Leak: 0x60800003a8e0  size=32  zone: DefaultMallocZone_0x102a98000   NSArray  ObjC  CoreFoundation
    Leak: 0x7ffd93d02a80  size=48  zone: DefaultMallocZone_0x102971000   CFSet  ObjC  CoreFoundation
    Leak: 0x7ffd93d02ab0  size=32  zone: DefaultMallocZone_0x102971000   CFDictionary (Value Storage)  C  CoreFoundation
    Leak: 0x7ffd94827880  size=80  zone: DefaultMallocZone_0x102971000   CFData  ObjC  CoreFoundation
    Leak: 0x7ffd9482b0d0  size=32  zone: DefaultMallocZone_0x102971000   NSMutableArray (Storage)  C  CoreFoundation
    Leak: 0x7ffd94832990  size=240  zone: DefaultMallocZone_0x102971000
    Leak: 0x6040000a47a0  size=96  zone: DefaultMallocZone_0x102a98000   AEDescImpl  C++  AE
    Leak: 0x7fae1f339540  size=64  zone: DefaultMallocZone_0x10ee3a000   __NSMallocBlock__  ObjC  CoreFoundation  AppKit  __68-[NSScrollingBehaviorLegacy _latchMomentumScrollEventsToScrollView:]_block_invoke  0x7fff32740fc6
    Leak: 0x7f87fff06890  size=48  zone: WebKit Using System Malloc_0x1115f9000   WebCore::StyleRuleCSSStyleDeclaration  C++  WebCore

Perhaps this should be updated to:

    # The type is the first value after the zone that is surrounding by double spaces.
    my ($type) = ($line =~ /zone: .*?\s*  (.*?)  /);
    if (!defined($type)) {
        $type = &quot;&quot;; # The leaks tool sometimes omits the type.
    }

Which in my quick tests on the above lines produces what I would expect:

    TYPE: 
    TYPE: NSArray
    TYPE: CFSet
    TYPE: CFDictionary (Value Storage)
    TYPE: CFData
    TYPE: NSMutableArray (Storage)
    TYPE: 
    TYPE: AEDescImpl
    TYPE: __NSMallocBlock__
    TYPE: WebCore::StyleRuleCSSStyleDeclaration

&gt; Tools/Scripts/webkitpy/port/leakdetector.py:120
&gt;              # Oddly enough, run-leaks (or the underlying leaks tool) does not seem to always output utf-8,

I&apos;m guessing this is when dumping string contents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381790</commentid>
    <comment_count>5</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-12-14 13:51:46 -0800</bug_when>
    <thetext>&gt; This can be simplified to:
&gt; 
&gt;     if ($line =~ /^Process \d+: (\d+) leaks?/) {
&gt;         $leakCount = $1;
&gt;         next;
&gt;     }

Err, without the `next` so that the line gets included in output!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381796</commentid>
    <comment_count>6</comment_count>
      <attachid>329392</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-12-14 13:54:46 -0800</bug_when>
    <thetext>Comment on attachment 329392
proposed patch

r=me but all my earlier comments still apply. And could be tested as well (especially Type, since I think that is totally wrong and will never work right now).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381802</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-12-14 14:00:12 -0800</bug_when>
    <thetext>&gt;     # The type is the first value after the zone that is surrounding by
&gt; double spaces.
&gt;     my ($type) = ($line =~ /zone: .*?\s*  (.*?)  /);
&gt;     if (!defined($type)) {
&gt;         $type = &quot;&quot;; # The leaks tool sometimes omits the type.
&gt;     }

Technically it looks like it is always preceded by 3 spaces. So the regex could be

    /zone: .*?\s*  (.*?)  /
    /zone: .*?   (.*?)  /

... either of these, with an appropriate comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381805</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-12-14 14:01:12 -0800</bug_when>
    <thetext>Isn&apos;t \d unnecessarily permissive in Perl? I think that it includes everything in the Unicode class.

I didn&apos;t want to touch the pre-existing regexes, but I guess we can change those now as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381845</commentid>
    <comment_count>9</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-12-14 14:52:27 -0800</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #8)
&gt; Isn&apos;t \d unnecessarily permissive in Perl? I think that it includes
&gt; everything in the Unicode class.

Hmm, I don&apos;t believe so. Colloquially `\d` is &quot;numbers&quot;. Even if it was overly permissive that normally isn&apos;t a problem if you know the input you&apos;re parsing is simple, so using `\d` tends to be the norm. (And also its supported pretty much everywhere).

Based on the chart in here, the posix [:digit:] should match Perl&apos;s shorthand \d:
https://www.regular-expressions.info/posixbrackets.html

&gt; I didn&apos;t want to touch the pre-existing regexes, but I guess we can change
&gt; those now as well.

I only brought it up in these cases because:

  • Leak Count input was parsed twice, with different regexes, unnecessarily
  • Leak Type input was parsed incorrectly and looks like it would never work

For example the cases with [:xdigit:] seem worth keeping as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381863</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-12-14 15:30:11 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r225937&gt;. Thank you for the review!

I only added a fixme for the type problem, as it&apos;s orthogonal to what this patch solves, and doesn&apos;t affect what the tools produce (as we don&apos;t skip any types currently).

I&apos;m not sure if I agree with the proposed regex that starts with &quot;zone&quot; - it feels like three spaces are actually the marker. But I would need to dig into more examples to understand what the forward compatibility story for this format is, if any.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381865</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-14 15:32:04 -0800</bug_when>
    <thetext>&lt;rdar://problem/36060251&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329382</attachid>
            <date>2017-12-14 12:24:32 -0800</date>
            <delta_ts>2017-12-14 13:50:45 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>LeaksOutput.txt</filename>
            <type>text/plain</type>
            <size>9777</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyNTkyMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDE3LTEyLTE0ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgorCisgICAgICAgIEltcHJvdmUgbGVha3MgZGV0ZWN0b3Igb3V0cHV0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA4MjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhpbmcgdHdvIGlzc3VlczoKKyAg
ICAgICAgMS4gcnVuLWxlYWtzIG9taXRzIG1hbnkgbGluZXMgZnJvbSBsZWFrcyB0b29sIG91dHB1
dCwgbWFraW5nIGl0IGluY29tcGF0aWJsZSB3aXRoCisgICAgICAgIG90aGVyIHRvb2xzLiBOb3Rh
Ymx5LCBzeW1ib2xpY2F0aW9uIGNhbm5vdCBiZSBwZXJmb3JtZWQuCisgICAgICAgIDIuIHJ1bi1s
ZWFrcyBvdXRwdXQgZ29lcyB0byAicnVuLXdlYmtpdC10ZXN0cyAtLWRlYnVnLXJ3dC1sb2dnaW5n
IiBvdXRwdXQuIFRoaXMKKyAgICAgICAgbWFrZXMgaXQgbXVjaCBsb25nZXIgdGhhbiBuZWVkZWQs
IHNvbWV0aW1lcyBldmVuIG92ZXJsb2FkaW5nIGJ1aWxkYm90LiBXZSBkb24ndAorICAgICAgICBu
ZWVkIGZ1bGwgb3V0cHV0IGluIHRlc3QgbG9nLCBhcyBzZXBhcmF0ZSBmaWxlcyBhcmUgY3JlYXRl
ZCBmb3IgZWFjaCBvZiB0aGVzZS4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWxlYWtzOiBSZXBy
ZXNlbnQgZWFjaCBsaW5lIGluIGxlYWtzIG91dHB1dCB3aGVuIHBhcnNpbmcsIGFuZCBwcmludAor
ICAgICAgICBldmVyeXRoaW5nIGV4Y2VwdCBmb3IgZXhwbGljaXRseSBleGNsdWRlZCBsZWFrcy4g
RnJvbSBteSB0ZXN0aW5nIGFuZCByZWFkaW5nCisgICAgICAgIHRoZSBjb2RlLCBpdCBsb29rcyBs
aWtlIG5vbmUgb2Ygb3VyIHRvb2xzIHNob3VsZCBiZSBicm9rZW4gYnkgdGhpcyBjaGFuZ2UuCisK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9yLnB5OiBJIGNvdWxk
bid0IGZpbmQgYSB3YXkgdG8gcnVuIGEgaGVscGVyIHRvb2wKKyAgICAgICAgd2l0aG91dCBkdW1w
aW5nIGFsbCBvZiBpdHMgb3V0cHV0IHRvIGRlYnVnIGxvZywgc28gc3dpdGNoZWQgdG8gdXNpbmcg
YSBmaWxlIGZvciBsZWFrcy4KKwogMjAxNy0xMi0xNCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFy
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgd2Via2l0cHk6IEJldHRlciBuYW1lLXZlcnNpb24gbWFw
cGluZyAoRm9sbG93LXVwIGZpeCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLWxlYWtzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvcnVuLWxlYWtzCShyZXZpc2lvbiAyMjU4NzYpCisrKyBU
b29scy9TY3JpcHRzL3J1bi1sZWFrcwkod29ya2luZyBjb3B5KQpAQCAtNDYsMTUgKzQ2LDE4IEBA
IHN1YiBtYWluKCkKICAgICAgICAgIlVzYWdlOiAiIC4gYmFzZW5hbWUoJDApIC4gIiBbb3B0aW9u
c10gcGlkIHwgZXhlY3V0YWJsZSBuYW1lXG4iIC4KICAgICAgICAgIiAgLS1leGNsdWRlLWNhbGxz
dGFjayByZWdleHAgICBFeGNsdWRlIGxlYWtzIHdob3NlIGNhbGwgc3RhY2tzIG1hdGNoIHRoZSBy
ZWd1bGFyIGV4cHJlc3Npb24gJ3JlZ2V4cCcuXG4iIC4KICAgICAgICAgIiAgLS1leGNsdWRlLXR5
cGUgcmVnZXhwICAgICAgICBFeGNsdWRlIGxlYWtzIHdob3NlIGRhdGEgdHlwZXMgbWF0Y2ggdGhl
IHJlZ3VsYXIgZXhwcmVzc2lvbiAncmVnZXhwJy5cbiIgLgorICAgICAgICAiICAtLW91dHB1dC1m
aWxlIHBhdGggICAgICAgICAgIFN0b3JlIHJlc3VsdCBpbiBhIGZpbGUuIElmIG5vdCBzcGVjaWZp
ZWQsIHN0YW5kYXJkIG91dHB1dCBpcyB1c2VkLlxuIiAuCiAgICAgICAgICIgIC0taGVscCAgICAg
ICAgICAgICAgICAgICAgICAgU2hvdyB0aGlzIGhlbHAgbWVzc2FnZS5cbiI7CiAKICAgICBteSBA
Y2FsbFN0YWNrc1RvRXhjbHVkZSA9ICgpOwogICAgIG15IEB0eXBlc1RvRXhjbHVkZSA9ICgpOwor
ICAgIG15ICRvdXRwdXRQYXRoOwogICAgIG15ICRoZWxwID0gMDsKIAogICAgIG15ICRnZXRPcHRp
b25zUmVzdWx0ID0gR2V0T3B0aW9ucygKICAgICAgICAgJ2V4Y2x1ZGUtY2FsbHN0YWNrOnMnID0+
IFxAY2FsbFN0YWNrc1RvRXhjbHVkZSwKICAgICAgICAgJ2V4Y2x1ZGUtdHlwZTpzJyA9PiBcQHR5
cGVzVG9FeGNsdWRlLAorICAgICAgICAnb3V0cHV0LWZpbGU6cycgPT4gXCRvdXRwdXRQYXRoLAog
ICAgICAgICAnaGVscCcgPT4gXCRoZWxwCiAgICAgKTsKICAgICBteSAkcGlkT3JFeGVjdXRhYmxl
TmFtZSA9ICRBUkdWWzBdOwpAQCAtNzYsMjYgKzc5LDMxIEBAIHN1YiBtYWluKCkKICAgICAgICAg
cmV0dXJuIDE7CiAgICAgfQogCi0gICAgbXkgJGxlYWtMaXN0ID0gcGFyc2VMZWFrc091dHB1dChA
JGxlYWtzT3V0cHV0KTsKLSAgICBpZiAoISRsZWFrTGlzdCkgeworICAgIG15ICRwYXJzZWRPdXRw
dXQgPSBwYXJzZUxlYWtzT3V0cHV0KEAkbGVha3NPdXRwdXQpOworICAgIGlmICghJHBhcnNlZE91
dHB1dCkgewogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAKICAgICAjIEZpbHRlciBvdXRwdXQu
Ci0gICAgbXkgJGxlYWtDb3VudCA9IEAkbGVha0xpc3Q7Ci0gICAgcmVtb3ZlTWF0Y2hpbmdSZWNv
cmRzKEAkbGVha0xpc3QsICJjYWxsU3RhY2siLCBAY2FsbFN0YWNrc1RvRXhjbHVkZSk7Ci0gICAg
cmVtb3ZlTWF0Y2hpbmdSZWNvcmRzKEAkbGVha0xpc3QsICJ0eXBlIiwgQHR5cGVzVG9FeGNsdWRl
KTsKLSAgICBteSAkZXhjbHVkZUNvdW50ID0gJGxlYWtDb3VudCAtIEAkbGVha0xpc3Q7Ci0KLSAg
ICAjIER1bXAgcmVzdWx0cy4KLSAgICBwcmludCAkbGVha3NPdXRwdXQtPlswXTsKLSAgICBwcmlu
dCAkbGVha3NPdXRwdXQtPlsxXTsKLSAgICBmb3JlYWNoIG15ICRsZWFrIChAJGxlYWtMaXN0KSB7
Ci0gICAgICAgIHByaW50ICRsZWFrLT57ImxlYWtzT3V0cHV0In07CisgICAgIyBGSVhNRTogQWRq
dXN0IHRoZSBvdmVyYWxsIGxlYWsgY291bnQgaW4gdGhlIG91dHB1dCBhY2NvcmRpbmdseS4gVGhp
cyB3aWxsIGFmZmVjdCBjYWxsZXJzLCBub3RhYmx5IGxlYWtkZXRlY3Rvci5weS4KKyAgICBteSAk
cGFyc2VkTGluZUNvdW50ID0gQCRwYXJzZWRPdXRwdXQ7CisgICAgcmVtb3ZlTWF0Y2hpbmdSZWNv
cmRzKEAkcGFyc2VkT3V0cHV0LCAiY2FsbFN0YWNrIiwgQGNhbGxTdGFja3NUb0V4Y2x1ZGUpOwor
ICAgIHJlbW92ZU1hdGNoaW5nUmVjb3JkcyhAJHBhcnNlZE91dHB1dCwgInR5cGUiLCBAdHlwZXNU
b0V4Y2x1ZGUpOworICAgIG15ICRleGNsdWRlQ291bnQgPSAkcGFyc2VkTGluZUNvdW50IC0gQCRw
YXJzZWRPdXRwdXQ7CisKKyAgICBteSAkb3V0cHV0Rkg7CisgICAgaWYgKGRlZmluZWQgJG91dHB1
dFBhdGgpIHsKKyAgICAgICAgb3Blbigkb3V0cHV0RkggLCAnPicsICRvdXRwdXRQYXRoKSBvciBk
aWUgIkNvdWxkIG5vdCBvcGVuICRvdXRwdXRQYXRoIGZvciB3cml0aW5nIjsKKyAgICB9IGVsc2Ug
eworICAgICAgICAkb3V0cHV0RkggPSAqU1RET1VUOworICAgIH0KKworICAgIGZvcmVhY2ggbXkg
JGxlYWsgKEAkcGFyc2VkT3V0cHV0KSB7CisgICAgICAgIHByaW50ICRvdXRwdXRGSCAkbGVhay0+
eyJsZWFrc091dHB1dCJ9OwogICAgIH0KIAogICAgIGlmICgkZXhjbHVkZUNvdW50KSB7Ci0gICAg
ICAgIHByaW50ICIkZXhjbHVkZUNvdW50IGxlYWtzIGV4Y2x1ZGVkIChub3QgcHJpbnRlZClcbiI7
CisgICAgICAgIHByaW50ICRvdXRwdXRGSCAiJGV4Y2x1ZGVDb3VudCBsZWFrcyBleGNsdWRlZCAo
bm90IHByaW50ZWQpXG4iOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtMTMyLDI0ICsxNDAs
MjYgQEAgc3ViIHBhcnNlTGVha3NPdXRwdXQoXEApCiAgICAgIwogICAgICMgICBXZSB0cmVhdCBl
dmVyeSBsaW5lIGV4Y2VwdCBmb3IgIFByb2Nlc3MgMDAwMDA6IGFuZCBMZWFrOiBhcyBvcHRpb25h
bAogCi0gICAgIyBTa2lwIGhlYWRlciBzZWN0aW9uIHVudGlsIHRoZSBmaXJzdCB0d28gIlByb2Nl
c3MgIiBsaW5lcy4KLSAgICAjIEZJWE1FOiBJbiB0aGUgZnV0dXJlIHdlIG1heSB3aXNoIHRvIHBy
b3BhZ2F0ZSB0aGUgaGVhZGVyIHNlY3Rpb24gdGhyb3VnaCB0byBvdXIgb3V0cHV0LgotICAgIHVu
dGlsICgkbGVha3NPdXRwdXQtPlswXSA9fiAvXlByb2Nlc3MgLykgewotICAgICAgICBzaGlmdCBA
JGxlYWtzT3V0cHV0OwotICAgIH0KKyAgICBteSAkbGVha0NvdW50OworICAgIG15IEBwYXJzZWRP
dXRwdXQgPSAoKTsKKyAgICBteSAkcGFyc2luZ0xlYWsgPSAwOworICAgIG15ICRwYXJzZWRMZWFr
Q291bnQgPSAwOworICAgIGZvciBteSAkbGluZSAoQCRsZWFrc091dHB1dCkgeworICAgICAgICBp
ZiAoJGxpbmUgPX4gL15Qcm9jZXNzIFswLTldKzogWzAtOV0rIGxlYWtzPy8pIHsKKyAgICAgICAg
ICAgICgkbGVha0NvdW50KSA9ICgkbGluZSA9fiAvW1s6Ymxhbms6XV0rKFswLTldKylbWzpibGFu
azpdXStsZWFrcz8vKTsKKyAgICAgICAgICAgIGlmICghZGVmaW5lZCgkbGVha0NvdW50KSkgewor
ICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yKCJDb3VsZCBub3QgcGFyc2UgbGVhayBjb3VudCBy
ZXBvcnRlZCBieSBsZWFrcyB0b29sLiIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQogCi0gICAgbXkgKCRsZWFrQ291bnQpID0gKCRsZWFrc091dHB1
dC0+WzFdID1+IC9bWzpibGFuazpdXSsoWzAtOV0rKVtbOmJsYW5rOl1dK2xlYWtzPy8pOwotICAg
IGlmICghZGVmaW5lZCgkbGVha0NvdW50KSkgewotICAgICAgICByZXBvcnRFcnJvcigiQ291bGQg
bm90IHBhcnNlIGxlYWsgY291bnQgcmVwb3J0ZWQgYnkgbGVha3MgdG9vbC4iKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KKyAgICAgICAgaWYgKCRsaW5lIGVxICJcbiIpIHsKKyAgICAgICAgICAg
ICRwYXJzaW5nTGVhayA9IDA7CisgICAgICAgIH0KIAotICAgIG15IEBsZWFrTGlzdCA9ICgpOwot
ICAgIGZvciBteSAkbGluZSAoQCRsZWFrc091dHB1dCkgewotICAgICAgICBuZXh0IGlmICRsaW5l
ID1+IC9eUHJvY2Vzcy87Ci0gICAgICAgIG5leHQgaWYgJGxpbmUgPX4gL15ub2RlIGJ1ZmZlciBh
ZGRlZC87Ci0gICAgICAgIAogICAgICAgICBpZiAoJGxpbmUgPX4gL15MZWFrOiAvKSB7CisgICAg
ICAgICAgICAkcGFyc2luZ0xlYWsgPSAxOworICAgICAgICAgICAgJHBhcnNlZExlYWtDb3VudCsr
OwogICAgICAgICAgICAgbXkgKCRhZGRyZXNzKSA9ICgkbGluZSA9fiAvTGVhazogKFtbOnhkaWdp
dDpdeF0rKS8pOwogICAgICAgICAgICAgaWYgKCFkZWZpbmVkKCRhZGRyZXNzKSkgewogICAgICAg
ICAgICAgICAgIHJlcG9ydEVycm9yKCJDb3VsZCBub3QgcGFyc2UgTGVhayBhZGRyZXNzLiIpOwpA
QCAtMTc0LDIyICsxODQsMjYgQEAgc3ViIHBhcnNlTGVha3NPdXRwdXQoXEApCiAgICAgICAgICAg
ICAgICAgImNhbGxTdGFjayIgPT4gIiIsICMgVGhlIGxlYWtzIHRvb2wgc29tZXRpbWVzIG9taXRz
IHRoZSBjYWxsIHN0YWNrLgogICAgICAgICAgICAgICAgICJsZWFrc091dHB1dCIgPT4gJGxpbmUK
ICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICBwdXNoKEBsZWFrTGlzdCwgXCVsZWFrKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICRsZWFrTGlzdFskI2xlYWtMaXN0XS0+eyJsZWFr
c091dHB1dCJ9IC49ICRsaW5lOworICAgICAgICAgICAgcHVzaChAcGFyc2VkT3V0cHV0LCBcJWxl
YWspOworICAgICAgICB9IGVsc2lmICgkcGFyc2luZ0xlYWspIHsKKyAgICAgICAgICAgICRwYXJz
ZWRPdXRwdXRbJCNwYXJzZWRPdXRwdXRdLT57ImxlYWtzT3V0cHV0In0gLj0gJGxpbmU7CiAgICAg
ICAgICAgICBpZiAoJGxpbmUgPX4gL0NhbGwgc3RhY2s6LykgewotICAgICAgICAgICAgICAgICRs
ZWFrTGlzdFskI2xlYWtMaXN0XS0+eyJjYWxsU3RhY2sifSA9ICRsaW5lOworICAgICAgICAgICAg
ICAgICRwYXJzZWRPdXRwdXRbJCNwYXJzZWRPdXRwdXRdLT57ImNhbGxTdGFjayJ9ID0gJGxpbmU7
CiAgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBteSAlbm9uTGVh
a0xpbmUgPSAoCisgICAgICAgICAgICAgICAgImxlYWtzT3V0cHV0IiA9PiAkbGluZQorICAgICAg
ICAgICAgKTsKKyAgICAgICAgICAgIHB1c2goQHBhcnNlZE91dHB1dCwgXCVub25MZWFrTGluZSk7
CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgaWYgKEBsZWFrTGlzdCAhPSAkbGVha0NvdW50
KSB7Ci0gICAgICAgIG15ICRwYXJzZWRMZWFrQ291bnQgPSBAbGVha0xpc3Q7Ci0gICAgICAgIHJl
cG9ydEVycm9yKCJQYXJzZWQgbGVhayBjb3VudCgkcGFyc2VkTGVha0NvdW50KSBkb2VzIG5vdCBt
YXRjaCBsZWFrIGNvdW50IHJlcG9ydGVkIGJ5IGxlYWtzIHRvb2woJGxlYWtDb3VudCkuIik7Cisg
ICAgaWYgKCRwYXJzZWRMZWFrQ291bnQgIT0gJGxlYWtDb3VudCkgeworICAgICAgICByZXBvcnRF
cnJvcigiUGFyc2VkIGxlYWsgY291bnQgKCRwYXJzZWRMZWFrQ291bnQpIGRvZXMgbm90IG1hdGNo
IGxlYWsgY291bnQgcmVwb3J0ZWQgYnkgbGVha3MgdG9vbCAoJGxlYWtDb3VudCkuIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICByZXR1cm4gXEBsZWFrTGlzdDsKKyAgICByZXR1cm4g
XEBwYXJzZWRPdXRwdXQ7CiB9CiAKIHN1YiByZW1vdmVNYXRjaGluZ1JlY29yZHMoXEAkXEApCkBA
IC0yMDAsNyArMjE0LDcgQEAgc3ViIHJlbW92ZU1hdGNoaW5nUmVjb3JkcyhcQCRcQCkKICAgICAg
ICAgbXkgJHJlY29yZCA9ICRyZWNvcmRMaXN0LT5bJGldOwogCiAgICAgICAgIGZvcmVhY2ggbXkg
JHJlZ2V4cCAoQCRyZWdleHBMaXN0KSB7Ci0gICAgICAgICAgICBpZiAoJHJlY29yZC0+eyRrZXl9
ID1+ICRyZWdleHApIHsKKyAgICAgICAgICAgIGlmIChkZWZpbmVkICRyZWNvcmQtPnska2V5fSBh
bmQgJHJlY29yZC0+eyRrZXl9ID1+ICRyZWdleHApIHsKICAgICAgICAgICAgICAgICBzcGxpY2Uo
QCRyZWNvcmRMaXN0LCAkaSwgMSk7CiAgICAgICAgICAgICAgICAgbmV4dCBSRUNPUkQ7CiAgICAg
ICAgICAgICB9CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9y
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0
b3IucHkJKHJldmlzaW9uIDIyNTg3NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9s
ZWFrZGV0ZWN0b3IucHkJKHdvcmtpbmcgY29weSkKQEAgLTYyLDEyICs2MiwxMyBAQCBjbGFzcyBM
ZWFrRGV0ZWN0b3Iob2JqZWN0KToKICAgICAgICAgXQogICAgICAgICByZXR1cm4gY2FsbHN0YWNr
cwogCi0gICAgZGVmIF9sZWFrc19hcmdzKHNlbGYsIHBpZCk6CisgICAgZGVmIF9sZWFrc19hcmdz
KHNlbGYsIHBpZCwgbGVha3Nfb3V0cHV0X3BhdGgpOgogICAgICAgICBsZWFrc19hcmdzID0gW10K
ICAgICAgICAgZm9yIGNhbGxzdGFjayBpbiBzZWxmLl9jYWxsc3RhY2tzX3RvX2V4Y2x1ZGVfZnJv
bV9sZWFrcygpOgogICAgICAgICAgICAgbGVha3NfYXJncyArPSBbJy0tZXhjbHVkZS1jYWxsc3Rh
Y2s9JXMnICUgY2FsbHN0YWNrXQogICAgICAgICBmb3IgZXhjbHVkZWRfdHlwZSBpbiBzZWxmLl90
eXBlc190b19leGNsdWRlX2Zyb21fbGVha3MoKToKICAgICAgICAgICAgIGxlYWtzX2FyZ3MgKz0g
WyctLWV4Y2x1ZGUtdHlwZT0lcycgJSBleGNsdWRlZF90eXBlXQorICAgICAgICBsZWFrc19hcmdz
ICs9IFsnLS1vdXRwdXQtZmlsZT0lcycgJSBsZWFrc19vdXRwdXRfcGF0aF0KICAgICAgICAgbGVh
a3NfYXJncy5hcHBlbmQocGlkKQogICAgICAgICByZXR1cm4gbGVha3NfYXJncwogCkBAIC0xMTQs
MTAgKzExNSwxMyBAQCBjbGFzcyBMZWFrRGV0ZWN0b3Iob2JqZWN0KToKICAgICBkZWYgY2hlY2tf
Zm9yX2xlYWtzKHNlbGYsIHByb2Nlc3NfbmFtZSwgcHJvY2Vzc19waWQpOgogICAgICAgICBfbG9n
LmRlYnVnKCJDaGVja2luZyBmb3IgbGVha3MgaW4gJXMiICUgcHJvY2Vzc19uYW1lKQogICAgICAg
ICB0cnk6CisgICAgICAgICAgICBsZWFrc19maWxlbmFtZSA9IHNlbGYubGVha3NfZmlsZV9uYW1l
KHByb2Nlc3NfbmFtZSwgcHJvY2Vzc19waWQpCisgICAgICAgICAgICBsZWFrc19vdXRwdXRfcGF0
aCA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl9wb3J0LnJlc3VsdHNfZGlyZWN0b3J5KCks
IGxlYWtzX2ZpbGVuYW1lKQogICAgICAgICAgICAgIyBPZGRseSBlbm91Z2gsIHJ1bi1sZWFrcyAo
b3IgdGhlIHVuZGVybHlpbmcgbGVha3MgdG9vbCkgZG9lcyBub3Qgc2VlbSB0byBhbHdheXMgb3V0
cHV0IHV0Zi04LAogICAgICAgICAgICAgIyB0aHVzIHdlIHBhc3MgZGVjb2RlX291dHB1dD1GYWxz
ZS4gIFdpdGhvdXQgdGhpcyBjb2RlIHdlJ3ZlIHNlZW4gZXJyb3JzIGxpa2U6CiAgICAgICAgICAg
ICAjICJVbmljb2RlRGVjb2RlRXJyb3I6ICd1dGY4JyBjb2RlYyBjYW4ndCBkZWNvZGUgYnl0ZSAw
eDg4IGluIHBvc2l0aW9uIDc3OTg3NDogdW5leHBlY3RlZCBjb2RlIGJ5dGUiCi0gICAgICAgICAg
ICBsZWFrc19vdXRwdXQgPSBzZWxmLl9wb3J0Ll9ydW5fc2NyaXB0KCJydW4tbGVha3MiLCBzZWxm
Ll9sZWFrc19hcmdzKHByb2Nlc3NfcGlkKSwgaW5jbHVkZV9jb25maWd1cmF0aW9uX2FyZ3VtZW50
cz1GYWxzZSwgZGVjb2RlX291dHB1dD1GYWxzZSkKKyAgICAgICAgICAgIHNlbGYuX3BvcnQuX3J1
bl9zY3JpcHQoInJ1bi1sZWFrcyIsIHNlbGYuX2xlYWtzX2FyZ3MocHJvY2Vzc19waWQsIGxlYWtz
X291dHB1dF9wYXRoKSwgaW5jbHVkZV9jb25maWd1cmF0aW9uX2FyZ3VtZW50cz1GYWxzZSwgZGVj
b2RlX291dHB1dD1GYWxzZSkKKyAgICAgICAgICAgIGxlYWtzX291dHB1dCA9IHNlbGYuX2ZpbGVz
eXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShsZWFrc19vdXRwdXRfcGF0aCkKICAgICAgICAgZXhjZXB0
IFNjcmlwdEVycm9yIGFzIGU6CiAgICAgICAgICAgICBfbG9nLndhcm4oIkZhaWxlZCB0byBydW4g
bGVha3MgdG9vbDogJXMiICUgZS5tZXNzYWdlX3dpdGhfb3V0cHV0KCkpCiAgICAgICAgICAgICBy
ZXR1cm4KQEAgLTEyOCwxMCArMTMyLDYgQEAgY2xhc3MgTGVha0RldGVjdG9yKG9iamVjdCk6CiAg
ICAgICAgIGlmIG5vdCBhZGp1c3RlZF9jb3VudDoKICAgICAgICAgICAgIHJldHVybgogCi0gICAg
ICAgIGxlYWtzX2ZpbGVuYW1lID0gc2VsZi5sZWFrc19maWxlX25hbWUocHJvY2Vzc19uYW1lLCBw
cm9jZXNzX3BpZCkKLSAgICAgICAgbGVha3Nfb3V0cHV0X3BhdGggPSBzZWxmLl9maWxlc3lzdGVt
LmpvaW4oc2VsZi5fcG9ydC5yZXN1bHRzX2RpcmVjdG9yeSgpLCBsZWFrc19maWxlbmFtZSkKLSAg
ICAgICAgc2VsZi5fZmlsZXN5c3RlbS53cml0ZV9iaW5hcnlfZmlsZShsZWFrc19vdXRwdXRfcGF0
aCwgbGVha3Nfb3V0cHV0KQotCiAgICAgICAgICMgRklYTUU6IElkZWFsbHkgd2Ugd291bGQgbm90
IGJlIGxvZ2dpbmcgZnJvbSB0aGUgd29ya2VyIHByb2Nlc3MsIGJ1dCByYXRoZXIgcGFzcyB0aGUg
bGVhawogICAgICAgICAjIGluZm9ybWF0aW9uIGJhY2sgdG8gdGhlIG1hbmFnZXIgYW5kIGhhdmUg
aXQgbG9nLgogICAgICAgICBpZiBleGNsdWRlZDoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329392</attachid>
            <date>2017-12-14 13:25:11 -0800</date>
            <delta_ts>2017-12-14 13:54:46 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>LeaksOutput.txt</filename>
            <type>text/plain</type>
            <size>16088</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyNTkyMykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMwIEBACisyMDE3LTEyLTE0ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgorCisgICAgICAgIEltcHJvdmUgbGVha3MgZGV0ZWN0b3Igb3V0cHV0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA4MjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhpbmcgdHdvIGlzc3VlczoKKyAg
ICAgICAgMS4gcnVuLWxlYWtzIG9taXRzIG1hbnkgbGluZXMgZnJvbSBsZWFrcyB0b29sIG91dHB1
dCwgbWFraW5nIGl0IGluY29tcGF0aWJsZSB3aXRoCisgICAgICAgIG90aGVyIHRvb2xzLiBOb3Rh
Ymx5LCBzeW1ib2xpY2F0aW9uIGNhbm5vdCBiZSBwZXJmb3JtZWQuCisgICAgICAgIDIuIHJ1bi1s
ZWFrcyBvdXRwdXQgZ29lcyB0byAicnVuLXdlYmtpdC10ZXN0cyAtLWRlYnVnLXJ3dC1sb2dnaW5n
IiBvdXRwdXQuIFRoaXMKKyAgICAgICAgbWFrZXMgaXQgbXVjaCBsb25nZXIgdGhhbiBuZWVkZWQs
IHNvbWV0aW1lcyBldmVuIG92ZXJsb2FkaW5nIGJ1aWxkYm90LiBXZSBkb24ndAorICAgICAgICBu
ZWVkIGZ1bGwgb3V0cHV0IGluIHRlc3QgbG9nLCBhcyBzZXBhcmF0ZSBmaWxlcyBhcmUgY3JlYXRl
ZCBmb3IgZWFjaCBvZiB0aGVzZS4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWxlYWtzOiBSZXBy
ZXNlbnQgZWFjaCBsaW5lIGluIGxlYWtzIG91dHB1dCB3aGVuIHBhcnNpbmcsIGFuZCBwcmludAor
ICAgICAgICBldmVyeXRoaW5nIGV4Y2VwdCBmb3IgZXhwbGljaXRseSBleGNsdWRlZCBsZWFrcy4g
RnJvbSBteSB0ZXN0aW5nIGFuZCByZWFkaW5nCisgICAgICAgIHRoZSBjb2RlLCBpdCBsb29rcyBs
aWtlIG5vbmUgb2Ygb3VyIHRvb2xzIHNob3VsZCBiZSBicm9rZW4gYnkgdGhpcyBjaGFuZ2UuCisK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9yLnB5OiBJIGNvdWxk
bid0IGZpbmQgYSB3YXkgdG8gcnVuIGEgaGVscGVyIHRvb2wKKyAgICAgICAgd2l0aG91dCBkdW1w
aW5nIGFsbCBvZiBpdHMgb3V0cHV0IHRvIGRlYnVnIGxvZywgc28gc3dpdGNoZWQgdG8gdXNpbmcg
YSBmaWxlIGZvciBsZWFrcy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVh
a3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12MS4wLnBsOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4wLW5ldy5w
bDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1s
ZWFrcy1yZXBvcnQtdjIuMC1vbGQucGw6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0
L2xlYWtkZXRlY3Rvcl91bml0dGVzdC5weToKKyAgICAgICAgVXBkYXRlZCB0ZXN0cyBmb3IgbmV3
IGJlaGF2aW9yLgorCiAyMDE3LTEyLTE0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxl
LmNvbT4KIAogICAgICAgICB3ZWJraXRweTogQmV0dGVyIG5hbWUtdmVyc2lvbiBtYXBwaW5nIChG
b2xsb3ctdXAgZml4KQpJbmRleDogVG9vbHMvU2NyaXB0cy9ydW4tbGVha3MKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy9ydW4tbGVha3MJKHJldmlzaW9uIDIyNTg3NikKKysrIFRvb2xzL1Nj
cmlwdHMvcnVuLWxlYWtzCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxNSArNDYsMTggQEAgc3ViIG1h
aW4oKQogICAgICAgICAiVXNhZ2U6ICIgLiBiYXNlbmFtZSgkMCkgLiAiIFtvcHRpb25zXSBwaWQg
fCBleGVjdXRhYmxlIG5hbWVcbiIgLgogICAgICAgICAiICAtLWV4Y2x1ZGUtY2FsbHN0YWNrIHJl
Z2V4cCAgIEV4Y2x1ZGUgbGVha3Mgd2hvc2UgY2FsbCBzdGFja3MgbWF0Y2ggdGhlIHJlZ3VsYXIg
ZXhwcmVzc2lvbiAncmVnZXhwJy5cbiIgLgogICAgICAgICAiICAtLWV4Y2x1ZGUtdHlwZSByZWdl
eHAgICAgICAgIEV4Y2x1ZGUgbGVha3Mgd2hvc2UgZGF0YSB0eXBlcyBtYXRjaCB0aGUgcmVndWxh
ciBleHByZXNzaW9uICdyZWdleHAnLlxuIiAuCisgICAgICAgICIgIC0tb3V0cHV0LWZpbGUgcGF0
aCAgICAgICAgICAgU3RvcmUgcmVzdWx0IGluIGEgZmlsZS4gSWYgbm90IHNwZWNpZmllZCwgc3Rh
bmRhcmQgb3V0cHV0IGlzIHVzZWQuXG4iIC4KICAgICAgICAgIiAgLS1oZWxwICAgICAgICAgICAg
ICAgICAgICAgICBTaG93IHRoaXMgaGVscCBtZXNzYWdlLlxuIjsKIAogICAgIG15IEBjYWxsU3Rh
Y2tzVG9FeGNsdWRlID0gKCk7CiAgICAgbXkgQHR5cGVzVG9FeGNsdWRlID0gKCk7CisgICAgbXkg
JG91dHB1dFBhdGg7CiAgICAgbXkgJGhlbHAgPSAwOwogCiAgICAgbXkgJGdldE9wdGlvbnNSZXN1
bHQgPSBHZXRPcHRpb25zKAogICAgICAgICAnZXhjbHVkZS1jYWxsc3RhY2s6cycgPT4gXEBjYWxs
U3RhY2tzVG9FeGNsdWRlLAogICAgICAgICAnZXhjbHVkZS10eXBlOnMnID0+IFxAdHlwZXNUb0V4
Y2x1ZGUsCisgICAgICAgICdvdXRwdXQtZmlsZTpzJyA9PiBcJG91dHB1dFBhdGgsCiAgICAgICAg
ICdoZWxwJyA9PiBcJGhlbHAKICAgICApOwogICAgIG15ICRwaWRPckV4ZWN1dGFibGVOYW1lID0g
JEFSR1ZbMF07CkBAIC03NiwyNiArNzksMzEgQEAgc3ViIG1haW4oKQogICAgICAgICByZXR1cm4g
MTsKICAgICB9CiAKLSAgICBteSAkbGVha0xpc3QgPSBwYXJzZUxlYWtzT3V0cHV0KEAkbGVha3NP
dXRwdXQpOwotICAgIGlmICghJGxlYWtMaXN0KSB7CisgICAgbXkgJHBhcnNlZE91dHB1dCA9IHBh
cnNlTGVha3NPdXRwdXQoQCRsZWFrc091dHB1dCk7CisgICAgaWYgKCEkcGFyc2VkT3V0cHV0KSB7
CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KIAogICAgICMgRmlsdGVyIG91dHB1dC4KLSAgICBt
eSAkbGVha0NvdW50ID0gQCRsZWFrTGlzdDsKLSAgICByZW1vdmVNYXRjaGluZ1JlY29yZHMoQCRs
ZWFrTGlzdCwgImNhbGxTdGFjayIsIEBjYWxsU3RhY2tzVG9FeGNsdWRlKTsKLSAgICByZW1vdmVN
YXRjaGluZ1JlY29yZHMoQCRsZWFrTGlzdCwgInR5cGUiLCBAdHlwZXNUb0V4Y2x1ZGUpOwotICAg
IG15ICRleGNsdWRlQ291bnQgPSAkbGVha0NvdW50IC0gQCRsZWFrTGlzdDsKLQotICAgICMgRHVt
cCByZXN1bHRzLgotICAgIHByaW50ICRsZWFrc091dHB1dC0+WzBdOwotICAgIHByaW50ICRsZWFr
c091dHB1dC0+WzFdOwotICAgIGZvcmVhY2ggbXkgJGxlYWsgKEAkbGVha0xpc3QpIHsKLSAgICAg
ICAgcHJpbnQgJGxlYWstPnsibGVha3NPdXRwdXQifTsKKyAgICAjIEZJWE1FOiBBZGp1c3QgdGhl
IG92ZXJhbGwgbGVhayBjb3VudCBpbiB0aGUgb3V0cHV0IGFjY29yZGluZ2x5LiBUaGlzIHdpbGwg
YWZmZWN0IGNhbGxlcnMsIG5vdGFibHkgbGVha2RldGVjdG9yLnB5LgorICAgIG15ICRwYXJzZWRM
aW5lQ291bnQgPSBAJHBhcnNlZE91dHB1dDsKKyAgICByZW1vdmVNYXRjaGluZ1JlY29yZHMoQCRw
YXJzZWRPdXRwdXQsICJjYWxsU3RhY2siLCBAY2FsbFN0YWNrc1RvRXhjbHVkZSk7CisgICAgcmVt
b3ZlTWF0Y2hpbmdSZWNvcmRzKEAkcGFyc2VkT3V0cHV0LCAidHlwZSIsIEB0eXBlc1RvRXhjbHVk
ZSk7CisgICAgbXkgJGV4Y2x1ZGVDb3VudCA9ICRwYXJzZWRMaW5lQ291bnQgLSBAJHBhcnNlZE91
dHB1dDsKKworICAgIG15ICRvdXRwdXRGSDsKKyAgICBpZiAoZGVmaW5lZCAkb3V0cHV0UGF0aCkg
eworICAgICAgICBvcGVuKCRvdXRwdXRGSCAsICc+JywgJG91dHB1dFBhdGgpIG9yIGRpZSAiQ291
bGQgbm90IG9wZW4gJG91dHB1dFBhdGggZm9yIHdyaXRpbmciOworICAgIH0gZWxzZSB7CisgICAg
ICAgICRvdXRwdXRGSCA9ICpTVERPVVQ7CisgICAgfQorCisgICAgZm9yZWFjaCBteSAkbGVhayAo
QCRwYXJzZWRPdXRwdXQpIHsKKyAgICAgICAgcHJpbnQgJG91dHB1dEZIICRsZWFrLT57ImxlYWtz
T3V0cHV0In07CiAgICAgfQogCiAgICAgaWYgKCRleGNsdWRlQ291bnQpIHsKLSAgICAgICAgcHJp
bnQgIiRleGNsdWRlQ291bnQgbGVha3MgZXhjbHVkZWQgKG5vdCBwcmludGVkKVxuIjsKKyAgICAg
ICAgcHJpbnQgJG91dHB1dEZIICIkZXhjbHVkZUNvdW50IGxlYWtzIGV4Y2x1ZGVkIChub3QgcHJp
bnRlZClcbiI7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC0xMzIsMjQgKzE0MCwyNiBAQCBz
dWIgcGFyc2VMZWFrc091dHB1dChcQCkKICAgICAjCiAgICAgIyAgIFdlIHRyZWF0IGV2ZXJ5IGxp
bmUgZXhjZXB0IGZvciAgUHJvY2VzcyAwMDAwMDogYW5kIExlYWs6IGFzIG9wdGlvbmFsCiAKLSAg
ICAjIFNraXAgaGVhZGVyIHNlY3Rpb24gdW50aWwgdGhlIGZpcnN0IHR3byAiUHJvY2VzcyAiIGxp
bmVzLgotICAgICMgRklYTUU6IEluIHRoZSBmdXR1cmUgd2UgbWF5IHdpc2ggdG8gcHJvcGFnYXRl
IHRoZSBoZWFkZXIgc2VjdGlvbiB0aHJvdWdoIHRvIG91ciBvdXRwdXQuCi0gICAgdW50aWwgKCRs
ZWFrc091dHB1dC0+WzBdID1+IC9eUHJvY2VzcyAvKSB7Ci0gICAgICAgIHNoaWZ0IEAkbGVha3NP
dXRwdXQ7Ci0gICAgfQorICAgIG15ICRsZWFrQ291bnQ7CisgICAgbXkgQHBhcnNlZE91dHB1dCA9
ICgpOworICAgIG15ICRwYXJzaW5nTGVhayA9IDA7CisgICAgbXkgJHBhcnNlZExlYWtDb3VudCA9
IDA7CisgICAgZm9yIG15ICRsaW5lIChAJGxlYWtzT3V0cHV0KSB7CisgICAgICAgIGlmICgkbGlu
ZSA9fiAvXlByb2Nlc3MgWzAtOV0rOiBbMC05XSsgbGVha3M/LykgeworICAgICAgICAgICAgKCRs
ZWFrQ291bnQpID0gKCRsaW5lID1+IC9bWzpibGFuazpdXSsoWzAtOV0rKVtbOmJsYW5rOl1dK2xl
YWtzPy8pOworICAgICAgICAgICAgaWYgKCFkZWZpbmVkKCRsZWFrQ291bnQpKSB7CisgICAgICAg
ICAgICAgICAgcmVwb3J0RXJyb3IoIkNvdWxkIG5vdCBwYXJzZSBsZWFrIGNvdW50IHJlcG9ydGVk
IGJ5IGxlYWtzIHRvb2wuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICB9CiAKLSAgICBteSAoJGxlYWtDb3VudCkgPSAoJGxlYWtzT3V0cHV0LT5bMV0g
PX4gL1tbOmJsYW5rOl1dKyhbMC05XSspW1s6Ymxhbms6XV0rbGVha3M/Lyk7Ci0gICAgaWYgKCFk
ZWZpbmVkKCRsZWFrQ291bnQpKSB7Ci0gICAgICAgIHJlcG9ydEVycm9yKCJDb3VsZCBub3QgcGFy
c2UgbGVhayBjb3VudCByZXBvcnRlZCBieSBsZWFrcyB0b29sLiIpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQorICAgICAgICBpZiAoJGxpbmUgZXEgIlxuIikgeworICAgICAgICAgICAgJHBhcnNp
bmdMZWFrID0gMDsKKyAgICAgICAgfQogCi0gICAgbXkgQGxlYWtMaXN0ID0gKCk7Ci0gICAgZm9y
IG15ICRsaW5lIChAJGxlYWtzT3V0cHV0KSB7Ci0gICAgICAgIG5leHQgaWYgJGxpbmUgPX4gL15Q
cm9jZXNzLzsKLSAgICAgICAgbmV4dCBpZiAkbGluZSA9fiAvXm5vZGUgYnVmZmVyIGFkZGVkLzsK
LSAgICAgICAgCiAgICAgICAgIGlmICgkbGluZSA9fiAvXkxlYWs6IC8pIHsKKyAgICAgICAgICAg
ICRwYXJzaW5nTGVhayA9IDE7CisgICAgICAgICAgICAkcGFyc2VkTGVha0NvdW50Kys7CiAgICAg
ICAgICAgICBteSAoJGFkZHJlc3MpID0gKCRsaW5lID1+IC9MZWFrOiAoW1s6eGRpZ2l0Ol14XSsp
Lyk7CiAgICAgICAgICAgICBpZiAoIWRlZmluZWQoJGFkZHJlc3MpKSB7CiAgICAgICAgICAgICAg
ICAgcmVwb3J0RXJyb3IoIkNvdWxkIG5vdCBwYXJzZSBMZWFrIGFkZHJlc3MuIik7CkBAIC0xNzQs
MjIgKzE4NCwyNiBAQCBzdWIgcGFyc2VMZWFrc091dHB1dChcQCkKICAgICAgICAgICAgICAgICAi
Y2FsbFN0YWNrIiA9PiAiIiwgIyBUaGUgbGVha3MgdG9vbCBzb21ldGltZXMgb21pdHMgdGhlIGNh
bGwgc3RhY2suCiAgICAgICAgICAgICAgICAgImxlYWtzT3V0cHV0IiA9PiAkbGluZQogICAgICAg
ICAgICAgKTsKLSAgICAgICAgICAgIHB1c2goQGxlYWtMaXN0LCBcJWxlYWspOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgJGxlYWtMaXN0WyQjbGVha0xpc3RdLT57ImxlYWtzT3V0cHV0
In0gLj0gJGxpbmU7CisgICAgICAgICAgICBwdXNoKEBwYXJzZWRPdXRwdXQsIFwlbGVhayk7Cisg
ICAgICAgIH0gZWxzaWYgKCRwYXJzaW5nTGVhaykgeworICAgICAgICAgICAgJHBhcnNlZE91dHB1
dFskI3BhcnNlZE91dHB1dF0tPnsibGVha3NPdXRwdXQifSAuPSAkbGluZTsKICAgICAgICAgICAg
IGlmICgkbGluZSA9fiAvQ2FsbCBzdGFjazovKSB7Ci0gICAgICAgICAgICAgICAgJGxlYWtMaXN0
WyQjbGVha0xpc3RdLT57ImNhbGxTdGFjayJ9ID0gJGxpbmU7CisgICAgICAgICAgICAgICAgJHBh
cnNlZE91dHB1dFskI3BhcnNlZE91dHB1dF0tPnsiY2FsbFN0YWNrIn0gPSAkbGluZTsKICAgICAg
ICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG15ICVub25MZWFrTGluZSA9
ICgKKyAgICAgICAgICAgICAgICAibGVha3NPdXRwdXQiID0+ICRsaW5lCisgICAgICAgICAgICAp
OworICAgICAgICAgICAgcHVzaChAcGFyc2VkT3V0cHV0LCBcJW5vbkxlYWtMaW5lKTsKICAgICAg
ICAgfQogICAgIH0KICAgICAKLSAgICBpZiAoQGxlYWtMaXN0ICE9ICRsZWFrQ291bnQpIHsKLSAg
ICAgICAgbXkgJHBhcnNlZExlYWtDb3VudCA9IEBsZWFrTGlzdDsKLSAgICAgICAgcmVwb3J0RXJy
b3IoIlBhcnNlZCBsZWFrIGNvdW50KCRwYXJzZWRMZWFrQ291bnQpIGRvZXMgbm90IG1hdGNoIGxl
YWsgY291bnQgcmVwb3J0ZWQgYnkgbGVha3MgdG9vbCgkbGVha0NvdW50KS4iKTsKKyAgICBpZiAo
JHBhcnNlZExlYWtDb3VudCAhPSAkbGVha0NvdW50KSB7CisgICAgICAgIHJlcG9ydEVycm9yKCJQ
YXJzZWQgbGVhayBjb3VudCAoJHBhcnNlZExlYWtDb3VudCkgZG9lcyBub3QgbWF0Y2ggbGVhayBj
b3VudCByZXBvcnRlZCBieSBsZWFrcyB0b29sICgkbGVha0NvdW50KS4iKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIHJldHVybiBcQGxlYWtMaXN0OworICAgIHJldHVybiBcQHBhcnNl
ZE91dHB1dDsKIH0KIAogc3ViIHJlbW92ZU1hdGNoaW5nUmVjb3JkcyhcQCRcQCkKQEAgLTIwMCw3
ICsyMTQsNyBAQCBzdWIgcmVtb3ZlTWF0Y2hpbmdSZWNvcmRzKFxAJFxAKQogICAgICAgICBteSAk
cmVjb3JkID0gJHJlY29yZExpc3QtPlskaV07CiAKICAgICAgICAgZm9yZWFjaCBteSAkcmVnZXhw
IChAJHJlZ2V4cExpc3QpIHsKLSAgICAgICAgICAgIGlmICgkcmVjb3JkLT57JGtleX0gPX4gJHJl
Z2V4cCkgeworICAgICAgICAgICAgaWYgKGRlZmluZWQgJHJlY29yZC0+eyRrZXl9IGFuZCAkcmVj
b3JkLT57JGtleX0gPX4gJHJlZ2V4cCkgewogICAgICAgICAgICAgICAgIHNwbGljZShAJHJlY29y
ZExpc3QsICRpLCAxKTsKICAgICAgICAgICAgICAgICBuZXh0IFJFQ09SRDsKICAgICAgICAgICAg
IH0KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVu
LWxlYWtzLXJlcG9ydC12MS4wLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12MS4wLnBsCShyZXZpc2lv
biAyMjU4NzYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0
L3J1bi1sZWFrcy1yZXBvcnQtdjEuMC5wbAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsMTIg
QEAgRU9GCiBteSAkZXhwZWN0ZWRPdXRwdXQgPQogWwogICB7CisgICAgJ2xlYWtzT3V0cHV0JyA9
PiAnUHJvY2VzcyAxNjAyOiA4NjY3MSBub2RlcyBtYWxsb2NlZCBmb3IgMTMyNjEgS0InCisgIH0s
CisgIHsKKyAgICAnbGVha3NPdXRwdXQnID0+ICdQcm9jZXNzIDE2MDI6IDggbGVha3MgZm9yIDE2
MCB0b3RhbCBsZWFrZWQgYnl0ZXMuJworICB9LAorICB7CiAgICAgJ2xlYWtzT3V0cHV0JyA9PiBq
b2luKCcnLCBzcGxpdCgvXG4vLCA8PEVPRikpLAogTGVhazogMHgxMTRkNTQ3MDggIHNpemU9MjQg
IHpvbmU6IEphdmFTY3JpcHRDb3JlIEZhc3RNYWxsb2NfMHg3ZmZmNzBhMDlkMjAKIAkKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJl
cG9ydC12Mi4wLW5ldy5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwv
cnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBvcnQtdjIuMC1uZXcucGwJKHJldmlzaW9u
IDIyNTg3NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3Qv
cnVuLWxlYWtzLXJlcG9ydC12Mi4wLW5ldy5wbAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgs
NTQgQEAgRU9GCiBteSAkZXhwZWN0ZWRPdXRwdXQgPQogWwogICB7CisgICAgJ2xlYWtzT3V0cHV0
JyA9PiAnUHJvY2VzczogICAgICAgICBEdW1wUmVuZGVyVHJlZSBbMjk5MDNdJworICB9LAorICB7
CisgICAgJ2xlYWtzT3V0cHV0JyA9PiAnUGF0aDogICAgICAgICAgICAvVm9sdW1lcy9EYXRhL0J1
aWxkL0RlYnVnL0R1bXBSZW5kZXJUcmVlJworICB9LAorICB7CisgICAgJ2xlYWtzT3V0cHV0JyA9
PiAnTG9hZCBBZGRyZXNzOiAgICAweDEwMjExNjAwMCcKKyAgfSwKKyAgeworICAgICdsZWFrc091
dHB1dCcgPT4gJ0lkZW50aWZpZXI6ICAgICAgRHVtcFJlbmRlclRyZWUnCisgIH0sCisgIHsKKyAg
ICAnbGVha3NPdXRwdXQnID0+ICdWZXJzaW9uOiAgICAgICAgID8/PyAoPz8/KScKKyAgfSwKKyAg
eworICAgICdsZWFrc091dHB1dCcgPT4gJ0NvZGUgVHlwZTogICAgICAgWDg2LTY0IChOYXRpdmUp
JworICB9LAorICB7CisgICAgJ2xlYWtzT3V0cHV0JyA9PiAnUGFyZW50IFByb2Nlc3M6ICBQeXRo
b24gWzI5ODkyXScKKyAgfSwKKyAgeworICAgICdsZWFrc091dHB1dCcgPT4gJycKKyAgfSwKKyAg
eworICAgICdsZWFrc091dHB1dCcgPT4gJ0RhdGUvVGltZTogICAgICAgMjAxMS0xMS0xNCAxMTox
Mjo0NS43MDYgLTA4MDAnCisgIH0sCisgIHsKKyAgICAnbGVha3NPdXRwdXQnID0+ICdPUyBWZXJz
aW9uOiAgICAgIE1hYyBPUyBYIDEwLjcuMiAoMTFDNzQpJworICB9LAorICB7CisgICAgJ2xlYWtz
T3V0cHV0JyA9PiAnUmVwb3J0IFZlcnNpb246ICA3JworICB9LAorICB7CisgICAgJ2xlYWtzT3V0
cHV0JyA9PiAnJworICB9LAorICB7CisgICAgJ2xlYWtzT3V0cHV0JyA9PiAnbGVha3MgUmVwb3J0
IFZlcnNpb246ICAyLjAnCisgIH0sCisgIHsKKyAgICAnbGVha3NPdXRwdXQnID0+ICdsZWFrcygx
Mjg3MSwweGFjZGZhMmMwKSBtYWxsb2M6IHByb2Nlc3MgODk2MTcgbm8gbG9uZ2VyIGV4aXN0cywg
c3RhY2sgbG9ncyBkZWxldGVkIGZyb20gL3RtcC9zdGFjay1sb2dzLjg5NjE3LkR1bXBSZW5kZXJU
cmVlLkEyZ2l5Ni5pbmRleCcKKyAgfSwKKyAgeworICAgICdsZWFrc091dHB1dCcgPT4gJ1Byb2Nl
c3MgMjk5MDM6IDYwMDE1IG5vZGVzIG1hbGxvY2VkIGZvciA3MjkwIEtCJworICB9LAorICB7Cisg
ICAgJ2xlYWtzT3V0cHV0JyA9PiAnUHJvY2VzcyAyOTkwMzogMiBsZWFrcyBmb3IgMTAwOCB0b3Rh
bCBsZWFrZWQgYnl0ZXMuJworICB9LAorICB7CiAgICAgJ2xlYWtzT3V0cHV0JyA9PiBqb2luKCcn
LCBzcGxpdCgvXG4vLCA8PEVPRikpLAogTGVhazogMHg3ZjlhM2E2MTI4MTAgIHNpemU9NTc2ICB6
b25lOiBEZWZhdWx0TWFsbG9jWm9uZV8weDEwMjI3YjAwMCAgIFVSTENvbm5lY3Rpb25Mb2FkZXI6
OkxvYWRlckNvbm5lY3Rpb25FdmVudFF1ZXVlICBDKysgIENGTmV0d29yawogCTB4N2YzYWY0NjAg
MHgwMDAwN2ZmZiAweDdlZGYyZjQwIDB4MDAwMDdmZmYgCWAuOi4uLi4uQC8ufi4uLi4KSW5kZXg6
IFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJl
cG9ydC12Mi4wLW9sZC5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwv
cnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBvcnQtdjIuMC1vbGQucGwJKHJldmlzaW9u
IDIyNTg3NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3Qv
cnVuLWxlYWtzLXJlcG9ydC12Mi4wLW9sZC5wbAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgs
NTQgQEAgRU9GCiBteSAkZXhwZWN0ZWRPdXRwdXQgPQogWwogICB7CisgICAgJ2xlYWtzT3V0cHV0
JyA9PiAnbGVha3MgUmVwb3J0IFZlcnNpb246ICAyLjAnCisgIH0sCisgIHsKKyAgICAnbGVha3NP
dXRwdXQnID0+ICdQcm9jZXNzOiAgICAgICAgIFNhZmFyaSBbNTM2MDZdJworICB9LAorICB7Cisg
ICAgJ2xlYWtzT3V0cHV0JyA9PiAnUGF0aDogICAgICAgICAgICAvQXBwbGljYXRpb25zL1NhZmFy
aS5hcHAvQ29udGVudHMvTWFjT1MvU2FmYXJpJworICB9LAorICB7CisgICAgJ2xlYWtzT3V0cHV0
JyA9PiAnTG9hZCBBZGRyZXNzOiAgICAweDEwMDAwMDAwMCcKKyAgfSwKKyAgeworICAgICdsZWFr
c091dHB1dCcgPT4gJ0lkZW50aWZpZXI6ICAgICAgY29tLmFwcGxlLlNhZmFyaScKKyAgfSwKKyAg
eworICAgICdsZWFrc091dHB1dCcgPT4gJ1ZlcnNpb246ICAgICAgICAgNS4wICg2NTMzLjkpJwor
ICB9LAorICB7CisgICAgJ2xlYWtzT3V0cHV0JyA9PiAnQnVpbGQgSW5mbzogICAgICBXZWJCcm93
c2VyLTc1MzMwOTAwfjEnCisgIH0sCisgIHsKKyAgICAnbGVha3NPdXRwdXQnID0+ICdDb2RlIFR5
cGU6ICAgICAgIFg4Ni02NCAoTmF0aXZlKScKKyAgfSwKKyAgeworICAgICdsZWFrc091dHB1dCcg
PT4gJ1BhcmVudCBQcm9jZXNzOiAgcGVybDUuMTAuMCBbNTM1OTldJworICB9LAorICB7CisgICAg
J2xlYWtzT3V0cHV0JyA9PiAnJworICB9LAorICB7CisgICAgJ2xlYWtzT3V0cHV0JyA9PiAnRGF0
ZS9UaW1lOiAgICAgICAyMDEwLTA1LTI3IDExOjQyOjI3LjM1NiAtMDcwMCcKKyAgfSwKKyAgewor
ICAgICdsZWFrc091dHB1dCcgPT4gJ09TIFZlcnNpb246ICAgICAgTWFjIE9TIFggMTAuNi4zICgx
MEQ1NzEpJworICB9LAorICB7CisgICAgJ2xlYWtzT3V0cHV0JyA9PiAnUmVwb3J0IFZlcnNpb246
ICA2JworICB9LAorICB7CisgICAgJ2xlYWtzT3V0cHV0JyA9PiAnJworICB9LAorICB7CisgICAg
J2xlYWtzT3V0cHV0JyA9PiAnUHJvY2VzcyA1MzYwNjogMTEyMjk1IG5vZGVzIG1hbGxvY2VkIGZv
ciAyMjM2NyBLQicKKyAgfSwKKyAgeworICAgICdsZWFrc091dHB1dCcgPT4gJ1Byb2Nlc3MgNTM2
MDY6IDEgbGVhayBmb3IgMzIgdG90YWwgbGVha2VkIGJ5dGVzLicKKyAgfSwKKyAgewogICAgICds
ZWFrc091dHB1dCcgPT4gam9pbignJywgc3BsaXQoL1xuLywgPDxFT0YpKSwKIExlYWs6IDB4MTEx
OGMwZTYwICBzaXplPTMyICB6b25lOiBEZWZhdWx0TWFsbG9jWm9uZV8weDEwNWE5MjAwMAlzdHJp
bmcgJ2NvbS5hcHBsZS5xdWFyYW50aW5lJwogCUNhbGwgc3RhY2s6IFt0aHJlYWQgMHg3ZmZmNzAx
MjZiZTBdOiB8IDB4MTAwMDAxZTg0IHwgTlNBcHBsaWNhdGlvbk1haW4gfCArW05TQnVuZGxlKE5T
TmliTG9hZGluZykgbG9hZE5pYk5hbWVkOm93bmVyOl0gfCArW05TQnVuZGxlKE5TTmliTG9hZGlu
ZykgX2xvYWROaWJGaWxlOm5hbWVUYWJsZTp3aXRoWm9uZTpvd25lckJ1bmRsZTpdIHwgbG9hZE5p
YiB8IC1bTlNJQk9iamVjdERhdGEgbmliSW5zdGFudGlhdGVXaXRoT3duZXI6dG9wTGV2ZWxPYmpl
Y3RzOl0gfCAtW05TU2V0IG1ha2VPYmplY3RzUGVyZm9ybVNlbGVjdG9yOl0gfCAweDEwMDAwMzQ5
NCB8IDB4MTAwMTAxM2ZmIHwgMHgxMDAxNGRiYjkgfCAweDEwMDE0ZDkyMyB8IDB4MTAwMTRkN2Q3
IHwgMHgxMDAxNGNjZDkgfCAweDEwMDE0OWM4ZSB8IDB4MTAwMTQ5YmQ4IHwgeGFyX29wZW4gfCB4
YXJfZmlsZV91bnNlcmlhbGl6ZSB8IHhhcl9wcm9wX3Vuc2VyaWFsaXplIHwgeGFyX3Byb3BfdW5z
ZXJpYWxpemUgfCBzdHJkdXAgfCBtYWxsb2MgfCBtYWxsb2Nfem9uZV9tYWxsb2MgCkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9yLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3IucHkJKHJldmlzaW9uIDIy
NTg3NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3IucHkJKHdv
cmtpbmcgY29weSkKQEAgLTYyLDEyICs2MiwxMyBAQCBjbGFzcyBMZWFrRGV0ZWN0b3Iob2JqZWN0
KToKICAgICAgICAgXQogICAgICAgICByZXR1cm4gY2FsbHN0YWNrcwogCi0gICAgZGVmIF9sZWFr
c19hcmdzKHNlbGYsIHBpZCk6CisgICAgZGVmIF9sZWFrc19hcmdzKHNlbGYsIHBpZCwgbGVha3Nf
b3V0cHV0X3BhdGgpOgogICAgICAgICBsZWFrc19hcmdzID0gW10KICAgICAgICAgZm9yIGNhbGxz
dGFjayBpbiBzZWxmLl9jYWxsc3RhY2tzX3RvX2V4Y2x1ZGVfZnJvbV9sZWFrcygpOgogICAgICAg
ICAgICAgbGVha3NfYXJncyArPSBbJy0tZXhjbHVkZS1jYWxsc3RhY2s9JXMnICUgY2FsbHN0YWNr
XQogICAgICAgICBmb3IgZXhjbHVkZWRfdHlwZSBpbiBzZWxmLl90eXBlc190b19leGNsdWRlX2Zy
b21fbGVha3MoKToKICAgICAgICAgICAgIGxlYWtzX2FyZ3MgKz0gWyctLWV4Y2x1ZGUtdHlwZT0l
cycgJSBleGNsdWRlZF90eXBlXQorICAgICAgICBsZWFrc19hcmdzICs9IFsnLS1vdXRwdXQtZmls
ZT0lcycgJSBsZWFrc19vdXRwdXRfcGF0aF0KICAgICAgICAgbGVha3NfYXJncy5hcHBlbmQocGlk
KQogICAgICAgICByZXR1cm4gbGVha3NfYXJncwogCkBAIC0xMTMsMTEgKzExNCwxNCBAQCBjbGFz
cyBMZWFrRGV0ZWN0b3Iob2JqZWN0KToKIAogICAgIGRlZiBjaGVja19mb3JfbGVha3Moc2VsZiwg
cHJvY2Vzc19uYW1lLCBwcm9jZXNzX3BpZCk6CiAgICAgICAgIF9sb2cuZGVidWcoIkNoZWNraW5n
IGZvciBsZWFrcyBpbiAlcyIgJSBwcm9jZXNzX25hbWUpCisgICAgICAgIGxlYWtzX2ZpbGVuYW1l
ID0gc2VsZi5sZWFrc19maWxlX25hbWUocHJvY2Vzc19uYW1lLCBwcm9jZXNzX3BpZCkKKyAgICAg
ICAgbGVha3Nfb3V0cHV0X3BhdGggPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fcG9ydC5y
ZXN1bHRzX2RpcmVjdG9yeSgpLCBsZWFrc19maWxlbmFtZSkKICAgICAgICAgdHJ5OgogICAgICAg
ICAgICAgIyBPZGRseSBlbm91Z2gsIHJ1bi1sZWFrcyAob3IgdGhlIHVuZGVybHlpbmcgbGVha3Mg
dG9vbCkgZG9lcyBub3Qgc2VlbSB0byBhbHdheXMgb3V0cHV0IHV0Zi04LAogICAgICAgICAgICAg
IyB0aHVzIHdlIHBhc3MgZGVjb2RlX291dHB1dD1GYWxzZS4gIFdpdGhvdXQgdGhpcyBjb2RlIHdl
J3ZlIHNlZW4gZXJyb3JzIGxpa2U6CiAgICAgICAgICAgICAjICJVbmljb2RlRGVjb2RlRXJyb3I6
ICd1dGY4JyBjb2RlYyBjYW4ndCBkZWNvZGUgYnl0ZSAweDg4IGluIHBvc2l0aW9uIDc3OTg3NDog
dW5leHBlY3RlZCBjb2RlIGJ5dGUiCi0gICAgICAgICAgICBsZWFrc19vdXRwdXQgPSBzZWxmLl9w
b3J0Ll9ydW5fc2NyaXB0KCJydW4tbGVha3MiLCBzZWxmLl9sZWFrc19hcmdzKHByb2Nlc3NfcGlk
KSwgaW5jbHVkZV9jb25maWd1cmF0aW9uX2FyZ3VtZW50cz1GYWxzZSwgZGVjb2RlX291dHB1dD1G
YWxzZSkKKyAgICAgICAgICAgIHNlbGYuX3BvcnQuX3J1bl9zY3JpcHQoInJ1bi1sZWFrcyIsIHNl
bGYuX2xlYWtzX2FyZ3MocHJvY2Vzc19waWQsIGxlYWtzX291dHB1dF9wYXRoKSwgaW5jbHVkZV9j
b25maWd1cmF0aW9uX2FyZ3VtZW50cz1GYWxzZSwgZGVjb2RlX291dHB1dD1GYWxzZSkKKyAgICAg
ICAgICAgIGxlYWtzX291dHB1dCA9IHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShs
ZWFrc19vdXRwdXRfcGF0aCkKICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yIGFzIGU6CiAgICAg
ICAgICAgICBfbG9nLndhcm4oIkZhaWxlZCB0byBydW4gbGVha3MgdG9vbDogJXMiICUgZS5tZXNz
YWdlX3dpdGhfb3V0cHV0KCkpCiAgICAgICAgICAgICByZXR1cm4KQEAgLTEyNiwxMiArMTMwLDkg
QEAgY2xhc3MgTGVha0RldGVjdG9yKG9iamVjdCk6CiAgICAgICAgIGNvdW50LCBleGNsdWRlZCwg
Ynl0ZXMgPSBzZWxmLl9wYXJzZV9sZWFrc19vdXRwdXQobGVha3Nfb3V0cHV0KQogICAgICAgICBh
ZGp1c3RlZF9jb3VudCA9IGNvdW50IC0gZXhjbHVkZWQKICAgICAgICAgaWYgbm90IGFkanVzdGVk
X2NvdW50OgorICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS5yZW1vdmUobGVha3Nfb3V0cHV0
X3BhdGgpCiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBsZWFrc19maWxlbmFtZSA9IHNl
bGYubGVha3NfZmlsZV9uYW1lKHByb2Nlc3NfbmFtZSwgcHJvY2Vzc19waWQpCi0gICAgICAgIGxl
YWtzX291dHB1dF9wYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3BvcnQucmVzdWx0
c19kaXJlY3RvcnkoKSwgbGVha3NfZmlsZW5hbWUpCi0gICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0u
d3JpdGVfYmluYXJ5X2ZpbGUobGVha3Nfb3V0cHV0X3BhdGgsIGxlYWtzX291dHB1dCkKLQogICAg
ICAgICAjIEZJWE1FOiBJZGVhbGx5IHdlIHdvdWxkIG5vdCBiZSBsb2dnaW5nIGZyb20gdGhlIHdv
cmtlciBwcm9jZXNzLCBidXQgcmF0aGVyIHBhc3MgdGhlIGxlYWsKICAgICAgICAgIyBpbmZvcm1h
dGlvbiBiYWNrIHRvIHRoZSBtYW5hZ2VyIGFuZCBoYXZlIGl0IGxvZy4KICAgICAgICAgaWYgZXhj
bHVkZWQ6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9yX3Vu
aXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9sZWFr
ZGV0ZWN0b3JfdW5pdHRlc3QucHkJKHJldmlzaW9uIDIyNTg3NikKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3JfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAg
LTUwLDggKzUwLDggQEAgY2xhc3MgTGVha0RldGVjdG9yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZQog
ICAgICAgICBkZXRlY3RvciA9IHNlbGYuX21ha2VfZGV0ZWN0b3IoKQogICAgICAgICBkZXRlY3Rv
ci5fY2FsbHN0YWNrc190b19leGNsdWRlX2Zyb21fbGVha3MgPSBsYW1iZGE6IFsnZm9vIGJhcics
ICdCQVonXQogICAgICAgICBkZXRlY3Rvci5fdHlwZXNfdG9fZXhjbHVkZV9mcm9tX2xlYWtzID0g
bGFtYmRhOiBbJ2FiY2RlZmcnLCAnaGkgamtsbW5vJ10KLSAgICAgICAgZXhwZWN0ZWRfYXJncyA9
IFsnLS1leGNsdWRlLWNhbGxzdGFjaz1mb28gYmFyJywgJy0tZXhjbHVkZS1jYWxsc3RhY2s9QkFa
JywgJy0tZXhjbHVkZS10eXBlPWFiY2RlZmcnLCAnLS1leGNsdWRlLXR5cGU9aGkgamtsbW5vJywg
MTIzNF0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZXRlY3Rvci5fbGVha3NfYXJncygxMjM0
KSwgZXhwZWN0ZWRfYXJncykKKyAgICAgICAgZXhwZWN0ZWRfYXJncyA9IFsnLS1leGNsdWRlLWNh
bGxzdGFjaz1mb28gYmFyJywgJy0tZXhjbHVkZS1jYWxsc3RhY2s9QkFaJywgJy0tZXhjbHVkZS10
eXBlPWFiY2RlZmcnLCAnLS1leGNsdWRlLXR5cGU9aGkgamtsbW5vJywgJy0tb3V0cHV0LWZpbGU9
bGVha3MudHh0JywgMTIzNF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZXRlY3Rvci5fbGVh
a3NfYXJncygxMjM0LCAnbGVha3MudHh0JyksIGV4cGVjdGVkX2FyZ3MpCiAKICAgICBleGFtcGxl
X2xlYWtzX291dHB1dCA9ICIiIlByb2Nlc3MgNTEyMjogNjYzNzQ0IG5vZGVzIG1hbGxvY2VkIGZv
ciA3ODY4MyBLQgogUHJvY2VzcyA1MTIyOiAzMzczMDEgbGVha3MgZm9yIDY1MjUyMTYgdG90YWwg
bGVha2VkIGJ5dGVzLgo=
</data>
<flag name="review"
          id="348490"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>