<?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>182319</bug_id>
          
          <creation_ts>2018-01-30 20:29:05 -0800</creation_ts>
          <short_desc>Release assertion in Performance::resourceTimingBufferFullTimerFired when the resource timing buffer is shrunk</short_desc>
          <delta_ts>2018-01-31 13:07:43 -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>WebCore Misc.</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="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1394893</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-01-30 20:29:05 -0800</bug_when>
    <thetext>When the author script shrinks the resource timing buffer while resourcetimingbufferFull event is being dispatched, we hit a release assertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394894</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-01-30 20:29:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/36904312&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394919</commentid>
    <comment_count>2</comment_count>
      <attachid>332746</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-01-30 23:42:59 -0800</bug_when>
    <thetext>Created attachment 332746
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395023</commentid>
    <comment_count>3</comment_count>
      <attachid>332746</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-01-31 09:30:16 -0800</bug_when>
    <thetext>Comment on attachment 332746
Fixes the bug

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

Will do a proper review after my meeting.

&gt; Source/WebCore/page/Performance.cpp:233
&gt; +        for (auto&amp; entry : m_backupResourceTimingBuffer)

Wouldn&apos;t this work?
backupBuffer.appendVector(WTFMove(m_backupResourceTimingBuffer))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395045</commentid>
    <comment_count>4</comment_count>
      <attachid>332746</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-01-31 10:14:29 -0800</bug_when>
    <thetext>Comment on attachment 332746
Fixes the bug

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

&gt; Source/WebCore/page/Performance.cpp:223
&gt;              // Dispatching resourcetimingbufferfull event may have inserted more entries.

The line after queues entries from m_backupResourceTimingBuffer but does not seem to clear m_backupResourceTimingBuffer. Is that right?

