<?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>129458</bug_id>
          
          <creation_ts>2014-02-27 15:54:20 -0800</creation_ts>
          <short_desc>Web Inspector: Find in source does not find all results with non-unix line endings</short_desc>
          <delta_ts>2014-02-27 17:12:09 -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>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>985390</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-02-27 15:54:20 -0800</bug_when>
    <thetext>ContentSearchUtilities lineEndings only supports \n. That causes issues with non-unix line endings since the front-end supports \n, \r or \r\n

&lt;rdar://problem/15829887&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985391</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-02-27 15:54:32 -0800</bug_when>
    <thetext>&lt;rdar://problem/16190305&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985393</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-02-27 15:55:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/16190323&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985398</commentid>
    <comment_count>3</comment_count>
      <attachid>225424</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-02-27 16:02:09 -0800</bug_when>
    <thetext>Created attachment 225424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985401</commentid>
    <comment_count>4</comment_count>
      <attachid>225424</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-02-27 16:17:27 -0800</bug_when>
    <thetext>Comment on attachment 225424
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        Imporve how ContentSearchUtilities::lineEndings works by supporting the three common line endings.

Typo: Imporve

&gt; Source/JavaScriptCore/inspector/ContentSearchUtilities.cpp:91
&gt;          size_t lineEnd = endings-&gt;at(lineNumber);
&gt;          String line = text.substring(start, lineEnd - start);

These variable names are misleading. endings-&gt;at(lineNumber) is actually giving you the index of the first character on lineNumber+1. Maybe that the way I think about it. I would expect &quot;lineEnd&quot; to be a character on this line, but here it is not.

&gt; Source/JavaScriptCore/inspector/ContentSearchUtilities.cpp:116
&gt;  {
&gt;      auto result = std::make_unique&lt;Vector&lt;size_t&gt;&gt;();
&gt;  
&gt; -    unsigned start = 0;
&gt; +    size_t start = 0;
&gt;      while (start &lt; text.length()) {
&gt; -        size_t lineEnd = text.find(&apos;\n&apos;, start);
&gt; -        if (lineEnd == notFound)
&gt; +        size_t nextStart = text.findNextLineStart(start);
&gt; +        if (nextStart == notFound) {
&gt; +            result-&gt;append(text.length());
&gt;              break;
&gt; +        }
&gt;  
&gt; -        result-&gt;append(lineEnd);
&gt; -        start = lineEnd + 1;
&gt; +        result-&gt;append(nextStart);
&gt; +        start = nextStart;

Alongside the earlier comment, the function is named &quot;lineEndings&quot; but it returns the indexes that start the next line / EOF.

I&apos;m fine with the patch as is, but it might be clearer with better names.

&gt; LayoutTests/inspector-protocol/debugger/searchInContent-linebreaks.html:65
&gt; +Verify that Debugger.searchInContent works with scripts that have varying  line endings.

Nit: Double space &quot;varying  line endings&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985409</commentid>
    <comment_count>5</comment_count>
      <attachid>225426</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-02-27 16:31:49 -0800</bug_when>
    <thetext>Created attachment 225426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985422</commentid>
    <comment_count>6</comment_count>
      <attachid>225426</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-27 17:12:06 -0800</bug_when>
    <thetext>Comment on attachment 225426
Patch

Clearing flags on attachment: 225426

Committed r164845: &lt;http://trac.webkit.org/changeset/164845&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985423</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-27 17:12:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225424</attachid>
            <date>2014-02-27 16:02:09 -0800</date>
            <delta_ts>2014-02-27 16:31:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129458-20140227160209.patch</filename>
            <type>text/plain</type>
            <size>12631</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0NzQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
YzFlMTdkMjc1ODdjNzViNjVlZmY3MDU2ZGIyOTI5NzY3Y2UyZjM1Li5lM2FkNmQyOTMwZmIxZTgw
NjkyMmJiMDRkMTQ4MGExMzc5MGNiNTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNC0wMi0yNyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wb3J2ZSBob3cgQ29udGVudFNlYXJjaFV0aWxpdGllczo6bGluZUVu
ZGluZ3Mgd29ya3MgYnkgc3VwcG9ydGluZyB0aGUgdGhyZWUgY29tbW9uIGxpbmUgZW5kaW5ncy4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NDU4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkNv
bnRlbnRTZWFyY2hVdGlsaXRpZXM6OnRleHRQb3NpdGlvbkZyb21PZmZzZXQpOiBSZW1vdmUgYXNz
dW1wdGlvbiBhYm91dCBsaW5lIGVuZGluZyBsZW5ndGguCisgICAgICAgIChJbnNwZWN0b3I6OkNv
bnRlbnRTZWFyY2hVdGlsaXRpZXM6OmdldFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlc0J5TGluZXMp
OiBSZW1vdmUgYXNzdW1wdGlvbiBhYm91dAorICAgICAgICBsaW5lIGVuZGluZyB0eXBlIGFuZCBk
b24ndCB0cnkgdG8gc3RyaXAgdGhlIGxpbmUgZW5kaW5nLiBVc2Ugc2l6ZV90CisgICAgICAgIChJ
bnNwZWN0b3I6OkNvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmxpbmVFbmRpbmdzKTogVXNlIGZpbmRO
ZXh0TGluZVN0YXJ0IHRvIGZpbmQgdGhlIGxpbmVzLgorICAgICAgICBUaGlzIHdpbGwgaW5jbHVk
ZSB0aGUgbGluZSBlbmRpbmcgaW4gdGhlIGxpbmVzLCBidXQgdGhhdCBpcyBva2F5LgorICAgICAg
ICAoSW5zcGVjdG9yOjpDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpidWlsZE9iamVjdEZvclNlYXJj
aE1hdGNoKTogVXNlIHNpemVfdC4KKyAgICAgICAgKEluc3BlY3Rvcjo6Q29udGVudFNlYXJjaFV0
aWxpdGllczo6c2VhcmNoSW5UZXh0QnlMaW5lcyk6IE1vZGVybml6ZS4KKwogMjAxNC0wMi0yNiAg
T2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQg
YWNjZXNzIHR5cGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcAppbmRleCA3NDQ1Y2VmZDA3OGZmNzMzMjc0
M2M3MTU2ZTMwMTliMTk1ZmFjOGQwLi5kMzhmMWU1ODVmZjE5YjI0ZDg2NTEyNTEwNThlMzIwODg1
ZGUwMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRl
bnRTZWFyY2hVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAKQEAgLTY5LDM0ICs2OSwzNCBAQCBUZXh0UG9z
aXRpb24gdGV4dFBvc2l0aW9uRnJvbU9mZnNldChzaXplX3Qgb2Zmc2V0LCBjb25zdCBWZWN0b3I8
c2l6ZV90PiYgbGluZUVuZAogewogICAgIGNvbnN0IHNpemVfdCogZm91bmRMaW5lRW5kaW5nID0g
YXBwcm94aW1hdGVCaW5hcnlTZWFyY2g8c2l6ZV90LCBzaXplX3Q+KGxpbmVFbmRpbmdzLCBsaW5l
RW5kaW5ncy5zaXplKCksIG9mZnNldCwgc2l6ZXRFeHRyYWN0b3IpOwogICAgIHNpemVfdCBsaW5l
SW5kZXggPSBmb3VuZExpbmVFbmRpbmcgLSAmbGluZUVuZGluZ3MuYXQoMCk7Ci0gICAgaWYgKG9m
ZnNldCA+ICpmb3VuZExpbmVFbmRpbmcpCisgICAgaWYgKG9mZnNldCA+PSAqZm91bmRMaW5lRW5k
aW5nKQogICAgICAgICArK2xpbmVJbmRleDsKLSAgICBzaXplX3QgbGluZVN0YXJ0T2Zmc2V0ID0g
bGluZUluZGV4ID4gMCA/IGxpbmVFbmRpbmdzLmF0KGxpbmVJbmRleCAtIDEpICsgMSA6IDA7Cisg
ICAgc2l6ZV90IGxpbmVTdGFydE9mZnNldCA9IGxpbmVJbmRleCA+IDAgPyBsaW5lRW5kaW5ncy5h
dChsaW5lSW5kZXggLSAxKSA6IDA7CiAgICAgc2l6ZV90IGNvbHVtbiA9IG9mZnNldCAtIGxpbmVT
dGFydE9mZnNldDsKICAgICByZXR1cm4gVGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21a
ZXJvQmFzZWRJbnQobGluZUluZGV4KSwgT3JkaW5hbE51bWJlcjo6ZnJvbVplcm9CYXNlZEludChj
b2x1bW4pKTsKIH0KIAotc3RhdGljIFZlY3RvcjxzdGQ6OnBhaXI8aW50LCBTdHJpbmc+PiBnZXRS
ZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXNCeUxpbmVzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4
cHJlc3Npb24mIHJlZ2V4LCBjb25zdCBTdHJpbmcmIHRleHQpCitzdGF0aWMgVmVjdG9yPHN0ZDo6
cGFpcjxzaXplX3QsIFN0cmluZz4+IGdldFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlc0J5TGluZXMo
Y29uc3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYgcmVnZXgsIGNvbnN0IFN0cmluZyYg
dGV4dCkKIHsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPGludCwgU3RyaW5nPj4gcmVzdWx0OworICAg
IFZlY3RvcjxzdGQ6OnBhaXI8c2l6ZV90LCBTdHJpbmc+PiByZXN1bHQ7CiAgICAgaWYgKHRleHQu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFZlY3RvcjxzaXplX3Q+PiBlbmRpbmdzKGxpbmVFbmRpbmdzKHRleHQpKTsKICAgICBzaXplX3Qg
c2l6ZSA9IGVuZGluZ3MtPnNpemUoKTsKLSAgICB1bnNpZ25lZCBzdGFydCA9IDA7CisgICAgc2l6
ZV90IHN0YXJ0ID0gMDsKKwogICAgIGZvciAoc2l6ZV90IGxpbmVOdW1iZXIgPSAwOyBsaW5lTnVt
YmVyIDwgc2l6ZTsgKytsaW5lTnVtYmVyKSB7CiAgICAgICAgIHNpemVfdCBsaW5lRW5kID0gZW5k
aW5ncy0+YXQobGluZU51bWJlcik7CiAgICAgICAgIFN0cmluZyBsaW5lID0gdGV4dC5zdWJzdHJp
bmcoc3RhcnQsIGxpbmVFbmQgLSBzdGFydCk7Ci0gICAgICAgIGlmIChsaW5lLmVuZHNXaXRoKCdc
cicpKQotICAgICAgICAgICAgbGluZSA9IGxpbmUubGVmdChsaW5lLmxlbmd0aCgpIC0gMSk7CiAK
ICAgICAgICAgaW50IG1hdGNoTGVuZ3RoOwogICAgICAgICBpZiAocmVnZXgubWF0Y2gobGluZSwg
MCwgJm1hdGNoTGVuZ3RoKSAhPSAtMSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RkOjpw
YWlyPGludCwgU3RyaW5nPihsaW5lTnVtYmVyLCBsaW5lKSk7CisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKHN0ZDo6cGFpcjxzaXplX3QsIFN0cmluZz4obGluZU51bWJlciwgbGluZSkpOwogCi0g
ICAgICAgIHN0YXJ0ID0gbGluZUVuZCArIDE7CisgICAgICAgIHN0YXJ0ID0gbGluZUVuZDsKICAg
ICB9CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMDQsMjEgKzEwNCwyNCBAQCBzdGQ6
OnVuaXF1ZV9wdHI8VmVjdG9yPHNpemVfdD4+IGxpbmVFbmRpbmdzKGNvbnN0IFN0cmluZyYgdGV4
dCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPHNpemVfdD4+
KCk7CiAKLSAgICB1bnNpZ25lZCBzdGFydCA9IDA7CisgICAgc2l6ZV90IHN0YXJ0ID0gMDsKICAg
ICB3aGlsZSAoc3RhcnQgPCB0ZXh0Lmxlbmd0aCgpKSB7Ci0gICAgICAgIHNpemVfdCBsaW5lRW5k
ID0gdGV4dC5maW5kKCdcbicsIHN0YXJ0KTsKLSAgICAgICAgaWYgKGxpbmVFbmQgPT0gbm90Rm91
bmQpCisgICAgICAgIHNpemVfdCBuZXh0U3RhcnQgPSB0ZXh0LmZpbmROZXh0TGluZVN0YXJ0KHN0
YXJ0KTsKKyAgICAgICAgaWYgKG5leHRTdGFydCA9PSBub3RGb3VuZCkgeworICAgICAgICAgICAg
cmVzdWx0LT5hcHBlbmQodGV4dC5sZW5ndGgoKSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQogCi0gICAgICAgIHJlc3VsdC0+YXBwZW5kKGxpbmVFbmQpOwotICAgICAgICBzdGFydCA9
IGxpbmVFbmQgKyAxOworICAgICAgICByZXN1bHQtPmFwcGVuZChuZXh0U3RhcnQpOworICAgICAg
ICBzdGFydCA9IG5leHRTdGFydDsKICAgICB9CisKICAgICByZXN1bHQtPmFwcGVuZCh0ZXh0Lmxl
bmd0aCgpKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+IGJ1aWxkT2Jq
ZWN0Rm9yU2VhcmNoTWF0Y2goaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgbGluZUNvbnRl
bnQpCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpHZW5lcmljVHlw
ZXM6OlNlYXJjaE1hdGNoPiBidWlsZE9iamVjdEZvclNlYXJjaE1hdGNoKHNpemVfdCBsaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcmIGxpbmVDb250ZW50KQogewogICAgIHJldHVybiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoOjpjcmVhdGUoKQogICAgICAg
ICAuc2V0TGluZU51bWJlcihsaW5lTnVtYmVyKQpAQCAtMTU2LDEwICsxNTksMTAgQEAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpHZW5lcmljVHlwZXM6OlMKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+IHJl
c3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+OjpjcmVhdGUoKTsKIAogICAgIEpTQzo6WWFy
cjo6UmVndWxhckV4cHJlc3Npb24gcmVnZXggPSBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpjcmVh
dGVTZWFyY2hSZWdleChxdWVyeSwgY2FzZVNlbnNpdGl2ZSwgaXNSZWdleCk7Ci0gICAgVmVjdG9y
PHN0ZDo6cGFpcjxpbnQsIFN0cmluZz4+IG1hdGNoZXMgPSBnZXRSZWd1bGFyRXhwcmVzc2lvbk1h
dGNoZXNCeUxpbmVzKHJlZ2V4LCB0ZXh0KTsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPHNpemVfdCwg
U3RyaW5nPj4gbWF0Y2hlcyA9IGdldFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlc0J5TGluZXMocmVn
ZXgsIHRleHQpOwogCi0gICAgZm9yIChWZWN0b3I8c3RkOjpwYWlyPGludCwgU3RyaW5nPj46OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbWF0Y2hlcy5iZWdpbigpOyBpdCAhPSBtYXRjaGVzLmVuZCgpOyAr
K2l0KQotICAgICAgICByZXN1bHQtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JTZWFyY2hNYXRjaChp
dC0+Zmlyc3QsIGl0LT5zZWNvbmQpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIG1hdGNoIDogbWF0
Y2hlcykKKyAgICAgICAgcmVzdWx0LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yU2VhcmNoTWF0Y2go
bWF0Y2guZmlyc3QsIG1hdGNoLnNlY29uZCkpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCBlMTdkN2Q1Mzk2MWMxYjA2YTEzZWY4ZmE1NTQ4ZTJiM2Q1NzVjZGI2Li4yOTk3ZTdkMjA2
MWJjNzA0NTU5OGU4NTM3N2U4NTk3YmRlYjBlMjU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTQtMDItMjcgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisgICAgICAg
IEltcG9ydmUgaG93IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmxpbmVFbmRpbmdzIHdvcmtzIGJ5
IHN1cHBvcnRpbmcgdGhlIHRocmVlIGNvbW1vbiBsaW5lIGVuZGluZ3MuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTQ1OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yLXByb3RvY29s
L2RlYnVnZ2VyL3Jlc291cmNlcy9tYWMtbGluZWJyZWFrcy5qczogQWRkZWQuCisgICAgICAgICog
aW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3Jlc291cmNlcy9taXhlZC1saW5lYnJlYWtzLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvcmVzb3VyY2Vz
L3VuaXgtbGluZWJyZWFrcy5qczogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yLXByb3RvY29s
L2RlYnVnZ2VyL3Jlc291cmNlcy93aW5kb3dzLWxpbmVicmVha3MuanM6IEFkZGVkLgorICAgICAg
ICAqIGluc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9zZWFyY2hJbkNvbnRlbnQtbGluZWJyZWFr
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci1wcm90b2NvbC9kZWJ1
Z2dlci9zZWFyY2hJbkNvbnRlbnQtbGluZWJyZWFrcy5odG1sOiBBZGRlZC4KKwogMjAxNC0wMi0y
NiAgQmVtIEpvbmVzLUJleSAgPGJqb25lc2JlQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTIFNo
YXBlc10gaW5zZXQgYW5kIGluc2V0LXJlY3RhbmdsZSB0cmlnZ2VyIGFzc2VydCB3aXRoIHJlcGxh
Y2VkIGVsZW1lbnQgYW5kIGxhcmdlIHBlcmNlbnRhZ2UgZGltZW5zaW9uCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvcmVzb3VyY2VzL21hYy1saW5l
YnJlYWtzLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3Jlc291
cmNlcy9tYWMtbGluZWJyZWFrcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNmI2MDJjZjFkZTExZjMyMzBmOTMw
ZjgwZTYyNGU0NWMwNTZlMWVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yLXByb3RvY29sL2RlYnVnZ2VyL3Jlc291cmNlcy9tYWMtbGluZWJyZWFrcy5qcwpAQCAtMCww
ICsxIEBACisvLyB0ZXN0IG9uZQ0vLyANLy8gIHRlc3QgdHdvDQ1mdW5jdGlvbiBib28oKQ17DSAg
ICAvLyAgIHRlc3QgdGhyZWUgdGVzdCBmb3VyDX0NDS8vIHRlc3Qgbm8gbmV3bGluZQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1w
cm90b2NvbC9kZWJ1Z2dlci9yZXNvdXJjZXMvbWl4ZWQtbGluZWJyZWFrcy5qcyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9yZXNvdXJjZXMvbWl4ZWQtbGluZWJyZWFr
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hMmQxMDliMTZjMWU3Yzc1YTAwYWI3OWM2MmQ5MTE2MWM5OTE4MjI5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVn
Z2VyL3Jlc291cmNlcy9taXhlZC1saW5lYnJlYWtzLmpzCkBAIC0wLDAgKzEsOSBAQAorLy8gdGVz
dCBvbmUKKw0KKy8vIHRlc3QgdHdvDQ0KK2Z1bmN0aW9uIGJheigpCit7DQorICAgIC8vICAgdGVz
dCB0aHJlZSB0ZXN0IGZvdXINCit9CisNCisvLyB0ZXN0IG5vIG5ld2xpbmUKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9j
b2wvZGVidWdnZXIvcmVzb3VyY2VzL3VuaXgtbGluZWJyZWFrcy5qcyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9yZXNvdXJjZXMvdW5peC1saW5lYnJlYWtzLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkMWZjMWI0MTY5MzkyZmE0ODJiMGNmNzBiMzVmODYzZjA0NWEwN2YKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvcmVz
b3VyY2VzL3VuaXgtbGluZWJyZWFrcy5qcwpAQCAtMCwwICsxLDEwIEBACisvLyB0ZXN0IG9uZQor
Ly8gCisvLyAgdGVzdCB0d28KKworZnVuY3Rpb24gYmFyKCkKK3sKKyAgICAvLyB0ZXN0IHRocmVl
IHRlc3QgZm91cgorfQorCisvLyB0ZXN0IG5vIG5ld2xpbmUKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdn
ZXIvcmVzb3VyY2VzL3dpbmRvd3MtbGluZWJyZWFrcy5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci1wcm90b2NvbC9kZWJ1Z2dlci9yZXNvdXJjZXMvd2luZG93cy1saW5lYnJlYWtzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjk1MGQ2MTE1N2ZhMzlkN2E1MWY1Y2MzNTc1Yjc2MGZmNGI5M2IxYjcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvcmVzb3Vy
Y2VzL3dpbmRvd3MtbGluZWJyZWFrcy5qcwpAQCAtMCwwICsxLDEwIEBACisvLyB0ZXN0IG9uZQ0K
Ky8vIA0KKy8vICB0ZXN0IHR3bw0KKw0KK2Z1bmN0aW9uIGZvbygpDQorew0KKyAgICAvLyB0ZXN0
IHRocmVlIHRlc3QgZm91cg0KK30NCisNCisvLyB0ZXN0IG5vIG5ld2xpbmUKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9j
b2wvZGVidWdnZXIvc2VhcmNoSW5Db250ZW50LWxpbmVicmVha3MtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3NlYXJjaEluQ29udGVudC1saW5l
YnJlYWtzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzg5NjJhMDM1NWZlYzA1ZWQxYjM5MjI5
M2ZjOTFhOTM1MGVkMTRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
LXByb3RvY29sL2RlYnVnZ2VyL3NlYXJjaEluQ29udGVudC1saW5lYnJlYWtzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDMyIEBACitWZXJpZnkgdGhhdCBEZWJ1Z2dlci5zZWFyY2hJbkNvbnRlbnQg
d29ya3Mgd2l0aCBzY3JpcHRzIHRoYXQgaGF2ZSB2YXJ5aW5nIGxpbmUgZW5kaW5ncy4KK1Njcmlw
dHMgc2VhcmNoZWQ6IDQKKworU2NyaXB0OiBtYWMtbGluZWJyZWFrcy5qcworUmVzdWx0cyBmb3Vu
ZDogNAorTGluZSAwOiAiLy8gdGVzdCBvbmVcciIKK0xpbmUgMjogIi8vICB0ZXN0IHR3b1xyIgor
TGluZSA2OiAiICAgIC8vICAgdGVzdCB0aHJlZSB0ZXN0IGZvdXJcciIKK0xpbmUgOTogIi8vIHRl
c3Qgbm8gbmV3bGluZSIKKworU2NyaXB0OiBtaXhlZC1saW5lYnJlYWtzLmpzCitSZXN1bHRzIGZv
dW5kOiA0CitMaW5lIDA6ICIvLyB0ZXN0IG9uZVxuIgorTGluZSAyOiAiLy8gdGVzdCB0d29cciIK
K0xpbmUgNjogIiAgICAvLyAgIHRlc3QgdGhyZWUgdGVzdCBmb3VyXHJcbiIKK0xpbmUgOTogIi8v
IHRlc3Qgbm8gbmV3bGluZSIKKworU2NyaXB0OiB1bml4LWxpbmVicmVha3MuanMKK1Jlc3VsdHMg
Zm91bmQ6IDQKK0xpbmUgMDogIi8vIHRlc3Qgb25lXG4iCitMaW5lIDI6ICIvLyAgdGVzdCB0d29c
biIKK0xpbmUgNjogIiAgICAvLyB0ZXN0IHRocmVlIHRlc3QgZm91clxuIgorTGluZSA5OiAiLy8g
dGVzdCBubyBuZXdsaW5lIgorCitTY3JpcHQ6IHdpbmRvd3MtbGluZWJyZWFrcy5qcworUmVzdWx0
cyBmb3VuZDogNAorTGluZSAwOiAiLy8gdGVzdCBvbmVcclxuIgorTGluZSAyOiAiLy8gIHRlc3Qg
dHdvXHJcbiIKK0xpbmUgNjogIiAgICAvLyB0ZXN0IHRocmVlIHRlc3QgZm91clxyXG4iCitMaW5l
IDk6ICIvLyB0ZXN0IG5vIG5ld2xpbmUiCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3NlYXJjaEluQ29udGVudC1saW5lYnJlYWtzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvc2VhcmNoSW5Db250ZW50
LWxpbmVicmVha3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYmFiOTc1NmRkNTBkNmEwNjJkOGE2MmM2MmQ5
NWM2ZDczNzZjMTNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXBy
b3RvY29sL2RlYnVnZ2VyL3NlYXJjaEluQ29udGVudC1saW5lYnJlYWtzLmh0bWwKQEAgLTAsMCAr
MSw2NyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci1wcm90b2NvbC9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL21peGVkLWxpbmVicmVha3MuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy91bml4LWxpbmVicmVha3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9tYWMtbGluZWJyZWFrcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3dpbmRvd3MtbGluZWJyZWFrcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgY29uc3QgZXhwZWN0ZWRTZWFyY2hDb3VudCA9IDQ7Cisg
ICAgdmFyIGNvbXBsZXRlZFNlYXJjaENvdW50ID0gMDsKKworICAgIHZhciB0ZXN0UmVzdWx0cyA9
IFtdOworCisgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgiRGVidWdnZXIuZW5hYmxlIiwg
e30pOworCisgICAgSW5zcGVjdG9yVGVzdC5ldmVudEhhbmRsZXJbIkRlYnVnZ2VyLnNjcmlwdFBh
cnNlZCJdID0gZnVuY3Rpb24obWVzc2FnZU9iamVjdCkKKyAgICB7CisgICAgICAgIGlmICgvLWxp
bmVicmVha3NcLmpzJC8udGVzdChtZXNzYWdlT2JqZWN0LnBhcmFtcy51cmwpKSB7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LnNlbmRDb21tYW5kKCJEZWJ1Z2dlci5zZWFyY2hJbkNvbnRlbnQi
LCB7InNjcmlwdElkIjogbWVzc2FnZU9iamVjdC5wYXJhbXMuc2NyaXB0SWQsICJxdWVyeSI6ICJ0
ZXN0In0sIGZ1bmN0aW9uKHVybCwgbWVzc2FnZU9iamVjdCkgeworICAgICAgICAgICAgICAgIHZh
ciByZXN1bHRzID0gbWVzc2FnZU9iamVjdC5yZXN1bHQucmVzdWx0OworCisgICAgICAgICAgICAg
ICAgdmFyIHRlc3RSZXN1bHQgPSB7dXJsOiB1cmwsIGNvdW50OiByZXN1bHRzLmxlbmd0aCwgbWF0
Y2hlczogW119OworICAgICAgICAgICAgICAgIGZvciAodmFyIHJlc3VsdCBvZiByZXN1bHRzKQor
ICAgICAgICAgICAgICAgICAgICB0ZXN0UmVzdWx0Lm1hdGNoZXMucHVzaChyZXN1bHQpOworCisg
ICAgICAgICAgICAgICAgdGVzdFJlc3VsdHMucHVzaCh0ZXN0UmVzdWx0KTsKKworICAgICAgICAg
ICAgICAgIGlmICgrK2NvbXBsZXRlZFNlYXJjaENvdW50ID49IGV4cGVjdGVkU2VhcmNoQ291bnQp
CisgICAgICAgICAgICAgICAgICAgIG91dHB1dFJlc3VsdHMoKTsKKyAgICAgICAgICAgIH0uYmlu
ZChudWxsLCBtZXNzYWdlT2JqZWN0LnBhcmFtcy51cmwpKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGZ1bmN0aW9uIG91dHB1dFJlc3VsdHMoKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gY29t
cGFyZVJlc3VsdFVSTHMoYSwgYikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGEudXJs
LmxvY2FsZUNvbXBhcmUoYi51cmwpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHNvcnRlZFRl
c3RSZXN1bHRzID0gdGVzdFJlc3VsdHMuc29ydChjb21wYXJlUmVzdWx0VVJMcyk7CisKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIlNjcmlwdHMgc2VhcmNoZWQ6ICIgKyBzb3J0ZWRUZXN0UmVz
dWx0cy5sZW5ndGgpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiIik7CisKKyAgICAgICAg
Zm9yICh2YXIgdGVzdFJlc3VsdCBvZiBzb3J0ZWRUZXN0UmVzdWx0cykgeworICAgICAgICAgICAg
dmFyIGZpbGVOYW1lID0gLyhbXHctXStcLmpzKSQvLmV4ZWModGVzdFJlc3VsdC51cmwpWzFdOwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlNjcmlwdDogIiArIGZpbGVOYW1lKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJSZXN1bHRzIGZvdW5kOiAiICsgdGVzdFJlc3Vs
dC5jb3VudCk7CisgICAgCisgICAgICAgICAgICBmb3IgKHZhciBtYXRjaCBvZiB0ZXN0UmVzdWx0
Lm1hdGNoZXMpCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkxpbmUgIiArIG1h
dGNoLmxpbmVOdW1iZXIgKyAiOiAiICsgSlNPTi5zdHJpbmdpZnkobWF0Y2gubGluZUNvbnRlbnQp
KTsgICAgCisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCIiKTsKKyAgICAgICAgfQor
CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CitWZXJpZnkgdGhhdCBEZWJ1
Z2dlci5zZWFyY2hJbkNvbnRlbnQgd29ya3Mgd2l0aCBzY3JpcHRzIHRoYXQgaGF2ZSB2YXJ5aW5n
ICBsaW5lIGVuZGluZ3MuCis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225426</attachid>
            <date>2014-02-27 16:31:49 -0800</date>
            <delta_ts>2014-02-27 17:12:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129458-20140227163148.patch</filename>
            <type>text/plain</type>
            <size>13011</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0NzQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
YzFlMTdkMjc1ODdjNzViNjVlZmY3MDU2ZGIyOTI5NzY3Y2UyZjM1Li4wMTVhYTQyZWE1OWY0MjE5
MWEwOTcyMGFmZWU3MmI3ZWUyNGRhN2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNC0wMi0yNyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wcm92ZSBob3cgQ29udGVudFNlYXJjaFV0aWxpdGllczo6bGluZUVu
ZGluZ3Mgd29ya3MgYnkgc3VwcG9ydGluZyB0aGUgdGhyZWUgY29tbW9uIGxpbmUgZW5kaW5ncy4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NDU4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9zZXBoIFBlY29yYXJvLgorCisgICAgICAgICogaW5z
cGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpD
b250ZW50U2VhcmNoVXRpbGl0aWVzOjp0ZXh0UG9zaXRpb25Gcm9tT2Zmc2V0KTogUmVtb3ZlIGFz
c3VtcHRpb24gYWJvdXQgbGluZSBlbmRpbmcgbGVuZ3RoLgorICAgICAgICAoSW5zcGVjdG9yOjpD
b250ZW50U2VhcmNoVXRpbGl0aWVzOjpnZXRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXNCeUxpbmVz
KTogUmVtb3ZlIGFzc3VtcHRpb24gYWJvdXQKKyAgICAgICAgbGluZSBlbmRpbmcgdHlwZSBhbmQg
ZG9uJ3QgdHJ5IHRvIHN0cmlwIHRoZSBsaW5lIGVuZGluZy4gVXNlIHNpemVfdAorICAgICAgICAo
SW5zcGVjdG9yOjpDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpsaW5lRW5kaW5ncyk6IFVzZSBmaW5k
TmV4dExpbmVTdGFydCB0byBmaW5kIHRoZSBsaW5lcy4KKyAgICAgICAgVGhpcyB3aWxsIGluY2x1
ZGUgdGhlIGxpbmUgZW5kaW5nIGluIHRoZSBsaW5lcywgYnV0IHRoYXQgaXMgb2theS4KKyAgICAg
ICAgKEluc3BlY3Rvcjo6Q29udGVudFNlYXJjaFV0aWxpdGllczo6YnVpbGRPYmplY3RGb3JTZWFy
Y2hNYXRjaCk6IFVzZSBzaXplX3QuCisgICAgICAgIChJbnNwZWN0b3I6OkNvbnRlbnRTZWFyY2hV
dGlsaXRpZXM6OnNlYXJjaEluVGV4dEJ5TGluZXMpOiBNb2Rlcm5pemUuCisKIDIwMTQtMDItMjYg
IE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2Vk
IGFjY2VzcyB0eXBlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAKaW5kZXggNzQ0NWNlZmQwNzhmZjczMzI3
NDNjNzE1NmUzMDE5YjE5NWZhYzhkMC4uMGNkNGVkYzY1Y2RjZmJmZmFlYTkxMGUwMzczMjU0MWJi
M2YxM2FjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250
ZW50U2VhcmNoVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwCkBAIC02NywzNiArNjcsMzYgQEAgc3RhdGlj
IGlubGluZSBzaXplX3Qgc2l6ZXRFeHRyYWN0b3IoY29uc3Qgc2l6ZV90KiB2YWx1ZSkKIAogVGV4
dFBvc2l0aW9uIHRleHRQb3NpdGlvbkZyb21PZmZzZXQoc2l6ZV90IG9mZnNldCwgY29uc3QgVmVj
dG9yPHNpemVfdD4mIGxpbmVFbmRpbmdzKQogewotICAgIGNvbnN0IHNpemVfdCogZm91bmRMaW5l
RW5kaW5nID0gYXBwcm94aW1hdGVCaW5hcnlTZWFyY2g8c2l6ZV90LCBzaXplX3Q+KGxpbmVFbmRp
bmdzLCBsaW5lRW5kaW5ncy5zaXplKCksIG9mZnNldCwgc2l6ZXRFeHRyYWN0b3IpOwotICAgIHNp
emVfdCBsaW5lSW5kZXggPSBmb3VuZExpbmVFbmRpbmcgLSAmbGluZUVuZGluZ3MuYXQoMCk7Ci0g
ICAgaWYgKG9mZnNldCA+ICpmb3VuZExpbmVFbmRpbmcpCisgICAgY29uc3Qgc2l6ZV90KiBmb3Vu
ZE5leHRTdGFydCA9IGFwcHJveGltYXRlQmluYXJ5U2VhcmNoPHNpemVfdCwgc2l6ZV90PihsaW5l
RW5kaW5ncywgbGluZUVuZGluZ3Muc2l6ZSgpLCBvZmZzZXQsIHNpemV0RXh0cmFjdG9yKTsKKyAg
ICBzaXplX3QgbGluZUluZGV4ID0gZm91bmROZXh0U3RhcnQgLSAmbGluZUVuZGluZ3MuYXQoMCk7
CisgICAgaWYgKG9mZnNldCA+PSAqZm91bmROZXh0U3RhcnQpCiAgICAgICAgICsrbGluZUluZGV4
OwotICAgIHNpemVfdCBsaW5lU3RhcnRPZmZzZXQgPSBsaW5lSW5kZXggPiAwID8gbGluZUVuZGlu
Z3MuYXQobGluZUluZGV4IC0gMSkgKyAxIDogMDsKKyAgICBzaXplX3QgbGluZVN0YXJ0T2Zmc2V0
ID0gbGluZUluZGV4ID4gMCA/IGxpbmVFbmRpbmdzLmF0KGxpbmVJbmRleCAtIDEpIDogMDsKICAg
ICBzaXplX3QgY29sdW1uID0gb2Zmc2V0IC0gbGluZVN0YXJ0T2Zmc2V0OwogICAgIHJldHVybiBU
ZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbVplcm9CYXNlZEludChsaW5lSW5kZXgpLCBP
cmRpbmFsTnVtYmVyOjpmcm9tWmVyb0Jhc2VkSW50KGNvbHVtbikpOwogfQogCi1zdGF0aWMgVmVj
dG9yPHN0ZDo6cGFpcjxpbnQsIFN0cmluZz4+IGdldFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlc0J5
TGluZXMoY29uc3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYgcmVnZXgsIGNvbnN0IFN0
cmluZyYgdGV4dCkKK3N0YXRpYyBWZWN0b3I8c3RkOjpwYWlyPHNpemVfdCwgU3RyaW5nPj4gZ2V0
UmVndWxhckV4cHJlc3Npb25NYXRjaGVzQnlMaW5lcyhjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJF
eHByZXNzaW9uJiByZWdleCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewotICAgIFZlY3RvcjxzdGQ6
OnBhaXI8aW50LCBTdHJpbmc+PiByZXN1bHQ7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxzaXplX3Qs
IFN0cmluZz4+IHJlc3VsdDsKICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHNpemVfdD4+IGVuZGluZ3Mo
bGluZUVuZGluZ3ModGV4dCkpOwogICAgIHNpemVfdCBzaXplID0gZW5kaW5ncy0+c2l6ZSgpOwot
ICAgIHVuc2lnbmVkIHN0YXJ0ID0gMDsKKyAgICBzaXplX3Qgc3RhcnQgPSAwOworCiAgICAgZm9y
IChzaXplX3QgbGluZU51bWJlciA9IDA7IGxpbmVOdW1iZXIgPCBzaXplOyArK2xpbmVOdW1iZXIp
IHsKLSAgICAgICAgc2l6ZV90IGxpbmVFbmQgPSBlbmRpbmdzLT5hdChsaW5lTnVtYmVyKTsKLSAg
ICAgICAgU3RyaW5nIGxpbmUgPSB0ZXh0LnN1YnN0cmluZyhzdGFydCwgbGluZUVuZCAtIHN0YXJ0
KTsKLSAgICAgICAgaWYgKGxpbmUuZW5kc1dpdGgoJ1xyJykpCi0gICAgICAgICAgICBsaW5lID0g
bGluZS5sZWZ0KGxpbmUubGVuZ3RoKCkgLSAxKTsKKyAgICAgICAgc2l6ZV90IG5leHRTdGFydCA9
IGVuZGluZ3MtPmF0KGxpbmVOdW1iZXIpOworICAgICAgICBTdHJpbmcgbGluZSA9IHRleHQuc3Vi
c3RyaW5nKHN0YXJ0LCBuZXh0U3RhcnQgLSBzdGFydCk7CiAKICAgICAgICAgaW50IG1hdGNoTGVu
Z3RoOwogICAgICAgICBpZiAocmVnZXgubWF0Y2gobGluZSwgMCwgJm1hdGNoTGVuZ3RoKSAhPSAt
MSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RkOjpwYWlyPGludCwgU3RyaW5nPihsaW5l
TnVtYmVyLCBsaW5lKSk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN0ZDo6cGFpcjxzaXpl
X3QsIFN0cmluZz4obGluZU51bWJlciwgbGluZSkpOwogCi0gICAgICAgIHN0YXJ0ID0gbGluZUVu
ZCArIDE7CisgICAgICAgIHN0YXJ0ID0gbmV4dFN0YXJ0OwogICAgIH0KKwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKQEAgLTEwNCwyMSArMTA0LDI0IEBAIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8
c2l6ZV90Pj4gbGluZUVuZGluZ3MoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGF1dG8gcmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8c2l6ZV90Pj4oKTsKIAotICAgIHVuc2lnbmVk
IHN0YXJ0ID0gMDsKKyAgICBzaXplX3Qgc3RhcnQgPSAwOwogICAgIHdoaWxlIChzdGFydCA8IHRl
eHQubGVuZ3RoKCkpIHsKLSAgICAgICAgc2l6ZV90IGxpbmVFbmQgPSB0ZXh0LmZpbmQoJ1xuJywg
c3RhcnQpOwotICAgICAgICBpZiAobGluZUVuZCA9PSBub3RGb3VuZCkKKyAgICAgICAgc2l6ZV90
IG5leHRTdGFydCA9IHRleHQuZmluZE5leHRMaW5lU3RhcnQoc3RhcnQpOworICAgICAgICBpZiAo
bmV4dFN0YXJ0ID09IG5vdEZvdW5kKSB7CisgICAgICAgICAgICByZXN1bHQtPmFwcGVuZCh0ZXh0
Lmxlbmd0aCgpKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAKLSAgICAgICAgcmVz
dWx0LT5hcHBlbmQobGluZUVuZCk7Ci0gICAgICAgIHN0YXJ0ID0gbGluZUVuZCArIDE7CisgICAg
ICAgIHJlc3VsdC0+YXBwZW5kKG5leHRTdGFydCk7CisgICAgICAgIHN0YXJ0ID0gbmV4dFN0YXJ0
OwogICAgIH0KKwogICAgIHJlc3VsdC0+YXBwZW5kKHRleHQubGVuZ3RoKCkpOwogCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4gYnVpbGRPYmplY3RGb3JTZWFyY2hNYXRjaChp
bnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBsaW5lQ29udGVudCkKK3N0YXRpYyBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+IGJ1
aWxkT2JqZWN0Rm9yU2VhcmNoTWF0Y2goc2l6ZV90IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYg
bGluZUNvbnRlbnQpCiB7CiAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkdlbmVy
aWNUeXBlczo6U2VhcmNoTWF0Y2g6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRMaW5lTnVtYmVyKGxp
bmVOdW1iZXIpCkBAIC0xNTYsMTAgKzE1OSwxMCBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkdlbmVyaWNUeXBlczo6Uwog
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4gcmVzdWx0ID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6R2VuZXJpY1R5cGVzOjpT
ZWFyY2hNYXRjaD46OmNyZWF0ZSgpOwogCiAgICAgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lv
biByZWdleCA9IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmNyZWF0ZVNlYXJjaFJlZ2V4KHF1ZXJ5
LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4KTsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPGludCwgU3Ry
aW5nPj4gbWF0Y2hlcyA9IGdldFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlc0J5TGluZXMocmVnZXgs
IHRleHQpOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8c2l6ZV90LCBTdHJpbmc+PiBtYXRjaGVzID0g
Z2V0UmVndWxhckV4cHJlc3Npb25NYXRjaGVzQnlMaW5lcyhyZWdleCwgdGV4dCk7CiAKLSAgICBm
b3IgKFZlY3RvcjxzdGQ6OnBhaXI8aW50LCBTdHJpbmc+Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBt
YXRjaGVzLmJlZ2luKCk7IGl0ICE9IG1hdGNoZXMuZW5kKCk7ICsraXQpCi0gICAgICAgIHJlc3Vs
dC0+YWRkSXRlbShidWlsZE9iamVjdEZvclNlYXJjaE1hdGNoKGl0LT5maXJzdCwgaXQtPnNlY29u
ZCkpOworICAgIGZvciAoY29uc3QgYXV0byYgbWF0Y2ggOiBtYXRjaGVzKQorICAgICAgICByZXN1
bHQtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JTZWFyY2hNYXRjaChtYXRjaC5maXJzdCwgbWF0Y2gu
c2Vjb25kKSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGUxN2Q3ZDUzOTYxYzFi
MDZhMTNlZjhmYTU1NDhlMmIzZDU3NWNkYjYuLjhjZDBiYTMwZDcyNmRlZmY4NWQ0YWMzZDg5MDE5
NDdiZWIxYmJmMzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNC0wMi0yNyAgVGltb3RoeSBI
YXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wcm92ZSBob3cgQ29udGVu
dFNlYXJjaFV0aWxpdGllczo6bGluZUVuZGluZ3Mgd29ya3MgYnkgc3VwcG9ydGluZyB0aGUgdGhy
ZWUgY29tbW9uIGxpbmUgZW5kaW5ncy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NDU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9zZXBoIFBl
Y29yYXJvLgorCisgICAgICAgICogaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3Jlc291cmNl
cy9tYWMtbGluZWJyZWFrcy5qczogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yLXByb3RvY29s
L2RlYnVnZ2VyL3Jlc291cmNlcy9taXhlZC1saW5lYnJlYWtzLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBpbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvcmVzb3VyY2VzL3VuaXgtbGluZWJyZWFrcy5q
czogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3Jlc291cmNl
cy93aW5kb3dzLWxpbmVicmVha3MuanM6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci1wcm90
b2NvbC9kZWJ1Z2dlci9zZWFyY2hJbkNvbnRlbnQtbGluZWJyZWFrcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGluc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9zZWFyY2hJbkNvbnRl
bnQtbGluZWJyZWFrcy5odG1sOiBBZGRlZC4KKwogMjAxNC0wMi0yNiAgQmVtIEpvbmVzLUJleSAg
PGJqb25lc2JlQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTIFNoYXBlc10gaW5zZXQgYW5kIGlu
c2V0LXJlY3RhbmdsZSB0cmlnZ2VyIGFzc2VydCB3aXRoIHJlcGxhY2VkIGVsZW1lbnQgYW5kIGxh
cmdlIHBlcmNlbnRhZ2UgZGltZW5zaW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3ItcHJvdG9jb2wvZGVidWdnZXIvcmVzb3VyY2VzL21hYy1saW5lYnJlYWtzLmpzIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3Jlc291cmNlcy9tYWMtbGluZWJyZWFr
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hNmI2MDJjZjFkZTExZjMyMzBmOTMwZjgwZTYyNGU0NWMwNTZlMWVm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVn
Z2VyL3Jlc291cmNlcy9tYWMtbGluZWJyZWFrcy5qcwpAQCAtMCwwICsxIEBACisvLyB0ZXN0IG9u
ZQ0vLyANLy8gIHRlc3QgdHdvDQ1mdW5jdGlvbiBib28oKQ17DSAgICAvLyAgIHRlc3QgdGhyZWUg
dGVzdCBmb3VyDX0NDS8vIHRlc3Qgbm8gbmV3bGluZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9y
ZXNvdXJjZXMvbWl4ZWQtbGluZWJyZWFrcy5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90
b2NvbC9kZWJ1Z2dlci9yZXNvdXJjZXMvbWl4ZWQtbGluZWJyZWFrcy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
MmQxMDliMTZjMWU3Yzc1YTAwYWI3OWM2MmQ5MTE2MWM5OTE4MjI5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3Jlc291cmNlcy9taXhl
ZC1saW5lYnJlYWtzLmpzCkBAIC0wLDAgKzEsOSBAQAorLy8gdGVzdCBvbmUKKw0KKy8vIHRlc3Qg
dHdvDQ0KK2Z1bmN0aW9uIGJheigpCit7DQorICAgIC8vICAgdGVzdCB0aHJlZSB0ZXN0IGZvdXIN
Cit9CisNCisvLyB0ZXN0IG5vIG5ld2xpbmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvcmVzb3Vy
Y2VzL3VuaXgtbGluZWJyZWFrcy5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9k
ZWJ1Z2dlci9yZXNvdXJjZXMvdW5peC1saW5lYnJlYWtzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMWZjMWI0
MTY5MzkyZmE0ODJiMGNmNzBiMzVmODYzZjA0NWEwN2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvcmVzb3VyY2VzL3VuaXgtbGluZWJy
ZWFrcy5qcwpAQCAtMCwwICsxLDEwIEBACisvLyB0ZXN0IG9uZQorLy8gCisvLyAgdGVzdCB0d28K
KworZnVuY3Rpb24gYmFyKCkKK3sKKyAgICAvLyB0ZXN0IHRocmVlIHRlc3QgZm91cgorfQorCisv
LyB0ZXN0IG5vIG5ld2xpbmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvcmVzb3VyY2VzL3dpbmRv
d3MtbGluZWJyZWFrcy5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dl
ci9yZXNvdXJjZXMvd2luZG93cy1saW5lYnJlYWtzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1MGQ2MTE1N2Zh
MzlkN2E1MWY1Y2MzNTc1Yjc2MGZmNGI5M2IxYjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvcmVzb3VyY2VzL3dpbmRvd3MtbGluZWJy
ZWFrcy5qcwpAQCAtMCwwICsxLDEwIEBACisvLyB0ZXN0IG9uZQ0KKy8vIA0KKy8vICB0ZXN0IHR3
bw0KKw0KK2Z1bmN0aW9uIGZvbygpDQorew0KKyAgICAvLyB0ZXN0IHRocmVlIHRlc3QgZm91cg0K
K30NCisNCisvLyB0ZXN0IG5vIG5ld2xpbmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvc2VhcmNo
SW5Db250ZW50LWxpbmVicmVha3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
LXByb3RvY29sL2RlYnVnZ2VyL3NlYXJjaEluQ29udGVudC1saW5lYnJlYWtzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kNzg5NjJhMDM1NWZlYzA1ZWQxYjM5MjI5M2ZjOTFhOTM1MGVkMTRiCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2Vy
L3NlYXJjaEluQ29udGVudC1saW5lYnJlYWtzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMyIEBA
CitWZXJpZnkgdGhhdCBEZWJ1Z2dlci5zZWFyY2hJbkNvbnRlbnQgd29ya3Mgd2l0aCBzY3JpcHRz
IHRoYXQgaGF2ZSB2YXJ5aW5nIGxpbmUgZW5kaW5ncy4KK1NjcmlwdHMgc2VhcmNoZWQ6IDQKKwor
U2NyaXB0OiBtYWMtbGluZWJyZWFrcy5qcworUmVzdWx0cyBmb3VuZDogNAorTGluZSAwOiAiLy8g
dGVzdCBvbmVcciIKK0xpbmUgMjogIi8vICB0ZXN0IHR3b1xyIgorTGluZSA2OiAiICAgIC8vICAg
dGVzdCB0aHJlZSB0ZXN0IGZvdXJcciIKK0xpbmUgOTogIi8vIHRlc3Qgbm8gbmV3bGluZSIKKwor
U2NyaXB0OiBtaXhlZC1saW5lYnJlYWtzLmpzCitSZXN1bHRzIGZvdW5kOiA0CitMaW5lIDA6ICIv
LyB0ZXN0IG9uZVxuIgorTGluZSAyOiAiLy8gdGVzdCB0d29cciIKK0xpbmUgNjogIiAgICAvLyAg
IHRlc3QgdGhyZWUgdGVzdCBmb3VyXHJcbiIKK0xpbmUgOTogIi8vIHRlc3Qgbm8gbmV3bGluZSIK
KworU2NyaXB0OiB1bml4LWxpbmVicmVha3MuanMKK1Jlc3VsdHMgZm91bmQ6IDQKK0xpbmUgMDog
Ii8vIHRlc3Qgb25lXG4iCitMaW5lIDI6ICIvLyAgdGVzdCB0d29cbiIKK0xpbmUgNjogIiAgICAv
LyB0ZXN0IHRocmVlIHRlc3QgZm91clxuIgorTGluZSA5OiAiLy8gdGVzdCBubyBuZXdsaW5lIgor
CitTY3JpcHQ6IHdpbmRvd3MtbGluZWJyZWFrcy5qcworUmVzdWx0cyBmb3VuZDogNAorTGluZSAw
OiAiLy8gdGVzdCBvbmVcclxuIgorTGluZSAyOiAiLy8gIHRlc3QgdHdvXHJcbiIKK0xpbmUgNjog
IiAgICAvLyB0ZXN0IHRocmVlIHRlc3QgZm91clxyXG4iCitMaW5lIDk6ICIvLyB0ZXN0IG5vIG5l
d2xpbmUiCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2Rl
YnVnZ2VyL3NlYXJjaEluQ29udGVudC1saW5lYnJlYWtzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvc2VhcmNoSW5Db250ZW50LWxpbmVicmVha3MuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lNTlmYjgyOWJmNzYxYmM1NDQ0ZjE4YWZmYWJhMGE0YmViODRlYWI2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3Nl
YXJjaEluQ29udGVudC1saW5lYnJlYWtzLmh0bWwKQEAgLTAsMCArMSw2NyBAQAorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9y
ZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL21peGVkLWxpbmVicmVha3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy91bml4LWxpbmVicmVha3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9t
YWMtbGluZWJyZWFrcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dpbmRv
d3MtbGluZWJyZWFrcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgY29uc3QgZXhwZWN0ZWRTZWFyY2hDb3VudCA9IDQ7CisgICAgdmFyIGNvbXBsZXRlZFNl
YXJjaENvdW50ID0gMDsKKworICAgIHZhciB0ZXN0UmVzdWx0cyA9IFtdOworCisgICAgSW5zcGVj
dG9yVGVzdC5zZW5kQ29tbWFuZCgiRGVidWdnZXIuZW5hYmxlIiwge30pOworCisgICAgSW5zcGVj
dG9yVGVzdC5ldmVudEhhbmRsZXJbIkRlYnVnZ2VyLnNjcmlwdFBhcnNlZCJdID0gZnVuY3Rpb24o
bWVzc2FnZU9iamVjdCkKKyAgICB7CisgICAgICAgIGlmICgvLWxpbmVicmVha3NcLmpzJC8udGVz
dChtZXNzYWdlT2JqZWN0LnBhcmFtcy51cmwpKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LnNlbmRDb21tYW5kKCJEZWJ1Z2dlci5zZWFyY2hJbkNvbnRlbnQiLCB7InNjcmlwdElkIjogbWVz
c2FnZU9iamVjdC5wYXJhbXMuc2NyaXB0SWQsICJxdWVyeSI6ICJ0ZXN0In0sIGZ1bmN0aW9uKHVy
bCwgbWVzc2FnZU9iamVjdCkgeworICAgICAgICAgICAgICAgIHZhciByZXN1bHRzID0gbWVzc2Fn
ZU9iamVjdC5yZXN1bHQucmVzdWx0OworCisgICAgICAgICAgICAgICAgdmFyIHRlc3RSZXN1bHQg
PSB7dXJsOiB1cmwsIGNvdW50OiByZXN1bHRzLmxlbmd0aCwgbWF0Y2hlczogW119OworICAgICAg
ICAgICAgICAgIGZvciAodmFyIHJlc3VsdCBvZiByZXN1bHRzKQorICAgICAgICAgICAgICAgICAg
ICB0ZXN0UmVzdWx0Lm1hdGNoZXMucHVzaChyZXN1bHQpOworCisgICAgICAgICAgICAgICAgdGVz
dFJlc3VsdHMucHVzaCh0ZXN0UmVzdWx0KTsKKworICAgICAgICAgICAgICAgIGlmICgrK2NvbXBs
ZXRlZFNlYXJjaENvdW50ID49IGV4cGVjdGVkU2VhcmNoQ291bnQpCisgICAgICAgICAgICAgICAg
ICAgIG91dHB1dFJlc3VsdHMoKTsKKyAgICAgICAgICAgIH0uYmluZChudWxsLCBtZXNzYWdlT2Jq
ZWN0LnBhcmFtcy51cmwpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIG91dHB1
dFJlc3VsdHMoKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gY29tcGFyZVJlc3VsdFVSTHMoYSwg
YikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGEudXJsLmxvY2FsZUNvbXBhcmUoYi51
cmwpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHNvcnRlZFRlc3RSZXN1bHRzID0gdGVzdFJl
c3VsdHMuc29ydChjb21wYXJlUmVzdWx0VVJMcyk7CisKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5s
b2coIlNjcmlwdHMgc2VhcmNoZWQ6ICIgKyBzb3J0ZWRUZXN0UmVzdWx0cy5sZW5ndGgpOworICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZygiIik7CisKKyAgICAgICAgZm9yICh2YXIgdGVzdFJlc3Vs
dCBvZiBzb3J0ZWRUZXN0UmVzdWx0cykgeworICAgICAgICAgICAgdmFyIGZpbGVOYW1lID0gLyhb
XHctXStcLmpzKSQvLmV4ZWModGVzdFJlc3VsdC51cmwpWzFdOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coIlNjcmlwdDogIiArIGZpbGVOYW1lKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKCJSZXN1bHRzIGZvdW5kOiAiICsgdGVzdFJlc3VsdC5jb3VudCk7CisgICAgCisg
ICAgICAgICAgICBmb3IgKHZhciBtYXRjaCBvZiB0ZXN0UmVzdWx0Lm1hdGNoZXMpCisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkxpbmUgIiArIG1hdGNoLmxpbmVOdW1iZXIgKyAi
OiAiICsgSlNPTi5zdHJpbmdpZnkobWF0Y2gubGluZUNvbnRlbnQpKTsgICAgCisKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QubG9nKCIiKTsKKyAgICAgICAgfQorCisgICAgICAgIEluc3BlY3Rv
clRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9InJ1blRlc3QoKSI+CitWZXJpZnkgdGhhdCBEZWJ1Z2dlci5zZWFyY2hJbkNvbnRl
bnQgd29ya3Mgd2l0aCBzY3JpcHRzIHRoYXQgaGF2ZSB2YXJ5aW5nIGxpbmUgZW5kaW5ncy4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>