&gt; Source/WebCore/page/Performance.cpp:239
&gt;              if (i &lt; remainingBufferSize) {

This might be more easily understandable if we used if (!isResourceTimingBufferFull())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395076</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-01-31 11:13:52 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; Comment on attachment 332746 [details]
&gt; Fixes the bug
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=332746&amp;action=review
&gt; 
&gt; Will do a proper review after my meeting.
&gt; 
&gt; &gt; Source/WebCore/page/Performance.cpp:233
&gt; &gt; +        for (auto&amp; entry : m_backupResourceTimingBuffer)
&gt; 
&gt; Wouldn&apos;t this work?
&gt; backupBuffer.appendVector(WTFMove(m_backupResourceTimingBuffer))

Yeah, I realized that after uploading the patch. Fixed.

(In reply to Chris Dumez from comment #4)
&gt; Comment on attachment 332746 [details]
&gt; Fixes the bug
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=332746&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/Performance.cpp:223
&gt; &gt;              // Dispatching resourcetimingbufferfull event may have inserted more entries.
&gt; 
&gt; The line after queues entries from m_backupResourceTimingBuffer but does not
&gt; seem to clear m_backupResourceTimingBuffer. Is that right?

Oops, fixed.

&gt; &gt; Source/WebCore/page/Performance.cpp:239
&gt; &gt;              if (i &lt; remainingBufferSize) {
&gt; 
&gt; This might be more easily understandable if we used if
&gt; (!isResourceTimingBufferFull())

Sure. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395089</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-01-31 11:29:03 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; Comment on attachment 332746 [details]
&gt; Fixes the bug
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=332746&amp;action=review
&gt; 
&gt; Will do a proper review after my meeting.
&gt; 
&gt; &gt; Source/WebCore/page/Performance.cpp:233
&gt; &gt; +        for (auto&amp; entry : m_backupResourceTimingBuffer)
&gt; 
&gt; Wouldn&apos;t this work?
&gt; backupBuffer.appendVector(WTFMove(m_backupResourceTimingBuffer))

Actually, this doesn&apos;t work because backupBuffer is a WTFMove(m_backupResourceTimingBuffer).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395098</commentid>
    <comment_count>7</comment_count>
      <attachid>332788</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-01-31 11:39:29 -0800</bug_when>
    <thetext>Created attachment 332788
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395113</commentid>
    <comment_count>8</comment_count>
      <attachid>332788</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-01-31 12:27:58 -0800</bug_when>
    <thetext>Comment on attachment 332788
Fixes the bug

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

r=me with suggestion.

&gt; Source/WebCore/page/Performance.cpp:232
&gt; +        for (auto &amp; entry : m_backupResourceTimingBuffer)

I think we should be able to do this on 2 lines instead of 3 (and potentially more efficient) using:
backupBuffer.appendVector(m_backupResourceTimingBuffer);
m_backupResourceTimingBuffer.clear();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395122</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-01-31 12:46:12 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; Comment on attachment 332788 [details]
&gt; Fixes the bug
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=332788&amp;action=review
&gt; 
&gt; r=me with suggestion.
&gt; 
&gt; &gt; Source/WebCore/page/Performance.cpp:232
&gt; &gt; +        for (auto &amp; entry : m_backupResourceTimingBuffer)
&gt; 
&gt; I think we should be able to do this on 2 lines instead of 3 (and
&gt; potentially more efficient) using:
&gt; backupBuffer.appendVector(m_backupResourceTimingBuffer);
&gt; m_backupResourceTimingBuffer.clear();

Sure, will fix.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395123</commentid>
    <comment_count>10</comment_count>
      <attachid>332795</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-01-31 12:51:26 -0800</bug_when>
    <thetext>Created attachment 332795
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395129</commentid>
    <comment_count>11</comment_count>
      <attachid>332795</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-31 13:07:42 -0800</bug_when>
    <thetext>Comment on attachment 332795
Patch for landing

Clearing flags on attachment: 332795

Committed r227926: &lt;https://trac.webkit.org/changeset/227926&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395130</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-31 13:07:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332746</attachid>
            <date>2018-01-30 23:42:59 -0800</date>
            <delta_ts>2018-01-31 11:39:28 -0800</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-182319-20180130234259.patch</filename>
            <type>text/plain</type>
            <size>16115</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzg3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE4LTAxLTMwICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbGVhc2UgYXNzZXJ0aW9uIGlu
IFBlcmZvcm1hbmNlOjpyZXNvdXJjZVRpbWluZ0J1ZmZlckZ1bGxUaW1lckZpcmVkIHdoZW4gdGhl
IHJlc291cmNlIHRpbWluZyBidWZmZXIgaXMgc2hydW5rCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIzMTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM2OTA0MzEyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBjcmFzaCB3YXMgY2F1c2VkIGJ5IGEgd3JvbmcgcmVsZWFzZSBhc3NlcnRpb24uIEhh
bmRsZSBhdXRob3Igc2NyaXB0cyBzaHJpbmtpbmcgdGhlIHJlc291cmNlIHRpbWluZyBidWZmZXIK
KyAgICAgICAgd2hpbGUgcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsIGV2ZW50IGlzIGJlaW5nIGRp
c3BhdGNoZWQuCisKKyAgICAgICAgQWxzbyBmaXhlZCBhIGJ1ZyB0aGF0IGEgc3VwZXJmbG91cyBy
ZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwgZXZlbnQgd2lsbCBiZSBmaXJlZCB3aGVuIG5ldyByZXNv
dXJjZSB0aW1pbmcgZW50cmllcworICAgICAgICBhcmUgcXVldWVkIHdoaWxlIHJlc291cmNldGlt
aW5nYnVmZmVyZnVsbCBldmVudCBpcyBiZWluZyBkaXNwYXRjaGVkLgorCisgICAgICAgIFRlc3Q6
IGh0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLXJlc291
cmNldGltaW5nYnVmZmVyZnVsbC1xdWV1ZS1yZXNvdXJjZS1lbnRyeS5odG1sCisgICAgICAgICAg
ICAgIGh0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLXJl
c291cmNldGltaW5nYnVmZmVyZnVsbC1zaHJpbmtpbmctYnVmZmVyLWNyYXNoLmh0bWwKKworICAg
ICAgICAqIHBhZ2UvUGVyZm9ybWFuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFu
Y2U6OnJlc291cmNlVGltaW5nQnVmZmVyRnVsbFRpbWVyRmlyZWQpOiAKKwogMjAxOC0wMS0zMCAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+IGFuZCBPbGVrc2FuZHIgU2thY2hrb3Yg
IDxnc2thY2hrb3ZAZ21haWwuY29tPgogCiAgICAgICAgIEZldGNoUmVzcG9uc2Ugc2hvdWxkIHN1
cHBvcnQgQ29uc3VtZURhdGEgY2FsbGJhY2sgb24gY2h1bmsgZGF0YSBpcyByZWNlaXZlZApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAJKHJldmlzaW9uIDIyNzg3NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcs
MTAgKzIxNyw3IEBAIHZvaWQgUGVyZm9ybWFuY2U6OnJlc291cmNlVGltaW5nQnVmZmVyRnUKICAg
ICAgICAgbV9yZXNvdXJjZVRpbWluZ0J1ZmZlckZ1bGxGbGFnID0gdHJ1ZTsKICAgICAgICAgZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZXNvdXJjZXRpbWluZ2J1ZmZl
cmZ1bGxFdmVudCwgdHJ1ZSwgZmFsc2UpKTsKIAotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3Jl
c291cmNlVGltaW5nQnVmZmVyU2l6ZSA+PSBtX3Jlc291cmNlVGltaW5nQnVmZmVyLnNpemUoKSk7
Ci0gICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ0J1ZmZlclNpemUgPSBtX3Jlc291cmNlVGltaW5n
QnVmZmVyU2l6ZSAtIG1fcmVzb3VyY2VUaW1pbmdCdWZmZXIuc2l6ZSgpOwotICAgICAgICBib29s
IGJ1ZmZlcklzU3RpbGxGdWxsQWZ0ZXJEaXNwYXRjaGluZ0V2ZW50ID0gIXJlbWFpbmluZ0J1ZmZl
clNpemU7Ci0gICAgICAgIGlmIChidWZmZXJJc1N0aWxsRnVsbEFmdGVyRGlzcGF0Y2hpbmdFdmVu
dCkgeworICAgICAgICBpZiAobV9yZXNvdXJjZVRpbWluZ0J1ZmZlckZ1bGxGbGFnKSB7CiAgICAg
ICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogYmFja3VwQnVmZmVyKQogICAgICAgICAgICAgICAg
IHF1ZXVlRW50cnkoKmVudHJ5KTsKICAgICAgICAgICAgIC8vIERpc3BhdGNoaW5nIHJlc291cmNl
dGltaW5nYnVmZmVyZnVsbCBldmVudCBtYXkgaGF2ZSBpbnNlcnRlZCBtb3JlIGVudHJpZXMuCkBA
IC0yMjksNiArMjI2LDE0IEBAIHZvaWQgUGVyZm9ybWFuY2U6OnJlc291cmNlVGltaW5nQnVmZmVy
RnUKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgdW5zaWduZWQgcmVt
YWluaW5nQnVmZmVyU2l6ZSA9IG1fcmVzb3VyY2VUaW1pbmdCdWZmZXJTaXplID4gbV9yZXNvdXJj
ZVRpbWluZ0J1ZmZlci5zaXplKCkKKyAgICAgICAgICAgID8gbV9yZXNvdXJjZVRpbWluZ0J1ZmZl
clNpemUgLSBtX3Jlc291cmNlVGltaW5nQnVmZmVyLnNpemUoKSA6IDA7CisKKyAgICAgICAgLy8g
TW9yZSBlbnRyaWVzIG1heSBoYXZlIGFkZGVkIHdoaWxlIGRpc3BhdGNoaW5nIHJlc291cmNldGlt
aW5nYnVmZmVyZnVsbCBldmVudC4KKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fYmFja3Vw
UmVzb3VyY2VUaW1pbmdCdWZmZXIpCisgICAgICAgICAgICBiYWNrdXBCdWZmZXIuYXBwZW5kKGVu
dHJ5LmNvcHlSZWYoKSk7CisgICAgICAgIG1fYmFja3VwUmVzb3VyY2VUaW1pbmdCdWZmZXIuY2xl
YXIoKTsKKwogICAgICAgICB1bnNpZ25lZCBpID0gMDsKICAgICAgICAgZm9yIChhdXRvJiBlbnRy
eSA6IGJhY2t1cEJ1ZmZlcikgewogICAgICAgICAgICAgaWYgKGkgPCByZW1haW5pbmdCdWZmZXJT
aXplKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjc4NzUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0wMS0zMCAgUnlvc3VrZSBO
aXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZWxlYXNlIGFzc2VydGlvbiBpbiBQ
ZXJmb3JtYW5jZTo6cmVzb3VyY2VUaW1pbmdCdWZmZXJGdWxsVGltZXJGaXJlZCB3aGVuIHRoZSBy
ZXNvdXJjZSB0aW1pbmcgYnVmZmVyIGlzIHNocnVuaworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyMzE5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
NjkwNDMxMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCByZWdyZXNzaW9uIHRlc3RzIGZvciBzaHJpbmtpbmcgdGhlIHJlc29ydWNlIHRpbWlu
ZyBidWZmZXIgYW5kIHF1ZXVpbmcgYSBuZXcgcmVzb3VyY2UgdGltaW5nIGVudHJ5IHdoaWxlCisg
ICAgICAgIHJlc291cmNldGltaW5nYnVmZmVyZnVsbCBldmVudCBpcyBiZWluZyBkaXNwYXRjaGVk
LgorCisgICAgICAgICogaHR0cC90ZXN0cy9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS1yZXNvdXJj
ZS10aW1pbmctcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsLXF1ZXVlLXJlc291cmNlLWVudHJ5LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9wZXJmb3JtYW5jZS9wZXJm
b3JtYW5jZS1yZXNvdXJjZS10aW1pbmctcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsLXF1ZXVlLXJl
c291cmNlLWVudHJ5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcGVyZm9ybWFu
Y2UvcGVyZm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLXJlc291cmNldGltaW5nYnVmZmVyZnVsbC1z
aHJpbmtpbmctYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS1yZXNvdXJjZS10aW1pbmctcmVzb3VyY2V0
aW1pbmdidWZmZXJmdWxsLXNocmlua2luZy1idWZmZXItY3Jhc2guaHRtbDogQWRkZWQuCisKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3BlcmZvcm1hbmNlL3BlcmZvcm1hbmNlLXJlc291cmNlLXRpbWlu
Zy1yZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwtc2hyaW5raW5nLWJ1ZmZlci1jcmFzaC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFu
Y2UtcmVzb3VyY2UtdGltaW5nLXJlc291cmNldGltaW5nYnVmZmVyZnVsbC1zaHJpbmtpbmctYnVm
ZmVyLWNyYXNoLmh0bWw6IEFkZGVkLgorCiAyMDE4LTAxLTMwICBKb2huIFdpbGFuZGVyICA8d2ls
YW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBjYWxsYmFja3MgdG8gdGVzdFJ1bm5lci5z
dGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QoKSBhbmQgdGVzdFJ1bm5l
ci5zdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCkKSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLXJlc291
cmNldGltaW5nYnVmZmVyZnVsbC1xdWV1ZS1yZXNvdXJjZS1lbnRyeS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wZXJmb3JtYW5jZS9wZXJmb3JtYW5j
ZS1yZXNvdXJjZS10aW1pbmctcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsLXF1ZXVlLXJlc291cmNl
LWVudHJ5LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3BlcmZvcm1hbmNlL3BlcmZvcm1hbmNlLXJlc291cmNlLXRpbWluZy1yZXNvdXJjZXRpbWlu
Z2J1ZmZlcmZ1bGwtcXVldWUtcmVzb3VyY2UtZW50cnktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzUgQEAKK1RoaXMgdGVzdHMgY2xlYXJpbmcgdGhlIHJlc291cmNlIHRp
bWluZyBidWZmZXIgZHVyaW5nIGEgcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsIGV2ZW50LgorV2Vi
S2l0IHNob3VsZCBub3QgaGl0IGEgcmVsZWFzZSBhc3NlcnRpb24uCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIHBlcmZvcm1hbmNlLmNsZWFyUmVzb3VyY2VUaW1pbmdzKCk7
IHBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUoInJlc291cmNlIikubGVuZ3RoIGlzIDAKK3Bl
cmZvcm1hbmNlLnNldFJlc291cmNlVGltaW5nQnVmZmVyU2l6ZSgyKTsgZmV0Y2hJbWFnZXMoMCwg
MykKK1BBU1Mgb3JpZ2luYWxSZXNvdXJjZXMgPSBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBl
KCJyZXNvdXJjZSIpOyBvcmlnaW5hbFJlc291cmNlcy5sZW5ndGggaXMgMgorUEFTUyBvcmlnaW5h
bFJlc291cmNlc1swXS5pbml0aWF0b3JUeXBlIGlzICJjc3MiCitQQVNTIG5ldyBVUkwob3JpZ2lu
YWxSZXNvdXJjZXNbMF0ubmFtZSkuc2VhcmNoIGlzICI/cmVzb3VyY2U9MCIKK1BBU1Mgb3JpZ2lu
YWxSZXNvdXJjZXNbMV0uaW5pdGlhdG9yVHlwZSBpcyAiY3NzIgorUEFTUyBuZXcgVVJMKG9yaWdp
bmFsUmVzb3VyY2VzWzFdLm5hbWUpLnNlYXJjaCBpcyAiP3Jlc291cmNlPTEiCitQQVNTIHJlc291
cmNldGltaW5nYnVmZmVyZnVsbEV2ZW50Q291bnQgaXMgMAorCitJbnNpZGUgcmVzb3VyY2V0aW1p
bmdidWZmZXJmdWxsIDEKK3BlcmZvcm1hbmNlLnNldFJlc291cmNlVGltaW5nQnVmZmVyU2l6ZSgx
MCk7IGZldGNoSW1hZ2VzKDMsIDQpCitQQVNTIHJlc291cmNlc0FmdGVyU2hyaW5raW5nQnVmZmVy
ID0gcGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSgicmVzb3VyY2UiKTsgcmVzb3VyY2VzQWZ0
ZXJTaHJpbmtpbmdCdWZmZXIubGVuZ3RoIGlzIDIKK1BBU1MgcmVzb3VyY2VzQWZ0ZXJTaHJpbmtp
bmdCdWZmZXJbMF0gaXMgb3JpZ2luYWxSZXNvdXJjZXNbMF0KK1BBU1MgcmVzb3VyY2VzQWZ0ZXJT
aHJpbmtpbmdCdWZmZXJbMV0gaXMgb3JpZ2luYWxSZXNvdXJjZXNbMV0KKworQWZ0ZXIgcmVzb3Vy
Y2V0aW1pbmdidWZmZXJmdWxsCitQQVNTIGZpbmFsUmVzb3VyY2VzID0gcGVyZm9ybWFuY2UuZ2V0
RW50cmllc0J5VHlwZSgicmVzb3VyY2UiKTsgZmluYWxSZXNvdXJjZXMubGVuZ3RoIGlzIDQKK1BB
U1MgcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsRXZlbnRDb3VudCBpcyAxCitQQVNTIGZpbmFsUmVz
b3VyY2VzWzBdIGlzIG9yaWdpbmFsUmVzb3VyY2VzWzBdCitQQVNTIGZpbmFsUmVzb3VyY2VzWzFd
IGlzIG9yaWdpbmFsUmVzb3VyY2VzWzFdCitQQVNTIGZpbmFsUmVzb3VyY2VzWzJdLmluaXRpYXRv
clR5cGUgaXMgImNzcyIKK1BBU1MgbmV3IFVSTChmaW5hbFJlc291cmNlc1syXS5uYW1lKS5zZWFy
Y2ggaXMgIj9yZXNvdXJjZT0yIgorUEFTUyBmaW5hbFJlc291cmNlc1szXS5pbml0aWF0b3JUeXBl
IGlzICJjc3MiCitQQVNTIG5ldyBVUkwoZmluYWxSZXNvdXJjZXNbM10ubmFtZSkuc2VhcmNoIGlz
ICI/cmVzb3VyY2U9MyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVy
Zm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLXJlc291cmNldGltaW5nYnVmZmVyZnVsbC1xdWV1ZS1y
ZXNvdXJjZS1lbnRyeS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
cGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLXJlc291cmNldGltaW5nYnVm
ZmVyZnVsbC1xdWV1ZS1yZXNvdXJjZS1lbnRyeS5odG1sCShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVzb3VyY2UtdGltaW5n
LXJlc291cmNldGltaW5nYnVmZmVyZnVsbC1xdWV1ZS1yZXNvdXJjZS1lbnRyeS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsODQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9k
eT4KKzxzdHlsZT4KKyNjb250YWluZXIgZGl2IHsgd2lkdGg6IDEwcHg7IGhlaWdodDogMTBweDsg
fQorPC9zdHlsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlv
bignVGhpcyB0ZXN0cyBjbGVhcmluZyB0aGUgcmVzb3VyY2UgdGltaW5nIGJ1ZmZlciBkdXJpbmcg
YSByZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwgZXZlbnQuPGJyPicKKyAgICArICdXZWJLaXQgc2hv
dWxkIG5vdCBoaXQgYSByZWxlYXNlIGFzc2VydGlvbi4nKTsKKword2luZG93Lm9ubG9hZCA9ICgp
ID0+IHsKKyAgICBjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUn
KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykuYXBwZW5kQ2hpbGQo
aWZyYW1lKTsKKyAgICBjb25zdCBkb2MgPSBpZnJhbWUuY29udGVudERvY3VtZW50OworCisgICAg
Y29uc3QgcHJvbWlzZXMgPSBbXTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykgewor
ICAgICAgICBjb25zdCBpbWcgPSBkb2MuY3JlYXRlRWxlbWVudCgnaW1nJyk7CisgICAgICAgIGlt
Zy5zcmMgPSBgLi4vLi4vcmVzb3VyY2VzL3NxdWFyZTEwMC5wbmc/cmVzb3VyY2U9JHtpfWA7Cisg
ICAgICAgIHByb21pc2VzW2ldID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAgICAg
ICAgIGltZy5vbmxvYWQgPSByZXNvbHZlOworICAgICAgICB9KTsKKyAgICAgICAgZG9jLmJvZHku
YXBwZW5kQ2hpbGQoaW1nKTsKKyAgICB9CisgICAgUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4o
cnVuVGVzdCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIHNob3VsZEJlKCdwZXJm
b3JtYW5jZS5jbGVhclJlc291cmNlVGltaW5ncygpOyBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlU
eXBlKCJyZXNvdXJjZSIpLmxlbmd0aCcsICcwJyk7CisgICAgZXZhbEFuZExvZygncGVyZm9ybWFu
Y2Uuc2V0UmVzb3VyY2VUaW1pbmdCdWZmZXJTaXplKDIpOyBmZXRjaEltYWdlcygwLCAzKScpOwor
ICAgIHNob3VsZEJlKCdvcmlnaW5hbFJlc291cmNlcyA9IHBlcmZvcm1hbmNlLmdldEVudHJpZXNC
eVR5cGUoInJlc291cmNlIik7IG9yaWdpbmFsUmVzb3VyY2VzLmxlbmd0aCcsICcyJyk7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdvcmlnaW5hbFJlc291cmNlc1swXS5pbml0aWF0b3JUeXBl
JywgJ2NzcycpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbmV3IFVSTChvcmlnaW5hbFJl
c291cmNlc1swXS5uYW1lKS5zZWFyY2gnLCAnP3Jlc291cmNlPTAnKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ29yaWdpbmFsUmVzb3VyY2VzWzFdLmluaXRpYXRvclR5cGUnLCAnY3NzJyk7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCduZXcgVVJMKG9yaWdpbmFsUmVzb3VyY2VzWzFd
Lm5hbWUpLnNlYXJjaCcsICc/cmVzb3VyY2U9MScpOworICAgIHNob3VsZEJlKCdyZXNvdXJjZXRp
bWluZ2J1ZmZlcmZ1bGxFdmVudENvdW50JywgJzAnKTsKK30KKworbGV0IHJlc291cmNlSW5kZXgg
PSAwOworZnVuY3Rpb24gZmV0Y2hJbWFnZXMoc3RhcnRpbmdJbmRleCwgcGFzdEVuZGluZ0luZGV4
KQoreworICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250
YWluZXInKTsKKyAgICBmb3IgKGxldCBpID0gc3RhcnRpbmdJbmRleDsgaSA8IHBhc3RFbmRpbmdJ
bmRleDsgaSsrKSB7CisgICAgICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworICAgICAgICBkaXYuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gYHVybCgnLi4vLi4v
cmVzb3VyY2VzL3NxdWFyZTEwMC5wbmc/cmVzb3VyY2U9JHtpfScpYDsKKyAgICAgICAgY29udGFp
bmVyLmFwcGVuZENoaWxkKGRpdik7CisgICAgfQorICAgIGNvbnRhaW5lci5nZXRCb3VuZGluZ0Ns
aWVudFJlY3QoKTsKK30KKworbGV0IHJlc291cmNldGltaW5nYnVmZmVyZnVsbEV2ZW50Q291bnQg
PSAwOworcGVyZm9ybWFuY2Uub25yZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwgPSAoKSA9PiB7Cisg
ICAgcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsRXZlbnRDb3VudCsrOworICAgIGRlYnVnKCcnKTsK
KyAgICBkZWJ1ZyhgSW5zaWRlIHJlc291cmNldGltaW5nYnVmZmVyZnVsbCAke3Jlc291cmNldGlt
aW5nYnVmZmVyZnVsbEV2ZW50Q291bnR9YCk7CisgICAgZXZhbEFuZExvZygncGVyZm9ybWFuY2Uu
c2V0UmVzb3VyY2VUaW1pbmdCdWZmZXJTaXplKDEwKTsgZmV0Y2hJbWFnZXMoMywgNCknKTsKKyAg
ICBzaG91bGRCZSgncmVzb3VyY2VzQWZ0ZXJTaHJpbmtpbmdCdWZmZXIgPSBwZXJmb3JtYW5jZS5n
ZXRFbnRyaWVzQnlUeXBlKCJyZXNvdXJjZSIpOyByZXNvdXJjZXNBZnRlclNocmlua2luZ0J1ZmZl
ci5sZW5ndGgnLCAnMicpOworICAgIHNob3VsZEJlKCdyZXNvdXJjZXNBZnRlclNocmlua2luZ0J1
ZmZlclswXScsICdvcmlnaW5hbFJlc291cmNlc1swXScpOworICAgIHNob3VsZEJlKCdyZXNvdXJj
ZXNBZnRlclNocmlua2luZ0J1ZmZlclsxXScsICdvcmlnaW5hbFJlc291cmNlc1sxXScpOworICAg
IHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIGRlYnVnKCdB
ZnRlciByZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwnKTsKKyAgICAgICAgc2hvdWxkQmUoJ2ZpbmFs
UmVzb3VyY2VzID0gcGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSgicmVzb3VyY2UiKTsgZmlu
YWxSZXNvdXJjZXMubGVuZ3RoJywgJzQnKTsKKyAgICAgICAgc2hvdWxkQmUoJ3Jlc291cmNldGlt
aW5nYnVmZmVyZnVsbEV2ZW50Q291bnQnLCAnMScpOworICAgICAgICBzaG91bGRCZSgnZmluYWxS
ZXNvdXJjZXNbMF0nLCAnb3JpZ2luYWxSZXNvdXJjZXNbMF0nKTsKKyAgICAgICAgc2hvdWxkQmUo
J2ZpbmFsUmVzb3VyY2VzWzFdJywgJ29yaWdpbmFsUmVzb3VyY2VzWzFdJyk7CisgICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygnZmluYWxSZXNvdXJjZXNbMl0uaW5pdGlhdG9yVHlwZScsICdj
c3MnKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCduZXcgVVJMKGZpbmFsUmVzb3Vy
Y2VzWzJdLm5hbWUpLnNlYXJjaCcsICc/cmVzb3VyY2U9MicpOworICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ2ZpbmFsUmVzb3VyY2VzWzNdLmluaXRpYXRvclR5cGUnLCAnY3NzJyk7Cisg
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbmV3IFVSTChmaW5hbFJlc291cmNlc1szXS5u
YW1lKS5zZWFyY2gnLCAnP3Jlc291cmNlPTMnKTsgICAgICAgIAorICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICB9LCAwKTsKK30KKwordmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BlcmZvcm1h
bmNlL3BlcmZvcm1hbmNlLXJlc291cmNlLXRpbWluZy1yZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwt
c2hyaW5raW5nLWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS1yZXNvdXJjZS10aW1pbmct
cmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsLXNocmlua2luZy1idWZmZXItY3Jhc2gtZXhwZWN0ZWQu
dHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcGVyZm9ybWFuY2Uv
cGVyZm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLXJlc291cmNldGltaW5nYnVmZmVyZnVsbC1zaHJp
bmtpbmctYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDM0IEBACitUaGlzIHRlc3RzIGNsZWFyaW5nIHRoZSByZXNvdXJjZSB0aW1pbmcgYnVmZmVyIGR1
cmluZyBhIHJlc291cmNldGltaW5nYnVmZmVyZnVsbCBldmVudC4KK1dlYktpdCBzaG91bGQgbm90
IGhpdCBhIHJlbGVhc2UgYXNzZXJ0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKCJyZXNvdXJjZSIpLmxlbmd0aCBp
cyAwCitwZXJmb3JtYW5jZS5zZXRSZXNvdXJjZVRpbWluZ0J1ZmZlclNpemUoMikKK2ZldGNoSW1h
Z2VzKDMpLnRoZW4oY2hlY2tJbml0aWFsU3RhdGUpCitQQVNTIG9yaWdpbmFsUmVzb3VyY2VzID0g
cGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSgicmVzb3VyY2UiKTsgb3JpZ2luYWxSZXNvdXJj
ZXMubGVuZ3RoIGlzIDIKK1BBU1Mgb3JpZ2luYWxSZXNvdXJjZXNbMF0uaW5pdGlhdG9yVHlwZSBp
cyAiZmV0Y2giCitQQVNTIG5ldyBVUkwob3JpZ2luYWxSZXNvdXJjZXNbMF0ubmFtZSkuc2VhcmNo
IGlzICI/cmVzb3VyY2U9MCIKK1BBU1Mgb3JpZ2luYWxSZXNvdXJjZXNbMV0uaW5pdGlhdG9yVHlw
ZSBpcyAiZmV0Y2giCitQQVNTIG5ldyBVUkwob3JpZ2luYWxSZXNvdXJjZXNbMV0ubmFtZSkuc2Vh
cmNoIGlzICI/cmVzb3VyY2U9MSIKK1BBU1MgcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsRXZlbnRD
b3VudCBpcyAwCisKK0luc2lkZSByZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwgMQorcGVyZm9ybWFu
Y2Uuc2V0UmVzb3VyY2VUaW1pbmdCdWZmZXJTaXplKDEpCitQQVNTIHJlc291cmNlc0FmdGVyU2hy
aW5raW5nQnVmZmVyID0gcGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSgicmVzb3VyY2UiKTsg
cmVzb3VyY2VzQWZ0ZXJTaHJpbmtpbmdCdWZmZXIubGVuZ3RoIGlzIDIKK1BBU1MgcmVzb3VyY2Vz
QWZ0ZXJTaHJpbmtpbmdCdWZmZXJbMF0gaXMgb3JpZ2luYWxSZXNvdXJjZXNbMF0KK1BBU1MgcmVz
b3VyY2VzQWZ0ZXJTaHJpbmtpbmdCdWZmZXJbMV0gaXMgb3JpZ2luYWxSZXNvdXJjZXNbMV0KKwor
SW5zaWRlIHJlc291cmNldGltaW5nYnVmZmVyZnVsbCAyCitQQVNTIHBlcmZvcm1hbmNlLmNsZWFy
UmVzb3VyY2VUaW1pbmdzKCk7IHBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUoInJlc291cmNl
IikubGVuZ3RoIGlzIDAKKworQWZ0ZXIgcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsCitQQVNTIHJl
c291cmNldGltaW5nYnVmZmVyZnVsbEV2ZW50Q291bnQgaXMgMgorUEFTUyByZXNvdXJjZXNBZnRl
ckNsZWFyaW5nID0gcGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSgicmVzb3VyY2UiKTsgcmVz
b3VyY2VzQWZ0ZXJDbGVhcmluZy5sZW5ndGggaXMgMQorUEFTUyByZXNvdXJjZXNBZnRlckNsZWFy
aW5nWzBdLmluaXRpYXRvclR5cGUgaXMgImZldGNoIgorUEFTUyBuZXcgVVJMKHJlc291cmNlc0Fm
dGVyQ2xlYXJpbmdbMF0ubmFtZSkuc2VhcmNoIGlzICI/cmVzb3VyY2U9MiIKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3BlcmZvcm1hbmNlL3BlcmZvcm1hbmNlLXJlc291cmNlLXRpbWluZy1yZXNv
dXJjZXRpbWluZ2J1ZmZlcmZ1bGwtc2hyaW5raW5nLWJ1ZmZlci1jcmFzaC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVz
b3VyY2UtdGltaW5nLXJlc291cmNldGltaW5nYnVmZmVyZnVsbC1zaHJpbmtpbmctYnVmZmVyLWNy
YXNoLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wZXJmb3Jt
YW5jZS9wZXJmb3JtYW5jZS1yZXNvdXJjZS10aW1pbmctcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxs
LXNocmlua2luZy1idWZmZXItY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY2
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbign
VGhpcyB0ZXN0cyBjbGVhcmluZyB0aGUgcmVzb3VyY2UgdGltaW5nIGJ1ZmZlciBkdXJpbmcgYSBy
ZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwgZXZlbnQuPGJyPicKKyAgICArICdXZWJLaXQgc2hvdWxk
IG5vdCBoaXQgYSByZWxlYXNlIGFzc2VydGlvbi4nKTsKKworZnVuY3Rpb24gc3RhcnRUZXN0KCkK
K3sKKyAgICBwZXJmb3JtYW5jZS5jbGVhclJlc291cmNlVGltaW5ncygpOworICAgIHNob3VsZEJl
KCdwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKCJyZXNvdXJjZSIpLmxlbmd0aCcsICcwJyk7
CisgICAgZXZhbEFuZExvZygncGVyZm9ybWFuY2Uuc2V0UmVzb3VyY2VUaW1pbmdCdWZmZXJTaXpl
KDIpJyk7CisgICAgZXZhbEFuZExvZygnZmV0Y2hJbWFnZXMoMykudGhlbihjaGVja0luaXRpYWxT
dGF0ZSknKTsKK30KKworbGV0IHJlc291cmNlSW5kZXggPSAwOworYXN5bmMgZnVuY3Rpb24gZmV0
Y2hJbWFnZXMoY291bnQpCit7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrLCBy
ZXNvdXJjZUluZGV4KyspCisgICAgICAgIGF3YWl0IGZldGNoKGAuLi8uLi9yZXNvdXJjZXMvc3F1
YXJlMTAwLnBuZz9yZXNvdXJjZT0ke3Jlc291cmNlSW5kZXh9YCk7Cit9CisKK2FzeW5jIGZ1bmN0
aW9uIGNoZWNrSW5pdGlhbFN0YXRlKCkKK3sKKyAgICBzaG91bGRCZSgnb3JpZ2luYWxSZXNvdXJj
ZXMgPSBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKCJyZXNvdXJjZSIpOyBvcmlnaW5hbFJl
c291cmNlcy5sZW5ndGgnLCAnMicpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnb3JpZ2lu
YWxSZXNvdXJjZXNbMF0uaW5pdGlhdG9yVHlwZScsICdmZXRjaCcpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygnbmV3IFVSTChvcmlnaW5hbFJlc291cmNlc1swXS5uYW1lKS5zZWFyY2gnLCAn
P3Jlc291cmNlPTAnKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ29yaWdpbmFsUmVzb3Vy
Y2VzWzFdLmluaXRpYXRvclR5cGUnLCAnZmV0Y2gnKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ25ldyBVUkwob3JpZ2luYWxSZXNvdXJjZXNbMV0ubmFtZSkuc2VhcmNoJywgJz9yZXNvdXJj
ZT0xJyk7CisgICAgc2hvdWxkQmUoJ3Jlc291cmNldGltaW5nYnVmZmVyZnVsbEV2ZW50Q291bnQn
LCAnMCcpOworfQorCitsZXQgcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsRXZlbnRDb3VudCA9IDA7
CitwZXJmb3JtYW5jZS5vbnJlc291cmNldGltaW5nYnVmZmVyZnVsbCA9ICgpID0+IHsKKyAgICBy
ZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGxFdmVudENvdW50Kys7CisgICAgZGVidWcoJycpOworICAg
IGRlYnVnKGBJbnNpZGUgcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsICR7cmVzb3VyY2V0aW1pbmdi
dWZmZXJmdWxsRXZlbnRDb3VudH1gKTsKKyAgICBpZiAocmVzb3VyY2V0aW1pbmdidWZmZXJmdWxs
RXZlbnRDb3VudCA9PSAxKSB7CisgICAgICAgIGV2YWxBbmRMb2coJ3BlcmZvcm1hbmNlLnNldFJl
c291cmNlVGltaW5nQnVmZmVyU2l6ZSgxKScpOworICAgICAgICBzaG91bGRCZSgncmVzb3VyY2Vz
QWZ0ZXJTaHJpbmtpbmdCdWZmZXIgPSBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKCJyZXNv
dXJjZSIpOyByZXNvdXJjZXNBZnRlclNocmlua2luZ0J1ZmZlci5sZW5ndGgnLCAnMicpOworICAg
ICAgICBzaG91bGRCZSgncmVzb3VyY2VzQWZ0ZXJTaHJpbmtpbmdCdWZmZXJbMF0nLCAnb3JpZ2lu
YWxSZXNvdXJjZXNbMF0nKTsKKyAgICAgICAgc2hvdWxkQmUoJ3Jlc291cmNlc0FmdGVyU2hyaW5r
aW5nQnVmZmVyWzFdJywgJ29yaWdpbmFsUmVzb3VyY2VzWzFdJyk7CisgICAgfSBlbHNlIGlmIChy
ZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGxFdmVudENvdW50ID09IDIpIHsKKyAgICAgICAgc2hvdWxk
QmUoJ3BlcmZvcm1hbmNlLmNsZWFyUmVzb3VyY2VUaW1pbmdzKCk7IHBlcmZvcm1hbmNlLmdldEVu
dHJpZXNCeVR5cGUoInJlc291cmNlIikubGVuZ3RoJywgJzAnKTsKKyAgICAgICAgc2V0VGltZW91
dCgoKSA9PiB7CisgICAgICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgICAgICBkZWJ1ZygnQWZ0
ZXIgcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsJyk7CisgICAgICAgICAgICBzaG91bGRCZSgncmVz
b3VyY2V0aW1pbmdidWZmZXJmdWxsRXZlbnRDb3VudCcsICcyJyk7CisgICAgICAgICAgICBzaG91
bGRCZSgncmVzb3VyY2VzQWZ0ZXJDbGVhcmluZyA9IHBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5
cGUoInJlc291cmNlIik7IHJlc291cmNlc0FmdGVyQ2xlYXJpbmcubGVuZ3RoJywgJzEnKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzb3VyY2VzQWZ0ZXJDbGVhcmluZ1sw
XS5pbml0aWF0b3JUeXBlJywgJ2ZldGNoJyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ25ldyBVUkwocmVzb3VyY2VzQWZ0ZXJDbGVhcmluZ1swXS5uYW1lKS5zZWFyY2gnLCAn
P3Jlc291cmNlPTInKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9LCAw
KTsKKyAgICB9Cit9CisKK3ZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKword2luZG93Lm9ubG9h
ZCA9IHN0YXJ0VGVzdDsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332788</attachid>
            <date>2018-01-31 11:39:29 -0800</date>
            <delta_ts>2018-01-31 12:51:23 -0800</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-182319-20180131113928.patch</filename>
            <type>text/plain</type>
            <size>16520</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzg3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE4LTAxLTMwICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbGVhc2UgYXNzZXJ0aW9uIGlu
IFBlcmZvcm1hbmNlOjpyZXNvdXJjZVRpbWluZ0J1ZmZlckZ1bGxUaW1lckZpcmVkIHdoZW4gdGhl
IHJlc291cmNlIHRpbWluZyBidWZmZXIgaXMgc2hydW5rCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIzMTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM2OTA0MzEyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBjcmFzaCB3YXMgY2F1c2VkIGJ5IGEgd3JvbmcgcmVsZWFzZSBhc3NlcnRpb24uIEhh
bmRsZSBhdXRob3Igc2NyaXB0cyBzaHJpbmtpbmcgdGhlIHJlc291cmNlIHRpbWluZyBidWZmZXIK
KyAgICAgICAgd2hpbGUgcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsIGV2ZW50IGlzIGJlaW5nIGRp
c3BhdGNoZWQuCisKKyAgICAgICAgQWxzbyBmaXhlZCBhIGJ1ZyB0aGF0IGEgc3VwZXJmbG91cyBy
ZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwgZXZlbnQgd2lsbCBiZSBmaXJlZCB3aGVuIG5ldyByZXNv
dXJjZSB0aW1pbmcgZW50cmllcworICAgICAgICBhcmUgcXVldWVkIHdoaWxlIHJlc291cmNldGlt
aW5nYnVmZmVyZnVsbCBldmVudCBpcyBiZWluZyBkaXNwYXRjaGVkLgorCisgICAgICAgIFRlc3Q6
IGh0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLXJlc291
cmNldGltaW5nYnVmZmVyZnVsbC1xdWV1ZS1yZXNvdXJjZS1lbnRyeS5odG1sCisgICAgICAgICAg
ICAgIGh0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLXJl
c291cmNldGltaW5nYnVmZmVyZnVsbC1zaHJpbmtpbmctYnVmZmVyLWNyYXNoLmh0bWwKKworICAg
ICAgICAqIHBhZ2UvUGVyZm9ybWFuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFu
Y2U6OnJlc291cmNlVGltaW5nQnVmZmVyRnVsbFRpbWVyRmlyZWQpOiAKKwogMjAxOC0wMS0zMCAg
RnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2lu
Q2Fpcm9dIHN5bnRoZXRpY0JvbGRPZmZzZXQgbWFrZXMgYSBmb250IHdpdGggZW1iZWRkZWQgYml0
bWFwIGZvbnRzIHNob3duIGFzIGRvdWJsZSBzdHJpa2UgaW4gSGlEUEkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2UuY3BwCShyZXZpc2lvbiAyMjc4NzYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDMwICsyMTMsMzIg
QEAgdm9pZCBQZXJmb3JtYW5jZTo6cmVzb3VyY2VUaW1pbmdCdWZmZXJGdQogewogICAgIHdoaWxl
ICghbV9iYWNrdXBSZXNvdXJjZVRpbWluZ0J1ZmZlci5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0
byBiYWNrdXBCdWZmZXIgPSBXVEZNb3ZlKG1fYmFja3VwUmVzb3VyY2VUaW1pbmdCdWZmZXIpOwor
ICAgICAgICBBU1NFUlQobV9iYWNrdXBSZXNvdXJjZVRpbWluZ0J1ZmZlci5pc0VtcHR5KCkpOwog
CiAgICAgICAgIG1fcmVzb3VyY2VUaW1pbmdCdWZmZXJGdWxsRmxhZyA9IHRydWU7CiAgICAgICAg
IGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVzb3VyY2V0aW1pbmdi
dWZmZXJmdWxsRXZlbnQsIHRydWUsIGZhbHNlKSk7CiAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bV9yZXNvdXJjZVRpbWluZ0J1ZmZlclNpemUgPj0gbV9yZXNvdXJjZVRpbWluZ0J1ZmZlci5zaXpl
KCkpOwotICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdCdWZmZXJTaXplID0gbV9yZXNvdXJjZVRp
bWluZ0J1ZmZlclNpemUgLSBtX3Jlc291cmNlVGltaW5nQnVmZmVyLnNpemUoKTsKLSAgICAgICAg
Ym9vbCBidWZmZXJJc1N0aWxsRnVsbEFmdGVyRGlzcGF0Y2hpbmdFdmVudCA9ICFyZW1haW5pbmdC
dWZmZXJTaXplOwotICAgICAgICBpZiAoYnVmZmVySXNTdGlsbEZ1bGxBZnRlckRpc3BhdGNoaW5n
RXZlbnQpIHsKKyAgICAgICAgaWYgKG1fcmVzb3VyY2VUaW1pbmdCdWZmZXJGdWxsRmxhZykgewog
ICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGJhY2t1cEJ1ZmZlcikKICAgICAgICAgICAg
ICAgICBxdWV1ZUVudHJ5KCplbnRyeSk7CiAgICAgICAgICAgICAvLyBEaXNwYXRjaGluZyByZXNv
dXJjZXRpbWluZ2J1ZmZlcmZ1bGwgZXZlbnQgbWF5IGhhdmUgaW5zZXJ0ZWQgbW9yZSBlbnRyaWVz
LgogICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fYmFja3VwUmVzb3VyY2VUaW1pbmdC
dWZmZXIpCiAgICAgICAgICAgICAgICAgcXVldWVFbnRyeSgqZW50cnkpOworICAgICAgICAgICAg
bV9iYWNrdXBSZXNvdXJjZVRpbWluZ0J1ZmZlci5jbGVhcigpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KIAotICAgICAgICB1bnNpZ25lZCBpID0gMDsKKyAgICAgICAgLy8gTW9yZSBl
bnRyaWVzIG1heSBoYXZlIGFkZGVkIHdoaWxlIGRpc3BhdGNoaW5nIHJlc291cmNldGltaW5nYnVm
ZmVyZnVsbCBldmVudC4KKyAgICAgICAgZm9yIChhdXRvICYgZW50cnkgOiBtX2JhY2t1cFJlc291
cmNlVGltaW5nQnVmZmVyKQorICAgICAgICAgICAgYmFja3VwQnVmZmVyLmFwcGVuZChlbnRyeSk7
CisgICAgICAgIG1fYmFja3VwUmVzb3VyY2VUaW1pbmdCdWZmZXIuY2xlYXIoKTsKKwogICAgICAg
ICBmb3IgKGF1dG8mIGVudHJ5IDogYmFja3VwQnVmZmVyKSB7Ci0gICAgICAgICAgICBpZiAoaSA8
IHJlbWFpbmluZ0J1ZmZlclNpemUpIHsKKyAgICAgICAgICAgIGlmICghaXNSZXNvdXJjZVRpbWlu
Z0J1ZmZlckZ1bGwoKSkgewogICAgICAgICAgICAgICAgIG1fcmVzb3VyY2VUaW1pbmdCdWZmZXIu
YXBwZW5kKGVudHJ5LmNvcHlSZWYoKSk7CiAgICAgICAgICAgICAgICAgcXVldWVFbnRyeSgqZW50
cnkpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbV9iYWNrdXBSZXNvdXJj
ZVRpbWluZ0J1ZmZlci5hcHBlbmQoZW50cnkuY29weVJlZigpKTsKLSAgICAgICAgICAgIGkrKzsK
ICAgICAgICAgfQogICAgIH0KICAgICBtX3dhaXRpbmdGb3JCYWNrdXBCdWZmZXJUb0JlUHJvY2Vz
c2VkID0gZmFsc2U7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjc4NzYpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0wMS0zMCAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZWxlYXNlIGFzc2VydGlv
biBpbiBQZXJmb3JtYW5jZTo6cmVzb3VyY2VUaW1pbmdCdWZmZXJGdWxsVGltZXJGaXJlZCB3aGVu
IHRoZSByZXNvdXJjZSB0aW1pbmcgYnVmZmVyIGlzIHNocnVuaworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyMzE5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zNjkwNDMxMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRlZCByZWdyZXNzaW9uIHRlc3RzIGZvciBzaHJpbmtpbmcgdGhlIHJlc29ydWNl
IHRpbWluZyBidWZmZXIgYW5kIHF1ZXVpbmcgYSBuZXcgcmVzb3VyY2UgdGltaW5nIGVudHJ5IHdo
aWxlCisgICAgICAgIHJlc291cmNldGltaW5nYnVmZmVyZnVsbCBldmVudCBpcyBiZWluZyBkaXNw
YXRjaGVkLgorCisgICAgICAgICogaHR0cC90ZXN0cy9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS1y
ZXNvdXJjZS10aW1pbmctcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsLXF1ZXVlLXJlc291cmNlLWVu
dHJ5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9wZXJmb3JtYW5j
ZS9wZXJmb3JtYW5jZS1yZXNvdXJjZS10aW1pbmctcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsLXF1
ZXVlLXJlc291cmNlLWVudHJ5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcGVy
Zm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLXJlc291cmNldGltaW5nYnVmZmVy
ZnVsbC1zaHJpbmtpbmctYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS1yZXNvdXJjZS10aW1pbmctcmVz
b3VyY2V0aW1pbmdidWZmZXJmdWxsLXNocmlua2luZy1idWZmZXItY3Jhc2guaHRtbDogQWRkZWQu
CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3BlcmZvcm1hbmNlL3BlcmZvcm1hbmNlLXJlc291cmNl
LXRpbWluZy1yZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwtc2hyaW5raW5nLWJ1ZmZlci1jcmFzaC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVy
Zm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLXJlc291cmNldGltaW5nYnVmZmVyZnVsbC1zaHJpbmtp
bmctYnVmZmVyLWNyYXNoLmh0bWw6IEFkZGVkLgorCiAyMDE4LTAxLTMwICBKb2huIFdpbGFuZGVy
ICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBjYWxsYmFja3MgdG8gdGVzdFJ1
bm5lci5zdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3QoKSBhbmQgdGVz
dFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCkKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVzb3VyY2UtdGltaW5n
LXJlc291cmNldGltaW5nYnVmZmVyZnVsbC1xdWV1ZS1yZXNvdXJjZS1lbnRyeS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wZXJmb3JtYW5jZS9wZXJm
b3JtYW5jZS1yZXNvdXJjZS10aW1pbmctcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsLXF1ZXVlLXJl
c291cmNlLWVudHJ5LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3BlcmZvcm1hbmNlL3BlcmZvcm1hbmNlLXJlc291cmNlLXRpbWluZy1yZXNvdXJj
ZXRpbWluZ2J1ZmZlcmZ1bGwtcXVldWUtcmVzb3VyY2UtZW50cnktZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUgQEAKK1RoaXMgdGVzdHMgY2xlYXJpbmcgdGhlIHJlc291
cmNlIHRpbWluZyBidWZmZXIgZHVyaW5nIGEgcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsIGV2ZW50
LgorV2ViS2l0IHNob3VsZCBub3QgaGl0IGEgcmVsZWFzZSBhc3NlcnRpb24uCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHBlcmZvcm1hbmNlLmNsZWFyUmVzb3VyY2VUaW1p
bmdzKCk7IHBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUoInJlc291cmNlIikubGVuZ3RoIGlz
IDAKK3BlcmZvcm1hbmNlLnNldFJlc291cmNlVGltaW5nQnVmZmVyU2l6ZSgyKTsgZmV0Y2hJbWFn
ZXMoMCwgMykKK1BBU1Mgb3JpZ2luYWxSZXNvdXJjZXMgPSBwZXJmb3JtYW5jZS5nZXRFbnRyaWVz
QnlUeXBlKCJyZXNvdXJjZSIpOyBvcmlnaW5hbFJlc291cmNlcy5sZW5ndGggaXMgMgorUEFTUyBv
cmlnaW5hbFJlc291cmNlc1swXS5pbml0aWF0b3JUeXBlIGlzICJjc3MiCitQQVNTIG5ldyBVUkwo
b3JpZ2luYWxSZXNvdXJjZXNbMF0ubmFtZSkuc2VhcmNoIGlzICI/cmVzb3VyY2U9MCIKK1BBU1Mg
b3JpZ2luYWxSZXNvdXJjZXNbMV0uaW5pdGlhdG9yVHlwZSBpcyAiY3NzIgorUEFTUyBuZXcgVVJM
KG9yaWdpbmFsUmVzb3VyY2VzWzFdLm5hbWUpLnNlYXJjaCBpcyAiP3Jlc291cmNlPTEiCitQQVNT
IHJlc291cmNldGltaW5nYnVmZmVyZnVsbEV2ZW50Q291bnQgaXMgMAorCitJbnNpZGUgcmVzb3Vy
Y2V0aW1pbmdidWZmZXJmdWxsIDEKK3BlcmZvcm1hbmNlLnNldFJlc291cmNlVGltaW5nQnVmZmVy
U2l6ZSgxMCk7IGZldGNoSW1hZ2VzKDMsIDQpCitQQVNTIHJlc291cmNlc0FmdGVyU2hyaW5raW5n
QnVmZmVyID0gcGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSgicmVzb3VyY2UiKTsgcmVzb3Vy
Y2VzQWZ0ZXJTaHJpbmtpbmdCdWZmZXIubGVuZ3RoIGlzIDIKK1BBU1MgcmVzb3VyY2VzQWZ0ZXJT
aHJpbmtpbmdCdWZmZXJbMF0gaXMgb3JpZ2luYWxSZXNvdXJjZXNbMF0KK1BBU1MgcmVzb3VyY2Vz
QWZ0ZXJTaHJpbmtpbmdCdWZmZXJbMV0gaXMgb3JpZ2luYWxSZXNvdXJjZXNbMV0KKworQWZ0ZXIg
cmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsCitQQVNTIGZpbmFsUmVzb3VyY2VzID0gcGVyZm9ybWFu
Y2UuZ2V0RW50cmllc0J5VHlwZSgicmVzb3VyY2UiKTsgZmluYWxSZXNvdXJjZXMubGVuZ3RoIGlz
IDQKK1BBU1MgcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsRXZlbnRDb3VudCBpcyAxCitQQVNTIGZp
bmFsUmVzb3VyY2VzWzBdIGlzIG9yaWdpbmFsUmVzb3VyY2VzWzBdCitQQVNTIGZpbmFsUmVzb3Vy
Y2VzWzFdIGlzIG9yaWdpbmFsUmVzb3VyY2VzWzFdCitQQVNTIGZpbmFsUmVzb3VyY2VzWzJdLmlu
aXRpYXRvclR5cGUgaXMgImNzcyIKK1BBU1MgbmV3IFVSTChmaW5hbFJlc291cmNlc1syXS5uYW1l
KS5zZWFyY2ggaXMgIj9yZXNvdXJjZT0yIgorUEFTUyBmaW5hbFJlc291cmNlc1szXS5pbml0aWF0
b3JUeXBlIGlzICJjc3MiCitQQVNTIG5ldyBVUkwoZmluYWxSZXNvdXJjZXNbM10ubmFtZSkuc2Vh
cmNoIGlzICI/cmVzb3VyY2U9MyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvcGVyZm9ybWFu
Y2UvcGVyZm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLXJlc291cmNldGltaW5nYnVmZmVyZnVsbC1x
dWV1ZS1yZXNvdXJjZS1lbnRyeS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLXJlc291cmNldGlt
aW5nYnVmZmVyZnVsbC1xdWV1ZS1yZXNvdXJjZS1lbnRyeS5odG1sCShub25leGlzdGVudCkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVzb3VyY2Ut
dGltaW5nLXJlc291cmNldGltaW5nYnVmZmVyZnVsbC1xdWV1ZS1yZXNvdXJjZS1lbnRyeS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8Ym9keT4KKzxzdHlsZT4KKyNjb250YWluZXIgZGl2IHsgd2lkdGg6IDEwcHg7IGhlaWdodDog
MTBweDsgfQorPC9zdHlsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNj
cmlwdGlvbignVGhpcyB0ZXN0cyBjbGVhcmluZyB0aGUgcmVzb3VyY2UgdGltaW5nIGJ1ZmZlciBk
dXJpbmcgYSByZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwgZXZlbnQuPGJyPicKKyAgICArICdXZWJL
aXQgc2hvdWxkIG5vdCBoaXQgYSByZWxlYXNlIGFzc2VydGlvbi4nKTsKKword2luZG93Lm9ubG9h
ZCA9ICgpID0+IHsKKyAgICBjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdp
ZnJhbWUnKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykuYXBwZW5k
Q2hpbGQoaWZyYW1lKTsKKyAgICBjb25zdCBkb2MgPSBpZnJhbWUuY29udGVudERvY3VtZW50Owor
CisgICAgY29uc3QgcHJvbWlzZXMgPSBbXTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkr
KykgeworICAgICAgICBjb25zdCBpbWcgPSBkb2MuY3JlYXRlRWxlbWVudCgnaW1nJyk7CisgICAg
ICAgIGltZy5zcmMgPSBgLi4vLi4vcmVzb3VyY2VzL3NxdWFyZTEwMC5wbmc/cmVzb3VyY2U9JHtp
fWA7CisgICAgICAgIHByb21pc2VzW2ldID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAg
ICAgICAgICAgIGltZy5vbmxvYWQgPSByZXNvbHZlOworICAgICAgICB9KTsKKyAgICAgICAgZG9j
LmJvZHkuYXBwZW5kQ2hpbGQoaW1nKTsKKyAgICB9CisgICAgUHJvbWlzZS5hbGwocHJvbWlzZXMp
LnRoZW4ocnVuVGVzdCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIHNob3VsZEJl
KCdwZXJmb3JtYW5jZS5jbGVhclJlc291cmNlVGltaW5ncygpOyBwZXJmb3JtYW5jZS5nZXRFbnRy
aWVzQnlUeXBlKCJyZXNvdXJjZSIpLmxlbmd0aCcsICcwJyk7CisgICAgZXZhbEFuZExvZygncGVy
Zm9ybWFuY2Uuc2V0UmVzb3VyY2VUaW1pbmdCdWZmZXJTaXplKDIpOyBmZXRjaEltYWdlcygwLCAz
KScpOworICAgIHNob3VsZEJlKCdvcmlnaW5hbFJlc291cmNlcyA9IHBlcmZvcm1hbmNlLmdldEVu
dHJpZXNCeVR5cGUoInJlc291cmNlIik7IG9yaWdpbmFsUmVzb3VyY2VzLmxlbmd0aCcsICcyJyk7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdvcmlnaW5hbFJlc291cmNlc1swXS5pbml0aWF0
b3JUeXBlJywgJ2NzcycpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbmV3IFVSTChvcmln
aW5hbFJlc291cmNlc1swXS5uYW1lKS5zZWFyY2gnLCAnP3Jlc291cmNlPTAnKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ29yaWdpbmFsUmVzb3VyY2VzWzFdLmluaXRpYXRvclR5cGUnLCAn
Y3NzJyk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCduZXcgVVJMKG9yaWdpbmFsUmVzb3Vy
Y2VzWzFdLm5hbWUpLnNlYXJjaCcsICc/cmVzb3VyY2U9MScpOworICAgIHNob3VsZEJlKCdyZXNv
dXJjZXRpbWluZ2J1ZmZlcmZ1bGxFdmVudENvdW50JywgJzAnKTsKK30KKworbGV0IHJlc291cmNl
SW5kZXggPSAwOworZnVuY3Rpb24gZmV0Y2hJbWFnZXMoc3RhcnRpbmdJbmRleCwgcGFzdEVuZGlu
Z0luZGV4KQoreworICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb250YWluZXInKTsKKyAgICBmb3IgKGxldCBpID0gc3RhcnRpbmdJbmRleDsgaSA8IHBhc3RF
bmRpbmdJbmRleDsgaSsrKSB7CisgICAgICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOworICAgICAgICBkaXYuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gYHVybCgn
Li4vLi4vcmVzb3VyY2VzL3NxdWFyZTEwMC5wbmc/cmVzb3VyY2U9JHtpfScpYDsKKyAgICAgICAg
Y29udGFpbmVyLmFwcGVuZENoaWxkKGRpdik7CisgICAgfQorICAgIGNvbnRhaW5lci5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKTsKK30KKworbGV0IHJlc291cmNldGltaW5nYnVmZmVyZnVsbEV2ZW50
Q291bnQgPSAwOworcGVyZm9ybWFuY2Uub25yZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwgPSAoKSA9
PiB7CisgICAgcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsRXZlbnRDb3VudCsrOworICAgIGRlYnVn
KCcnKTsKKyAgICBkZWJ1ZyhgSW5zaWRlIHJlc291cmNldGltaW5nYnVmZmVyZnVsbCAke3Jlc291
cmNldGltaW5nYnVmZmVyZnVsbEV2ZW50Q291bnR9YCk7CisgICAgZXZhbEFuZExvZygncGVyZm9y
bWFuY2Uuc2V0UmVzb3VyY2VUaW1pbmdCdWZmZXJTaXplKDEwKTsgZmV0Y2hJbWFnZXMoMywgNCkn
KTsKKyAgICBzaG91bGRCZSgncmVzb3VyY2VzQWZ0ZXJTaHJpbmtpbmdCdWZmZXIgPSBwZXJmb3Jt
YW5jZS5nZXRFbnRyaWVzQnlUeXBlKCJyZXNvdXJjZSIpOyByZXNvdXJjZXNBZnRlclNocmlua2lu
Z0J1ZmZlci5sZW5ndGgnLCAnMicpOworICAgIHNob3VsZEJlKCdyZXNvdXJjZXNBZnRlclNocmlu
a2luZ0J1ZmZlclswXScsICdvcmlnaW5hbFJlc291cmNlc1swXScpOworICAgIHNob3VsZEJlKCdy
ZXNvdXJjZXNBZnRlclNocmlua2luZ0J1ZmZlclsxXScsICdvcmlnaW5hbFJlc291cmNlc1sxXScp
OworICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIGRl
YnVnKCdBZnRlciByZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwnKTsKKyAgICAgICAgc2hvdWxkQmUo
J2ZpbmFsUmVzb3VyY2VzID0gcGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSgicmVzb3VyY2Ui
KTsgZmluYWxSZXNvdXJjZXMubGVuZ3RoJywgJzQnKTsKKyAgICAgICAgc2hvdWxkQmUoJ3Jlc291
cmNldGltaW5nYnVmZmVyZnVsbEV2ZW50Q291bnQnLCAnMScpOworICAgICAgICBzaG91bGRCZSgn
ZmluYWxSZXNvdXJjZXNbMF0nLCAnb3JpZ2luYWxSZXNvdXJjZXNbMF0nKTsKKyAgICAgICAgc2hv
dWxkQmUoJ2ZpbmFsUmVzb3VyY2VzWzFdJywgJ29yaWdpbmFsUmVzb3VyY2VzWzFdJyk7CisgICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZmluYWxSZXNvdXJjZXNbMl0uaW5pdGlhdG9yVHlw
ZScsICdjc3MnKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCduZXcgVVJMKGZpbmFs
UmVzb3VyY2VzWzJdLm5hbWUpLnNlYXJjaCcsICc/cmVzb3VyY2U9MicpOworICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ2ZpbmFsUmVzb3VyY2VzWzNdLmluaXRpYXRvclR5cGUnLCAnY3Nz
Jyk7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbmV3IFVSTChmaW5hbFJlc291cmNl
c1szXS5uYW1lKS5zZWFyY2gnLCAnP3Jlc291cmNlPTMnKTsgICAgICAgIAorICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICB9LCAwKTsKK30KKwordmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwor
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Bl
cmZvcm1hbmNlL3BlcmZvcm1hbmNlLXJlc291cmNlLXRpbWluZy1yZXNvdXJjZXRpbWluZ2J1ZmZl
cmZ1bGwtc2hyaW5raW5nLWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS1yZXNvdXJjZS10
aW1pbmctcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsLXNocmlua2luZy1idWZmZXItY3Jhc2gtZXhw
ZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcGVyZm9y
bWFuY2UvcGVyZm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLXJlc291cmNldGltaW5nYnVmZmVyZnVs
bC1zaHJpbmtpbmctYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDM0IEBACitUaGlzIHRlc3RzIGNsZWFyaW5nIHRoZSByZXNvdXJjZSB0aW1pbmcgYnVm
ZmVyIGR1cmluZyBhIHJlc291cmNldGltaW5nYnVmZmVyZnVsbCBldmVudC4KK1dlYktpdCBzaG91
bGQgbm90IGhpdCBhIHJlbGVhc2UgYXNzZXJ0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKCJyZXNvdXJjZSIpLmxl
bmd0aCBpcyAwCitwZXJmb3JtYW5jZS5zZXRSZXNvdXJjZVRpbWluZ0J1ZmZlclNpemUoMikKK2Zl
dGNoSW1hZ2VzKDMpLnRoZW4oY2hlY2tJbml0aWFsU3RhdGUpCitQQVNTIG9yaWdpbmFsUmVzb3Vy
Y2VzID0gcGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSgicmVzb3VyY2UiKTsgb3JpZ2luYWxS
ZXNvdXJjZXMubGVuZ3RoIGlzIDIKK1BBU1Mgb3JpZ2luYWxSZXNvdXJjZXNbMF0uaW5pdGlhdG9y
VHlwZSBpcyAiZmV0Y2giCitQQVNTIG5ldyBVUkwob3JpZ2luYWxSZXNvdXJjZXNbMF0ubmFtZSku
c2VhcmNoIGlzICI/cmVzb3VyY2U9MCIKK1BBU1Mgb3JpZ2luYWxSZXNvdXJjZXNbMV0uaW5pdGlh
dG9yVHlwZSBpcyAiZmV0Y2giCitQQVNTIG5ldyBVUkwob3JpZ2luYWxSZXNvdXJjZXNbMV0ubmFt
ZSkuc2VhcmNoIGlzICI/cmVzb3VyY2U9MSIKK1BBU1MgcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxs
RXZlbnRDb3VudCBpcyAwCisKK0luc2lkZSByZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwgMQorcGVy
Zm9ybWFuY2Uuc2V0UmVzb3VyY2VUaW1pbmdCdWZmZXJTaXplKDEpCitQQVNTIHJlc291cmNlc0Fm
dGVyU2hyaW5raW5nQnVmZmVyID0gcGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSgicmVzb3Vy
Y2UiKTsgcmVzb3VyY2VzQWZ0ZXJTaHJpbmtpbmdCdWZmZXIubGVuZ3RoIGlzIDIKK1BBU1MgcmVz
b3VyY2VzQWZ0ZXJTaHJpbmtpbmdCdWZmZXJbMF0gaXMgb3JpZ2luYWxSZXNvdXJjZXNbMF0KK1BB
U1MgcmVzb3VyY2VzQWZ0ZXJTaHJpbmtpbmdCdWZmZXJbMV0gaXMgb3JpZ2luYWxSZXNvdXJjZXNb
MV0KKworSW5zaWRlIHJlc291cmNldGltaW5nYnVmZmVyZnVsbCAyCitQQVNTIHBlcmZvcm1hbmNl
LmNsZWFyUmVzb3VyY2VUaW1pbmdzKCk7IHBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUoInJl
c291cmNlIikubGVuZ3RoIGlzIDAKKworQWZ0ZXIgcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsCitQ
QVNTIHJlc291cmNldGltaW5nYnVmZmVyZnVsbEV2ZW50Q291bnQgaXMgMgorUEFTUyByZXNvdXJj
ZXNBZnRlckNsZWFyaW5nID0gcGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSgicmVzb3VyY2Ui
KTsgcmVzb3VyY2VzQWZ0ZXJDbGVhcmluZy5sZW5ndGggaXMgMQorUEFTUyByZXNvdXJjZXNBZnRl
ckNsZWFyaW5nWzBdLmluaXRpYXRvclR5cGUgaXMgImZldGNoIgorUEFTUyBuZXcgVVJMKHJlc291
cmNlc0FmdGVyQ2xlYXJpbmdbMF0ubmFtZSkuc2VhcmNoIGlzICI/cmVzb3VyY2U9MiIKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3BlcmZvcm1hbmNlL3BlcmZvcm1hbmNlLXJlc291cmNlLXRpbWlu
Zy1yZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwtc2hyaW5raW5nLWJ1ZmZlci1jcmFzaC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFu
Y2UtcmVzb3VyY2UtdGltaW5nLXJlc291cmNldGltaW5nYnVmZmVyZnVsbC1zaHJpbmtpbmctYnVm
ZmVyLWNyYXNoLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9w
ZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS1yZXNvdXJjZS10aW1pbmctcmVzb3VyY2V0aW1pbmdidWZm
ZXJmdWxsLXNocmlua2luZy1idWZmZXItY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDY2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitkZXNjcmlw
dGlvbignVGhpcyB0ZXN0cyBjbGVhcmluZyB0aGUgcmVzb3VyY2UgdGltaW5nIGJ1ZmZlciBkdXJp
bmcgYSByZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwgZXZlbnQuPGJyPicKKyAgICArICdXZWJLaXQg
c2hvdWxkIG5vdCBoaXQgYSByZWxlYXNlIGFzc2VydGlvbi4nKTsKKworZnVuY3Rpb24gc3RhcnRU
ZXN0KCkKK3sKKyAgICBwZXJmb3JtYW5jZS5jbGVhclJlc291cmNlVGltaW5ncygpOworICAgIHNo
b3VsZEJlKCdwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKCJyZXNvdXJjZSIpLmxlbmd0aCcs
ICcwJyk7CisgICAgZXZhbEFuZExvZygncGVyZm9ybWFuY2Uuc2V0UmVzb3VyY2VUaW1pbmdCdWZm
ZXJTaXplKDIpJyk7CisgICAgZXZhbEFuZExvZygnZmV0Y2hJbWFnZXMoMykudGhlbihjaGVja0lu
aXRpYWxTdGF0ZSknKTsKK30KKworbGV0IHJlc291cmNlSW5kZXggPSAwOworYXN5bmMgZnVuY3Rp
b24gZmV0Y2hJbWFnZXMoY291bnQpCit7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsg
aSsrLCByZXNvdXJjZUluZGV4KyspCisgICAgICAgIGF3YWl0IGZldGNoKGAuLi8uLi9yZXNvdXJj
ZXMvc3F1YXJlMTAwLnBuZz9yZXNvdXJjZT0ke3Jlc291cmNlSW5kZXh9YCk7Cit9CisKK2FzeW5j
IGZ1bmN0aW9uIGNoZWNrSW5pdGlhbFN0YXRlKCkKK3sKKyAgICBzaG91bGRCZSgnb3JpZ2luYWxS
ZXNvdXJjZXMgPSBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKCJyZXNvdXJjZSIpOyBvcmln
aW5hbFJlc291cmNlcy5sZW5ndGgnLCAnMicpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
b3JpZ2luYWxSZXNvdXJjZXNbMF0uaW5pdGlhdG9yVHlwZScsICdmZXRjaCcpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygnbmV3IFVSTChvcmlnaW5hbFJlc291cmNlc1swXS5uYW1lKS5zZWFy
Y2gnLCAnP3Jlc291cmNlPTAnKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ29yaWdpbmFs
UmVzb3VyY2VzWzFdLmluaXRpYXRvclR5cGUnLCAnZmV0Y2gnKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ25ldyBVUkwob3JpZ2luYWxSZXNvdXJjZXNbMV0ubmFtZSkuc2VhcmNoJywgJz9y
ZXNvdXJjZT0xJyk7CisgICAgc2hvdWxkQmUoJ3Jlc291cmNldGltaW5nYnVmZmVyZnVsbEV2ZW50
Q291bnQnLCAnMCcpOworfQorCitsZXQgcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsRXZlbnRDb3Vu
dCA9IDA7CitwZXJmb3JtYW5jZS5vbnJlc291cmNldGltaW5nYnVmZmVyZnVsbCA9ICgpID0+IHsK
KyAgICByZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGxFdmVudENvdW50Kys7CisgICAgZGVidWcoJycp
OworICAgIGRlYnVnKGBJbnNpZGUgcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsICR7cmVzb3VyY2V0
aW1pbmdidWZmZXJmdWxsRXZlbnRDb3VudH1gKTsKKyAgICBpZiAocmVzb3VyY2V0aW1pbmdidWZm
ZXJmdWxsRXZlbnRDb3VudCA9PSAxKSB7CisgICAgICAgIGV2YWxBbmRMb2coJ3BlcmZvcm1hbmNl
LnNldFJlc291cmNlVGltaW5nQnVmZmVyU2l6ZSgxKScpOworICAgICAgICBzaG91bGRCZSgncmVz
b3VyY2VzQWZ0ZXJTaHJpbmtpbmdCdWZmZXIgPSBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBl
KCJyZXNvdXJjZSIpOyByZXNvdXJjZXNBZnRlclNocmlua2luZ0J1ZmZlci5sZW5ndGgnLCAnMicp
OworICAgICAgICBzaG91bGRCZSgncmVzb3VyY2VzQWZ0ZXJTaHJpbmtpbmdCdWZmZXJbMF0nLCAn
b3JpZ2luYWxSZXNvdXJjZXNbMF0nKTsKKyAgICAgICAgc2hvdWxkQmUoJ3Jlc291cmNlc0FmdGVy
U2hyaW5raW5nQnVmZmVyWzFdJywgJ29yaWdpbmFsUmVzb3VyY2VzWzFdJyk7CisgICAgfSBlbHNl
IGlmIChyZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGxFdmVudENvdW50ID09IDIpIHsKKyAgICAgICAg
c2hvdWxkQmUoJ3BlcmZvcm1hbmNlLmNsZWFyUmVzb3VyY2VUaW1pbmdzKCk7IHBlcmZvcm1hbmNl
LmdldEVudHJpZXNCeVR5cGUoInJlc291cmNlIikubGVuZ3RoJywgJzAnKTsKKyAgICAgICAgc2V0
VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgICAgICBkZWJ1
ZygnQWZ0ZXIgcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsJyk7CisgICAgICAgICAgICBzaG91bGRC
ZSgncmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsRXZlbnRDb3VudCcsICcyJyk7CisgICAgICAgICAg
ICBzaG91bGRCZSgncmVzb3VyY2VzQWZ0ZXJDbGVhcmluZyA9IHBlcmZvcm1hbmNlLmdldEVudHJp
ZXNCeVR5cGUoInJlc291cmNlIik7IHJlc291cmNlc0FmdGVyQ2xlYXJpbmcubGVuZ3RoJywgJzEn
KTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzb3VyY2VzQWZ0ZXJDbGVh
cmluZ1swXS5pbml0aWF0b3JUeXBlJywgJ2ZldGNoJyk7CisgICAgICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ25ldyBVUkwocmVzb3VyY2VzQWZ0ZXJDbGVhcmluZ1swXS5uYW1lKS5zZWFy
Y2gnLCAnP3Jlc291cmNlPTInKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9LCAwKTsKKyAgICB9Cit9CisKK3ZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKword2luZG93
Lm9ubG9hZCA9IHN0YXJ0VGVzdDsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332795</attachid>
            <date>2018-01-31 12:51:26 -0800</date>
            <delta_ts>2018-01-31 13:07:42 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-182319-20180131125125.patch</filename>
            <type>text/plain</type>
            <size>16480</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzg3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE4LTAxLTMwICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbGVhc2UgYXNzZXJ0aW9uIGlu
IFBlcmZvcm1hbmNlOjpyZXNvdXJjZVRpbWluZ0J1ZmZlckZ1bGxUaW1lckZpcmVkIHdoZW4gdGhl
IHJlc291cmNlIHRpbWluZyBidWZmZXIgaXMgc2hydW5rCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIzMTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM2OTA0MzEyPgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAg
IFRoZSBjcmFzaCB3YXMgY2F1c2VkIGJ5IGEgd3JvbmcgcmVsZWFzZSBhc3NlcnRpb24uIEhhbmRs
ZSBhdXRob3Igc2NyaXB0cyBzaHJpbmtpbmcgdGhlIHJlc291cmNlIHRpbWluZyBidWZmZXIKKyAg
ICAgICAgd2hpbGUgcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsIGV2ZW50IGlzIGJlaW5nIGRpc3Bh
dGNoZWQuCisKKyAgICAgICAgQWxzbyBmaXhlZCBhIGJ1ZyB0aGF0IGEgc3VwZXJmbG91cyByZXNv
dXJjZXRpbWluZ2J1ZmZlcmZ1bGwgZXZlbnQgd2lsbCBiZSBmaXJlZCB3aGVuIG5ldyByZXNvdXJj
ZSB0aW1pbmcgZW50cmllcworICAgICAgICBhcmUgcXVldWVkIHdoaWxlIHJlc291cmNldGltaW5n
YnVmZmVyZnVsbCBldmVudCBpcyBiZWluZyBkaXNwYXRjaGVkLgorCisgICAgICAgIFRlc3Q6IGh0
dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLXJlc291cmNl
dGltaW5nYnVmZmVyZnVsbC1xdWV1ZS1yZXNvdXJjZS1lbnRyeS5odG1sCisgICAgICAgICAgICAg
IGh0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLXJlc291
cmNldGltaW5nYnVmZmVyZnVsbC1zaHJpbmtpbmctYnVmZmVyLWNyYXNoLmh0bWwKKworICAgICAg
ICAqIHBhZ2UvUGVyZm9ybWFuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6
OnJlc291cmNlVGltaW5nQnVmZmVyRnVsbFRpbWVyRmlyZWQpOiAKKwogMjAxOC0wMS0zMCAgRnVq
aWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fp
cm9dIHN5bnRoZXRpY0JvbGRPZmZzZXQgbWFrZXMgYSBmb250IHdpdGggZW1iZWRkZWQgYml0bWFw
IGZvbnRzIHNob3duIGFzIGRvdWJsZSBzdHJpa2UgaW4gSGlEUEkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2UuY3BwCShyZXZpc2lvbiAyMjc4NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDMwICsyMTMsMzEgQEAg
dm9pZCBQZXJmb3JtYW5jZTo6cmVzb3VyY2VUaW1pbmdCdWZmZXJGdQogewogICAgIHdoaWxlICgh
bV9iYWNrdXBSZXNvdXJjZVRpbWluZ0J1ZmZlci5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byBi
YWNrdXBCdWZmZXIgPSBXVEZNb3ZlKG1fYmFja3VwUmVzb3VyY2VUaW1pbmdCdWZmZXIpOworICAg
ICAgICBBU1NFUlQobV9iYWNrdXBSZXNvdXJjZVRpbWluZ0J1ZmZlci5pc0VtcHR5KCkpOwogCiAg
ICAgICAgIG1fcmVzb3VyY2VUaW1pbmdCdWZmZXJGdWxsRmxhZyA9IHRydWU7CiAgICAgICAgIGRp
c3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVzb3VyY2V0aW1pbmdidWZm
ZXJmdWxsRXZlbnQsIHRydWUsIGZhbHNlKSk7CiAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9y
ZXNvdXJjZVRpbWluZ0J1ZmZlclNpemUgPj0gbV9yZXNvdXJjZVRpbWluZ0J1ZmZlci5zaXplKCkp
OwotICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdCdWZmZXJTaXplID0gbV9yZXNvdXJjZVRpbWlu
Z0J1ZmZlclNpemUgLSBtX3Jlc291cmNlVGltaW5nQnVmZmVyLnNpemUoKTsKLSAgICAgICAgYm9v
bCBidWZmZXJJc1N0aWxsRnVsbEFmdGVyRGlzcGF0Y2hpbmdFdmVudCA9ICFyZW1haW5pbmdCdWZm
ZXJTaXplOwotICAgICAgICBpZiAoYnVmZmVySXNTdGlsbEZ1bGxBZnRlckRpc3BhdGNoaW5nRXZl
bnQpIHsKKyAgICAgICAgaWYgKG1fcmVzb3VyY2VUaW1pbmdCdWZmZXJGdWxsRmxhZykgewogICAg
ICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGJhY2t1cEJ1ZmZlcikKICAgICAgICAgICAgICAg
ICBxdWV1ZUVudHJ5KCplbnRyeSk7CiAgICAgICAgICAgICAvLyBEaXNwYXRjaGluZyByZXNvdXJj
ZXRpbWluZ2J1ZmZlcmZ1bGwgZXZlbnQgbWF5IGhhdmUgaW5zZXJ0ZWQgbW9yZSBlbnRyaWVzLgog
ICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fYmFja3VwUmVzb3VyY2VUaW1pbmdCdWZm
ZXIpCiAgICAgICAgICAgICAgICAgcXVldWVFbnRyeSgqZW50cnkpOworICAgICAgICAgICAgbV9i
YWNrdXBSZXNvdXJjZVRpbWluZ0J1ZmZlci5jbGVhcigpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAotICAgICAgICB1bnNpZ25lZCBpID0gMDsKKyAgICAgICAgLy8gTW9yZSBlbnRy
aWVzIG1heSBoYXZlIGFkZGVkIHdoaWxlIGRpc3BhdGNoaW5nIHJlc291cmNldGltaW5nYnVmZmVy
ZnVsbCBldmVudC4KKyAgICAgICAgYmFja3VwQnVmZmVyLmFwcGVuZFZlY3RvcihtX2JhY2t1cFJl
c291cmNlVGltaW5nQnVmZmVyKTsKKyAgICAgICAgbV9iYWNrdXBSZXNvdXJjZVRpbWluZ0J1ZmZl
ci5jbGVhcigpOworCiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBiYWNrdXBCdWZmZXIpIHsK
LSAgICAgICAgICAgIGlmIChpIDwgcmVtYWluaW5nQnVmZmVyU2l6ZSkgeworICAgICAgICAgICAg
aWYgKCFpc1Jlc291cmNlVGltaW5nQnVmZmVyRnVsbCgpKSB7CiAgICAgICAgICAgICAgICAgbV9y
ZXNvdXJjZVRpbWluZ0J1ZmZlci5hcHBlbmQoZW50cnkuY29weVJlZigpKTsKICAgICAgICAgICAg
ICAgICBxdWV1ZUVudHJ5KCplbnRyeSk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
ICAgICBtX2JhY2t1cFJlc291cmNlVGltaW5nQnVmZmVyLmFwcGVuZChlbnRyeS5jb3B5UmVmKCkp
OwotICAgICAgICAgICAgaSsrOwogICAgICAgICB9CiAgICAgfQogICAgIG1fd2FpdGluZ0ZvckJh
Y2t1cEJ1ZmZlclRvQmVQcm9jZXNzZWQgPSBmYWxzZTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzg3
NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIy
IEBACisyMDE4LTAxLTMwICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAg
ICAgIFJlbGVhc2UgYXNzZXJ0aW9uIGluIFBlcmZvcm1hbmNlOjpyZXNvdXJjZVRpbWluZ0J1ZmZl
ckZ1bGxUaW1lckZpcmVkIHdoZW4gdGhlIHJlc291cmNlIHRpbWluZyBidWZmZXIgaXMgc2hydW5r
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIzMTkK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2OTA0MzEyPgorCisgICAgICAgIFJldmlld2VkIGJ5
IENocmlzIER1bWV6LgorCisgICAgICAgIEFkZGVkIHJlZ3Jlc3Npb24gdGVzdHMgZm9yIHNocmlu
a2luZyB0aGUgcmVzb3J1Y2UgdGltaW5nIGJ1ZmZlciBhbmQgcXVldWluZyBhIG5ldyByZXNvdXJj
ZSB0aW1pbmcgZW50cnkgd2hpbGUKKyAgICAgICAgcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsIGV2
ZW50IGlzIGJlaW5nIGRpc3BhdGNoZWQuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3BlcmZvcm1h
bmNlL3BlcmZvcm1hbmNlLXJlc291cmNlLXRpbWluZy1yZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwt
cXVldWUtcmVzb3VyY2UtZW50cnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3BlcmZvcm1hbmNlL3BlcmZvcm1hbmNlLXJlc291cmNlLXRpbWluZy1yZXNvdXJjZXRp
bWluZ2J1ZmZlcmZ1bGwtcXVldWUtcmVzb3VyY2UtZW50cnkuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS1yZXNvdXJjZS10aW1pbmctcmVz
b3VyY2V0aW1pbmdidWZmZXJmdWxsLXNocmlua2luZy1idWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3BlcmZvcm1hbmNlL3BlcmZvcm1hbmNlLXJl
c291cmNlLXRpbWluZy1yZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwtc2hyaW5raW5nLWJ1ZmZlci1j
cmFzaC5odG1sOiBBZGRlZC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVy
Zm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLXJlc291cmNldGltaW5nYnVmZmVyZnVsbC1zaHJpbmtp
bmctYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS1yZXNvdXJjZS10aW1pbmctcmVzb3VyY2V0aW1pbmdi
dWZmZXJmdWxsLXNocmlua2luZy1idWZmZXItY3Jhc2guaHRtbDogQWRkZWQuCisKIDIwMTgtMDEt
MzAgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGNh
bGxiYWNrcyB0byB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0aXRpb25Db29raWVz
Rm9ySG9zdCgpIGFuZCB0ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25p
bmcoKQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wZXJmb3JtYW5jZS9wZXJmb3JtYW5j
ZS1yZXNvdXJjZS10aW1pbmctcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsLXF1ZXVlLXJlc291cmNl
LWVudHJ5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3BlcmZvcm1hbmNlL3BlcmZvcm1hbmNlLXJlc291cmNlLXRpbWluZy1yZXNvdXJjZXRpbWluZ2J1
ZmZlcmZ1bGwtcXVldWUtcmVzb3VyY2UtZW50cnktZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVzb3Vy
Y2UtdGltaW5nLXJlc291cmNldGltaW5nYnVmZmVyZnVsbC1xdWV1ZS1yZXNvdXJjZS1lbnRyeS1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorVGhpcyB0ZXN0cyBj
bGVhcmluZyB0aGUgcmVzb3VyY2UgdGltaW5nIGJ1ZmZlciBkdXJpbmcgYSByZXNvdXJjZXRpbWlu
Z2J1ZmZlcmZ1bGwgZXZlbnQuCitXZWJLaXQgc2hvdWxkIG5vdCBoaXQgYSByZWxlYXNlIGFzc2Vy
dGlvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgcGVyZm9ybWFuY2Uu
Y2xlYXJSZXNvdXJjZVRpbWluZ3MoKTsgcGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSgicmVz
b3VyY2UiKS5sZW5ndGggaXMgMAorcGVyZm9ybWFuY2Uuc2V0UmVzb3VyY2VUaW1pbmdCdWZmZXJT
aXplKDIpOyBmZXRjaEltYWdlcygwLCAzKQorUEFTUyBvcmlnaW5hbFJlc291cmNlcyA9IHBlcmZv
cm1hbmNlLmdldEVudHJpZXNCeVR5cGUoInJlc291cmNlIik7IG9yaWdpbmFsUmVzb3VyY2VzLmxl
bmd0aCBpcyAyCitQQVNTIG9yaWdpbmFsUmVzb3VyY2VzWzBdLmluaXRpYXRvclR5cGUgaXMgImNz
cyIKK1BBU1MgbmV3IFVSTChvcmlnaW5hbFJlc291cmNlc1swXS5uYW1lKS5zZWFyY2ggaXMgIj9y
ZXNvdXJjZT0wIgorUEFTUyBvcmlnaW5hbFJlc291cmNlc1sxXS5pbml0aWF0b3JUeXBlIGlzICJj
c3MiCitQQVNTIG5ldyBVUkwob3JpZ2luYWxSZXNvdXJjZXNbMV0ubmFtZSkuc2VhcmNoIGlzICI/
cmVzb3VyY2U9MSIKK1BBU1MgcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsRXZlbnRDb3VudCBpcyAw
CisKK0luc2lkZSByZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwgMQorcGVyZm9ybWFuY2Uuc2V0UmVz
b3VyY2VUaW1pbmdCdWZmZXJTaXplKDEwKTsgZmV0Y2hJbWFnZXMoMywgNCkKK1BBU1MgcmVzb3Vy
Y2VzQWZ0ZXJTaHJpbmtpbmdCdWZmZXIgPSBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKCJy
ZXNvdXJjZSIpOyByZXNvdXJjZXNBZnRlclNocmlua2luZ0J1ZmZlci5sZW5ndGggaXMgMgorUEFT
UyByZXNvdXJjZXNBZnRlclNocmlua2luZ0J1ZmZlclswXSBpcyBvcmlnaW5hbFJlc291cmNlc1sw
XQorUEFTUyByZXNvdXJjZXNBZnRlclNocmlua2luZ0J1ZmZlclsxXSBpcyBvcmlnaW5hbFJlc291
cmNlc1sxXQorCitBZnRlciByZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwKK1BBU1MgZmluYWxSZXNv
dXJjZXMgPSBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKCJyZXNvdXJjZSIpOyBmaW5hbFJl
c291cmNlcy5sZW5ndGggaXMgNAorUEFTUyByZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGxFdmVudENv
dW50IGlzIDEKK1BBU1MgZmluYWxSZXNvdXJjZXNbMF0gaXMgb3JpZ2luYWxSZXNvdXJjZXNbMF0K
K1BBU1MgZmluYWxSZXNvdXJjZXNbMV0gaXMgb3JpZ2luYWxSZXNvdXJjZXNbMV0KK1BBU1MgZmlu
YWxSZXNvdXJjZXNbMl0uaW5pdGlhdG9yVHlwZSBpcyAiY3NzIgorUEFTUyBuZXcgVVJMKGZpbmFs
UmVzb3VyY2VzWzJdLm5hbWUpLnNlYXJjaCBpcyAiP3Jlc291cmNlPTIiCitQQVNTIGZpbmFsUmVz
b3VyY2VzWzNdLmluaXRpYXRvclR5cGUgaXMgImNzcyIKK1BBU1MgbmV3IFVSTChmaW5hbFJlc291
cmNlc1szXS5uYW1lKS5zZWFyY2ggaXMgIj9yZXNvdXJjZT0zIgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS1yZXNvdXJjZS10aW1pbmctcmVzb3VyY2V0
aW1pbmdidWZmZXJmdWxsLXF1ZXVlLXJlc291cmNlLWVudHJ5Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS1yZXNvdXJjZS10
aW1pbmctcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsLXF1ZXVlLXJlc291cmNlLWVudHJ5Lmh0bWwJ
KG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wZXJmb3JtYW5jZS9wZXJm
b3JtYW5jZS1yZXNvdXJjZS10aW1pbmctcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsLXF1ZXVlLXJl
c291cmNlLWVudHJ5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHN0eWxlPgorI2NvbnRhaW5lciBkaXYgeyB3aWR0
aDogMTBweDsgaGVpZ2h0OiAxMHB4OyB9Cis8L3N0eWxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPGRpdiBpZD0iY29udGFpbmVyIj48L2Rpdj4K
KzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIGNsZWFyaW5nIHRoZSByZXNvdXJj
ZSB0aW1pbmcgYnVmZmVyIGR1cmluZyBhIHJlc291cmNldGltaW5nYnVmZmVyZnVsbCBldmVudC48
YnI+JworICAgICsgJ1dlYktpdCBzaG91bGQgbm90IGhpdCBhIHJlbGVhc2UgYXNzZXJ0aW9uLicp
OworCit3aW5kb3cub25sb2FkID0gKCkgPT4geworICAgIGNvbnN0IGlmcmFtZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b250YWluZXInKS5hcHBlbmRDaGlsZChpZnJhbWUpOworICAgIGNvbnN0IGRvYyA9IGlmcmFtZS5j
b250ZW50RG9jdW1lbnQ7CisKKyAgICBjb25zdCBwcm9taXNlcyA9IFtdOworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgNTsgaSsrKSB7CisgICAgICAgIGNvbnN0IGltZyA9IGRvYy5jcmVhdGVFbGVt
ZW50KCdpbWcnKTsKKyAgICAgICAgaW1nLnNyYyA9IGAuLi8uLi9yZXNvdXJjZXMvc3F1YXJlMTAw
LnBuZz9yZXNvdXJjZT0ke2l9YDsKKyAgICAgICAgcHJvbWlzZXNbaV0gPSBuZXcgUHJvbWlzZSgo
cmVzb2x2ZSkgPT4geworICAgICAgICAgICAgaW1nLm9ubG9hZCA9IHJlc29sdmU7CisgICAgICAg
IH0pOworICAgICAgICBkb2MuYm9keS5hcHBlbmRDaGlsZChpbWcpOworICAgIH0KKyAgICBQcm9t
aXNlLmFsbChwcm9taXNlcykudGhlbihydW5UZXN0KTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgp
Cit7CisgICAgc2hvdWxkQmUoJ3BlcmZvcm1hbmNlLmNsZWFyUmVzb3VyY2VUaW1pbmdzKCk7IHBl
cmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUoInJlc291cmNlIikubGVuZ3RoJywgJzAnKTsKKyAg
ICBldmFsQW5kTG9nKCdwZXJmb3JtYW5jZS5zZXRSZXNvdXJjZVRpbWluZ0J1ZmZlclNpemUoMik7
IGZldGNoSW1hZ2VzKDAsIDMpJyk7CisgICAgc2hvdWxkQmUoJ29yaWdpbmFsUmVzb3VyY2VzID0g
cGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSgicmVzb3VyY2UiKTsgb3JpZ2luYWxSZXNvdXJj
ZXMubGVuZ3RoJywgJzInKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ29yaWdpbmFsUmVz
b3VyY2VzWzBdLmluaXRpYXRvclR5cGUnLCAnY3NzJyk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCduZXcgVVJMKG9yaWdpbmFsUmVzb3VyY2VzWzBdLm5hbWUpLnNlYXJjaCcsICc/cmVzb3Vy
Y2U9MCcpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnb3JpZ2luYWxSZXNvdXJjZXNbMV0u
aW5pdGlhdG9yVHlwZScsICdjc3MnKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ25ldyBV
Ukwob3JpZ2luYWxSZXNvdXJjZXNbMV0ubmFtZSkuc2VhcmNoJywgJz9yZXNvdXJjZT0xJyk7Cisg
ICAgc2hvdWxkQmUoJ3Jlc291cmNldGltaW5nYnVmZmVyZnVsbEV2ZW50Q291bnQnLCAnMCcpOwor
fQorCitsZXQgcmVzb3VyY2VJbmRleCA9IDA7CitmdW5jdGlvbiBmZXRjaEltYWdlcyhzdGFydGlu
Z0luZGV4LCBwYXN0RW5kaW5nSW5kZXgpCit7CisgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpOworICAgIGZvciAobGV0IGkgPSBzdGFydGlu
Z0luZGV4OyBpIDwgcGFzdEVuZGluZ0luZGV4OyBpKyspIHsKKyAgICAgICAgY29uc3QgZGl2ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGRpdi5zdHlsZS5iYWNrZ3Jv
dW5kSW1hZ2UgPSBgdXJsKCcuLi8uLi9yZXNvdXJjZXMvc3F1YXJlMTAwLnBuZz9yZXNvdXJjZT0k
e2l9JylgOworICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoZGl2KTsKKyAgICB9CisgICAg
Y29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworfQorCitsZXQgcmVzb3VyY2V0aW1p
bmdidWZmZXJmdWxsRXZlbnRDb3VudCA9IDA7CitwZXJmb3JtYW5jZS5vbnJlc291cmNldGltaW5n
YnVmZmVyZnVsbCA9ICgpID0+IHsKKyAgICByZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGxFdmVudENv
dW50Kys7CisgICAgZGVidWcoJycpOworICAgIGRlYnVnKGBJbnNpZGUgcmVzb3VyY2V0aW1pbmdi
dWZmZXJmdWxsICR7cmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsRXZlbnRDb3VudH1gKTsKKyAgICBl
dmFsQW5kTG9nKCdwZXJmb3JtYW5jZS5zZXRSZXNvdXJjZVRpbWluZ0J1ZmZlclNpemUoMTApOyBm
ZXRjaEltYWdlcygzLCA0KScpOworICAgIHNob3VsZEJlKCdyZXNvdXJjZXNBZnRlclNocmlua2lu
Z0J1ZmZlciA9IHBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUoInJlc291cmNlIik7IHJlc291
cmNlc0FmdGVyU2hyaW5raW5nQnVmZmVyLmxlbmd0aCcsICcyJyk7CisgICAgc2hvdWxkQmUoJ3Jl
c291cmNlc0FmdGVyU2hyaW5raW5nQnVmZmVyWzBdJywgJ29yaWdpbmFsUmVzb3VyY2VzWzBdJyk7
CisgICAgc2hvdWxkQmUoJ3Jlc291cmNlc0FmdGVyU2hyaW5raW5nQnVmZmVyWzFdJywgJ29yaWdp
bmFsUmVzb3VyY2VzWzFdJyk7CisgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgIGRlYnVn
KCcnKTsKKyAgICAgICAgZGVidWcoJ0FmdGVyIHJlc291cmNldGltaW5nYnVmZmVyZnVsbCcpOwor
ICAgICAgICBzaG91bGRCZSgnZmluYWxSZXNvdXJjZXMgPSBwZXJmb3JtYW5jZS5nZXRFbnRyaWVz
QnlUeXBlKCJyZXNvdXJjZSIpOyBmaW5hbFJlc291cmNlcy5sZW5ndGgnLCAnNCcpOworICAgICAg
ICBzaG91bGRCZSgncmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsRXZlbnRDb3VudCcsICcxJyk7Cisg
ICAgICAgIHNob3VsZEJlKCdmaW5hbFJlc291cmNlc1swXScsICdvcmlnaW5hbFJlc291cmNlc1sw
XScpOworICAgICAgICBzaG91bGRCZSgnZmluYWxSZXNvdXJjZXNbMV0nLCAnb3JpZ2luYWxSZXNv
dXJjZXNbMV0nKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdmaW5hbFJlc291cmNl
c1syXS5pbml0aWF0b3JUeXBlJywgJ2NzcycpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ25ldyBVUkwoZmluYWxSZXNvdXJjZXNbMl0ubmFtZSkuc2VhcmNoJywgJz9yZXNvdXJjZT0y
Jyk7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZmluYWxSZXNvdXJjZXNbM10uaW5p
dGlhdG9yVHlwZScsICdjc3MnKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCduZXcg
VVJMKGZpbmFsUmVzb3VyY2VzWzNdLm5hbWUpLnNlYXJjaCcsICc/cmVzb3VyY2U9MycpOyAgICAg
ICAgCisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0sIDApOworfQorCit2YXIganNUZXN0
SXNBc3luYyA9IHRydWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLXJl
c291cmNldGltaW5nYnVmZmVyZnVsbC1zaHJpbmtpbmctYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BlcmZvcm1hbmNlL3BlcmZv
cm1hbmNlLXJlc291cmNlLXRpbWluZy1yZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwtc2hyaW5raW5n
LWJ1ZmZlci1jcmFzaC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS1yZXNvdXJjZS10aW1pbmctcmVzb3Vy
Y2V0aW1pbmdidWZmZXJmdWxsLXNocmlua2luZy1idWZmZXItY3Jhc2gtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKK1RoaXMgdGVzdHMgY2xlYXJpbmcgdGhlIHJl
c291cmNlIHRpbWluZyBidWZmZXIgZHVyaW5nIGEgcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsIGV2
ZW50LgorV2ViS2l0IHNob3VsZCBub3QgaGl0IGEgcmVsZWFzZSBhc3NlcnRpb24uCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5
cGUoInJlc291cmNlIikubGVuZ3RoIGlzIDAKK3BlcmZvcm1hbmNlLnNldFJlc291cmNlVGltaW5n
QnVmZmVyU2l6ZSgyKQorZmV0Y2hJbWFnZXMoMykudGhlbihjaGVja0luaXRpYWxTdGF0ZSkKK1BB
U1Mgb3JpZ2luYWxSZXNvdXJjZXMgPSBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKCJyZXNv
dXJjZSIpOyBvcmlnaW5hbFJlc291cmNlcy5sZW5ndGggaXMgMgorUEFTUyBvcmlnaW5hbFJlc291
cmNlc1swXS5pbml0aWF0b3JUeXBlIGlzICJmZXRjaCIKK1BBU1MgbmV3IFVSTChvcmlnaW5hbFJl
c291cmNlc1swXS5uYW1lKS5zZWFyY2ggaXMgIj9yZXNvdXJjZT0wIgorUEFTUyBvcmlnaW5hbFJl
c291cmNlc1sxXS5pbml0aWF0b3JUeXBlIGlzICJmZXRjaCIKK1BBU1MgbmV3IFVSTChvcmlnaW5h
bFJlc291cmNlc1sxXS5uYW1lKS5zZWFyY2ggaXMgIj9yZXNvdXJjZT0xIgorUEFTUyByZXNvdXJj
ZXRpbWluZ2J1ZmZlcmZ1bGxFdmVudENvdW50IGlzIDAKKworSW5zaWRlIHJlc291cmNldGltaW5n
YnVmZmVyZnVsbCAxCitwZXJmb3JtYW5jZS5zZXRSZXNvdXJjZVRpbWluZ0J1ZmZlclNpemUoMSkK
K1BBU1MgcmVzb3VyY2VzQWZ0ZXJTaHJpbmtpbmdCdWZmZXIgPSBwZXJmb3JtYW5jZS5nZXRFbnRy
aWVzQnlUeXBlKCJyZXNvdXJjZSIpOyByZXNvdXJjZXNBZnRlclNocmlua2luZ0J1ZmZlci5sZW5n
dGggaXMgMgorUEFTUyByZXNvdXJjZXNBZnRlclNocmlua2luZ0J1ZmZlclswXSBpcyBvcmlnaW5h
bFJlc291cmNlc1swXQorUEFTUyByZXNvdXJjZXNBZnRlclNocmlua2luZ0J1ZmZlclsxXSBpcyBv
cmlnaW5hbFJlc291cmNlc1sxXQorCitJbnNpZGUgcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsIDIK
K1BBU1MgcGVyZm9ybWFuY2UuY2xlYXJSZXNvdXJjZVRpbWluZ3MoKTsgcGVyZm9ybWFuY2UuZ2V0
RW50cmllc0J5VHlwZSgicmVzb3VyY2UiKS5sZW5ndGggaXMgMAorCitBZnRlciByZXNvdXJjZXRp
bWluZ2J1ZmZlcmZ1bGwKK1BBU1MgcmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsRXZlbnRDb3VudCBp
cyAyCitQQVNTIHJlc291cmNlc0FmdGVyQ2xlYXJpbmcgPSBwZXJmb3JtYW5jZS5nZXRFbnRyaWVz
QnlUeXBlKCJyZXNvdXJjZSIpOyByZXNvdXJjZXNBZnRlckNsZWFyaW5nLmxlbmd0aCBpcyAxCitQ
QVNTIHJlc291cmNlc0FmdGVyQ2xlYXJpbmdbMF0uaW5pdGlhdG9yVHlwZSBpcyAiZmV0Y2giCitQ
QVNTIG5ldyBVUkwocmVzb3VyY2VzQWZ0ZXJDbGVhcmluZ1swXS5uYW1lKS5zZWFyY2ggaXMgIj9y
ZXNvdXJjZT0yIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFu
Y2UtcmVzb3VyY2UtdGltaW5nLXJlc291cmNldGltaW5nYnVmZmVyZnVsbC1zaHJpbmtpbmctYnVm
ZmVyLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wZXJm
b3JtYW5jZS9wZXJmb3JtYW5jZS1yZXNvdXJjZS10aW1pbmctcmVzb3VyY2V0aW1pbmdidWZmZXJm
dWxsLXNocmlua2luZy1idWZmZXItY3Jhc2guaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3BlcmZvcm1hbmNlL3BlcmZvcm1hbmNlLXJlc291cmNlLXRpbWluZy1y
ZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwtc2hyaW5raW5nLWJ1ZmZlci1jcmFzaC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIGNsZWFyaW5nIHRoZSByZXNvdXJjZSB0
aW1pbmcgYnVmZmVyIGR1cmluZyBhIHJlc291cmNldGltaW5nYnVmZmVyZnVsbCBldmVudC48YnI+
JworICAgICsgJ1dlYktpdCBzaG91bGQgbm90IGhpdCBhIHJlbGVhc2UgYXNzZXJ0aW9uLicpOwor
CitmdW5jdGlvbiBzdGFydFRlc3QoKQoreworICAgIHBlcmZvcm1hbmNlLmNsZWFyUmVzb3VyY2VU
aW1pbmdzKCk7CisgICAgc2hvdWxkQmUoJ3BlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUoInJl
c291cmNlIikubGVuZ3RoJywgJzAnKTsKKyAgICBldmFsQW5kTG9nKCdwZXJmb3JtYW5jZS5zZXRS
ZXNvdXJjZVRpbWluZ0J1ZmZlclNpemUoMiknKTsKKyAgICBldmFsQW5kTG9nKCdmZXRjaEltYWdl
cygzKS50aGVuKGNoZWNrSW5pdGlhbFN0YXRlKScpOworfQorCitsZXQgcmVzb3VyY2VJbmRleCA9
IDA7Cithc3luYyBmdW5jdGlvbiBmZXRjaEltYWdlcyhjb3VudCkKK3sKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IGNvdW50OyBpKyssIHJlc291cmNlSW5kZXgrKykKKyAgICAgICAgYXdhaXQgZmV0
Y2goYC4uLy4uL3Jlc291cmNlcy9zcXVhcmUxMDAucG5nP3Jlc291cmNlPSR7cmVzb3VyY2VJbmRl
eH1gKTsKK30KKworYXN5bmMgZnVuY3Rpb24gY2hlY2tJbml0aWFsU3RhdGUoKQoreworICAgIHNo
b3VsZEJlKCdvcmlnaW5hbFJlc291cmNlcyA9IHBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUo
InJlc291cmNlIik7IG9yaWdpbmFsUmVzb3VyY2VzLmxlbmd0aCcsICcyJyk7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdvcmlnaW5hbFJlc291cmNlc1swXS5pbml0aWF0b3JUeXBlJywgJ2Zl
dGNoJyk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCduZXcgVVJMKG9yaWdpbmFsUmVzb3Vy
Y2VzWzBdLm5hbWUpLnNlYXJjaCcsICc/cmVzb3VyY2U9MCcpOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygnb3JpZ2luYWxSZXNvdXJjZXNbMV0uaW5pdGlhdG9yVHlwZScsICdmZXRjaCcpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbmV3IFVSTChvcmlnaW5hbFJlc291cmNlc1sxXS5u
YW1lKS5zZWFyY2gnLCAnP3Jlc291cmNlPTEnKTsKKyAgICBzaG91bGRCZSgncmVzb3VyY2V0aW1p
bmdidWZmZXJmdWxsRXZlbnRDb3VudCcsICcwJyk7Cit9CisKK2xldCByZXNvdXJjZXRpbWluZ2J1
ZmZlcmZ1bGxFdmVudENvdW50ID0gMDsKK3BlcmZvcm1hbmNlLm9ucmVzb3VyY2V0aW1pbmdidWZm
ZXJmdWxsID0gKCkgPT4geworICAgIHJlc291cmNldGltaW5nYnVmZmVyZnVsbEV2ZW50Q291bnQr
KzsKKyAgICBkZWJ1ZygnJyk7CisgICAgZGVidWcoYEluc2lkZSByZXNvdXJjZXRpbWluZ2J1ZmZl
cmZ1bGwgJHtyZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGxFdmVudENvdW50fWApOworICAgIGlmIChy
ZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGxFdmVudENvdW50ID09IDEpIHsKKyAgICAgICAgZXZhbEFu
ZExvZygncGVyZm9ybWFuY2Uuc2V0UmVzb3VyY2VUaW1pbmdCdWZmZXJTaXplKDEpJyk7CisgICAg
ICAgIHNob3VsZEJlKCdyZXNvdXJjZXNBZnRlclNocmlua2luZ0J1ZmZlciA9IHBlcmZvcm1hbmNl
LmdldEVudHJpZXNCeVR5cGUoInJlc291cmNlIik7IHJlc291cmNlc0FmdGVyU2hyaW5raW5nQnVm
ZmVyLmxlbmd0aCcsICcyJyk7CisgICAgICAgIHNob3VsZEJlKCdyZXNvdXJjZXNBZnRlclNocmlu
a2luZ0J1ZmZlclswXScsICdvcmlnaW5hbFJlc291cmNlc1swXScpOworICAgICAgICBzaG91bGRC
ZSgncmVzb3VyY2VzQWZ0ZXJTaHJpbmtpbmdCdWZmZXJbMV0nLCAnb3JpZ2luYWxSZXNvdXJjZXNb
MV0nKTsKKyAgICB9IGVsc2UgaWYgKHJlc291cmNldGltaW5nYnVmZmVyZnVsbEV2ZW50Q291bnQg
PT0gMikgeworICAgICAgICBzaG91bGRCZSgncGVyZm9ybWFuY2UuY2xlYXJSZXNvdXJjZVRpbWlu
Z3MoKTsgcGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSgicmVzb3VyY2UiKS5sZW5ndGgnLCAn
MCcpOworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgIGRlYnVnKCcnKTsK
KyAgICAgICAgICAgIGRlYnVnKCdBZnRlciByZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwnKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCdyZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGxFdmVudENvdW50Jywg
JzInKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCdyZXNvdXJjZXNBZnRlckNsZWFyaW5nID0gcGVy
Zm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSgicmVzb3VyY2UiKTsgcmVzb3VyY2VzQWZ0ZXJDbGVh
cmluZy5sZW5ndGgnLCAnMScpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdy
ZXNvdXJjZXNBZnRlckNsZWFyaW5nWzBdLmluaXRpYXRvclR5cGUnLCAnZmV0Y2gnKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbmV3IFVSTChyZXNvdXJjZXNBZnRlckNsZWFy
aW5nWzBdLm5hbWUpLnNlYXJjaCcsICc/cmVzb3VyY2U9MicpOworICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgIH0sIDApOworICAgIH0KK30KKwordmFyIGpzVGVzdElzQXN5bmMg
PSB0cnVlOworCit3aW5kb3cub25sb2FkID0gc3RhcnRUZXN0OworCis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>