<?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>69015</bug_id>
          
          <creation_ts>2011-09-28 12:14:42 -0700</creation_ts>
          <short_desc>Web Inspector: Add support for search in script content.</short_desc>
          <delta_ts>2011-10-05 07:29:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>69265</dependson>
    
    <dependson>69326</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>feherzs</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>ossy</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>podivilov</cc>
    
    <cc>rik</cc>
    
    <cc>rniwa</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>474897</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-09-28 12:14:42 -0700</bug_when>
    <thetext>Add support for backend search in script content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475392</commentid>
    <comment_count>1</comment_count>
      <attachid>109156</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-09-29 06:15:55 -0700</bug_when>
    <thetext>Created attachment 109156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475394</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-29 06:19:38 -0700</bug_when>
    <thetext>Attachment 109156 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/http...&quot; exit_code: 1

Source/WebCore/inspector/InspectorDebuggerAgent.cpp:324:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorDebuggerAgent.h:84:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475462</commentid>
    <comment_count>3</comment_count>
      <attachid>109156</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-09-29 09:37:42 -0700</bug_when>
    <thetext>Comment on attachment 109156
Patch

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

&gt; LayoutTests/http/tests/inspector/search/search-in-concatenated-script.html:10
&gt; +    InspectorTest._runAfterResourcesAreCreated([&quot;search-concatenated.html&quot;], step2);

You should wait for resource loading to finish.

&gt; LayoutTests/http/tests/inspector/search/search-in-script.html:10
&gt; +    InspectorTest._runAfterResourcesAreCreated([&quot;search.js&quot;], step2);

ditto

&gt; Source/WebCore/inspector/InspectorDebuggerAgent.cpp:326
&gt; +    String content = m_scripts.get(scriptId).source;

You should look it up first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476101</commentid>
    <comment_count>4</comment_count>
      <attachid>109301</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-09-30 08:29:19 -0700</bug_when>
    <thetext>Created attachment 109301
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476103</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-30 08:31:56 -0700</bug_when>
    <thetext>Attachment 109301 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/http...&quot; exit_code: 1

Source/WebCore/inspector/InspectorDebuggerAgent.cpp:324:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorDebuggerAgent.h:84:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476692</commentid>
    <comment_count>6</comment_count>
      <attachid>109301</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-02 10:27:16 -0700</bug_when>
    <thetext>Comment on attachment 109301
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Web Inspector: Add support for backend search in script content.

The title is a bit misleading since you have front-end pieces in this change as well.

&gt; Source/WebCore/inspector/InspectorDebuggerAgent.cpp:330
&gt; +    *results = ContentSearchUtils::searchInTextByLines(query, source);

Searching in missing script should be an error.

&gt; Source/WebCore/inspector/InspectorDebuggerAgent.cpp:351
&gt; +    *scriptSource = source;

ditto

&gt; Source/WebCore/inspector/front-end/Script.js:62
&gt; +            callback(searchMatches);

Please log potential error using console.error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476925</commentid>
    <comment_count>7</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-10-03 05:56:09 -0700</bug_when>
    <thetext>Committed r96491: &lt;http://trac.webkit.org/changeset/96491&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476944</commentid>
    <comment_count>8</comment_count>
    <who name="Fehér Zsolt">feherzs</who>
    <bug_when>2011-10-03 07:00:08 -0700</bug_when>
    <thetext>Two test failed after r96491
The tests:
http/tests/inspector/search/search-in-concatenated-script.html
Diff:
--- /ramdisk/qt-linux-32-release-qt470/build/layout-test-results/http/tests/inspector/search/search-in-concatenated-script-expected.txt	2011-10-03 06:25:47.786125385 -0700
+++ /ramdisk/qt-linux-32-release-qt470/build/layout-test-results/http/tests/inspector/search/search-in-concatenated-script-actual.txt	2011-10-03 06:25:47.786125385 -0700
@@ -2,14 +2,5 @@
 
 Bug 69015  
 http://127.0.0.1:8000/inspector/search/resources/search-concatenated.html
-Search matches: 
-lineNumber: 3, line: &apos;function searchTestUniqueString()&apos;
-lineNumber: 6, line: &apos;    // searchTestUniqueString two occurences on the same line searchTestUniqueString&apos;
-lineNumber: 12, line: &apos;    searchTestUniqueString();&apos;
-lineNumber: 13, line: &apos;    // SEARCHTestUniqueString();&apos;
-lineNumber: 18, line: &apos;function searchTestUniqueString2()&apos;
-lineNumber: 21, line: &apos;    /* searchTestUniqueString two occurences on the same line searchTestUniqueString */ } &apos;
-lineNumber: 21, line: &apos; function doSomething2() { searchTestUniqueString();&apos;
-lineNumber: 22, line: &apos;    // SEARCHTestUniqueString();&apos;
-
+error: Exception during test execution: TypeError: &apos;undefined&apos; is not an object

http/tests/inspector/search/search-in-script.html
Diff:
--- /ramdisk/qt-linux-32-release-qt470/build/layout-test-results/http/tests/inspector/search/search-in-script-expected.txt	2011-10-03 06:25:48.538039183 -0700
+++ /ramdisk/qt-linux-32-release-qt470/build/layout-test-results/http/tests/inspector/search/search-in-script-actual.txt	2011-10-03 06:25:48.538039183 -0700
@@ -1,11 +1,5 @@
 Tests script search in inspector debugger agent.
 
 Bug 69015  
-http://127.0.0.1:8000/inspector/search/resources/search.js
-Search matches: 
-lineNumber: 0, line: &apos;function searchTestUniqueString()&apos;
-lineNumber: 3, line: &apos;    // searchTestUniqueString two occurences on the same line searchTestUniqueString&apos;
-lineNumber: 9, line: &apos;    searchTestUniqueString();&apos;
-lineNumber: 10, line: &apos;    // SEARCHTestUniqueString();&apos;
-
+error: Exception during test execution: TypeError: &apos;undefined&apos; is not an object</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477031</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-10-03 09:36:34 -0700</bug_when>
    <thetext>New bug report filed for Qt fails: https://bugs.webkit.org/show_bug.cgi?id=69265</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477459</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-03 23:45:08 -0700</bug_when>
    <thetext>This may have broken script-formatter.html on Snow Leopard:
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r96571%20(33608)/inspector/debugger/script-formatter-pretty-diff.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477460</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-03 23:46:27 -0700</bug_when>
    <thetext>Two tests added by this patch are failing on Snow Leopard:
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r96571%20(33608)/http/tests/inspector/search/search-in-script-pretty-diff.html
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r96571%20(33608)/http/tests/inspector/search/search-in-concatenated-script-pretty-diff.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477534</commentid>
    <comment_count>12</comment_count>
      <attachid>109605</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-10-04 04:26:39 -0700</bug_when>
    <thetext>Created attachment 109605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477536</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-04 04:28:57 -0700</bug_when>
    <thetext>Attachment 109605 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/http...&quot; exit_code: 1

Source/WebCore/inspector/InspectorDebuggerAgent.cpp:324:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorDebuggerAgent.h:84:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477538</commentid>
    <comment_count>14</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-10-04 04:30:32 -0700</bug_when>
    <thetext>Reopen the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477577</commentid>
    <comment_count>15</comment_count>
      <attachid>109605</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-04 06:55:20 -0700</bug_when>
    <thetext>Comment on attachment 109605
Patch

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

&gt; Source/WebCore/inspector/front-end/ContentProviders.js:72
&gt; +        if (!this._sortedScriptsArray) {

You should not cache this result.

&gt; Source/WebCore/inspector/front-end/Script.js:52
&gt; +            this._source = source || &quot;&quot;;

You should be explicit about the error and do this._source = error ? &quot;&quot; : source;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477587</commentid>
    <comment_count>16</comment_count>
      <attachid>109620</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-10-04 07:25:29 -0700</bug_when>
    <thetext>Created attachment 109620
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477590</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-04 07:28:19 -0700</bug_when>
    <thetext>Attachment 109620 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/http...&quot; exit_code: 1

Source/WebCore/inspector/InspectorDebuggerAgent.cpp:324:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorDebuggerAgent.h:84:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477620</commentid>
    <comment_count>18</comment_count>
      <attachid>109620</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-10-04 08:45:02 -0700</bug_when>
    <thetext>Comment on attachment 109620
Patch

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

&gt; Source/WebCore/inspector/front-end/ContentProviders.js:71
&gt; +    {

Please cache the result.

&gt; Source/WebCore/inspector/front-end/ContentProviders.js:84
&gt; +            if (lineNumber &gt; scripts[i].lineOffset || (lineNumber === scripts[i].lineOffset &amp;&amp; columnNumber &gt; scripts[i].columnOffset))

I think this function could and should be 2 times shorter, just get rid of lineNumber and columnNumber variables and rewrite this check.

&gt; Source/WebCore/inspector/front-end/ContentProviders.js:119
&gt; +            if (!scriptsLeft) {

Prefer early return.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477658</commentid>
    <comment_count>19</comment_count>
      <attachid>109633</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-10-04 09:55:45 -0700</bug_when>
    <thetext>Created attachment 109633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477660</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-04 09:59:30 -0700</bug_when>
    <thetext>Attachment 109633 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/http...&quot; exit_code: 1

Source/WebCore/inspector/InspectorDebuggerAgent.cpp:324:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorDebuggerAgent.h:84:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477689</commentid>
    <comment_count>21</comment_count>
      <attachid>109633</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-04 10:21:04 -0700</bug_when>
    <thetext>Comment on attachment 109633
Patch

Attachment 109633 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9940401

New failing tests:
inspector/debugger/debugger-activation-crash2.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477717</commentid>
    <comment_count>22</comment_count>
      <attachid>109633</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-10-04 10:41:48 -0700</bug_when>
    <thetext>Comment on attachment 109633
Patch

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

Looks good.

&gt; Source/WebCore/inspector/front-end/ContentProviders.js:72
&gt; +        if (!this._sortedScriptsArray) {

Prefer early return.

&gt; Source/WebCore/inspector/front-end/ContentProviders.js:81
&gt; +            if (!scripts.length)

RawSourceCode always has at least one script, you don&apos;t need this check.

&gt; Source/WebCore/inspector/front-end/ContentProviders.js:88
&gt; +                if (previousScript.endLine &gt; scripts[i].lineOffset || (scripts[i - 1].endLine === scripts[i].lineOffset &amp;&amp; columnNumber &gt; scripts[i].columnOffset))

Consider negating this check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477792</commentid>
    <comment_count>23</comment_count>
      <attachid>109659</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-10-04 11:32:17 -0700</bug_when>
    <thetext>Created attachment 109659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477798</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-04 11:35:48 -0700</bug_when>
    <thetext>Attachment 109659 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/http...&quot; exit_code: 1

Source/WebCore/inspector/InspectorDebuggerAgent.cpp:324:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorDebuggerAgent.h:84:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477806</commentid>
    <comment_count>25</comment_count>
      <attachid>109659</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-04 11:41:31 -0700</bug_when>
    <thetext>Comment on attachment 109659
Patch

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

&gt;&gt; Source/WebCore/inspector/InspectorDebuggerAgent.cpp:324
&gt;&gt; +void InspectorDebuggerAgent::searchInContent(ErrorString* error, const String&amp; scriptId, const String&amp; query, RefPtr&lt;InspectorArray&gt;* results)
&gt; 
&gt; The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]

We don&apos;t use pointers to get values out of a function. Please use a reference instead. r- because of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477844</commentid>
    <comment_count>26</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-10-04 12:26:03 -0700</bug_when>
    <thetext>&gt; We don&apos;t use pointers to get values out of a function. Please use a reference instead. r- because of this.

That&apos;s the way communication between frontend and backend is implemented in Inspector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477861</commentid>
    <comment_count>27</comment_count>
      <attachid>109659</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-04 13:09:00 -0700</bug_when>
    <thetext>Comment on attachment 109659
Patch

(In reply to comment #26)
&gt; &gt; We don&apos;t use pointers to get values out of a function. Please use a reference instead. r- because of this.
&gt; 
&gt; That&apos;s the way communication between frontend and backend is implemented in Inspector.

That seems wrong. Why can&apos;t we use refenrece?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477876</commentid>
    <comment_count>28</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-10-04 13:27:23 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (From update of attachment 109659 [details])
&gt; (In reply to comment #26)
&gt; &gt; &gt; We don&apos;t use pointers to get values out of a function. Please use a reference instead. r- because of this.
&gt; &gt; 
&gt; &gt; That&apos;s the way communication between frontend and backend is implemented in Inspector.
&gt; 
&gt; That seems wrong. Why can&apos;t we use refenrece?

Inspector*Agents are called by InspectorBackendDispatcher which is generated automatically.
This generator was written long ago and could be fixed but this is definitely out of scope of this change.
I filed https://bugs.webkit.org/show_bug.cgi?id=69366 for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477877</commentid>
    <comment_count>29</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-04 13:29:08 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; Inspector*Agents are called by InspectorBackendDispatcher which is generated automatically.
&gt; This generator was written long ago and could be fixed but this is definitely out of scope of this change.
&gt; I filed https://bugs.webkit.org/show_bug.cgi?id=69366 for that.

Great. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478247</commentid>
    <comment_count>30</comment_count>
      <attachid>109659</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-10-05 02:43:05 -0700</bug_when>
    <thetext>Comment on attachment 109659
Patch

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

Looks good.

&gt; Source/WebCore/inspector/front-end/ContentProviders.js:80
&gt; +        var scriptOpenTagLength = &quot;&lt;script&gt;&quot;.length;

Please add _scriptOpenTag static field to ConcatenatedScriptsContentProvider class and replace scriptOpenTagLength with scriptOpenTag.length.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478338</commentid>
    <comment_count>31</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-10-05 07:29:51 -0700</bug_when>
    <thetext>Committed r96703: &lt;http://trac.webkit.org/changeset/96703&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109156</attachid>
            <date>2011-09-29 06:15:55 -0700</date>
            <delta_ts>2011-09-30 08:29:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69015-20110929171553.patch</filename>
            <type>text/plain</type>
            <size>14858</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYzMjMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmZTNjMzNlN2QwYjAyOTUyZTM1MjRh
YjE1MGQ5YjhlNjA4YTUzM2MwLi5iMjNhNTM2MGY4N2I3ZWRjYTM3ODg2OTFmNTM5Yjg0NjhmM2Y4
NzM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDUgKzEsMTggQEAKIDIwMTEtMDktMjkgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBv
cnQgZm9yIGJhY2tlbmQgc2VhcmNoIGluIHNjcmlwdCBjb250ZW50LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkwMTUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Nl
YXJjaC9yZXNvdXJjZXMvc2VhcmNoLWNvbmNhdGVuYXRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLWNvbmNhdGVuYXRlZC1zY3Jp
cHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9z
ZWFyY2gvc2VhcmNoLWluLWNvbmNhdGVuYXRlZC1zY3JpcHQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3NlYXJjaC1pbi1zY3JpcHQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNo
LWluLXNjcmlwdC5odG1sOiBBZGRlZC4KKworMjAxMS0wOS0yOSAgVnNldm9sb2QgVmxhc292ICA8
dnNldmlrQGNocm9taXVtLm9yZz4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBNYWtlIHNlYXJj
aC1pbi1yZXNvdXJjZSB0ZXN0IHNpbXBsZXIuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02OTAyNQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvcmVzb3VyY2VzL3NlYXJjaC1jb25jYXRlbmF0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9yZXNvdXJjZXMvc2Vh
cmNoLWNvbmNhdGVuYXRlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyOGZmNjRjMmJiZjI2OWIwNmUyMGFm
MzAxMDQ4MzJmNjNkODE0N2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9zZWFyY2gvcmVzb3VyY2VzL3NlYXJjaC1jb25jYXRlbmF0ZWQuaHRtbApA
QCAtMCwwICsxLDMwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHNlYXJj
aFRlc3RVbmlxdWVTdHJpbmcoKQoreworICAgIHZhciB2YXJpYWJsZSA9IDA7CisgICAgLy8gc2Vh
cmNoVGVzdFVuaXF1ZVN0cmluZyB0d28gb2NjdXJlbmNlcyBvbiB0aGUgc2FtZSBsaW5lIHNlYXJj
aFRlc3RVbmlxdWVTdHJpbmcKKyAgICB2YXIgdmFyaWFibGUyID0gMDsKK30KKzwvc2NyaXB0Pjxz
Y3JpcHQ+CitmdW5jdGlvbiBkb1NvbWV0aGluZygpCit7CisgICAgc2VhcmNoVGVzdFVuaXF1ZVN0
cmluZygpOworICAgIC8vIFNFQVJDSFRlc3RVbmlxdWVTdHJpbmcoKTsKK30KKzwvc2NyaXB0Pgor
PGxpbmsgaHJlZj0ic2VhcmNoLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+
Cis8c2NyaXB0PgorZnVuY3Rpb24gc2VhcmNoVGVzdFVuaXF1ZVN0cmluZzIoKQoreworICAgIHZh
ciB2YXJpYWJsZSA9IDA7CisgICAgLyogc2VhcmNoVGVzdFVuaXF1ZVN0cmluZyB0d28gb2NjdXJl
bmNlcyBvbiB0aGUgc2FtZSBsaW5lIHNlYXJjaFRlc3RVbmlxdWVTdHJpbmcgKi8gfSA8L3Njcmlw
dD48c2NyaXB0PiBmdW5jdGlvbiBkb1NvbWV0aGluZzIoKSB7IHNlYXJjaFRlc3RVbmlxdWVTdHJp
bmcoKTsKKyAgICAvLyBTRUFSQ0hUZXN0VW5pcXVlU3RyaW5nKCk7Cit9Cis8L3NjcmlwdD4KKzwv
c2NyaXB0PgorPGJvZHk+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tY29uY2F0ZW5hdGVkLXNj
cmlwdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFy
Y2gvc2VhcmNoLWluLWNvbmNhdGVuYXRlZC1zY3JpcHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI1MTZjYTcxY2M4ZWQ1YjIzNGQzNGExYzNiMTc3YjdmNjJjY2QwY2MKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLWNv
bmNhdGVuYXRlZC1zY3JpcHQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1Rlc3RzIGNv
bmNhdGVuYXRlZCBzY3JpcHQgc2VhcmNoIGluIGluc3BlY3RvciBkZWJ1Z2dlciBhZ2VudC4KKwor
QnVnIDY5MDE1ICAKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3Ivc2VhcmNoL3Jlc291
cmNlcy9zZWFyY2gtY29uY2F0ZW5hdGVkLmh0bWwKK1NlYXJjaCBtYXRjaGVzOiAKK2xpbmVOdW1i
ZXI6IDMsIGxpbmU6ICdmdW5jdGlvbiBzZWFyY2hUZXN0VW5pcXVlU3RyaW5nKCknCitsaW5lTnVt
YmVyOiA2LCBsaW5lOiAnICAgIC8vIHNlYXJjaFRlc3RVbmlxdWVTdHJpbmcgdHdvIG9jY3VyZW5j
ZXMgb24gdGhlIHNhbWUgbGluZSBzZWFyY2hUZXN0VW5pcXVlU3RyaW5nJworbGluZU51bWJlcjog
MTIsIGxpbmU6ICcgICAgc2VhcmNoVGVzdFVuaXF1ZVN0cmluZygpOycKK2xpbmVOdW1iZXI6IDEz
LCBsaW5lOiAnICAgIC8vIFNFQVJDSFRlc3RVbmlxdWVTdHJpbmcoKTsnCitsaW5lTnVtYmVyOiAx
OCwgbGluZTogJ2Z1bmN0aW9uIHNlYXJjaFRlc3RVbmlxdWVTdHJpbmcyKCknCitsaW5lTnVtYmVy
OiAyMSwgbGluZTogJyAgICAvKiBzZWFyY2hUZXN0VW5pcXVlU3RyaW5nIHR3byBvY2N1cmVuY2Vz
IG9uIHRoZSBzYW1lIGxpbmUgc2VhcmNoVGVzdFVuaXF1ZVN0cmluZyAqLyB9ICcKK2xpbmVOdW1i
ZXI6IDIxLCBsaW5lOiAnIGZ1bmN0aW9uIGRvU29tZXRoaW5nMigpIHsgc2VhcmNoVGVzdFVuaXF1
ZVN0cmluZygpOycKK2xpbmVOdW1iZXI6IDIyLCBsaW5lOiAnICAgIC8vIFNFQVJDSFRlc3RVbmlx
dWVTdHJpbmcoKTsnCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3Ivc2VhcmNoL3NlYXJjaC1pbi1jb25jYXRlbmF0ZWQtc2NyaXB0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLWNvbmNhdGVuYXRlZC1z
Y3JpcHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzMyMDQ4NGZmOWY0YTNhZGJlNzc5ZjFiOWRmN2QwNGEw
MDJhZTczCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3Ivc2VhcmNoL3NlYXJjaC1pbi1jb25jYXRlbmF0ZWQtc2NyaXB0Lmh0bWwKQEAgLTAsMCArMSwz
NSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2VhcmNoLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIC8vIFRoaXMgZmlsZSBzaG91bGQgbm90IG1hdGNo
IHNlYXJjaCBxdWVyeS4KKyAgICB2YXIgdGV4dCA9ICJzZWFyY2hUZXN0IiArICJVbmlxdWVTdHJp
bmciOworICAgIEluc3BlY3RvclRlc3QuX3J1bkFmdGVyUmVzb3VyY2VzQXJlQ3JlYXRlZChbInNl
YXJjaC1jb25jYXRlbmF0ZWQuaHRtbCJdLCBzdGVwMik7CisKKyAgICBmdW5jdGlvbiBzdGVwMigp
CisgICAgeworICAgICAgICB2YXIgdXJsID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0
b3Ivc2VhcmNoL3Jlc291cmNlcy9zZWFyY2gtY29uY2F0ZW5hdGVkLmh0bWwiOworICAgICAgICB2
YXIgc2NyaXB0cyA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdHNGb3JVUkwodXJs
KTsKKyAgICAgICAgdmFyIGNvbnRlbnRQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29uY2F0
ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92aWRlcihzY3JpcHRzKTsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQodXJsKTsKKyAgICAgICAgY29udGVudFByb3ZpZGVyLnNlYXJjaEluQ29u
dGVudCh0ZXh0LCBzdGVwMyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDMoc2VhcmNoTWF0
Y2hlcykKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlYXJjaE1hdGNoZXMoc2Vh
cmNoTWF0Y2hlcyk7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAg
fQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRlc3RzIGNvbmNhdGVuYXRlZCBz
Y3JpcHQgc2VhcmNoIGluIGluc3BlY3RvciBkZWJ1Z2dlciBhZ2VudC48L3A+Cis8YSBocmVmPSJo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkwMTUiPkJ1ZyA2OTAxNTwv
YT4KKworPGlmcmFtZSBzcmM9InJlc291cmNlcy9zZWFyY2gtY29uY2F0ZW5hdGVkLmh0bWwiIG9u
bG9hZD0icnVuVGVzdCgpIj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tc2NyaXB0LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4t
c2NyaXB0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjc2MmVkNjQxMWI3ZjQ1OTFkZGU5NDk0
MDkwMzRjY2FiNDZmYTgzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3Ivc2VhcmNoL3NlYXJjaC1pbi1zY3JpcHQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTEgQEAKK1Rlc3RzIHNjcmlwdCBzZWFyY2ggaW4gaW5zcGVjdG9yIGRlYnVnZ2VyIGFnZW50
LgorCitCdWcgNjkwMTUgIAoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9zZWFyY2gv
cmVzb3VyY2VzL3NlYXJjaC5qcworU2VhcmNoIG1hdGNoZXM6IAorbGluZU51bWJlcjogMCwgbGlu
ZTogJ2Z1bmN0aW9uIHNlYXJjaFRlc3RVbmlxdWVTdHJpbmcoKScKK2xpbmVOdW1iZXI6IDMsIGxp
bmU6ICcgICAgLy8gc2VhcmNoVGVzdFVuaXF1ZVN0cmluZyB0d28gb2NjdXJlbmNlcyBvbiB0aGUg
c2FtZSBsaW5lIHNlYXJjaFRlc3RVbmlxdWVTdHJpbmcnCitsaW5lTnVtYmVyOiA5LCBsaW5lOiAn
ICAgIHNlYXJjaFRlc3RVbmlxdWVTdHJpbmcoKTsnCitsaW5lTnVtYmVyOiAxMCwgbGluZTogJyAg
ICAvLyBTRUFSQ0hUZXN0VW5pcXVlU3RyaW5nKCk7JworCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tc2NyaXB0Lmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLXNjcmlwdC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjVlYWUyMDhhMjIzNGRkOGNhYzk4YWE2NGY1NjU4MzU2MTQ2ZmZlMzkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFy
Y2gvc2VhcmNoLWluLXNjcmlwdC5odG1sCkBAIC0wLDAgKzEsMzQgQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InNlYXJjaC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICAvLyBUaGlzIGZpbGUgc2hvdWxkIG5vdCBtYXRjaCBzZWFyY2ggcXVlcnkuCisgICAg
dmFyIHRleHQgPSAic2VhcmNoVGVzdCIgKyAiVW5pcXVlU3RyaW5nIjsKKyAgICBJbnNwZWN0b3JU
ZXN0Ll9ydW5BZnRlclJlc291cmNlc0FyZUNyZWF0ZWQoWyJzZWFyY2guanMiXSwgc3RlcDIpOwor
CisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgICAgdmFyIHNjcmlwdHMgPSBXZWJJ
bnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRzRm9yVVJMKCJodHRwOi8vMTI3LjAuMC4xOjgw
MDAvaW5zcGVjdG9yL3NlYXJjaC9yZXNvdXJjZXMvc2VhcmNoLmpzIik7CisgICAgICAgIHZhciBz
Y3JpcHQgPSBzY3JpcHRzWzBdOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChzY3Jp
cHQuc291cmNlVVJMKTsKKyAgICAgICAgc2NyaXB0LnNlYXJjaEluQ29udGVudCh0ZXh0LCBzdGVw
Myk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDMoc2VhcmNoTWF0Y2hlcykKKyAgICB7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlYXJjaE1hdGNoZXMoc2VhcmNoTWF0Y2hlcyk7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRlc3RzIHNjcmlwdCBzZWFyY2ggaW4gaW5zcGVjdG9yIGRl
YnVnZ2VyIGFnZW50LjwvcD4KKzxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02OTAxNSI+QnVnIDY5MDE1PC9hPgorCis8aWZyYW1lIHNyYz0icmVzb3VyY2Vz
L3NlYXJjaC5odG1sIiBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggYjc2N2ZkY2M0MjIxYTZkYjM0MjVlZjZjMmU0YjU5ZjBhMzI1NDA1OC4uYWYxMmM2
NjQ3ZGEzNjMyNTFmZTkzOTFmMmVhNDMzZGZjNDczMWU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsx
LDI4IEBACiAyMDExLTA5LTI5ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3Jn
PgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBzdXBwb3J0IGZvciBiYWNrZW5kIHNlYXJj
aCBpbiBzY3JpcHQgY29udGVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY5MDE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4t
Y29uY2F0ZW5hdGVkLXNjcmlwdC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9zZWFyY2gvc2VhcmNoLWluLXNjcmlwdC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2VhcmNo
SW5Db250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29udGVudFByb3ZpZGVycy5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50UHJvdmlkZXIucHJvdG90eXBlLnJlcXVl
c3RDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50UHJvdmlkZXIu
cHJvdG90eXBlLnNlYXJjaEluQ29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uY2F0
ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92aWRlci5wcm90b3R5cGUuc2VhcmNoSW5Db250ZW50Lm1h
eWJlQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbmNhdGVuYXRlZFNjcmlwdHND
b250ZW50UHJvdmlkZXIucHJvdG90eXBlLnNlYXJjaEluQ29udGVudC5zZWFyY2hDYWxsYmFjayk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uY2F0ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92aWRl
ci5wcm90b3R5cGUuc2VhcmNoSW5Db250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBlLnNl
YXJjaEluQ29udGVudCk6CisKKzIwMTEtMDktMjkgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0Bj
aHJvbWl1bS5vcmc+CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogTWFrZSBzZWFyY2gtaW4tcmVz
b3VyY2UgdGVzdCBzaW1wbGVyLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjkwMjUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29u
CmluZGV4IDA5ZDJkYjZhY2U1ZGFjMDEwZmI4OWRkYmVkNzIyMDhhMTBlOWM2ZDguLjg0ZmY3ZmU2
OWRjNGM2NDQ3OGYwMTUzOWFlYWYyNTQ2N2UyM2E3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmpzb24KQEAgLTE3MTQsNiArMTcxNCwxNyBAQAogICAgICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJSZXN1bWVzIEphdmFTY3JpcHQgZXhlY3V0aW9uLiIKICAgICAgICAg
ICAgIH0sCiAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAic2VhcmNoSW5D
b250ZW50IiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJzY3JpcHRJZCIsICIkcmVmIjogIlNjcmlwdElkIiwgImRlc2NyaXB0
aW9uIjogIklkIG9mIHRoZSBzY3JpcHQgdG8gc2VhcmNoIGluLiIgfSwKKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJxdWVyeSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6
ICJTdHJpbmcgdG8gc2VhcmNoIGZvci4iICB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXN1
bHQiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiUGFnZS5TZWFyY2hNYXRj
aCIgfSwgImRlc2NyaXB0aW9uIjogIkxpc3Qgb2Ygc2VhcmNoIG1hdGNoZXMuIiB9CisgICAgICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2VhcmNoZXMgZm9y
IGdpdmVuIHN0cmluZyBpbiBzY3JpcHQgY29udGVudC4iCisgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogInNldFNjcmlwdFNvdXJjZSIsCiAgICAg
ICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAic2NyaXB0SWQiLCAiJHJlZiI6ICJTY3JpcHRJZCIsICJkZXNjcmlwdGlvbiI6ICJJZCBvZiB0
aGUgc2NyaXB0IHRvIGVkaXQuIiB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDBiMjEyMGRiYTgwYWU3ZjI5MmUzMjhm
ZWM1NzQzYjMzMTllODEyOWQuLjUxNjA0OTZjNGY0OTBiZWY1N2Y1Y2ExMWFmMmE2MjJkN2JmNTgz
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmgiCiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElO
U1BFQ1RPUikKKyNpbmNsdWRlICJDb250ZW50U2VhcmNoVXRpbHMuaCIKICNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCkBAIC0zMjAsNiArMzIxLDEyIEBAIHN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gc2NyaXB0VG9JbnNwZWN0b3JPYmplY3QoU2NyaXB0T2Jq
ZWN0IHNjcmlwdE9iCiAgICAgcmV0dXJuIHZhbHVlLT5hc09iamVjdCgpOwogfQogCit2b2lkIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJjaEluQ29udGVudChFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4qIHJlc3VsdHMpCit7CisgICAgU3RyaW5nIGNvbnRlbnQgPSBtX3NjcmlwdHMuZ2V0KHNj
cmlwdElkKS5zb3VyY2U7CisgICAgKnJlc3VsdHMgPSBDb250ZW50U2VhcmNoVXRpbHM6OnNlYXJj
aEluVGV4dEJ5TGluZXMocXVlcnksIGNvbnRlbnQpOworfQorCiB2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OnNldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgY29uc3QgYm9vbCogY29uc3Qg
cHJldmlldywgUmVmUHRyPEluc3BlY3RvckFycmF5PiogbmV3Q2FsbEZyYW1lcywgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4qIHJlc3VsdCkKIHsKICAgICBib29sIHByZXZpZXdPbmx5ID0gcHJldmll
dyAmJiAqcHJldmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5oCmluZGV4IDE4NWFhYjgyZWVkNTBmMmQ3NGFjYTU1YTQ0ZWRkZTZiOWYx
M2E1NjMuLjczYjI3NTRlMjhhMzE3ZDllNmE5ZDNhNGRlMzc0NzY3ZDEwZjhjMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAt
ODEsNiArODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVCcmVha3BvaW50KEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWQpOwogICAgIHZvaWQgY29udGludWVUb0xv
Y2F0aW9uKEVycm9yU3RyaW5nKiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGxvY2F0aW9u
KTsKIAorICAgIHZvaWQgc2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBzY3JpcHRJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgUmVmUHRyPEluc3BlY3RvckFycmF5Piop
OwogICAgIHZvaWQgc2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBz
Y3JpcHRJZCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBjb25zdCBib29sKiBjb25zdCBwcmV2
aWV3LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBuZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiogcmVzdWx0KTsKICAgICB2b2lkIGdldFNjcmlwdFNvdXJjZShFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIFN0cmluZyogc2NyaXB0U291cmNlKTsKICAgICB2
b2lkIHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJiBicmVha1JlYXNv
biwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZW50UHJvdmlkZXJzLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZW50UHJvdmlkZXJzLmpzCmluZGV4IDRl
YTIxMGEzNzVkNjNiZWRkNGUxZjY0YzE1ZDc3YWMwNDk1YzIxZGYuLjg5MDhlODRlMGU2YmQ2OWQ1
MDkzZGE2Zjg0YWM0MThiOTExYTMzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ29udGVudFByb3ZpZGVycy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0NvbnRlbnRQcm92aWRlcnMuanMKQEAgLTQ2LDYgKzQ2LDExIEBA
IFdlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50UHJvdmlkZXIucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgY2FsbGJhY2sodGhpcy5fbWltZVR5cGUsIHNvdXJjZSk7CiAgICAgICAgIH0KICAgICAg
ICAgdGhpcy5fc2NyaXB0LnJlcXVlc3RTb3VyY2UoZGlkUmVxdWVzdFNvdXJjZS5iaW5kKHRoaXMp
KTsKKyAgICB9LAorCisgICAgc2VhcmNoSW5Db250ZW50OiBmdW5jdGlvbihxdWVyeSwgY2FsbGJh
Y2spCisgICAgeworICAgICAgICB0aGlzLl9zY3JpcHQuc2VhcmNoSW5Db250ZW50KHF1ZXJ5LCBj
YWxsYmFjayk7CiAgICAgfQogfQogCkBAIC03Nyw2ICs4MiwzOSBAQCBXZWJJbnNwZWN0b3IuQ29u
Y2F0ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92aWRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
IHNjcmlwdHNbaV0ucmVxdWVzdFNvdXJjZShkaWRSZXF1ZXN0U291cmNlLmJpbmQodGhpcykpOwog
ICAgfSwKIAorICAgc2VhcmNoSW5Db250ZW50OiBmdW5jdGlvbihxdWVyeSwgY2FsbGJhY2spCisg
ICB7CisgICAgICAgdmFyIHJlc3VsdHMgPSB7fTsKKyAgICAgICB2YXIgc2NyaXB0c0xlZnQgPSB0
aGlzLl9zY3JpcHRzLmxlbmd0aDsKKworICAgICAgIGZ1bmN0aW9uIG1heWJlQ2FsbGJhY2soKQor
ICAgICAgIHsKKyAgICAgICAgICAgaWYgKCFzY3JpcHRzTGVmdCkgeworICAgICAgICAgICAgICAg
dmFyIHJlc3VsdCA9IFtdOworICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlz
Ll9zY3JpcHRzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3Vs
dC5jb25jYXQocmVzdWx0c1t0aGlzLl9zY3JpcHRzW2ldLnNjcmlwdElkXSk7CisgICAgICAgICAg
ICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAgICAgICB9CisgICAgICAgfQorCisgICAgICAg
ZnVuY3Rpb24gc2VhcmNoQ2FsbGJhY2soc2NyaXB0LCBzZWFyY2hNYXRjaGVzKQorICAgICAgIHsK
KyAgICAgICAgICAgcmVzdWx0c1tzY3JpcHQuc2NyaXB0SWRdID0gW107CisgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgc2VhcmNoTWF0Y2hlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAg
ICAgICAgdmFyIHNlYXJjaE1hdGNoID0ge307CisgICAgICAgICAgICAgICBzZWFyY2hNYXRjaC5s
aW5lTnVtYmVyID0gc2VhcmNoTWF0Y2hlc1tpXS5saW5lTnVtYmVyICsgc2NyaXB0LmxpbmVPZmZz
ZXQ7CisgICAgICAgICAgICAgICBzZWFyY2hNYXRjaC5saW5lQ29udGVudCA9IHNlYXJjaE1hdGNo
ZXNbaV0ubGluZUNvbnRlbnQ7CisgICAgICAgICAgICAgICByZXN1bHRzW3NjcmlwdC5zY3JpcHRJ
ZF0ucHVzaChzZWFyY2hNYXRjaCk7CisgICAgICAgICAgIH0KKyAgICAgICAgICAgc2NyaXB0c0xl
ZnQtLTsKKyAgICAgICAgICAgbWF5YmVDYWxsYmFjay5jYWxsKHRoaXMpOworICAgICAgIH0KKwor
ICAgICAgIG1heWJlQ2FsbGJhY2soKTsKKyAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMu
X3NjcmlwdHMubGVuZ3RoOyArK2kpCisgICAgICAgICAgIHRoaXMuX3NjcmlwdHNbaV0uc2VhcmNo
SW5Db250ZW50KHF1ZXJ5LCBzZWFyY2hDYWxsYmFjay5iaW5kKHRoaXMsIHRoaXMuX3NjcmlwdHNb
aV0pKTsKKyAgIH0sCisKICAgIF9jb25jYXRlbmF0ZVNjcmlwdHNDb250ZW50OiBmdW5jdGlvbihz
Y3JpcHRzLCBzb3VyY2VzKQogICAgewogICAgICAgIHZhciBjb250ZW50ID0gIiI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzCmluZGV4IGIzNmUwN2E0ZTI5
YzQ3NDVlNjJjYTRjNmIwMDYxNjNkYzE4MGM2OGYuLjU0ZDQ2ZjVmYTIzOTUyZGFkZGU4OGEzYzNh
NmE5NDc2N2I5NmE0MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2NyaXB0LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U2NyaXB0LmpzCkBAIC01NSw2ICs1NSwxNiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgRGVidWdnZXJBZ2VudC5nZXRTY3JpcHRTb3VyY2UodGhpcy5zY3JpcHRJ
ZCwgZGlkR2V0U2NyaXB0U291cmNlLmJpbmQodGhpcykpOwogICAgIH0sCiAKKyAgICBzZWFyY2hJ
bkNvbnRlbnQ6IGZ1bmN0aW9uKHF1ZXJ5LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGZ1bmN0
aW9uIGlubmVyQ2FsbGJhY2soZXJyb3IsIHNlYXJjaE1hdGNoZXMpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGNhbGxiYWNrKHNlYXJjaE1hdGNoZXMpOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBEZWJ1Z2dlckFnZW50LnNlYXJjaEluQ29udGVudCh0aGlzLnNjcmlwdElkLCBxdWVyeSwg
aW5uZXJDYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICB9LAorICAgIAogICAgIGVkaXRTb3VyY2U6
IGZ1bmN0aW9uKG5ld1NvdXJjZSwgY2FsbGJhY2spCiAgICAgewogICAgICAgICBmdW5jdGlvbiBk
aWRFZGl0U2NyaXB0U291cmNlKGVycm9yLCBjYWxsRnJhbWVzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109301</attachid>
            <date>2011-09-30 08:29:19 -0700</date>
            <delta_ts>2011-10-04 04:26:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69015-20110930192917.patch</filename>
            <type>text/plain</type>
            <size>21961</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY0MDIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3MGUzMTQyMDFjYjQ2N2Q3NTExYzgy
OTA0ZTdhMjU3MmM0YzFkMTI4Li5mNTk4NjRiMTIzZTEzYjE4YWJjOWM3YjgxNzQ2ZjQwZjcwZGVk
YWE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDktMzAgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBv
cnQgZm9yIGJhY2tlbmQgc2VhcmNoIGluIHNjcmlwdCBjb250ZW50LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkwMTUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jl
c291cmNlLXRyZWUvcmVzb3VyY2UtdHJlZS10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9S
ZXNvdXJjZVRyZWVUZXN0KToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJj
ZXMtdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfUmVzb3VyY2VUZXN0Lkluc3BlY3RvclRl
c3QucnVuQWZ0ZXJSZXNvdXJjZXNBcmVGaW5pc2hlZCk6CisgICAgICAgIChpbml0aWFsaXplX1Jl
c291cmNlVGVzdC5JbnNwZWN0b3JUZXN0Ll9ydW5BZnRlclJlc291cmNlc0FyZUZpbmlzaGVkKToK
KyAgICAgICAgKGluaXRpYWxpemVfUmVzb3VyY2VUZXN0Lkluc3BlY3RvclRlc3QuX3J1bkFmdGVy
UmVzb3VyY2VzQXJlRmluaXNoZWQubWF5YmVDYWxsYmFjayk6CisgICAgICAgIChpbml0aWFsaXpl
X1Jlc291cmNlVGVzdC5JbnNwZWN0b3JUZXN0Ll9ydW5BZnRlclJlc291cmNlc0FyZUZpbmlzaGVk
LmFkZFNuaWZmZXIpOgorICAgICAgICAoaW5pdGlhbGl6ZV9SZXNvdXJjZVRlc3QuSW5zcGVjdG9y
VGVzdC5fcnVuQWZ0ZXJSZXNvdXJjZXNBcmVGaW5pc2hlZC5yZXNvdXJjZUFkZGVkVG9GcmFtZSk6
CisgICAgICAgIChpbml0aWFsaXplX1Jlc291cmNlVGVzdC5JbnNwZWN0b3JUZXN0Ll9ydW5BZnRl
clJlc291cmNlc0FyZUZpbmlzaGVkLnZpc2l0KToKKyAgICAgICAgKGluaXRpYWxpemVfUmVzb3Vy
Y2VUZXN0KToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvcmVzb3VyY2Vz
L3NlYXJjaC1jb25jYXRlbmF0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9p
bnNwZWN0b3Ivc2VhcmNoL3NlYXJjaC1pbi1jb25jYXRlbmF0ZWQtc2NyaXB0LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3NlYXJjaC1p
bi1jb25jYXRlbmF0ZWQtc2NyaXB0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tcmVzb3VyY2UuaHRtbDoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLXNjcmlwdC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tc2Ny
aXB0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9z
ZWFyY2gtdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfU2VhcmNoVGVzdCk6CisKIDIwMTEt
MDktMzAgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXBsYWNlIHRl
eHRJbnB1dENvbnRyb2xsZXIuZG9Db21tYW5kIHdpdGggZXZlbnRTZW5kZXIua2V5RG93biBpbiBw
YXNzd29yZC1lY2hvIHRlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9yZXNvdXJjZS10cmVlL3Jlc291cmNlLXRyZWUtdGVzdC5qcyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXRyZWUvcmVzb3VyY2UtdHJlZS10ZXN0Lmpz
CmluZGV4IGJhZDc1YmQ1ZmZmNzhhMmU3ZmU3NmE0YWJlMDg0OGJlZTIyYWE2ZTIuLjgwYTIxODAx
Nzk2MTNmMTYyNDQyMGE5YTQ5MWY4YmMxZWJlYjI4OTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXRyZWUvcmVzb3VyY2UtdHJlZS10ZXN0Lmpz
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXRyZWUvcmVz
b3VyY2UtdHJlZS10ZXN0LmpzCkBAIC04NiwzMiArODYsNCBAQCBJbnNwZWN0b3JUZXN0LmR1bXBS
ZXNvdXJjZVRyZWVFdmVyeXRoaW5nID0gZnVuY3Rpb24oKQogICAgIEluc3BlY3RvclRlc3QuZHVt
cFJlc291cmNlc1RyZWUoKTsKIH0KIAotSW5zcGVjdG9yVGVzdC5ydW5BZnRlclJlc291cmNlc0Fy
ZUZpbmlzaGVkID0gZnVuY3Rpb24ocmVzb3VyY2VVUkxzLCBjYWxsYmFjaykKLXsKLSAgICBJbnNw
ZWN0b3JUZXN0Ll9ydW5BZnRlclJlc291cmNlc0FyZUZpbmlzaGVkKHJlc291cmNlVVJMcy5rZXlT
ZXQoKSwgY2FsbGJhY2spOwotfQotCi1JbnNwZWN0b3JUZXN0Ll9ydW5BZnRlclJlc291cmNlc0Fy
ZUZpbmlzaGVkID0gZnVuY3Rpb24ocmVzb3VyY2VVUkxzLCBjYWxsYmFjaykKLXsKLSAgICBmdW5j
dGlvbiB2aXNpdChyZXNvdXJjZSkKLSAgICB7Ci0gICAgICAgIGlmICghcmVzb3VyY2UuZmluaXNo
ZWQpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICBmb3IgKHZhciB1cmwgaW4g
cmVzb3VyY2VVUkxzKSB7Ci0gICAgICAgICAgICBpZiAocmVzb3VyY2UudXJsLmluZGV4T2YodXJs
KSAhPT0gLTEpCi0gICAgICAgICAgICAgICAgZGVsZXRlIHJlc291cmNlVVJMc1t1cmxdOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhyZXNvdXJjZVVSTHMpLmxlbmd0aCkg
ewotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgdmFyIHN1Y2NlZWRlZCA9IFdlYkluc3BlY3Rvci5yZXNvdXJj
ZVRyZWVNb2RlbC5mb3JBbGxSZXNvdXJjZXModmlzaXQpOwotICAgIGlmICghc3VjY2VlZGVkKQot
ICAgICAgICBzZXRUaW1lb3V0KEluc3BlY3RvclRlc3QuX3J1bkFmdGVyUmVzb3VyY2VzQXJlRmlu
aXNoZWQuYmluZChJbnNwZWN0b3JUZXN0LCByZXNvdXJjZVVSTHMsIGNhbGxiYWNrKSwgMCk7Ci19
Ci0KIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNv
dXJjZXMtdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNl
cy10ZXN0LmpzCmluZGV4IDIwNzM5ZjU1OGNhMmE3ZDVlY2U4ODQ4N2RlZGY0ODQ2NzcyZjNiMzcu
LjYxNjkxMGMxOWE3OTAyMDYyMjE2YTc4NjhjMGFmMTM5YzFjMzRiNzQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy10ZXN0LmpzCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy10ZXN0LmpzCkBAIC0yNyw0
ICsyNyw1MCBAQCBJbnNwZWN0b3JUZXN0LnJlc291cmNlVVJMQ29tcGFyZXIgPSBmdW5jdGlvbihy
MSwgcjIpCiAgICAgcmV0dXJuIHIxLnJlcXVlc3QudXJsLmxvY2FsZUNvbXBhcmUocjIucmVxdWVz
dC51cmwpOwogfQogCitJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUmVzb3VyY2VzQXJlRmluaXNoZWQg
PSBmdW5jdGlvbihyZXNvdXJjZVVSTHMsIGNhbGxiYWNrKQoreworICAgIEluc3BlY3RvclRlc3Qu
X3J1bkFmdGVyUmVzb3VyY2VzQXJlRmluaXNoZWQocmVzb3VyY2VVUkxzLmtleVNldCgpLCBjYWxs
YmFjayk7Cit9CisKK0luc3BlY3RvclRlc3QuX3J1bkFmdGVyUmVzb3VyY2VzQXJlRmluaXNoZWQg
PSBmdW5jdGlvbihyZXNvdXJjZVVSTHMsIGNhbGxiYWNrKQoreworICAgIGZ1bmN0aW9uIGNoZWNr
UmVzb3VyY2UocmVzb3VyY2UpCisgICAgeworICAgICAgICBmb3IgKHZhciB1cmwgaW4gcmVzb3Vy
Y2VVUkxzKSB7CisgICAgICAgICAgICBpZiAocmVzb3VyY2UudXJsLmluZGV4T2YodXJsKSAhPT0g
LTEpCisgICAgICAgICAgICAgICAgZGVsZXRlIHJlc291cmNlVVJMc1t1cmxdOworICAgICAgICB9
CisgICAgfQorCisgICAgZnVuY3Rpb24gbWF5YmVDYWxsYmFjaygpCisgICAgeworICAgICAgICBp
ZiAoIU9iamVjdC5rZXlzKHJlc291cmNlVVJMcykubGVuZ3RoKSB7CisgICAgICAgICAgICBjYWxs
YmFjaygpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBhZGRTbmlmZmVyKHJlc291cmNlKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUs
ICJfYWRkUmVzb3VyY2VUb0ZyYW1lIiwgcmVzb3VyY2VBZGRlZFRvRnJhbWUuYmluZCh0aGlzKSk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gcmVzb3VyY2VBZGRlZFRvRnJhbWUocmVzb3VyY2UpCisg
ICAgeworICAgICAgICBjaGVja1Jlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgaWYgKCFtYXli
ZUNhbGxiYWNrKCkpCisgICAgICAgICAgICBhZGRTbmlmZmVyKCk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gdmlzaXQocmVzb3VyY2UpCisgICAgeworICAgICAgICBjaGVja1Jlc291cmNlKHJlc291
cmNlKTsKKyAgICAgICAgcmV0dXJuIG1heWJlQ2FsbGJhY2soKTsKKyAgICB9CisKKyAgICB2YXIg
c3VjY2VlZGVkID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLmZvckFsbFJlc291cmNl
cyh2aXNpdCk7CisgICAgaWYgKCFzdWNjZWVkZWQpCisgICAgICAgIGFkZFNuaWZmZXIoKTsKK30K
KwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNo
L3Jlc291cmNlcy9zZWFyY2gtY29uY2F0ZW5hdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9zZWFyY2gvcmVzb3VyY2VzL3NlYXJjaC1jb25jYXRlbmF0ZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43MjhmZjY0YzJiYmYyNjliMDZlMjBhZjMwMTA0ODMyZjYzZDgxNDdhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3Jl
c291cmNlcy9zZWFyY2gtY29uY2F0ZW5hdGVkLmh0bWwKQEAgLTAsMCArMSwzMCBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBzZWFyY2hUZXN0VW5pcXVlU3RyaW5nKCkKK3sK
KyAgICB2YXIgdmFyaWFibGUgPSAwOworICAgIC8vIHNlYXJjaFRlc3RVbmlxdWVTdHJpbmcgdHdv
IG9jY3VyZW5jZXMgb24gdGhlIHNhbWUgbGluZSBzZWFyY2hUZXN0VW5pcXVlU3RyaW5nCisgICAg
dmFyIHZhcmlhYmxlMiA9IDA7Cit9Cis8L3NjcmlwdD48c2NyaXB0PgorZnVuY3Rpb24gZG9Tb21l
dGhpbmcoKQoreworICAgIHNlYXJjaFRlc3RVbmlxdWVTdHJpbmcoKTsKKyAgICAvLyBTRUFSQ0hU
ZXN0VW5pcXVlU3RyaW5nKCk7Cit9Cis8L3NjcmlwdD4KKzxsaW5rIGhyZWY9InNlYXJjaC5jc3Mi
IHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHNl
YXJjaFRlc3RVbmlxdWVTdHJpbmcyKCkKK3sKKyAgICB2YXIgdmFyaWFibGUgPSAwOworICAgIC8q
IHNlYXJjaFRlc3RVbmlxdWVTdHJpbmcgdHdvIG9jY3VyZW5jZXMgb24gdGhlIHNhbWUgbGluZSBz
ZWFyY2hUZXN0VW5pcXVlU3RyaW5nICovIH0gPC9zY3JpcHQ+PHNjcmlwdD4gZnVuY3Rpb24gZG9T
b21ldGhpbmcyKCkgeyBzZWFyY2hUZXN0VW5pcXVlU3RyaW5nKCk7CisgICAgLy8gU0VBUkNIVGVz
dFVuaXF1ZVN0cmluZygpOworfQorPC9zY3JpcHQ+Cis8L3NjcmlwdD4KKzxib2R5PgorPC9ib2R5
PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9zZWFyY2gvc2VhcmNoLWluLWNvbmNhdGVuYXRlZC1zY3JpcHQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3NlYXJjaC1pbi1jb25jYXRlbmF0
ZWQtc2NyaXB0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTE2Y2E3MWNjOGVkNWIyMzRkMzRh
MWMzYjE3N2I3ZjYyY2NkMGNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3NlYXJjaC1pbi1jb25jYXRlbmF0ZWQtc2NyaXB0LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUZXN0cyBjb25jYXRlbmF0ZWQgc2NyaXB0IHNlYXJj
aCBpbiBpbnNwZWN0b3IgZGVidWdnZXIgYWdlbnQuCisKK0J1ZyA2OTAxNSAgCitodHRwOi8vMTI3
LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3NlYXJjaC9yZXNvdXJjZXMvc2VhcmNoLWNvbmNhdGVuYXRl
ZC5odG1sCitTZWFyY2ggbWF0Y2hlczogCitsaW5lTnVtYmVyOiAzLCBsaW5lOiAnZnVuY3Rpb24g
c2VhcmNoVGVzdFVuaXF1ZVN0cmluZygpJworbGluZU51bWJlcjogNiwgbGluZTogJyAgICAvLyBz
ZWFyY2hUZXN0VW5pcXVlU3RyaW5nIHR3byBvY2N1cmVuY2VzIG9uIHRoZSBzYW1lIGxpbmUgc2Vh
cmNoVGVzdFVuaXF1ZVN0cmluZycKK2xpbmVOdW1iZXI6IDEyLCBsaW5lOiAnICAgIHNlYXJjaFRl
c3RVbmlxdWVTdHJpbmcoKTsnCitsaW5lTnVtYmVyOiAxMywgbGluZTogJyAgICAvLyBTRUFSQ0hU
ZXN0VW5pcXVlU3RyaW5nKCk7JworbGluZU51bWJlcjogMTgsIGxpbmU6ICdmdW5jdGlvbiBzZWFy
Y2hUZXN0VW5pcXVlU3RyaW5nMigpJworbGluZU51bWJlcjogMjEsIGxpbmU6ICcgICAgLyogc2Vh
cmNoVGVzdFVuaXF1ZVN0cmluZyB0d28gb2NjdXJlbmNlcyBvbiB0aGUgc2FtZSBsaW5lIHNlYXJj
aFRlc3RVbmlxdWVTdHJpbmcgKi8gfSAnCitsaW5lTnVtYmVyOiAyMSwgbGluZTogJyBmdW5jdGlv
biBkb1NvbWV0aGluZzIoKSB7IHNlYXJjaFRlc3RVbmlxdWVTdHJpbmcoKTsnCitsaW5lTnVtYmVy
OiAyMiwgbGluZTogJyAgICAvLyBTRUFSQ0hUZXN0VW5pcXVlU3RyaW5nKCk7JworCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4t
Y29uY2F0ZW5hdGVkLXNjcmlwdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3Ivc2VhcmNoL3NlYXJjaC1pbi1jb25jYXRlbmF0ZWQtc2NyaXB0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmViZjQwMDcxMjI2MDZiNmYwNjAzOTU3MDRiOTY3ZjdlZjBkMWQyOQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tY29u
Y2F0ZW5hdGVkLXNjcmlwdC5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzZWFyY2gtdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgLy8gVGhp
cyBmaWxlIHNob3VsZCBub3QgbWF0Y2ggc2VhcmNoIHF1ZXJ5LgorICAgIHZhciB0ZXh0ID0gInNl
YXJjaFRlc3QiICsgIlVuaXF1ZVN0cmluZyI7CisgICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclJl
c291cmNlc0FyZUZpbmlzaGVkKFsic2VhcmNoLWNvbmNhdGVuYXRlZC5odG1sIl0sIHN0ZXAyKTsK
KworICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICB7CisgICAgICAgIHZhciB1cmwgPSAiaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9zZWFyY2gvcmVzb3VyY2VzL3NlYXJjaC1jb25jYXRl
bmF0ZWQuaHRtbCI7CisgICAgICAgIHZhciBzY3JpcHRzID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
TW9kZWwuc2NyaXB0c0ZvclVSTCh1cmwpOworICAgICAgICB2YXIgY29udGVudFByb3ZpZGVyID0g
bmV3IFdlYkluc3BlY3Rvci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVyKHNjcmlw
dHMpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCh1cmwpOworICAgICAgICBjb250
ZW50UHJvdmlkZXIuc2VhcmNoSW5Db250ZW50KHRleHQsIHN0ZXAzKTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBzdGVwMyhzZWFyY2hNYXRjaGVzKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5kdW1wU2VhcmNoTWF0Y2hlcyhzZWFyY2hNYXRjaGVzKTsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHA+VGVzdHMgY29uY2F0ZW5hdGVkIHNjcmlwdCBzZWFyY2ggaW4gaW5zcGVjdG9yIGRlYnVnZ2Vy
IGFnZW50LjwvcD4KKzxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02OTAxNSI+QnVnIDY5MDE1PC9hPgorCis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NlYXJj
aC1jb25jYXRlbmF0ZWQuaHRtbCIgb25sb2FkPSJydW5UZXN0KCkiPgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3Nl
YXJjaC1pbi1yZXNvdXJjZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
c2VhcmNoL3NlYXJjaC1pbi1yZXNvdXJjZS5odG1sCmluZGV4IDAzMjc0YTZkNTlkY2MxNzhjODg0
ZTQ0ZjZjNWY5Y2RjZjUyNjI1NjIuLjY0YzFhYmQzNWUxYWU0MjQ0MDM5NGY5YWE3ZDc1NjEyZjky
NmEyOGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJj
aC9zZWFyY2gtaW4tcmVzb3VyY2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLXJlc291cmNlLmh0bWwKQEAgLTEsMTMgKzEsMTQgQEAK
IDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSJzZWFyY2gtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogZnVuY3Rpb24gdGVz
dCgpCiB7CiAgICAgLy8gVGhpcyBmaWxlIHNob3VsZCBub3QgbWF0Y2ggc2VhcmNoIHF1ZXJ5Lgog
ICAgIHZhciB0ZXh0ID0gInNlYXJjaFRlc3QiICsgIlVuaXF1ZVN0cmluZyI7Ci0gICAgSW5zcGVj
dG9yVGVzdC5ydW5BZnRlclJlc291cmNlc0FyZUNyZWF0ZWQoWyJzZWFyY2guanMiXSwgc3RlcDIp
OworICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJSZXNvdXJjZXNBcmVGaW5pc2hlZChbInNlYXJj
aC5qcyJdLCBzdGVwMik7CiAKICAgICBmdW5jdGlvbiBzdGVwMigpCiAgICAgewpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3NlYXJjaC1pbi1zY3Jp
cHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNo
L3NlYXJjaC1pbi1zY3JpcHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmNzYyZWQ2NDExYjdm
NDU5MWRkZTk0OTQwOTAzNGNjYWI0NmZhODMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLXNjcmlwdC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdHMgc2NyaXB0IHNlYXJjaCBpbiBpbnNwZWN0b3IgZGVi
dWdnZXIgYWdlbnQuCisKK0J1ZyA2OTAxNSAgCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVj
dG9yL3NlYXJjaC9yZXNvdXJjZXMvc2VhcmNoLmpzCitTZWFyY2ggbWF0Y2hlczogCitsaW5lTnVt
YmVyOiAwLCBsaW5lOiAnZnVuY3Rpb24gc2VhcmNoVGVzdFVuaXF1ZVN0cmluZygpJworbGluZU51
bWJlcjogMywgbGluZTogJyAgICAvLyBzZWFyY2hUZXN0VW5pcXVlU3RyaW5nIHR3byBvY2N1cmVu
Y2VzIG9uIHRoZSBzYW1lIGxpbmUgc2VhcmNoVGVzdFVuaXF1ZVN0cmluZycKK2xpbmVOdW1iZXI6
IDksIGxpbmU6ICcgICAgc2VhcmNoVGVzdFVuaXF1ZVN0cmluZygpOycKK2xpbmVOdW1iZXI6IDEw
LCBsaW5lOiAnICAgIC8vIFNFQVJDSFRlc3RVbmlxdWVTdHJpbmcoKTsnCisKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3NlYXJjaC1pbi1zY3Jp
cHQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gt
aW4tc2NyaXB0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDRjY2Q4ZWVlNzA1NmU4ZmI0ODZiMjNlNmU5Yzgx
ZGQ3YzUxMGU1MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tc2NyaXB0Lmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InNlYXJjaC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICAvLyBUaGlzIGZpbGUgc2hvdWxkIG5vdCBtYXRjaCBzZWFyY2ggcXVlcnkuCisgICAg
dmFyIHRleHQgPSAic2VhcmNoVGVzdCIgKyAiVW5pcXVlU3RyaW5nIjsKKyAgICBJbnNwZWN0b3JU
ZXN0LnJ1bkFmdGVyUmVzb3VyY2VzQXJlRmluaXNoZWQoWyJzZWFyY2guanMiXSwgc3RlcDIpOwor
CisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgICAgdmFyIHNjcmlwdHMgPSBXZWJJ
bnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRzRm9yVVJMKCJodHRwOi8vMTI3LjAuMC4xOjgw
MDAvaW5zcGVjdG9yL3NlYXJjaC9yZXNvdXJjZXMvc2VhcmNoLmpzIik7CisgICAgICAgIHZhciBz
Y3JpcHQgPSBzY3JpcHRzWzBdOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChzY3Jp
cHQuc291cmNlVVJMKTsKKyAgICAgICAgc2NyaXB0LnNlYXJjaEluQ29udGVudCh0ZXh0LCBzdGVw
Myk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDMoc2VhcmNoTWF0Y2hlcykKKyAgICB7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlYXJjaE1hdGNoZXMoc2VhcmNoTWF0Y2hlcyk7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRlc3RzIHNjcmlwdCBzZWFyY2ggaW4gaW5zcGVjdG9yIGRl
YnVnZ2VyIGFnZW50LjwvcD4KKzxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02OTAxNSI+QnVnIDY5MDE1PC9hPgorCis8aWZyYW1lIHNyYz0icmVzb3VyY2Vz
L3NlYXJjaC5odG1sIiBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLXRl
c3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLXRl
c3QuanMKaW5kZXggYjc5ZmRmMzBiNDhkN2E5MzdhOTFkMjg5NjU5YjAwMjNjN2VlYjI0Zi4uNjUx
YjhkZjE4MWMzMWIzOGE1ZDg2ZDA5N2EzZmM3MjNhNjZmNTBhYyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3NlYXJjaC10ZXN0LmpzCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtdGVzdC5qcwpAQCAt
MTYsNTAgKzE2LDQgQEAgSW5zcGVjdG9yVGVzdC5kdW1wU2VhcmNoTWF0Y2hlcyA9IGZ1bmN0aW9u
KHNlYXJjaE1hdGNoZXMpCiAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwogfTsKIAot
SW5zcGVjdG9yVGVzdC5ydW5BZnRlclJlc291cmNlc0FyZUNyZWF0ZWQgPSBmdW5jdGlvbihyZXNv
dXJjZVVSTHMsIGNhbGxiYWNrKQotewotICAgIEluc3BlY3RvclRlc3QuX3J1bkFmdGVyUmVzb3Vy
Y2VzQXJlQ3JlYXRlZChyZXNvdXJjZVVSTHMua2V5U2V0KCksIGNhbGxiYWNrKTsKLX0KLQotSW5z
cGVjdG9yVGVzdC5fcnVuQWZ0ZXJSZXNvdXJjZXNBcmVDcmVhdGVkID0gZnVuY3Rpb24ocmVzb3Vy
Y2VVUkxzLCBjYWxsYmFjaykKLXsKLSAgICBmdW5jdGlvbiBjaGVja1Jlc291cmNlKHJlc291cmNl
KQotICAgIHsKLSAgICAgICAgZm9yICh2YXIgdXJsIGluIHJlc291cmNlVVJMcykgewotICAgICAg
ICAgICAgaWYgKHJlc291cmNlLnVybC5pbmRleE9mKHVybCkgIT09IC0xKQotICAgICAgICAgICAg
ICAgIGRlbGV0ZSByZXNvdXJjZVVSTHNbdXJsXTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1
bmN0aW9uIG1heWJlQ2FsbGJhY2soKQotICAgIHsKLSAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhy
ZXNvdXJjZVVSTHMpLmxlbmd0aCkgewotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gYWRkU25p
ZmZlcihyZXNvdXJjZSkKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLCAiX2JpbmRSZXNvdXJjZVVS
TCIsIG9uUmVzb3VyY2VCaW5kLmJpbmQodGhpcykpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIG9u
UmVzb3VyY2VCaW5kKHJlc291cmNlKQotICAgIHsKLSAgICAgICAgY2hlY2tSZXNvdXJjZShyZXNv
dXJjZSk7Ci0gICAgICAgIGlmICghbWF5YmVDYWxsYmFjaygpKQotICAgICAgICAgICAgYWRkU25p
ZmZlcigpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHZpc2l0KHJlc291cmNlKQotICAgIHsKLSAg
ICAgICAgY2hlY2tSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgIHJldHVybiBtYXliZUNhbGxi
YWNrKCk7Ci0gICAgfQotCi0gICAgdmFyIHN1Y2NlZWRlZCA9IFdlYkluc3BlY3Rvci5yZXNvdXJj
ZVRyZWVNb2RlbC5mb3JBbGxSZXNvdXJjZXModmlzaXQpOwotICAgIGlmICghc3VjY2VlZGVkKQot
ICAgICAgICBhZGRTbmlmZmVyKCk7Ci19Ci0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGI5ZWM5YjY5MTJh
YzcxNTY1ZjRjN2QxMjA3ZTNhMDAwNmNmNzVlZi4uNDRjYjg5YTZlMTY1NWY5OTgwMzQ1NzZiYTA0
YzZlZTBlZGFhYjhiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDExLTA5LTMwICBW
c2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IEFkZCBzdXBwb3J0IGZvciBiYWNrZW5kIHNlYXJjaCBpbiBzY3JpcHQgY29udGVudC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MDE1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGh0
dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tY29uY2F0ZW5hdGVkLXNjcmlwdC5o
dG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWlu
LXNjcmlwdC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2VhcmNoSW5Db250ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldFNjcmlwdFNvdXJjZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0NvbnRlbnRQcm92aWRlcnMuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2NyaXB0Q29udGVudFByb3ZpZGVyLnByb3RvdHlwZS5yZXF1ZXN0Q29udGVudCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFByb3ZpZGVyLnByb3RvdHlwZS5zZWFyY2hJ
bkNvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbmNhdGVuYXRlZFNjcmlwdHNDb250
ZW50UHJvdmlkZXIucHJvdG90eXBlLnNlYXJjaEluQ29udGVudC5tYXliZUNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVyLnBy
b3RvdHlwZS5zZWFyY2hJbkNvbnRlbnQuc2VhcmNoQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvbmNhdGVuYXRlZFNjcmlwdHNDb250ZW50UHJvdmlkZXIucHJvdG90eXBlLnNlYXJj
aEluQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZS5zZWFyY2hJbkNvbnRlbnQpOgor
CiAyMDExLTA5LTMwICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBbY2hyb21pdW1dIGV4cG9zZSBpbnNwZWN0b3IgcHJvdG9jb2wg
dmVyc2lvbiB0byB0aGUgZW1iZWRkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Lmpzb24KaW5kZXggMDM5YTU2YWFjOWM5YTc4MWVkMGE4N2UzNDcxN2VjNTYxMWYyOGYzNi4uYWE0
YzYzNTBlMTU1YzRkZGZlM2IwZWQwNmViZWU1NDFiYWY0YTcyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMTcxMyw2ICsxNzEzLDE3IEBACiAgICAgICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogIlJlc3VtZXMgSmF2YVNjcmlwdCBleGVjdXRpb24uIgogICAg
ICAgICAgICAgfSwKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJzZWFy
Y2hJbkNvbnRlbnQiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInNjcmlwdElkIiwgIiRyZWYiOiAiU2NyaXB0SWQiLCAiZGVz
Y3JpcHRpb24iOiAiSWQgb2YgdGhlIHNjcmlwdCB0byBzZWFyY2ggaW4uIiB9LAorICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInF1ZXJ5IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0
aW9uIjogIlN0cmluZyB0byBzZWFyY2ggZm9yLiIgIH0KKyAgICAgICAgICAgICAgICBdLAorICAg
ICAgICAgICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InJlc3VsdCIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJQYWdlLlNlYXJj
aE1hdGNoIiB9LCAiZGVzY3JpcHRpb24iOiAiTGlzdCBvZiBzZWFyY2ggbWF0Y2hlcy4iIH0KKyAg
ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTZWFyY2hl
cyBmb3IgZ2l2ZW4gc3RyaW5nIGluIHNjcmlwdCBjb250ZW50LiIKKyAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAic2V0U2NyaXB0U291cmNlIiwK
ICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJzY3JpcHRJZCIsICIkcmVmIjogIlNjcmlwdElkIiwgImRlc2NyaXB0aW9uIjogIklk
IG9mIHRoZSBzY3JpcHQgdG8gZWRpdC4iIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggMGIyMTIwZGJhODBhZTdmMjky
ZTMyOGZlYzU3NDNiMzMxOWU4MTI5ZC4uMTY2YTAzMjc3ZDU5ZjE4ZDM5MzZmNmQ0NmU4MGEzN2Qx
MDM2NGQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckRl
YnVnZ2VyQWdlbnQuaCIKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFC
TEUoSU5TUEVDVE9SKQorI2luY2x1ZGUgIkNvbnRlbnRTZWFyY2hVdGlscy5oIgogI2luY2x1ZGUg
IkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKQEAgLTMyMCw2ICszMjEsMTUgQEAgc3RhdGlj
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBzY3JpcHRUb0luc3BlY3Rvck9iamVjdChTY3Jp
cHRPYmplY3Qgc2NyaXB0T2IKICAgICByZXR1cm4gdmFsdWUtPmFzT2JqZWN0KCk7CiB9CiAKK3Zv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiogcmVzdWx0cykKK3sKKyAgICBTdHJpbmcgc291cmNlOworICAgIFNjcmlwdHNN
YXA6Oml0ZXJhdG9yIGl0ID0gbV9zY3JpcHRzLmZpbmQoc2NyaXB0SWQpOworICAgIGlmIChpdCAh
PSBtX3NjcmlwdHMuZW5kKCkpCisgICAgICAgIHNvdXJjZSA9IGl0LT5zZWNvbmQuc291cmNlOwor
ICAgICpyZXN1bHRzID0gQ29udGVudFNlYXJjaFV0aWxzOjpzZWFyY2hJblRleHRCeUxpbmVzKHF1
ZXJ5LCBzb3VyY2UpOworfQorCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFNjcmlw
dFNvdXJjZShFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0
IFN0cmluZyYgbmV3Q29udGVudCwgY29uc3QgYm9vbCogY29uc3QgcHJldmlldywgUmVmUHRyPElu
c3BlY3RvckFycmF5PiogbmV3Q2FsbEZyYW1lcywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJl
c3VsdCkKIHsKICAgICBib29sIHByZXZpZXdPbmx5ID0gcHJldmlldyAmJiAqcHJldmlldzsKQEAg
LTMzNCw3ICszNDQsMTEgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRTY3JpcHRT
b3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHMKIAogdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIHNjcmlwdElkLCBTdHJpbmcqIHNjcmlwdFNvdXJjZSkKIHsKLSAgICAqc2NyaXB0U291cmNl
ID0gbV9zY3JpcHRzLmdldChzY3JpcHRJZCkuc291cmNlOworICAgIFN0cmluZyBzb3VyY2U7Cisg
ICAgU2NyaXB0c01hcDo6aXRlcmF0b3IgaXQgPSBtX3NjcmlwdHMuZmluZChzY3JpcHRJZCk7Cisg
ICAgaWYgKGl0ICE9IG1fc2NyaXB0cy5lbmQoKSkKKyAgICAgICAgc291cmNlID0gaXQtPnNlY29u
ZC5zb3VyY2U7CisgICAgKnNjcmlwdFNvdXJjZSA9IHNvdXJjZTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KGNvbnN0IFN0cmlu
ZyYgYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXgg
MTg1YWFiODJlZWQ1MGYyZDc0YWNhNTVhNDRlZGRlNmI5ZjEzYTU2My4uNzNiMjc1NGUyOGEzMTdk
OWU2YTlkM2E0ZGUzNzQ3NjdkMTBmOGMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCkBAIC04MSw2ICs4MSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGJy
ZWFrcG9pbnRJZCk7CiAgICAgdm9pZCBjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcqLCBQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbG9jYXRpb24pOwogCisgICAgdm9pZCBzZWFyY2hJ
bkNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTdHJp
bmcmIHF1ZXJ5LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+Kik7CiAgICAgdm9pZCBzZXRTY3JpcHRT
b3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTdHJpbmcm
IG5ld0NvbnRlbnQsIGNvbnN0IGJvb2wqIGNvbnN0IHByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4qIG5ld0NhbGxGcmFtZXMsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpOwog
ICAgIHZvaWQgZ2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3Jp
cHRJZCwgU3RyaW5nKiBzY3JpcHRTb3VyY2UpOwogICAgIHZvaWQgc2NoZWR1bGVQYXVzZU9uTmV4
dFN0YXRlbWVudChjb25zdCBTdHJpbmcmIGJyZWFrUmVhc29uLCBQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0NvbnRlbnRQcm92aWRlcnMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0NvbnRlbnRQcm92aWRlcnMuanMKaW5kZXggNGVhMjEwYTM3NWQ2M2JlZGQ0ZTFmNjRj
MTVkNzdhYzA0OTVjMjFkZi4uODkwOGU4NGUwZTZiZDY5ZDUwOTNkYTZmODRhYzQxOGI5MTFhMzM4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZW50
UHJvdmlkZXJzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29u
dGVudFByb3ZpZGVycy5qcwpAQCAtNDYsNiArNDYsMTEgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdENv
bnRlbnRQcm92aWRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9t
aW1lVHlwZSwgc291cmNlKTsKICAgICAgICAgfQogICAgICAgICB0aGlzLl9zY3JpcHQucmVxdWVz
dFNvdXJjZShkaWRSZXF1ZXN0U291cmNlLmJpbmQodGhpcykpOworICAgIH0sCisKKyAgICBzZWFy
Y2hJbkNvbnRlbnQ6IGZ1bmN0aW9uKHF1ZXJ5LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHRo
aXMuX3NjcmlwdC5zZWFyY2hJbkNvbnRlbnQocXVlcnksIGNhbGxiYWNrKTsKICAgICB9CiB9CiAK
QEAgLTc3LDYgKzgyLDM5IEBAIFdlYkluc3BlY3Rvci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVu
dFByb3ZpZGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgc2NyaXB0c1tpXS5yZXF1ZXN0U291
cmNlKGRpZFJlcXVlc3RTb3VyY2UuYmluZCh0aGlzKSk7CiAgICB9LAogCisgICBzZWFyY2hJbkNv
bnRlbnQ6IGZ1bmN0aW9uKHF1ZXJ5LCBjYWxsYmFjaykKKyAgIHsKKyAgICAgICB2YXIgcmVzdWx0
cyA9IHt9OworICAgICAgIHZhciBzY3JpcHRzTGVmdCA9IHRoaXMuX3NjcmlwdHMubGVuZ3RoOwor
CisgICAgICAgZnVuY3Rpb24gbWF5YmVDYWxsYmFjaygpCisgICAgICAgeworICAgICAgICAgICBp
ZiAoIXNjcmlwdHNMZWZ0KSB7CisgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gW107CisgICAg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NjcmlwdHMubGVuZ3RoOyArK2kp
CisgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChyZXN1bHRzW3RoaXMu
X3NjcmlwdHNbaV0uc2NyaXB0SWRdKTsKKyAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7
CisgICAgICAgICAgIH0KKyAgICAgICB9CisKKyAgICAgICBmdW5jdGlvbiBzZWFyY2hDYWxsYmFj
ayhzY3JpcHQsIHNlYXJjaE1hdGNoZXMpCisgICAgICAgeworICAgICAgICAgICByZXN1bHRzW3Nj
cmlwdC5zY3JpcHRJZF0gPSBbXTsKKyAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWFy
Y2hNYXRjaGVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICB2YXIgc2VhcmNoTWF0Y2gg
PSB7fTsKKyAgICAgICAgICAgICAgIHNlYXJjaE1hdGNoLmxpbmVOdW1iZXIgPSBzZWFyY2hNYXRj
aGVzW2ldLmxpbmVOdW1iZXIgKyBzY3JpcHQubGluZU9mZnNldDsKKyAgICAgICAgICAgICAgIHNl
YXJjaE1hdGNoLmxpbmVDb250ZW50ID0gc2VhcmNoTWF0Y2hlc1tpXS5saW5lQ29udGVudDsKKyAg
ICAgICAgICAgICAgIHJlc3VsdHNbc2NyaXB0LnNjcmlwdElkXS5wdXNoKHNlYXJjaE1hdGNoKTsK
KyAgICAgICAgICAgfQorICAgICAgICAgICBzY3JpcHRzTGVmdC0tOworICAgICAgICAgICBtYXli
ZUNhbGxiYWNrLmNhbGwodGhpcyk7CisgICAgICAgfQorCisgICAgICAgbWF5YmVDYWxsYmFjaygp
OworICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2NyaXB0cy5sZW5ndGg7ICsraSkK
KyAgICAgICAgICAgdGhpcy5fc2NyaXB0c1tpXS5zZWFyY2hJbkNvbnRlbnQocXVlcnksIHNlYXJj
aENhbGxiYWNrLmJpbmQodGhpcywgdGhpcy5fc2NyaXB0c1tpXSkpOworICAgfSwKKwogICAgX2Nv
bmNhdGVuYXRlU2NyaXB0c0NvbnRlbnQ6IGZ1bmN0aW9uKHNjcmlwdHMsIHNvdXJjZXMpCiAgICB7
CiAgICAgICAgdmFyIGNvbnRlbnQgPSAiIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TY3JpcHQuanMKaW5kZXggYjM2ZTA3YTRlMjljNDc0NWU2MmNhNGM2YjAwNjE2M2Rj
MTgwYzY4Zi4uNTRkNDZmNWZhMjM5NTJkYWRkZTg4YTNjM2E2YTk0NzY3Yjk2YTQwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanMKQEAgLTU1LDYgKzU1
LDE2IEBAIFdlYkluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICBEZWJ1Z2dl
ckFnZW50LmdldFNjcmlwdFNvdXJjZSh0aGlzLnNjcmlwdElkLCBkaWRHZXRTY3JpcHRTb3VyY2Uu
YmluZCh0aGlzKSk7CiAgICAgfSwKIAorICAgIHNlYXJjaEluQ29udGVudDogZnVuY3Rpb24ocXVl
cnksIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gaW5uZXJDYWxsYmFjayhlcnJv
ciwgc2VhcmNoTWF0Y2hlcykKKyAgICAgICAgeworICAgICAgICAgICAgY2FsbGJhY2soc2VhcmNo
TWF0Y2hlcyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIERlYnVnZ2VyQWdlbnQuc2Vh
cmNoSW5Db250ZW50KHRoaXMuc2NyaXB0SWQsIHF1ZXJ5LCBpbm5lckNhbGxiYWNrLmJpbmQodGhp
cykpOworICAgIH0sCisgICAgCiAgICAgZWRpdFNvdXJjZTogZnVuY3Rpb24obmV3U291cmNlLCBj
YWxsYmFjaykKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIGRpZEVkaXRTY3JpcHRTb3VyY2UoZXJy
b3IsIGNhbGxGcmFtZXMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109605</attachid>
            <date>2011-10-04 04:26:39 -0700</date>
            <delta_ts>2011-10-04 07:25:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69015-20111004152637.patch</filename>
            <type>text/plain</type>
            <size>30569</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY1ODIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlZjdjOGY3YTQ0NWIxNGIwMzk0ZGE4
ZWQ5MWIzYzk3YmI1MTUyNWRlLi45YWU0NGJjNGE4YTUzNzBkZjM0ZjEzMDZkYjUxYWNkNzg1MTY2
OWQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMTAtMDQgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBv
cnQgZm9yIHNlYXJjaCBpbiBzY3JpcHQgY29udGVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MDE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS10
cmVlL3Jlc291cmNlLXRyZWUtdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfUmVzb3VyY2VU
cmVlVGVzdCk6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzLXRlc3Qu
anM6CisgICAgICAgIChpbml0aWFsaXplX1Jlc291cmNlVGVzdC5JbnNwZWN0b3JUZXN0LnJ1bkFm
dGVyUmVzb3VyY2VzQXJlRmluaXNoZWQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9SZXNvdXJjZVRl
c3QuSW5zcGVjdG9yVGVzdC5fcnVuQWZ0ZXJSZXNvdXJjZXNBcmVGaW5pc2hlZCk6CisgICAgICAg
IChpbml0aWFsaXplX1Jlc291cmNlVGVzdC5JbnNwZWN0b3JUZXN0Ll9ydW5BZnRlclJlc291cmNl
c0FyZUZpbmlzaGVkLm1heWJlQ2FsbGJhY2spOgorICAgICAgICAoaW5pdGlhbGl6ZV9SZXNvdXJj
ZVRlc3QuSW5zcGVjdG9yVGVzdC5fcnVuQWZ0ZXJSZXNvdXJjZXNBcmVGaW5pc2hlZC5hZGRTbmlm
ZmVyKToKKyAgICAgICAgKGluaXRpYWxpemVfUmVzb3VyY2VUZXN0Lkluc3BlY3RvclRlc3QuX3J1
bkFmdGVyUmVzb3VyY2VzQXJlRmluaXNoZWQucmVzb3VyY2VBZGRlZFRvRnJhbWUpOgorICAgICAg
ICAoaW5pdGlhbGl6ZV9SZXNvdXJjZVRlc3QuSW5zcGVjdG9yVGVzdC5fcnVuQWZ0ZXJSZXNvdXJj
ZXNBcmVGaW5pc2hlZC52aXNpdCk6CisgICAgICAgIChpbml0aWFsaXplX1Jlc291cmNlVGVzdCk6
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3Jlc291cmNlcy9zZWFyY2gt
Y29uY2F0ZW5hdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9y
L3NlYXJjaC9zZWFyY2gtaW4tY29uY2F0ZW5hdGVkLXNjcmlwdC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tY29uY2F0
ZW5hdGVkLXNjcmlwdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9zZWFyY2gvc2VhcmNoLWluLXJlc291cmNlLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9p
bnNwZWN0b3Ivc2VhcmNoL3NlYXJjaC1pbi1zY3JpcHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLXNjcmlwdC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLXRl
c3QuanM6CisgICAgICAgIChpbml0aWFsaXplX1NlYXJjaFRlc3QpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9kZWJ1Z2dlci9jb250ZW50LXByb3ZpZGVycy5odG1sOgorCiAyMDExLTEwLTA0ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1d
IEltcGxlbWVudCBmb250IHNoYXBpbmcgd2l0aCBmb250LWZlYXR1cmUtc2V0dGluZ3Mgb24gV2lu
ZG93cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3Vy
Y2UtdHJlZS9yZXNvdXJjZS10cmVlLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9yZXNvdXJjZS10cmVlL3Jlc291cmNlLXRyZWUtdGVzdC5qcwppbmRleCBiYWQ3NWJk
NWZmZjc4YTJlN2ZlNzZhNGFiZTA4NDhiZWUyMmFhNmUyLi44MGEyMTgwMTc5NjEzZjE2MjQ0MjBh
OWE0OTFmOGJjMWViZWIyODk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9yZXNvdXJjZS10cmVlL3Jlc291cmNlLXRyZWUtdGVzdC5qcworKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS10cmVlL3Jlc291cmNlLXRyZWUtdGVz
dC5qcwpAQCAtODYsMzIgKzg2LDQgQEAgSW5zcGVjdG9yVGVzdC5kdW1wUmVzb3VyY2VUcmVlRXZl
cnl0aGluZyA9IGZ1bmN0aW9uKCkKICAgICBJbnNwZWN0b3JUZXN0LmR1bXBSZXNvdXJjZXNUcmVl
KCk7CiB9CiAKLUluc3BlY3RvclRlc3QucnVuQWZ0ZXJSZXNvdXJjZXNBcmVGaW5pc2hlZCA9IGZ1
bmN0aW9uKHJlc291cmNlVVJMcywgY2FsbGJhY2spCi17Ci0gICAgSW5zcGVjdG9yVGVzdC5fcnVu
QWZ0ZXJSZXNvdXJjZXNBcmVGaW5pc2hlZChyZXNvdXJjZVVSTHMua2V5U2V0KCksIGNhbGxiYWNr
KTsKLX0KLQotSW5zcGVjdG9yVGVzdC5fcnVuQWZ0ZXJSZXNvdXJjZXNBcmVGaW5pc2hlZCA9IGZ1
bmN0aW9uKHJlc291cmNlVVJMcywgY2FsbGJhY2spCi17Ci0gICAgZnVuY3Rpb24gdmlzaXQocmVz
b3VyY2UpCi0gICAgewotICAgICAgICBpZiAoIXJlc291cmNlLmZpbmlzaGVkKQotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgZm9yICh2YXIgdXJsIGluIHJlc291cmNlVVJMcykg
ewotICAgICAgICAgICAgaWYgKHJlc291cmNlLnVybC5pbmRleE9mKHVybCkgIT09IC0xKQotICAg
ICAgICAgICAgICAgIGRlbGV0ZSByZXNvdXJjZVVSTHNbdXJsXTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGlmICghT2JqZWN0LmtleXMocmVzb3VyY2VVUkxzKS5sZW5ndGgpIHsKLSAgICAgICAgICAg
IGNhbGxiYWNrKCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHZhciBzdWNjZWVkZWQgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuZm9y
QWxsUmVzb3VyY2VzKHZpc2l0KTsKLSAgICBpZiAoIXN1Y2NlZWRlZCkKLSAgICAgICAgc2V0VGlt
ZW91dChJbnNwZWN0b3JUZXN0Ll9ydW5BZnRlclJlc291cmNlc0FyZUZpbmlzaGVkLmJpbmQoSW5z
cGVjdG9yVGVzdCwgcmVzb3VyY2VVUkxzLCBjYWxsYmFjayksIDApOwotfQotCiB9OwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzLXRlc3QuanMg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMtdGVzdC5qcwppbmRl
eCAyMDczOWY1NThjYTJhN2Q1ZWNlODg0ODdkZWRmNDg0Njc3MmYzYjM3Li42MTY5MTBjMTlhNzkw
MjA2MjIxNmE3ODY4YzBhZjEzOWMxYzM0Yjc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMtdGVzdC5qcwpAQCAtMjcsNCArMjcsNTAgQEAgSW5z
cGVjdG9yVGVzdC5yZXNvdXJjZVVSTENvbXBhcmVyID0gZnVuY3Rpb24ocjEsIHIyKQogICAgIHJl
dHVybiByMS5yZXF1ZXN0LnVybC5sb2NhbGVDb21wYXJlKHIyLnJlcXVlc3QudXJsKTsKIH0KIAor
SW5zcGVjdG9yVGVzdC5ydW5BZnRlclJlc291cmNlc0FyZUZpbmlzaGVkID0gZnVuY3Rpb24ocmVz
b3VyY2VVUkxzLCBjYWxsYmFjaykKK3sKKyAgICBJbnNwZWN0b3JUZXN0Ll9ydW5BZnRlclJlc291
cmNlc0FyZUZpbmlzaGVkKHJlc291cmNlVVJMcy5rZXlTZXQoKSwgY2FsbGJhY2spOworfQorCitJ
bnNwZWN0b3JUZXN0Ll9ydW5BZnRlclJlc291cmNlc0FyZUZpbmlzaGVkID0gZnVuY3Rpb24ocmVz
b3VyY2VVUkxzLCBjYWxsYmFjaykKK3sKKyAgICBmdW5jdGlvbiBjaGVja1Jlc291cmNlKHJlc291
cmNlKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgdXJsIGluIHJlc291cmNlVVJMcykgeworICAg
ICAgICAgICAgaWYgKHJlc291cmNlLnVybC5pbmRleE9mKHVybCkgIT09IC0xKQorICAgICAgICAg
ICAgICAgIGRlbGV0ZSByZXNvdXJjZVVSTHNbdXJsXTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGZ1bmN0aW9uIG1heWJlQ2FsbGJhY2soKQorICAgIHsKKyAgICAgICAgaWYgKCFPYmplY3Qua2V5
cyhyZXNvdXJjZVVSTHMpLmxlbmd0aCkgeworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRk
U25pZmZlcihyZXNvdXJjZSkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZl
cihXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLCAiX2FkZFJlc291cmNl
VG9GcmFtZSIsIHJlc291cmNlQWRkZWRUb0ZyYW1lLmJpbmQodGhpcykpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHJlc291cmNlQWRkZWRUb0ZyYW1lKHJlc291cmNlKQorICAgIHsKKyAgICAgICAg
Y2hlY2tSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgIGlmICghbWF5YmVDYWxsYmFjaygpKQor
ICAgICAgICAgICAgYWRkU25pZmZlcigpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHZpc2l0KHJl
c291cmNlKQorICAgIHsKKyAgICAgICAgY2hlY2tSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAg
IHJldHVybiBtYXliZUNhbGxiYWNrKCk7CisgICAgfQorCisgICAgdmFyIHN1Y2NlZWRlZCA9IFdl
Ykluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5mb3JBbGxSZXNvdXJjZXModmlzaXQpOworICAg
IGlmICghc3VjY2VlZGVkKQorICAgICAgICBhZGRTbmlmZmVyKCk7Cit9CisKIH0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9yZXNvdXJjZXMvc2Vh
cmNoLWNvbmNhdGVuYXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
c2VhcmNoL3Jlc291cmNlcy9zZWFyY2gtY29uY2F0ZW5hdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI4
ZmY2NGMyYmJmMjY5YjA2ZTIwYWYzMDEwNDgzMmY2M2Q4MTQ3YQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9yZXNvdXJjZXMvc2VhcmNo
LWNvbmNhdGVuYXRlZC5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0PgorZnVuY3Rpb24gc2VhcmNoVGVzdFVuaXF1ZVN0cmluZygpCit7CisgICAgdmFyIHZhcmlh
YmxlID0gMDsKKyAgICAvLyBzZWFyY2hUZXN0VW5pcXVlU3RyaW5nIHR3byBvY2N1cmVuY2VzIG9u
IHRoZSBzYW1lIGxpbmUgc2VhcmNoVGVzdFVuaXF1ZVN0cmluZworICAgIHZhciB2YXJpYWJsZTIg
PSAwOworfQorPC9zY3JpcHQ+PHNjcmlwdD4KK2Z1bmN0aW9uIGRvU29tZXRoaW5nKCkKK3sKKyAg
ICBzZWFyY2hUZXN0VW5pcXVlU3RyaW5nKCk7CisgICAgLy8gU0VBUkNIVGVzdFVuaXF1ZVN0cmlu
ZygpOworfQorPC9zY3JpcHQ+Cis8bGluayBocmVmPSJzZWFyY2guY3NzIiByZWw9InN0eWxlc2hl
ZXQiIHR5cGU9InRleHQvY3NzIj4KKzxzY3JpcHQ+CitmdW5jdGlvbiBzZWFyY2hUZXN0VW5pcXVl
U3RyaW5nMigpCit7CisgICAgdmFyIHZhcmlhYmxlID0gMDsKKyAgICAvKiBzZWFyY2hUZXN0VW5p
cXVlU3RyaW5nIHR3byBvY2N1cmVuY2VzIG9uIHRoZSBzYW1lIGxpbmUgc2VhcmNoVGVzdFVuaXF1
ZVN0cmluZyAqLyB9IDwvc2NyaXB0PjxzY3JpcHQ+IGZ1bmN0aW9uIGRvU29tZXRoaW5nMigpIHsg
c2VhcmNoVGVzdFVuaXF1ZVN0cmluZygpOworICAgIC8vIFNFQVJDSFRlc3RVbmlxdWVTdHJpbmco
KTsKK30KKzwvc2NyaXB0PgorPC9zY3JpcHQ+Cis8Ym9keT4KKzwvYm9keT4KKzwvaHRtbD4KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3NlYXJj
aC1pbi1jb25jYXRlbmF0ZWQtc2NyaXB0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tY29uY2F0ZW5hdGVkLXNjcmlwdC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFiNDhhNTJiOTUwYzg3MDcxODhjZDUxMDY5MTc0N2Y2NDNj
ZjhkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L3NlYXJjaC9zZWFyY2gtaW4tY29uY2F0ZW5hdGVkLXNjcmlwdC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxNyBAQAorVGVzdHMgY29uY2F0ZW5hdGVkIHNjcmlwdCBzZWFyY2ggaW4gaW5zcGVjdG9y
IGRlYnVnZ2VyIGFnZW50LgorCitCdWcgNjkwMTUgIAorRGVidWdnZXIgd2FzIGVuYWJsZWQuCito
dHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3NlYXJjaC9yZXNvdXJjZXMvc2VhcmNoLWNv
bmNhdGVuYXRlZC5odG1sCitTZWFyY2ggbWF0Y2hlczogCitsaW5lTnVtYmVyOiAzLCBsaW5lOiAn
ZnVuY3Rpb24gc2VhcmNoVGVzdFVuaXF1ZVN0cmluZygpJworbGluZU51bWJlcjogNiwgbGluZTog
JyAgICAvLyBzZWFyY2hUZXN0VW5pcXVlU3RyaW5nIHR3byBvY2N1cmVuY2VzIG9uIHRoZSBzYW1l
IGxpbmUgc2VhcmNoVGVzdFVuaXF1ZVN0cmluZycKK2xpbmVOdW1iZXI6IDEyLCBsaW5lOiAnICAg
IHNlYXJjaFRlc3RVbmlxdWVTdHJpbmcoKTsnCitsaW5lTnVtYmVyOiAxMywgbGluZTogJyAgICAv
LyBTRUFSQ0hUZXN0VW5pcXVlU3RyaW5nKCk7JworbGluZU51bWJlcjogMTgsIGxpbmU6ICdmdW5j
dGlvbiBzZWFyY2hUZXN0VW5pcXVlU3RyaW5nMigpJworbGluZU51bWJlcjogMjEsIGxpbmU6ICcg
ICAgLyogc2VhcmNoVGVzdFVuaXF1ZVN0cmluZyB0d28gb2NjdXJlbmNlcyBvbiB0aGUgc2FtZSBs
aW5lIHNlYXJjaFRlc3RVbmlxdWVTdHJpbmcgKi8gfSAnCitsaW5lTnVtYmVyOiAyMSwgbGluZTog
JyBmdW5jdGlvbiBkb1NvbWV0aGluZzIoKSB7IHNlYXJjaFRlc3RVbmlxdWVTdHJpbmcoKTsnCits
aW5lTnVtYmVyOiAyMiwgbGluZTogJyAgICAvLyBTRUFSQ0hUZXN0VW5pcXVlU3RyaW5nKCk7Jwor
CitEZWJ1Z2dlciB3YXMgZGlzYWJsZWQuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tY29uY2F0ZW5hdGVkLXNjcmlwdC5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3NlYXJjaC1pbi1jb25j
YXRlbmF0ZWQtc2NyaXB0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFhMGEzNzk3NmFkZDk5YWMyMzQxYWE5
ZmNlYTliZGY1YzVkY2I0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tY29uY2F0ZW5hdGVkLXNjcmlwdC5odG1sCkBA
IC0wLDAgKzEsNDcgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9y
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy10ZXN0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJzZWFyY2gtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgLy8gVGhpcyBmaWxlIHNob3VsZCBub3QgbWF0Y2ggc2VhcmNoIHF1ZXJ5
LgorICAgIHZhciB0ZXh0ID0gInNlYXJjaFRlc3QiICsgIlVuaXF1ZVN0cmluZyI7CisgICAgSW5z
cGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChzdGVwMSk7CisKKyAgICBmdW5jdGlvbiBzdGVw
MSgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUmVzb3VyY2VzQXJlRmlu
aXNoZWQoWyJzZWFyY2gtY29uY2F0ZW5hdGVkLmh0bWwiXSwgc3RlcDIpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2hvd1Njcmlw
dFNvdXJjZSgic2VhcmNoLWNvbmNhdGVuYXRlZC5odG1sIiwgc3RlcDMpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHN0ZXAzKCkKKyAgICB7CisgICAgICAgIHZhciB1cmwgPSAiaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2luc3BlY3Rvci9zZWFyY2gvcmVzb3VyY2VzL3NlYXJjaC1jb25jYXRlbmF0ZWQu
aHRtbCI7CisgICAgICAgIHZhciBzY3JpcHRzID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwu
c2NyaXB0c0ZvclVSTCh1cmwpOworICAgICAgICB2YXIgY29udGVudFByb3ZpZGVyID0gbmV3IFdl
Ykluc3BlY3Rvci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVyKHNjcmlwdHMpOwor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCh1cmwpOworICAgICAgICBjb250ZW50UHJv
dmlkZXIuc2VhcmNoSW5Db250ZW50KHRleHQsIHN0ZXA0KTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBzdGVwNChzZWFyY2hNYXRjaGVzKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1w
U2VhcmNoTWF0Y2hlcyhzZWFyY2hNYXRjaGVzKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21w
bGV0ZURlYnVnZ2VyVGVzdCgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8cD5UZXN0cyBjb25jYXRlbmF0ZWQgc2NyaXB0IHNlYXJjaCBpbiBpbnNwZWN0b3IgZGVidWdn
ZXIgYWdlbnQuPC9wPgorPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY5MDE1Ij5CdWcgNjkwMTU8L2E+CisKKzxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2Vh
cmNoLWNvbmNhdGVuYXRlZC5odG1sIiBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gv
c2VhcmNoLWluLXJlc291cmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9zZWFyY2gvc2VhcmNoLWluLXJlc291cmNlLmh0bWwKaW5kZXggMDMyNzRhNmQ1OWRjYzE3OGM4
ODRlNDRmNmM1ZjljZGNmNTI2MjU2Mi4uNjRjMWFiZDM1ZTFhZTQyNDQwMzk0ZjlhYTdkNzU2MTJm
OTI2YTI4YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2Vh
cmNoL3NlYXJjaC1pbi1yZXNvdXJjZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tcmVzb3VyY2UuaHRtbApAQCAtMSwxMyArMSwxNCBA
QAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzLXRlc3QuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9InNlYXJjaC10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiBmdW5jdGlvbiB0
ZXN0KCkKIHsKICAgICAvLyBUaGlzIGZpbGUgc2hvdWxkIG5vdCBtYXRjaCBzZWFyY2ggcXVlcnku
CiAgICAgdmFyIHRleHQgPSAic2VhcmNoVGVzdCIgKyAiVW5pcXVlU3RyaW5nIjsKLSAgICBJbnNw
ZWN0b3JUZXN0LnJ1bkFmdGVyUmVzb3VyY2VzQXJlQ3JlYXRlZChbInNlYXJjaC5qcyJdLCBzdGVw
Mik7CisgICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclJlc291cmNlc0FyZUZpbmlzaGVkKFsic2Vh
cmNoLmpzIl0sIHN0ZXAyKTsKIAogICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLXNj
cmlwdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFy
Y2gvc2VhcmNoLWluLXNjcmlwdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTc1MTdjZTZmODll
OTUwYjdjNDNkNGZiNjI1ZWRiMTZkZDg5OWNmMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tc2NyaXB0LWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0cyBzY3JpcHQgc2VhcmNoIGluIGluc3BlY3RvciBk
ZWJ1Z2dlciBhZ2VudC4KKworQnVnIDY5MDE1ICAKK0RlYnVnZ2VyIHdhcyBlbmFibGVkLgoraHR0
cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9zZWFyY2gvcmVzb3VyY2VzL3NlYXJjaC5qcwor
U2VhcmNoIG1hdGNoZXM6IAorbGluZU51bWJlcjogMCwgbGluZTogJ2Z1bmN0aW9uIHNlYXJjaFRl
c3RVbmlxdWVTdHJpbmcoKScKK2xpbmVOdW1iZXI6IDMsIGxpbmU6ICcgICAgLy8gc2VhcmNoVGVz
dFVuaXF1ZVN0cmluZyB0d28gb2NjdXJlbmNlcyBvbiB0aGUgc2FtZSBsaW5lIHNlYXJjaFRlc3RV
bmlxdWVTdHJpbmcnCitsaW5lTnVtYmVyOiA5LCBsaW5lOiAnICAgIHNlYXJjaFRlc3RVbmlxdWVT
dHJpbmcoKTsnCitsaW5lTnVtYmVyOiAxMCwgbGluZTogJyAgICAvLyBTRUFSQ0hUZXN0VW5pcXVl
U3RyaW5nKCk7JworCitEZWJ1Z2dlciB3YXMgZGlzYWJsZWQuCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tc2NyaXB0Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLXNjcmlw
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk3NWY1NmZiMTEyN2ZiMTZmYmNhY2M5MjIwMmQ2ZGI0OTcxZDMy
MDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9z
ZWFyY2gvc2VhcmNoLWluLXNjcmlwdC5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9k
ZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzZWFyY2gtdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgLy8gVGhpcyBmaWxl
IHNob3VsZCBub3QgbWF0Y2ggc2VhcmNoIHF1ZXJ5LgorICAgIHZhciB0ZXh0ID0gInNlYXJjaFRl
c3QiICsgIlVuaXF1ZVN0cmluZyI7CisgICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVz
dChzdGVwMSk7CisKKyAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgeworICAgICAgICBJbnNwZWN0
b3JUZXN0LnJ1bkFmdGVyUmVzb3VyY2VzQXJlRmluaXNoZWQoWyJzZWFyY2guanMiXSwgc3RlcDIp
OworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICB7CisgICAgICAgIEluc3BlY3Rv
clRlc3Quc2hvd1NjcmlwdFNvdXJjZSgic2VhcmNoLmpzIiwgc3RlcDMpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHN0ZXAzKCkKKyAgICB7CisgICAgICAgIHZhciBzY3JpcHRzID0gV2ViSW5zcGVj
dG9yLmRlYnVnZ2VyTW9kZWwuc2NyaXB0c0ZvclVSTCgiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2lu
c3BlY3Rvci9zZWFyY2gvcmVzb3VyY2VzL3NlYXJjaC5qcyIpOworICAgICAgICB2YXIgc2NyaXB0
ID0gc2NyaXB0c1swXTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoc2NyaXB0LnNv
dXJjZVVSTCk7CisgICAgICAgIHNjcmlwdC5zZWFyY2hJbkNvbnRlbnQodGV4dCwgc3RlcDQpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXA0KHNlYXJjaE1hdGNoZXMpCisgICAgeworICAgICAg
ICBJbnNwZWN0b3JUZXN0LmR1bXBTZWFyY2hNYXRjaGVzKHNlYXJjaE1hdGNoZXMpOworICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVidWdnZXJUZXN0KCk7CisgICAgfQorfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRlc3RzIHNjcmlwdCBzZWFyY2ggaW4gaW5zcGVjdG9y
IGRlYnVnZ2VyIGFnZW50LjwvcD4KKzxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02OTAxNSI+QnVnIDY5MDE1PC9hPgorCis8aWZyYW1lIHNyYz0icmVzb3Vy
Y2VzL3NlYXJjaC5odG1sIiBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNo
LXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNo
LXRlc3QuanMKaW5kZXggYjc5ZmRmMzBiNDhkN2E5MzdhOTFkMjg5NjU5YjAwMjNjN2VlYjI0Zi4u
NjUxYjhkZjE4MWMzMWIzOGE1ZDg2ZDA5N2EzZmM3MjNhNjZmNTBhYyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3NlYXJjaC10ZXN0LmpzCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtdGVzdC5qcwpA
QCAtMTYsNTAgKzE2LDQgQEAgSW5zcGVjdG9yVGVzdC5kdW1wU2VhcmNoTWF0Y2hlcyA9IGZ1bmN0
aW9uKHNlYXJjaE1hdGNoZXMpCiAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwogfTsK
IAotSW5zcGVjdG9yVGVzdC5ydW5BZnRlclJlc291cmNlc0FyZUNyZWF0ZWQgPSBmdW5jdGlvbihy
ZXNvdXJjZVVSTHMsIGNhbGxiYWNrKQotewotICAgIEluc3BlY3RvclRlc3QuX3J1bkFmdGVyUmVz
b3VyY2VzQXJlQ3JlYXRlZChyZXNvdXJjZVVSTHMua2V5U2V0KCksIGNhbGxiYWNrKTsKLX0KLQot
SW5zcGVjdG9yVGVzdC5fcnVuQWZ0ZXJSZXNvdXJjZXNBcmVDcmVhdGVkID0gZnVuY3Rpb24ocmVz
b3VyY2VVUkxzLCBjYWxsYmFjaykKLXsKLSAgICBmdW5jdGlvbiBjaGVja1Jlc291cmNlKHJlc291
cmNlKQotICAgIHsKLSAgICAgICAgZm9yICh2YXIgdXJsIGluIHJlc291cmNlVVJMcykgewotICAg
ICAgICAgICAgaWYgKHJlc291cmNlLnVybC5pbmRleE9mKHVybCkgIT09IC0xKQotICAgICAgICAg
ICAgICAgIGRlbGV0ZSByZXNvdXJjZVVSTHNbdXJsXTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IGZ1bmN0aW9uIG1heWJlQ2FsbGJhY2soKQotICAgIHsKLSAgICAgICAgaWYgKCFPYmplY3Qua2V5
cyhyZXNvdXJjZVVSTHMpLmxlbmd0aCkgewotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gYWRk
U25pZmZlcihyZXNvdXJjZSkKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZl
cihXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLCAiX2JpbmRSZXNvdXJj
ZVVSTCIsIG9uUmVzb3VyY2VCaW5kLmJpbmQodGhpcykpOwotICAgIH0KLQotICAgIGZ1bmN0aW9u
IG9uUmVzb3VyY2VCaW5kKHJlc291cmNlKQotICAgIHsKLSAgICAgICAgY2hlY2tSZXNvdXJjZShy
ZXNvdXJjZSk7Ci0gICAgICAgIGlmICghbWF5YmVDYWxsYmFjaygpKQotICAgICAgICAgICAgYWRk
U25pZmZlcigpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHZpc2l0KHJlc291cmNlKQotICAgIHsK
LSAgICAgICAgY2hlY2tSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgIHJldHVybiBtYXliZUNh
bGxiYWNrKCk7Ci0gICAgfQotCi0gICAgdmFyIHN1Y2NlZWRlZCA9IFdlYkluc3BlY3Rvci5yZXNv
dXJjZVRyZWVNb2RlbC5mb3JBbGxSZXNvdXJjZXModmlzaXQpOwotICAgIGlmICghc3VjY2VlZGVk
KQotICAgICAgICBhZGRTbmlmZmVyKCk7Ci19Ci0KIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvY29udGVudC1wcm92aWRlcnMuaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9jb250ZW50LXByb3ZpZGVycy5odG1sCmluZGV4IDJmMTVmMzQ5
MDY1MDA4NTYzMDY0ZjA1MDRkNmVkMmVhZjIxN2JkZGMuLjE4Y2FlNWNjZGVmOGM4ZjFmNjk5MDQ5
ODg1YTdjNDAwOTllOGY0NWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9jb250ZW50LXByb3ZpZGVycy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9jb250ZW50LXByb3ZpZGVycy5odG1sCkBAIC0xNSw3ICsxNSw5IEBAIGZ1bmN0aW9u
IHRlc3QoKQogICAgICAgICAgICAgICAgIGNhbGxiYWNrKHNvdXJjZSk7CiAgICAgICAgICAgICB9
LAogICAgICAgICAgICAgZ2V0IGxpbmVPZmZzZXQoKSB7IHJldHVybiByYW5nZVswXTsgfSwKLSAg
ICAgICAgICAgIGdldCBjb2x1bW5PZmZzZXQoKSB7IHJldHVybiByYW5nZVsxXTsgfQorICAgICAg
ICAgICAgZ2V0IGNvbHVtbk9mZnNldCgpIHsgcmV0dXJuIHJhbmdlWzFdOyB9LAorICAgICAgICAg
ICAgZ2V0IGVuZExpbmUoKSB7IHJldHVybiByYW5nZVsyXTsgfSwKKyAgICAgICAgICAgIGdldCBl
bmRDb2x1bW4oKSB7IHJldHVybiByYW5nZVszXTsgfQogICAgICAgICB9OwogICAgIH0KIApAQCAt
MzcsMTAgKzM5LDEwIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBmdW5jdGlvbiB0ZXN0Q29u
Y2F0ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92aWRlcihuZXh0KQogICAgICAgICB7CiAgICAgICAg
ICAgICB2YXIgc2NyaXB0cyA9IFtdOwotICAgICAgICAgICAgc2NyaXB0cy5wdXNoKGNyZWF0ZU1v
Y2tTY3JpcHQoIjEiLCAiXG5mdW5jdGlvbiBiYXooKVxue1xuICByZXR1cm4gMDtcbn1cbiIsIFsz
LCAyMF0pKTsKLSAgICAgICAgICAgIHNjcmlwdHMucHVzaChjcmVhdGVNb2NrU2NyaXB0KCIyIiwg
ImZ1bmN0aW9uIGZvbygpIHsgcmV0dXJuIDA7IH0iLCBbMCwgMTBdKSk7Ci0gICAgICAgICAgICBz
Y3JpcHRzLnB1c2goY3JlYXRlTW9ja1NjcmlwdCgiMyIsICJmdW5jdGlvbiBiYXIoKSB7IHJldHVy
biAwOyB9IiwgWzEsIDcwXSkpOwotICAgICAgICAgICAgc2NyaXB0cy5wdXNoKGNyZWF0ZU1vY2tT
Y3JpcHQoIjQiLCAidGhpcyBzaG91bGQgbm90IGFwcGVhciBpbiBkaXNwbGF5ZWQgY29udGVudCIs
IFswLCAyMF0pKTsKKyAgICAgICAgICAgIHNjcmlwdHMucHVzaChjcmVhdGVNb2NrU2NyaXB0KCIx
IiwgIlxuZnVuY3Rpb24gYmF6KClcbntcbiAgcmV0dXJuIDA7XG59XG4iLCBbMywgMjAsIDcsIDBd
KSk7CisgICAgICAgICAgICBzY3JpcHRzLnB1c2goY3JlYXRlTW9ja1NjcmlwdCgiMiIsICJmdW5j
dGlvbiBmb28oKSB7IHJldHVybiAwOyB9IiwgWzAsIDEwLCAwLCAzOF0pKTsKKyAgICAgICAgICAg
IHNjcmlwdHMucHVzaChjcmVhdGVNb2NrU2NyaXB0KCIzIiwgImZ1bmN0aW9uIGJhcigpIHsgcmV0
dXJuIDA7IH0iLCBbMSwgNzAsIDEsIDk4XSkpOworICAgICAgICAgICAgc2NyaXB0cy5wdXNoKGNy
ZWF0ZU1vY2tTY3JpcHQoIjQiLCAidGhpcyBzaG91bGQgbm90IGFwcGVhciBpbiBkaXNwbGF5ZWQg
Y29udGVudCIsIFswLCAyMCwgMCwgNjNdKSk7CiAgICAgICAgICAgICB2YXIgY29udGVudFByb3Zp
ZGVyID0gbmV3IFdlYkluc3BlY3Rvci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVy
KHNjcmlwdHMpOwogICAgICAgICAgICAgZnVuY3Rpb24gZGlkUmVxdWVzdENvbnRlbnQobWltZVR5
cGUsIGNvbnRlbnQpCiAgICAgICAgICAgICB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCA0
NjQzNWNiMmU2OWFiNjU0ZTNhYmViOWE0OGQ4NzI1OTU4MjFlYWU0Li44NTY4Y2EyNzNhNWI2NjJh
NGZjOGQzNjc3MzA4NGFmNWU5MjQzN2YwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTIz
ODUsOSArMjM4NSwzIEBAIGh0dHAvdGVzdHMvbXVsdGlwYXJ0L3N0b3AtY3Jhc2guaHRtbAogIyBP
bmUgdGVzdCBmYWlsZWQgYWZ0ZXIgcjk2MjYwCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02OTI1NwogaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtZGlzYWJsZS10aGVu
LWNoYW5nZS5odG1sCi0KLSMgW1F0XSBSRUdSRVNTSU9OKHI5NTUyNik6IEl0IG1hZGUgMyBpbnNw
ZWN0b3IgdGVzdHMgZmFpbAotIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjkyNjUKLWh0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tY29uY2F0ZW5h
dGVkLXNjcmlwdC5odG1sCi1odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLXNj
cmlwdC5odG1sCi1pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0LWZvcm1hdHRlci5odG1sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggM2Y5YzdkMGFlYmMzOWM5MDY3Mzk1NmQwZTRhNmFkOTlmYTRlOTFmNy4uNjYzNmYz
YTg4ODJlYTc2ODQwYzY0Nzk5NjhhZjVmNDU5ZWVjNjJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMyIEBACisyMDExLTEwLTA0ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBzdXBwb3J0IGZvciBzZWFyY2ggaW4gc2Ny
aXB0IGNvbnRlbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02OTAxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3RzOiBodHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLWNvbmNhdGVu
YXRlZC1zY3JpcHQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2Vh
cmNoL3NlYXJjaC1pbi1zY3JpcHQuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJjaEluQ29udGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRTY3JpcHRT
b3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZW50UHJvdmlkZXJzLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRQcm92aWRlci5wcm90b3R5cGUuc2VhcmNoSW5D
b250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVu
dFByb3ZpZGVyLnByb3RvdHlwZS5nZXQgX3NvcnRlZFNjcmlwdHMudmFyKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZS5n
ZXQgX3NvcnRlZFNjcmlwdHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbmNhdGVuYXRlZFNj
cmlwdHNDb250ZW50UHJvdmlkZXIucHJvdG90eXBlLnJlcXVlc3RDb250ZW50KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVyLnByb3RvdHlw
ZS5zZWFyY2hJbkNvbnRlbnQubWF5YmVDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29uY2F0ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92aWRlci5wcm90b3R5cGUuc2VhcmNoSW5Db250
ZW50LnNlYXJjaENhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25jYXRlbmF0ZWRT
Y3JpcHRzQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZS5zZWFyY2hJbkNvbnRlbnQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvbmNhdGVuYXRlZFNjcmlwdHNDb250ZW50UHJvdmlkZXIucHJvdG90
eXBlLl9jb25jYXRlbmF0ZVNjcmlwdHNDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1NjcmlwdC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBl
LnJlcXVlc3RTb3VyY2UuZGlkR2V0U2NyaXB0U291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TY3JpcHQucHJvdG90eXBlLnJlcXVlc3RTb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNjcmlwdC5wcm90b3R5cGUuc2VhcmNoSW5Db250ZW50KToKKwogMjAxMS0xMC0wNCAgS2VuaWNo
aSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBJ
bXBsZW1lbnQgZm9udCBzaGFwaW5nIHdpdGggZm9udC1mZWF0dXJlLXNldHRpbmdzIG9uIFdpbmRv
d3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBjYWUwNjc5MmZm
NjUwYTg2OGFlMTAwMWEzNjA2ODZlOThkMTNiNWE4Li5kMTViYTUzN2Y4YWU2NWViNzNhOTNkNmFm
MzUzMTRiM2FkMmRlNzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29u
CkBAIC0xNzY1LDYgKzE3NjUsMTcgQEAKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
UmVzdW1lcyBKYXZhU2NyaXB0IGV4ZWN1dGlvbi4iCiAgICAgICAgICAgICB9LAogICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogInNlYXJjaEluQ29udGVudCIsCisgICAgICAg
ICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
c2NyaXB0SWQiLCAiJHJlZiI6ICJTY3JpcHRJZCIsICJkZXNjcmlwdGlvbiI6ICJJZCBvZiB0aGUg
c2NyaXB0IHRvIHNlYXJjaCBpbi4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
cXVlcnkiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiU3RyaW5nIHRvIHNlYXJj
aCBmb3IuIiAgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgInJldHVybnMi
OiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVzdWx0IiwgInR5cGUiOiAiYXJy
YXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIlBhZ2UuU2VhcmNoTWF0Y2giIH0sICJkZXNjcmlwdGlv
biI6ICJMaXN0IG9mIHNlYXJjaCBtYXRjaGVzLiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNlYXJjaGVzIGZvciBnaXZlbiBzdHJpbmcgaW4g
c2NyaXB0IGNvbnRlbnQuIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAibmFtZSI6ICJzZXRTY3JpcHRTb3VyY2UiLAogICAgICAgICAgICAgICAgICJwYXJh
bWV0ZXJzIjogWwogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNjcmlwdElkIiwgIiRy
ZWYiOiAiU2NyaXB0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWQgb2YgdGhlIHNjcmlwdCB0byBlZGl0
LiIgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmNwcAppbmRleCAwYjIxMjBkYmE4MGFlN2YyOTJlMzI4ZmVjNTc0M2IzMzE5ZTgxMjlk
Li4zZDcxMjBhNTU4NTY2OGM4YmRjYmUwZTE2YTdjOTRiYzJkMWI0ZmI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIgogCiAjaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCisjaW5jbHVk
ZSAiQ29udGVudFNlYXJjaFV0aWxzLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNp
bmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9u
dGVuZC5oIgpAQCAtMzIwLDYgKzMyMSwxNSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IHNjcmlwdFRvSW5zcGVjdG9yT2JqZWN0KFNjcmlwdE9iamVjdCBzY3JpcHRPYgogICAg
IHJldHVybiB2YWx1ZS0+YXNPYmplY3QoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHNj
cmlwdElkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiByZXN1
bHRzKQoreworICAgIFNjcmlwdHNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zY3JpcHRzLmZpbmQoc2Ny
aXB0SWQpOworICAgIGlmIChpdCAhPSBtX3NjcmlwdHMuZW5kKCkpCisgICAgICAgICpyZXN1bHRz
ID0gQ29udGVudFNlYXJjaFV0aWxzOjpzZWFyY2hJblRleHRCeUxpbmVzKHF1ZXJ5LCBpdC0+c2Vj
b25kLnNvdXJjZSk7CisgICAgZWxzZQorICAgICAgICAqZXJyb3IgPSAiTm8gc2NyaXB0IGZvciBp
ZDogIiArIHNjcmlwdElkOworfQorCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFNj
cmlwdFNvdXJjZShFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIGNv
bnN0IFN0cmluZyYgbmV3Q29udGVudCwgY29uc3QgYm9vbCogY29uc3QgcHJldmlldywgUmVmUHRy
PEluc3BlY3RvckFycmF5PiogbmV3Q2FsbEZyYW1lcywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4q
IHJlc3VsdCkKIHsKICAgICBib29sIHByZXZpZXdPbmx5ID0gcHJldmlldyAmJiAqcHJldmlldzsK
QEAgLTMzMiw5ICszNDIsMTMgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRTY3Jp
cHRTb3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHMKICAgICAgICAgKnJl
c3VsdCA9IG9iamVjdDsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRTY3Jp
cHRTb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBTdHJpbmcqIHNj
cmlwdFNvdXJjZSkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0U2NyaXB0U291cmNl
KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgU3RyaW5nKiBzY3Jp
cHRTb3VyY2UpCiB7Ci0gICAgKnNjcmlwdFNvdXJjZSA9IG1fc2NyaXB0cy5nZXQoc2NyaXB0SWQp
LnNvdXJjZTsKKyAgICBTY3JpcHRzTWFwOjppdGVyYXRvciBpdCA9IG1fc2NyaXB0cy5maW5kKHNj
cmlwdElkKTsKKyAgICBpZiAoaXQgIT0gbV9zY3JpcHRzLmVuZCgpKQorICAgICAgICAqc2NyaXB0
U291cmNlID0gaXQtPnNlY29uZC5zb3VyY2U7CisgICAgZWxzZQorICAgICAgICAqZXJyb3IgPSAi
Tm8gc2NyaXB0IGZvciBpZDogIiArIHNjcmlwdElkOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJiBicmVh
a1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAppbmRleCAxODVhYWI4
MmVlZDUwZjJkNzRhY2E1NWE0NGVkZGU2YjlmMTNhNTYzLi43M2IyNzU0ZTI4YTMxN2Q5ZTZhOWQz
YTRkZTM3NDc2N2QxMGY4YzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTgxLDYgKzgxLDcgQEAgcHVibGljOgogICAgIHZv
aWQgcmVtb3ZlQnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgYnJlYWtwb2lu
dElkKTsKICAgICB2b2lkIGNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyosIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBsb2NhdGlvbik7CiAKKyAgICB2b2lkIHNlYXJjaEluQ29udGVu
dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgcXVl
cnksIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qKTsKICAgICB2b2lkIHNldFNjcmlwdFNvdXJjZShF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgbmV3Q29u
dGVudCwgY29uc3QgYm9vbCogY29uc3QgcHJldmlldywgUmVmUHRyPEluc3BlY3RvckFycmF5Piog
bmV3Q2FsbEZyYW1lcywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCk7CiAgICAgdm9p
ZCBnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBT
dHJpbmcqIHNjcmlwdFNvdXJjZSk7CiAgICAgdm9pZCBzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVt
ZW50KGNvbnN0IFN0cmluZyYgYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q29udGVudFByb3ZpZGVycy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q29udGVudFByb3ZpZGVycy5qcwppbmRleCBkODA0OGZlZjBhMTJhNTMyZTA2MGU3ZjY1ZjNkYmZh
ZWI5YWE1M2RlLi5kMDE3MjhhZDM4MWY4OWYyYmQ0MmYwMTkzZTRmYTRjZGFiNGI1YmY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnRlbnRQcm92aWRl
cnMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZW50UHJv
dmlkZXJzLmpzCkBAIC01MCw3ICs1MCw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50UHJv
dmlkZXIucHJvdG90eXBlID0gewogCiAgICAgc2VhcmNoSW5Db250ZW50OiBmdW5jdGlvbihxdWVy
eSwgY2FsbGJhY2spCiAgICAgewotICAgICAgICBjYWxsYmFjayhbXSk7CisgICAgICAgIHRoaXMu
X3NjcmlwdC5zZWFyY2hJbkNvbnRlbnQocXVlcnksIGNhbGxiYWNrKTsKICAgICB9CiB9CiAKQEAg
LTY3LDY1ICs2NywxMTAgQEAgV2ViSW5zcGVjdG9yLkNvbmNhdGVuYXRlZFNjcmlwdHNDb250ZW50
UHJvdmlkZXIgPSBmdW5jdGlvbihzY3JpcHRzKQogfTsKIAogV2ViSW5zcGVjdG9yLkNvbmNhdGVu
YXRlZFNjcmlwdHNDb250ZW50UHJvdmlkZXIucHJvdG90eXBlID0gewotICAgcmVxdWVzdENvbnRl
bnQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQotICAgewotICAgICAgIHZhciBzY3JpcHRzID0gdGhpcy5f
c2NyaXB0cy5zbGljZSgpOwotICAgICAgIHNjcmlwdHMuc29ydChmdW5jdGlvbih4LCB5KSB7IHJl
dHVybiB4LmxpbmVPZmZzZXQgLSB5LmxpbmVPZmZzZXQgfHwgeC5jb2x1bW5PZmZzZXQgLSB5LmNv
bHVtbk9mZnNldDsgfSk7Ci0gICAgICAgdmFyIHNvdXJjZXMgPSBbXTsKLSAgICAgICBmdW5jdGlv
biBkaWRSZXF1ZXN0U291cmNlKHNvdXJjZSkKLSAgICAgICB7Ci0gICAgICAgICAgIHNvdXJjZXMu
cHVzaChzb3VyY2UpOwotICAgICAgICAgICBpZiAoc291cmNlcy5sZW5ndGggPT0gc2NyaXB0cy5s
ZW5ndGgpCi0gICAgICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9taW1lVHlwZSwgdGhpcy5fY29u
Y2F0ZW5hdGVTY3JpcHRzQ29udGVudChzY3JpcHRzLCBzb3VyY2VzKSk7Ci0gICAgICAgfQotICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAg
c2NyaXB0c1tpXS5yZXF1ZXN0U291cmNlKGRpZFJlcXVlc3RTb3VyY2UuYmluZCh0aGlzKSk7Ci0g
ICB9LAorICAgIGdldCBfc29ydGVkU2NyaXB0cygpCisgICAgeworICAgICAgICBpZiAoIXRoaXMu
X3NvcnRlZFNjcmlwdHNBcnJheSkgeworICAgICAgICAgICAgdGhpcy5fc29ydGVkU2NyaXB0c0Fy
cmF5ID0gW107CisgICAgICAgICAgICB2YXIgc2NyaXB0cyA9IHRoaXMuX3NjcmlwdHMuc2xpY2Uo
KTsKKyAgICAgICAgICAgIHNjcmlwdHMuc29ydChmdW5jdGlvbih4LCB5KSB7IHJldHVybiB4Lmxp
bmVPZmZzZXQgLSB5LmxpbmVPZmZzZXQgfHwgeC5jb2x1bW5PZmZzZXQgLSB5LmNvbHVtbk9mZnNl
dDsgfSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBsaW5lTnVtYmVyID0gMDsKKyAg
ICAgICAgICAgIHZhciBjb2x1bW5OdW1iZXIgPSAwOworCisgICAgICAgICAgICB2YXIgc2NyaXB0
T3BlblRhZ0xlbmd0aCA9ICI8c2NyaXB0PiIubGVuZ3RoOworICAgICAgICAgICAgdmFyIHNjcmlw
dENsb3NlVGFnTGVuZ3RoID0gIjwvc2NyaXB0PiIubGVuZ3RoOworICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgY29s
dW1uTnVtYmVyICs9IHNjcmlwdE9wZW5UYWdMZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgIGlmIChsaW5lTnVtYmVyID4gc2NyaXB0c1tpXS5saW5lT2Zmc2V0IHx8
IChsaW5lTnVtYmVyID09PSBzY3JpcHRzW2ldLmxpbmVPZmZzZXQgJiYgY29sdW1uTnVtYmVyID4g
c2NyaXB0c1tpXS5jb2x1bW5PZmZzZXQpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsg
CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXMuX3NvcnRlZFNjcmlw
dHNBcnJheS5wdXNoKHNjcmlwdHNbaV0pOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIGxpbmVOdW1iZXIgPSBzY3JpcHRzW2ldLmVuZExpbmU7CisgICAgICAgICAgICAgICAgY29s
dW1uTnVtYmVyID0gc2NyaXB0c1tpXS5lbmRDb2x1bW47CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgY29sdW1uTnVtYmVyICs9IHNjcmlwdENsb3NlVGFnTGVuZ3RoOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzLl9zb3J0ZWRTY3JpcHRzQXJy
YXk7CisgICAgfSwKKworICAgIHJlcXVlc3RDb250ZW50OiBmdW5jdGlvbihjYWxsYmFjaykKKyAg
ICB7CisgICAgICAgIHZhciBzY3JpcHRzID0gdGhpcy5fc29ydGVkU2NyaXB0czsKKyAgICAgICAg
dmFyIHNvdXJjZXMgPSBbXTsKKyAgICAgICAgZnVuY3Rpb24gZGlkUmVxdWVzdFNvdXJjZShzb3Vy
Y2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNvdXJjZXMucHVzaChzb3VyY2UpOworICAgICAg
ICAgICAgaWYgKHNvdXJjZXMubGVuZ3RoID09IHNjcmlwdHMubGVuZ3RoKQorICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKHRoaXMuX21pbWVUeXBlLCB0aGlzLl9jb25jYXRlbmF0ZVNjcmlwdHNDb250
ZW50KHNjcmlwdHMsIHNvdXJjZXMpKTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHNjcmlwdHMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBzY3JpcHRzW2ldLnJlcXVl
c3RTb3VyY2UoZGlkUmVxdWVzdFNvdXJjZS5iaW5kKHRoaXMpKTsKKyAgICB9LAogCiAgICAgc2Vh
cmNoSW5Db250ZW50OiBmdW5jdGlvbihxdWVyeSwgY2FsbGJhY2spCiAgICAgewotICAgICAgICBj
YWxsYmFjayhbXSk7CisgICAgICAgIHZhciByZXN1bHRzID0ge307CisgICAgICAgIHZhciBzY3Jp
cHRzID0gdGhpcy5fc29ydGVkU2NyaXB0czsKKyAgICAgICAgdmFyIHNjcmlwdHNMZWZ0ID0gc2Ny
aXB0cy5sZW5ndGg7CisKKyAgICAgICAgZnVuY3Rpb24gbWF5YmVDYWxsYmFjaygpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICghc2NyaXB0c0xlZnQpIHsKKyAgICAgICAgICAgICAgICB2YXIg
cmVzdWx0ID0gW107CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY3JpcHRz
Lmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0
KHJlc3VsdHNbc2NyaXB0c1tpXS5zY3JpcHRJZF0pOworICAgICAgICAgICAgICAgIGNhbGxiYWNr
KHJlc3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
ZWFyY2hDYWxsYmFjayhzY3JpcHQsIHNlYXJjaE1hdGNoZXMpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJlc3VsdHNbc2NyaXB0LnNjcmlwdElkXSA9IFtdOworICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBzZWFyY2hNYXRjaGVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAg
dmFyIHNlYXJjaE1hdGNoID0ge307CisgICAgICAgICAgICAgICAgc2VhcmNoTWF0Y2gubGluZU51
bWJlciA9IHNlYXJjaE1hdGNoZXNbaV0ubGluZU51bWJlciArIHNjcmlwdC5saW5lT2Zmc2V0Owor
ICAgICAgICAgICAgICAgIHNlYXJjaE1hdGNoLmxpbmVDb250ZW50ID0gc2VhcmNoTWF0Y2hlc1tp
XS5saW5lQ29udGVudDsKKyAgICAgICAgICAgICAgICByZXN1bHRzW3NjcmlwdC5zY3JpcHRJZF0u
cHVzaChzZWFyY2hNYXRjaCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzY3JpcHRzTGVm
dC0tOworICAgICAgICAgICAgbWF5YmVDYWxsYmFjay5jYWxsKHRoaXMpOworICAgICAgICB9CisK
KyAgICAgICAgbWF5YmVDYWxsYmFjaygpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNj
cmlwdHMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBzY3JpcHRzW2ldLnNlYXJjaEluQ29udGVu
dChxdWVyeSwgc2VhcmNoQ2FsbGJhY2suYmluZCh0aGlzLCBzY3JpcHRzW2ldKSk7CiAgICAgfSwK
IAotICAgX2NvbmNhdGVuYXRlU2NyaXB0c0NvbnRlbnQ6IGZ1bmN0aW9uKHNjcmlwdHMsIHNvdXJj
ZXMpCi0gICB7Ci0gICAgICAgdmFyIGNvbnRlbnQgPSAiIjsKLSAgICAgICB2YXIgbGluZU51bWJl
ciA9IDA7Ci0gICAgICAgdmFyIGNvbHVtbk51bWJlciA9IDA7Ci0KLSAgICAgICBmdW5jdGlvbiBh
cHBlbmRDaHVuayhjaHVuaykKLSAgICAgICB7Ci0gICAgICAgICAgIGNvbnRlbnQgKz0gY2h1bms7
Ci0gICAgICAgICAgIHZhciBsaW5lRW5kaW5ncyA9IGNodW5rLmxpbmVFbmRpbmdzKCk7Ci0gICAg
ICAgICAgIHZhciBsaW5lQ291bnQgPSBsaW5lRW5kaW5ncy5sZW5ndGg7Ci0gICAgICAgICAgIGlm
IChsaW5lQ291bnQgPT09IDEpCi0gICAgICAgICAgICAgICBjb2x1bW5OdW1iZXIgKz0gY2h1bmsu
bGVuZ3RoOwotICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgIGxpbmVOdW1iZXIgKz0g
bGluZUNvdW50IC0gMTsKLSAgICAgICAgICAgICAgIGNvbHVtbk51bWJlciA9IGxpbmVFbmRpbmdz
W2xpbmVDb3VudCAtIDFdIC0gbGluZUVuZGluZ3NbbGluZUNvdW50IC0gMl0gLSAxOwotICAgICAg
ICAgICB9Ci0gICAgICAgfQotCi0gICAgICAgdmFyIHNjcmlwdE9wZW5UYWcgPSAiPHNjcmlwdD4i
OwotICAgICAgIHZhciBzY3JpcHRDbG9zZVRhZyA9ICI8L3NjcmlwdD4iOwotICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICBpZiAobGlu
ZU51bWJlciA+IHNjcmlwdHNbaV0ubGluZU9mZnNldCB8fCAobGluZU51bWJlciA9PT0gc2NyaXB0
c1tpXS5saW5lT2Zmc2V0ICYmIGNvbHVtbk51bWJlciA+IHNjcmlwdHNbaV0uY29sdW1uT2Zmc2V0
IC0gc2NyaXB0T3BlblRhZy5sZW5ndGgpKQotICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgICAgLy8gRmlsbCB0aGUgZ2FwIHdpdGggd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgotICAg
ICAgICAgICB3aGlsZSAobGluZU51bWJlciA8IHNjcmlwdHNbaV0ubGluZU9mZnNldCkKLSAgICAg
ICAgICAgICAgIGFwcGVuZENodW5rKCJcbiIpOwotICAgICAgICAgICB3aGlsZSAoY29sdW1uTnVt
YmVyIDwgc2NyaXB0c1tpXS5jb2x1bW5PZmZzZXQgLSBzY3JpcHRPcGVuVGFnLmxlbmd0aCkKLSAg
ICAgICAgICAgICAgIGFwcGVuZENodW5rKCIgIik7Ci0KLSAgICAgICAgICAgLy8gQWRkIHNjcmlw
dCB0YWcuCi0gICAgICAgICAgIGFwcGVuZENodW5rKHNjcmlwdE9wZW5UYWcpOwotICAgICAgICAg
ICBhcHBlbmRDaHVuayhzb3VyY2VzW2ldKTsKLSAgICAgICAgICAgYXBwZW5kQ2h1bmsoc2NyaXB0
Q2xvc2VUYWcpOwotICAgICAgIH0KLQotICAgICAgIHJldHVybiBjb250ZW50OwotICAgfQorICAg
IF9jb25jYXRlbmF0ZVNjcmlwdHNDb250ZW50OiBmdW5jdGlvbihzY3JpcHRzLCBzb3VyY2VzKQor
ICAgIHsKKyAgICAgICAgdmFyIGNvbnRlbnQgPSAiIjsKKyAgICAgICAgdmFyIGxpbmVOdW1iZXIg
PSAwOworICAgICAgICB2YXIgY29sdW1uTnVtYmVyID0gMDsKKworICAgICAgICB2YXIgc2NyaXB0
T3BlblRhZyA9ICI8c2NyaXB0PiI7CisgICAgICAgIHZhciBzY3JpcHRDbG9zZVRhZyA9ICI8L3Nj
cmlwdD4iOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgICAgIC8vIEZpbGwgdGhlIGdhcCB3aXRoIHdoaXRlc3BhY2UgY2hhcmFjdGVy
cy4KKyAgICAgICAgICAgIGZvciAodmFyIG5ld0xpbmVzQ291bnQgPSBzY3JpcHRzW2ldLmxpbmVP
ZmZzZXQgLSBsaW5lTnVtYmVyOyBuZXdMaW5lc0NvdW50ID4gMDsgLS1uZXdMaW5lc0NvdW50KSB7
CisgICAgICAgICAgICAgICAgY29sdW1uTnVtYmVyID0gMDsKKyAgICAgICAgICAgICAgICBjb250
ZW50ICs9ICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKHZhciBzcGFjZXND
b3VudCA9IHNjcmlwdHNbaV0uY29sdW1uT2Zmc2V0IC0gY29sdW1uTnVtYmVyIC0gc2NyaXB0T3Bl
blRhZy5sZW5ndGg7IHNwYWNlc0NvdW50ID4gMDsgLS1zcGFjZXNDb3VudCkKKyAgICAgICAgICAg
ICAgICBjb250ZW50ICs9ICIgIjsKKworICAgICAgICAgICAgLy8gQWRkIHNjcmlwdCB0YWcuCisg
ICAgICAgICAgICBjb250ZW50ICs9IHNjcmlwdE9wZW5UYWc7CisgICAgICAgICAgICBjb250ZW50
ICs9IHNvdXJjZXNbaV07CisgICAgICAgICAgICBjb250ZW50ICs9IHNjcmlwdENsb3NlVGFnOwor
ICAgICAgICAgICAgbGluZU51bWJlciA9IHNjcmlwdHNbaV0uZW5kTGluZTsKKyAgICAgICAgICAg
IGNvbHVtbk51bWJlciA9IHNjcmlwdHNbaV0uZW5kQ29sdW1uICsgc2NyaXB0Q2xvc2VUYWcubGVu
Z3RoOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNvbnRlbnQ7CisgICAgfQogfQogCiBX
ZWJJbnNwZWN0b3IuQ29uY2F0ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92aWRlci5wcm90b3R5cGUu
X19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRQcm92aWRlci5wcm90b3R5cGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzCmluZGV4IGIzNmUwN2E0
ZTI5YzQ3NDVlNjJjYTRjNmIwMDYxNjNkYzE4MGM2OGYuLmFiMGZhNTIzZDUzMDZhMWUzYzFkYzc1
N2E1ZDAyYzJmM2YwYmIxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU2NyaXB0LmpzCkBAIC00OSwxMiArNDksMjQgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdC5wcm90
b3R5cGUgPSB7CiAKICAgICAgICAgZnVuY3Rpb24gZGlkR2V0U2NyaXB0U291cmNlKGVycm9yLCBz
b3VyY2UpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuX3NvdXJjZSA9IHNvdXJjZTsKKyAg
ICAgICAgICAgIHRoaXMuX3NvdXJjZSA9IHNvdXJjZSB8fCAiIjsKICAgICAgICAgICAgIGNhbGxi
YWNrKHRoaXMuX3NvdXJjZSk7CiAgICAgICAgIH0KICAgICAgICAgRGVidWdnZXJBZ2VudC5nZXRT
Y3JpcHRTb3VyY2UodGhpcy5zY3JpcHRJZCwgZGlkR2V0U2NyaXB0U291cmNlLmJpbmQodGhpcykp
OwogICAgIH0sCiAKKyAgICBzZWFyY2hJbkNvbnRlbnQ6IGZ1bmN0aW9uKHF1ZXJ5LCBjYWxsYmFj
aykKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIGlubmVyQ2FsbGJhY2soZXJyb3IsIHNlYXJjaE1h
dGNoZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICAg
ICBjb25zb2xlLmVycm9yKGVycm9yKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHNlYXJjaE1hdGNo
ZXMgfHwgW10pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBEZWJ1Z2dlckFnZW50LnNl
YXJjaEluQ29udGVudCh0aGlzLnNjcmlwdElkLCBxdWVyeSwgaW5uZXJDYWxsYmFjay5iaW5kKHRo
aXMpKTsKKyAgICB9LAorICAgIAogICAgIGVkaXRTb3VyY2U6IGZ1bmN0aW9uKG5ld1NvdXJjZSwg
Y2FsbGJhY2spCiAgICAgewogICAgICAgICBmdW5jdGlvbiBkaWRFZGl0U2NyaXB0U291cmNlKGVy
cm9yLCBjYWxsRnJhbWVzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109620</attachid>
            <date>2011-10-04 07:25:29 -0700</date>
            <delta_ts>2011-10-04 09:55:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69015-20111004182527.patch</filename>
            <type>text/plain</type>
            <size>30389</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY1ODQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmY2M1OGI3YzI0MTQ2NTczZWFkMDVi
MTAxYzk1Y2ExZjlmMTc0MjEzLi5kY2Q1YzExYzgwNjg5YjYwZDVkN2Y3ZTE4MDk5YjQwY2YzNjI2
YzVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMTAtMDQgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBv
cnQgZm9yIHNlYXJjaCBpbiBzY3JpcHQgY29udGVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MDE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS10
cmVlL3Jlc291cmNlLXRyZWUtdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfUmVzb3VyY2VU
cmVlVGVzdCk6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzLXRlc3Qu
anM6CisgICAgICAgIChpbml0aWFsaXplX1Jlc291cmNlVGVzdC5JbnNwZWN0b3JUZXN0LnJ1bkFm
dGVyUmVzb3VyY2VzQXJlRmluaXNoZWQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9SZXNvdXJjZVRl
c3QuSW5zcGVjdG9yVGVzdC5fcnVuQWZ0ZXJSZXNvdXJjZXNBcmVGaW5pc2hlZCk6CisgICAgICAg
IChpbml0aWFsaXplX1Jlc291cmNlVGVzdC5JbnNwZWN0b3JUZXN0Ll9ydW5BZnRlclJlc291cmNl
c0FyZUZpbmlzaGVkLm1heWJlQ2FsbGJhY2spOgorICAgICAgICAoaW5pdGlhbGl6ZV9SZXNvdXJj
ZVRlc3QuSW5zcGVjdG9yVGVzdC5fcnVuQWZ0ZXJSZXNvdXJjZXNBcmVGaW5pc2hlZC5hZGRTbmlm
ZmVyKToKKyAgICAgICAgKGluaXRpYWxpemVfUmVzb3VyY2VUZXN0Lkluc3BlY3RvclRlc3QuX3J1
bkFmdGVyUmVzb3VyY2VzQXJlRmluaXNoZWQucmVzb3VyY2VBZGRlZFRvRnJhbWUpOgorICAgICAg
ICAoaW5pdGlhbGl6ZV9SZXNvdXJjZVRlc3QuSW5zcGVjdG9yVGVzdC5fcnVuQWZ0ZXJSZXNvdXJj
ZXNBcmVGaW5pc2hlZC52aXNpdCk6CisgICAgICAgIChpbml0aWFsaXplX1Jlc291cmNlVGVzdCk6
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3Jlc291cmNlcy9zZWFyY2gt
Y29uY2F0ZW5hdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9y
L3NlYXJjaC9zZWFyY2gtaW4tY29uY2F0ZW5hdGVkLXNjcmlwdC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tY29uY2F0
ZW5hdGVkLXNjcmlwdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9zZWFyY2gvc2VhcmNoLWluLXJlc291cmNlLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9p
bnNwZWN0b3Ivc2VhcmNoL3NlYXJjaC1pbi1zY3JpcHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLXNjcmlwdC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLXRl
c3QuanM6CisgICAgICAgIChpbml0aWFsaXplX1NlYXJjaFRlc3QpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9kZWJ1Z2dlci9jb250ZW50LXByb3ZpZGVycy5odG1sOgorCiAyMDExLTEwLTA0ICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBVcGRh
dGUgZXhwZWN0YXRpb25zIGZvciBzdmcvVzNDLVNWRy0xLjEvcHNlcnZlcnMtZ3JhZC0wNi1iLnN2
ZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2Ut
dHJlZS9yZXNvdXJjZS10cmVlLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9yZXNvdXJjZS10cmVlL3Jlc291cmNlLXRyZWUtdGVzdC5qcwppbmRleCBiYWQ3NWJkNWZm
Zjc4YTJlN2ZlNzZhNGFiZTA4NDhiZWUyMmFhNmUyLi44MGEyMTgwMTc5NjEzZjE2MjQ0MjBhOWE0
OTFmOGJjMWViZWIyODk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9yZXNvdXJjZS10cmVlL3Jlc291cmNlLXRyZWUtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS10cmVlL3Jlc291cmNlLXRyZWUtdGVzdC5q
cwpAQCAtODYsMzIgKzg2LDQgQEAgSW5zcGVjdG9yVGVzdC5kdW1wUmVzb3VyY2VUcmVlRXZlcnl0
aGluZyA9IGZ1bmN0aW9uKCkKICAgICBJbnNwZWN0b3JUZXN0LmR1bXBSZXNvdXJjZXNUcmVlKCk7
CiB9CiAKLUluc3BlY3RvclRlc3QucnVuQWZ0ZXJSZXNvdXJjZXNBcmVGaW5pc2hlZCA9IGZ1bmN0
aW9uKHJlc291cmNlVVJMcywgY2FsbGJhY2spCi17Ci0gICAgSW5zcGVjdG9yVGVzdC5fcnVuQWZ0
ZXJSZXNvdXJjZXNBcmVGaW5pc2hlZChyZXNvdXJjZVVSTHMua2V5U2V0KCksIGNhbGxiYWNrKTsK
LX0KLQotSW5zcGVjdG9yVGVzdC5fcnVuQWZ0ZXJSZXNvdXJjZXNBcmVGaW5pc2hlZCA9IGZ1bmN0
aW9uKHJlc291cmNlVVJMcywgY2FsbGJhY2spCi17Ci0gICAgZnVuY3Rpb24gdmlzaXQocmVzb3Vy
Y2UpCi0gICAgewotICAgICAgICBpZiAoIXJlc291cmNlLmZpbmlzaGVkKQotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICAgICAgZm9yICh2YXIgdXJsIGluIHJlc291cmNlVVJMcykgewot
ICAgICAgICAgICAgaWYgKHJlc291cmNlLnVybC5pbmRleE9mKHVybCkgIT09IC0xKQotICAgICAg
ICAgICAgICAgIGRlbGV0ZSByZXNvdXJjZVVSTHNbdXJsXTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmICghT2JqZWN0LmtleXMocmVzb3VyY2VVUkxzKS5sZW5ndGgpIHsKLSAgICAgICAgICAgIGNh
bGxiYWNrKCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHZhciBzdWNjZWVkZWQgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuZm9yQWxs
UmVzb3VyY2VzKHZpc2l0KTsKLSAgICBpZiAoIXN1Y2NlZWRlZCkKLSAgICAgICAgc2V0VGltZW91
dChJbnNwZWN0b3JUZXN0Ll9ydW5BZnRlclJlc291cmNlc0FyZUZpbmlzaGVkLmJpbmQoSW5zcGVj
dG9yVGVzdCwgcmVzb3VyY2VVUkxzLCBjYWxsYmFjayksIDApOwotfQotCiB9OwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzLXRlc3QuanMgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMtdGVzdC5qcwppbmRleCAy
MDczOWY1NThjYTJhN2Q1ZWNlODg0ODdkZWRmNDg0Njc3MmYzYjM3Li42MTY5MTBjMTlhNzkwMjA2
MjIxNmE3ODY4YzBhZjEzOWMxYzM0Yjc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZXMtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZXMtdGVzdC5qcwpAQCAtMjcsNCArMjcsNTAgQEAgSW5zcGVj
dG9yVGVzdC5yZXNvdXJjZVVSTENvbXBhcmVyID0gZnVuY3Rpb24ocjEsIHIyKQogICAgIHJldHVy
biByMS5yZXF1ZXN0LnVybC5sb2NhbGVDb21wYXJlKHIyLnJlcXVlc3QudXJsKTsKIH0KIAorSW5z
cGVjdG9yVGVzdC5ydW5BZnRlclJlc291cmNlc0FyZUZpbmlzaGVkID0gZnVuY3Rpb24ocmVzb3Vy
Y2VVUkxzLCBjYWxsYmFjaykKK3sKKyAgICBJbnNwZWN0b3JUZXN0Ll9ydW5BZnRlclJlc291cmNl
c0FyZUZpbmlzaGVkKHJlc291cmNlVVJMcy5rZXlTZXQoKSwgY2FsbGJhY2spOworfQorCitJbnNw
ZWN0b3JUZXN0Ll9ydW5BZnRlclJlc291cmNlc0FyZUZpbmlzaGVkID0gZnVuY3Rpb24ocmVzb3Vy
Y2VVUkxzLCBjYWxsYmFjaykKK3sKKyAgICBmdW5jdGlvbiBjaGVja1Jlc291cmNlKHJlc291cmNl
KQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgdXJsIGluIHJlc291cmNlVVJMcykgeworICAgICAg
ICAgICAgaWYgKHJlc291cmNlLnVybC5pbmRleE9mKHVybCkgIT09IC0xKQorICAgICAgICAgICAg
ICAgIGRlbGV0ZSByZXNvdXJjZVVSTHNbdXJsXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1
bmN0aW9uIG1heWJlQ2FsbGJhY2soKQorICAgIHsKKyAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhy
ZXNvdXJjZVVSTHMpLmxlbmd0aCkgeworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkU25p
ZmZlcihyZXNvdXJjZSkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLCAiX2FkZFJlc291cmNlVG9G
cmFtZSIsIHJlc291cmNlQWRkZWRUb0ZyYW1lLmJpbmQodGhpcykpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHJlc291cmNlQWRkZWRUb0ZyYW1lKHJlc291cmNlKQorICAgIHsKKyAgICAgICAgY2hl
Y2tSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgIGlmICghbWF5YmVDYWxsYmFjaygpKQorICAg
ICAgICAgICAgYWRkU25pZmZlcigpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHZpc2l0KHJlc291
cmNlKQorICAgIHsKKyAgICAgICAgY2hlY2tSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgIHJl
dHVybiBtYXliZUNhbGxiYWNrKCk7CisgICAgfQorCisgICAgdmFyIHN1Y2NlZWRlZCA9IFdlYklu
c3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5mb3JBbGxSZXNvdXJjZXModmlzaXQpOworICAgIGlm
ICghc3VjY2VlZGVkKQorICAgICAgICBhZGRTbmlmZmVyKCk7Cit9CisKIH0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9yZXNvdXJjZXMvc2VhcmNo
LWNvbmNhdGVuYXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2Vh
cmNoL3Jlc291cmNlcy9zZWFyY2gtY29uY2F0ZW5hdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI4ZmY2
NGMyYmJmMjY5YjA2ZTIwYWYzMDEwNDgzMmY2M2Q4MTQ3YQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9yZXNvdXJjZXMvc2VhcmNoLWNv
bmNhdGVuYXRlZC5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
PgorZnVuY3Rpb24gc2VhcmNoVGVzdFVuaXF1ZVN0cmluZygpCit7CisgICAgdmFyIHZhcmlhYmxl
ID0gMDsKKyAgICAvLyBzZWFyY2hUZXN0VW5pcXVlU3RyaW5nIHR3byBvY2N1cmVuY2VzIG9uIHRo
ZSBzYW1lIGxpbmUgc2VhcmNoVGVzdFVuaXF1ZVN0cmluZworICAgIHZhciB2YXJpYWJsZTIgPSAw
OworfQorPC9zY3JpcHQ+PHNjcmlwdD4KK2Z1bmN0aW9uIGRvU29tZXRoaW5nKCkKK3sKKyAgICBz
ZWFyY2hUZXN0VW5pcXVlU3RyaW5nKCk7CisgICAgLy8gU0VBUkNIVGVzdFVuaXF1ZVN0cmluZygp
OworfQorPC9zY3JpcHQ+Cis8bGluayBocmVmPSJzZWFyY2guY3NzIiByZWw9InN0eWxlc2hlZXQi
IHR5cGU9InRleHQvY3NzIj4KKzxzY3JpcHQ+CitmdW5jdGlvbiBzZWFyY2hUZXN0VW5pcXVlU3Ry
aW5nMigpCit7CisgICAgdmFyIHZhcmlhYmxlID0gMDsKKyAgICAvKiBzZWFyY2hUZXN0VW5pcXVl
U3RyaW5nIHR3byBvY2N1cmVuY2VzIG9uIHRoZSBzYW1lIGxpbmUgc2VhcmNoVGVzdFVuaXF1ZVN0
cmluZyAqLyB9IDwvc2NyaXB0PjxzY3JpcHQ+IGZ1bmN0aW9uIGRvU29tZXRoaW5nMigpIHsgc2Vh
cmNoVGVzdFVuaXF1ZVN0cmluZygpOworICAgIC8vIFNFQVJDSFRlc3RVbmlxdWVTdHJpbmcoKTsK
K30KKzwvc2NyaXB0PgorPC9zY3JpcHQ+Cis8Ym9keT4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3NlYXJjaC1p
bi1jb25jYXRlbmF0ZWQtc2NyaXB0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tY29uY2F0ZW5hdGVkLXNjcmlwdC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGFiNDhhNTJiOTUwYzg3MDcxODhjZDUxMDY5MTc0N2Y2NDNjZjhk
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Nl
YXJjaC9zZWFyY2gtaW4tY29uY2F0ZW5hdGVkLXNjcmlwdC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNyBAQAorVGVzdHMgY29uY2F0ZW5hdGVkIHNjcmlwdCBzZWFyY2ggaW4gaW5zcGVjdG9yIGRl
YnVnZ2VyIGFnZW50LgorCitCdWcgNjkwMTUgIAorRGVidWdnZXIgd2FzIGVuYWJsZWQuCitodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3NlYXJjaC9yZXNvdXJjZXMvc2VhcmNoLWNvbmNh
dGVuYXRlZC5odG1sCitTZWFyY2ggbWF0Y2hlczogCitsaW5lTnVtYmVyOiAzLCBsaW5lOiAnZnVu
Y3Rpb24gc2VhcmNoVGVzdFVuaXF1ZVN0cmluZygpJworbGluZU51bWJlcjogNiwgbGluZTogJyAg
ICAvLyBzZWFyY2hUZXN0VW5pcXVlU3RyaW5nIHR3byBvY2N1cmVuY2VzIG9uIHRoZSBzYW1lIGxp
bmUgc2VhcmNoVGVzdFVuaXF1ZVN0cmluZycKK2xpbmVOdW1iZXI6IDEyLCBsaW5lOiAnICAgIHNl
YXJjaFRlc3RVbmlxdWVTdHJpbmcoKTsnCitsaW5lTnVtYmVyOiAxMywgbGluZTogJyAgICAvLyBT
RUFSQ0hUZXN0VW5pcXVlU3RyaW5nKCk7JworbGluZU51bWJlcjogMTgsIGxpbmU6ICdmdW5jdGlv
biBzZWFyY2hUZXN0VW5pcXVlU3RyaW5nMigpJworbGluZU51bWJlcjogMjEsIGxpbmU6ICcgICAg
Lyogc2VhcmNoVGVzdFVuaXF1ZVN0cmluZyB0d28gb2NjdXJlbmNlcyBvbiB0aGUgc2FtZSBsaW5l
IHNlYXJjaFRlc3RVbmlxdWVTdHJpbmcgKi8gfSAnCitsaW5lTnVtYmVyOiAyMSwgbGluZTogJyBm
dW5jdGlvbiBkb1NvbWV0aGluZzIoKSB7IHNlYXJjaFRlc3RVbmlxdWVTdHJpbmcoKTsnCitsaW5l
TnVtYmVyOiAyMiwgbGluZTogJyAgICAvLyBTRUFSQ0hUZXN0VW5pcXVlU3RyaW5nKCk7JworCitE
ZWJ1Z2dlciB3YXMgZGlzYWJsZWQuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tY29uY2F0ZW5hdGVkLXNjcmlwdC5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3NlYXJjaC1pbi1jb25jYXRl
bmF0ZWQtc2NyaXB0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFhMGEzNzk3NmFkZDk5YWMyMzQxYWE5ZmNl
YTliZGY1YzVkY2I0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tY29uY2F0ZW5hdGVkLXNjcmlwdC5odG1sCkBAIC0w
LDAgKzEsNDcgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRl
c3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJzZWFyY2gtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgLy8gVGhpcyBmaWxlIHNob3VsZCBub3QgbWF0Y2ggc2VhcmNoIHF1ZXJ5Lgor
ICAgIHZhciB0ZXh0ID0gInNlYXJjaFRlc3QiICsgIlVuaXF1ZVN0cmluZyI7CisgICAgSW5zcGVj
dG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChzdGVwMSk7CisKKyAgICBmdW5jdGlvbiBzdGVwMSgp
CisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUmVzb3VyY2VzQXJlRmluaXNo
ZWQoWyJzZWFyY2gtY29uY2F0ZW5hdGVkLmh0bWwiXSwgc3RlcDIpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHN0ZXAyKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2hvd1NjcmlwdFNv
dXJjZSgic2VhcmNoLWNvbmNhdGVuYXRlZC5odG1sIiwgc3RlcDMpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHN0ZXAzKCkKKyAgICB7CisgICAgICAgIHZhciB1cmwgPSAiaHR0cDovLzEyNy4wLjAu
MTo4MDAwL2luc3BlY3Rvci9zZWFyY2gvcmVzb3VyY2VzL3NlYXJjaC1jb25jYXRlbmF0ZWQuaHRt
bCI7CisgICAgICAgIHZhciBzY3JpcHRzID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2Ny
aXB0c0ZvclVSTCh1cmwpOworICAgICAgICB2YXIgY29udGVudFByb3ZpZGVyID0gbmV3IFdlYklu
c3BlY3Rvci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVyKHNjcmlwdHMpOworICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCh1cmwpOworICAgICAgICBjb250ZW50UHJvdmlk
ZXIuc2VhcmNoSW5Db250ZW50KHRleHQsIHN0ZXA0KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBz
dGVwNChzZWFyY2hNYXRjaGVzKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU2Vh
cmNoTWF0Y2hlcyhzZWFyY2hNYXRjaGVzKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0
ZURlYnVnZ2VyVGVzdCgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
cD5UZXN0cyBjb25jYXRlbmF0ZWQgc2NyaXB0IHNlYXJjaCBpbiBpbnNwZWN0b3IgZGVidWdnZXIg
YWdlbnQuPC9wPgorPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY5MDE1Ij5CdWcgNjkwMTU8L2E+CisKKzxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2VhcmNo
LWNvbmNhdGVuYXRlZC5odG1sIiBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2Vh
cmNoLWluLXJlc291cmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9z
ZWFyY2gvc2VhcmNoLWluLXJlc291cmNlLmh0bWwKaW5kZXggMDMyNzRhNmQ1OWRjYzE3OGM4ODRl
NDRmNmM1ZjljZGNmNTI2MjU2Mi4uNjRjMWFiZDM1ZTFhZTQyNDQwMzk0ZjlhYTdkNzU2MTJmOTI2
YTI4YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNo
L3NlYXJjaC1pbi1yZXNvdXJjZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tcmVzb3VyY2UuaHRtbApAQCAtMSwxMyArMSwxNCBAQAog
PGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9InNlYXJjaC10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0
KCkKIHsKICAgICAvLyBUaGlzIGZpbGUgc2hvdWxkIG5vdCBtYXRjaCBzZWFyY2ggcXVlcnkuCiAg
ICAgdmFyIHRleHQgPSAic2VhcmNoVGVzdCIgKyAiVW5pcXVlU3RyaW5nIjsKLSAgICBJbnNwZWN0
b3JUZXN0LnJ1bkFmdGVyUmVzb3VyY2VzQXJlQ3JlYXRlZChbInNlYXJjaC5qcyJdLCBzdGVwMik7
CisgICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclJlc291cmNlc0FyZUZpbmlzaGVkKFsic2VhcmNo
LmpzIl0sIHN0ZXAyKTsKIAogICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLXNjcmlw
dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gv
c2VhcmNoLWluLXNjcmlwdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTc1MTdjZTZmODllOTUw
YjdjNDNkNGZiNjI1ZWRiMTZkZDg5OWNmMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tc2NyaXB0LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDEzIEBACitUZXN0cyBzY3JpcHQgc2VhcmNoIGluIGluc3BlY3RvciBkZWJ1
Z2dlciBhZ2VudC4KKworQnVnIDY5MDE1ICAKK0RlYnVnZ2VyIHdhcyBlbmFibGVkLgoraHR0cDov
LzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9zZWFyY2gvcmVzb3VyY2VzL3NlYXJjaC5qcworU2Vh
cmNoIG1hdGNoZXM6IAorbGluZU51bWJlcjogMCwgbGluZTogJ2Z1bmN0aW9uIHNlYXJjaFRlc3RV
bmlxdWVTdHJpbmcoKScKK2xpbmVOdW1iZXI6IDMsIGxpbmU6ICcgICAgLy8gc2VhcmNoVGVzdFVu
aXF1ZVN0cmluZyB0d28gb2NjdXJlbmNlcyBvbiB0aGUgc2FtZSBsaW5lIHNlYXJjaFRlc3RVbmlx
dWVTdHJpbmcnCitsaW5lTnVtYmVyOiA5LCBsaW5lOiAnICAgIHNlYXJjaFRlc3RVbmlxdWVTdHJp
bmcoKTsnCitsaW5lTnVtYmVyOiAxMCwgbGluZTogJyAgICAvLyBTRUFSQ0hUZXN0VW5pcXVlU3Ry
aW5nKCk7JworCitEZWJ1Z2dlciB3YXMgZGlzYWJsZWQuCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tc2NyaXB0Lmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLXNjcmlwdC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjk3NWY1NmZiMTEyN2ZiMTZmYmNhY2M5MjIwMmQ2ZGI0OTcxZDMyMDIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFy
Y2gvc2VhcmNoLWluLXNjcmlwdC5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9kZWJ1
Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzZWFyY2gtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgLy8gVGhpcyBmaWxlIHNo
b3VsZCBub3QgbWF0Y2ggc2VhcmNoIHF1ZXJ5LgorICAgIHZhciB0ZXh0ID0gInNlYXJjaFRlc3Qi
ICsgIlVuaXF1ZVN0cmluZyI7CisgICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChz
dGVwMSk7CisKKyAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JU
ZXN0LnJ1bkFmdGVyUmVzb3VyY2VzQXJlRmluaXNoZWQoWyJzZWFyY2guanMiXSwgc3RlcDIpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRl
c3Quc2hvd1NjcmlwdFNvdXJjZSgic2VhcmNoLmpzIiwgc3RlcDMpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHN0ZXAzKCkKKyAgICB7CisgICAgICAgIHZhciBzY3JpcHRzID0gV2ViSW5zcGVjdG9y
LmRlYnVnZ2VyTW9kZWwuc2NyaXB0c0ZvclVSTCgiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3Bl
Y3Rvci9zZWFyY2gvcmVzb3VyY2VzL3NlYXJjaC5qcyIpOworICAgICAgICB2YXIgc2NyaXB0ID0g
c2NyaXB0c1swXTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoc2NyaXB0LnNvdXJj
ZVVSTCk7CisgICAgICAgIHNjcmlwdC5zZWFyY2hJbkNvbnRlbnQodGV4dCwgc3RlcDQpOworICAg
IH0KKworICAgIGZ1bmN0aW9uIHN0ZXA0KHNlYXJjaE1hdGNoZXMpCisgICAgeworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmR1bXBTZWFyY2hNYXRjaGVzKHNlYXJjaE1hdGNoZXMpOworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVidWdnZXJUZXN0KCk7CisgICAgfQorfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRlc3RzIHNjcmlwdCBzZWFyY2ggaW4gaW5zcGVjdG9yIGRl
YnVnZ2VyIGFnZW50LjwvcD4KKzxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02OTAxNSI+QnVnIDY5MDE1PC9hPgorCis8aWZyYW1lIHNyYz0icmVzb3VyY2Vz
L3NlYXJjaC5odG1sIiBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLXRl
c3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLXRl
c3QuanMKaW5kZXggYjc5ZmRmMzBiNDhkN2E5MzdhOTFkMjg5NjU5YjAwMjNjN2VlYjI0Zi4uNjUx
YjhkZjE4MWMzMWIzOGE1ZDg2ZDA5N2EzZmM3MjNhNjZmNTBhYyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3NlYXJjaC10ZXN0LmpzCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtdGVzdC5qcwpAQCAt
MTYsNTAgKzE2LDQgQEAgSW5zcGVjdG9yVGVzdC5kdW1wU2VhcmNoTWF0Y2hlcyA9IGZ1bmN0aW9u
KHNlYXJjaE1hdGNoZXMpCiAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwogfTsKIAot
SW5zcGVjdG9yVGVzdC5ydW5BZnRlclJlc291cmNlc0FyZUNyZWF0ZWQgPSBmdW5jdGlvbihyZXNv
dXJjZVVSTHMsIGNhbGxiYWNrKQotewotICAgIEluc3BlY3RvclRlc3QuX3J1bkFmdGVyUmVzb3Vy
Y2VzQXJlQ3JlYXRlZChyZXNvdXJjZVVSTHMua2V5U2V0KCksIGNhbGxiYWNrKTsKLX0KLQotSW5z
cGVjdG9yVGVzdC5fcnVuQWZ0ZXJSZXNvdXJjZXNBcmVDcmVhdGVkID0gZnVuY3Rpb24ocmVzb3Vy
Y2VVUkxzLCBjYWxsYmFjaykKLXsKLSAgICBmdW5jdGlvbiBjaGVja1Jlc291cmNlKHJlc291cmNl
KQotICAgIHsKLSAgICAgICAgZm9yICh2YXIgdXJsIGluIHJlc291cmNlVVJMcykgewotICAgICAg
ICAgICAgaWYgKHJlc291cmNlLnVybC5pbmRleE9mKHVybCkgIT09IC0xKQotICAgICAgICAgICAg
ICAgIGRlbGV0ZSByZXNvdXJjZVVSTHNbdXJsXTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1
bmN0aW9uIG1heWJlQ2FsbGJhY2soKQotICAgIHsKLSAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhy
ZXNvdXJjZVVSTHMpLmxlbmd0aCkgewotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gYWRkU25p
ZmZlcihyZXNvdXJjZSkKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLCAiX2JpbmRSZXNvdXJjZVVS
TCIsIG9uUmVzb3VyY2VCaW5kLmJpbmQodGhpcykpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIG9u
UmVzb3VyY2VCaW5kKHJlc291cmNlKQotICAgIHsKLSAgICAgICAgY2hlY2tSZXNvdXJjZShyZXNv
dXJjZSk7Ci0gICAgICAgIGlmICghbWF5YmVDYWxsYmFjaygpKQotICAgICAgICAgICAgYWRkU25p
ZmZlcigpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHZpc2l0KHJlc291cmNlKQotICAgIHsKLSAg
ICAgICAgY2hlY2tSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgIHJldHVybiBtYXliZUNhbGxi
YWNrKCk7Ci0gICAgfQotCi0gICAgdmFyIHN1Y2NlZWRlZCA9IFdlYkluc3BlY3Rvci5yZXNvdXJj
ZVRyZWVNb2RlbC5mb3JBbGxSZXNvdXJjZXModmlzaXQpOwotICAgIGlmICghc3VjY2VlZGVkKQot
ICAgICAgICBhZGRTbmlmZmVyKCk7Ci19Ci0KIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvY29udGVudC1wcm92aWRlcnMuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9jb250ZW50LXByb3ZpZGVycy5odG1sCmluZGV4IDJmMTVmMzQ5MDY1
MDA4NTYzMDY0ZjA1MDRkNmVkMmVhZjIxN2JkZGMuLjE4Y2FlNWNjZGVmOGM4ZjFmNjk5MDQ5ODg1
YTdjNDAwOTllOGY0NWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9jb250ZW50LXByb3ZpZGVycy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9jb250ZW50LXByb3ZpZGVycy5odG1sCkBAIC0xNSw3ICsxNSw5IEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgICAgICAgICAgICAgIGNhbGxiYWNrKHNvdXJjZSk7CiAgICAgICAgICAgICB9LAog
ICAgICAgICAgICAgZ2V0IGxpbmVPZmZzZXQoKSB7IHJldHVybiByYW5nZVswXTsgfSwKLSAgICAg
ICAgICAgIGdldCBjb2x1bW5PZmZzZXQoKSB7IHJldHVybiByYW5nZVsxXTsgfQorICAgICAgICAg
ICAgZ2V0IGNvbHVtbk9mZnNldCgpIHsgcmV0dXJuIHJhbmdlWzFdOyB9LAorICAgICAgICAgICAg
Z2V0IGVuZExpbmUoKSB7IHJldHVybiByYW5nZVsyXTsgfSwKKyAgICAgICAgICAgIGdldCBlbmRD
b2x1bW4oKSB7IHJldHVybiByYW5nZVszXTsgfQogICAgICAgICB9OwogICAgIH0KIApAQCAtMzcs
MTAgKzM5LDEwIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBmdW5jdGlvbiB0ZXN0Q29uY2F0
ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92aWRlcihuZXh0KQogICAgICAgICB7CiAgICAgICAgICAg
ICB2YXIgc2NyaXB0cyA9IFtdOwotICAgICAgICAgICAgc2NyaXB0cy5wdXNoKGNyZWF0ZU1vY2tT
Y3JpcHQoIjEiLCAiXG5mdW5jdGlvbiBiYXooKVxue1xuICByZXR1cm4gMDtcbn1cbiIsIFszLCAy
MF0pKTsKLSAgICAgICAgICAgIHNjcmlwdHMucHVzaChjcmVhdGVNb2NrU2NyaXB0KCIyIiwgImZ1
bmN0aW9uIGZvbygpIHsgcmV0dXJuIDA7IH0iLCBbMCwgMTBdKSk7Ci0gICAgICAgICAgICBzY3Jp
cHRzLnB1c2goY3JlYXRlTW9ja1NjcmlwdCgiMyIsICJmdW5jdGlvbiBiYXIoKSB7IHJldHVybiAw
OyB9IiwgWzEsIDcwXSkpOwotICAgICAgICAgICAgc2NyaXB0cy5wdXNoKGNyZWF0ZU1vY2tTY3Jp
cHQoIjQiLCAidGhpcyBzaG91bGQgbm90IGFwcGVhciBpbiBkaXNwbGF5ZWQgY29udGVudCIsIFsw
LCAyMF0pKTsKKyAgICAgICAgICAgIHNjcmlwdHMucHVzaChjcmVhdGVNb2NrU2NyaXB0KCIxIiwg
IlxuZnVuY3Rpb24gYmF6KClcbntcbiAgcmV0dXJuIDA7XG59XG4iLCBbMywgMjAsIDcsIDBdKSk7
CisgICAgICAgICAgICBzY3JpcHRzLnB1c2goY3JlYXRlTW9ja1NjcmlwdCgiMiIsICJmdW5jdGlv
biBmb28oKSB7IHJldHVybiAwOyB9IiwgWzAsIDEwLCAwLCAzOF0pKTsKKyAgICAgICAgICAgIHNj
cmlwdHMucHVzaChjcmVhdGVNb2NrU2NyaXB0KCIzIiwgImZ1bmN0aW9uIGJhcigpIHsgcmV0dXJu
IDA7IH0iLCBbMSwgNzAsIDEsIDk4XSkpOworICAgICAgICAgICAgc2NyaXB0cy5wdXNoKGNyZWF0
ZU1vY2tTY3JpcHQoIjQiLCAidGhpcyBzaG91bGQgbm90IGFwcGVhciBpbiBkaXNwbGF5ZWQgY29u
dGVudCIsIFswLCAyMCwgMCwgNjNdKSk7CiAgICAgICAgICAgICB2YXIgY29udGVudFByb3ZpZGVy
ID0gbmV3IFdlYkluc3BlY3Rvci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVyKHNj
cmlwdHMpOwogICAgICAgICAgICAgZnVuY3Rpb24gZGlkUmVxdWVzdENvbnRlbnQobWltZVR5cGUs
IGNvbnRlbnQpCiAgICAgICAgICAgICB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCA0NjQz
NWNiMmU2OWFiNjU0ZTNhYmViOWE0OGQ4NzI1OTU4MjFlYWU0Li44NTY4Y2EyNzNhNWI2NjJhNGZj
OGQzNjc3MzA4NGFmNWU5MjQzN2YwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTIzODUs
OSArMjM4NSwzIEBAIGh0dHAvdGVzdHMvbXVsdGlwYXJ0L3N0b3AtY3Jhc2guaHRtbAogIyBPbmUg
dGVzdCBmYWlsZWQgYWZ0ZXIgcjk2MjYwCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02OTI1NwogaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtZGlzYWJsZS10aGVuLWNo
YW5nZS5odG1sCi0KLSMgW1F0XSBSRUdSRVNTSU9OKHI5NTUyNik6IEl0IG1hZGUgMyBpbnNwZWN0
b3IgdGVzdHMgZmFpbAotIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjkyNjUKLWh0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tY29uY2F0ZW5hdGVk
LXNjcmlwdC5odG1sCi1odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLXNjcmlw
dC5odG1sCi1pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0LWZvcm1hdHRlci5odG1sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggODg5Yzk1YzljNWUxN2RkYWE5YzdmZWM0YjBlMjk3OGFkM2NmZGI0Mi4uZDIwNTBiODUz
NzcwMzUxYjFhOTkzNDMwODVjNWU5ZWRiZjBjYzk3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDExLTEwLTA0ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBzdXBwb3J0IGZvciBzZWFyY2ggaW4gc2NyaXB0
IGNvbnRlbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02OTAxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBodHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLWNvbmNhdGVuYXRl
ZC1zY3JpcHQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNo
L3NlYXJjaC1pbi1zY3JpcHQuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5q
c29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJjaEluQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRTY3JpcHRTb3Vy
Y2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZW50UHJvdmlkZXJzLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRQcm92aWRlci5wcm90b3R5cGUuc2VhcmNoSW5Db250
ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVudFBy
b3ZpZGVyLnByb3RvdHlwZS5nZXQgX3NvcnRlZFNjcmlwdHMudmFyKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZS5nZXQg
X3NvcnRlZFNjcmlwdHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbmNhdGVuYXRlZFNjcmlw
dHNDb250ZW50UHJvdmlkZXIucHJvdG90eXBlLnJlcXVlc3RDb250ZW50KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZS5z
ZWFyY2hJbkNvbnRlbnQubWF5YmVDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29u
Y2F0ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92aWRlci5wcm90b3R5cGUuc2VhcmNoSW5Db250ZW50
LnNlYXJjaENhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25jYXRlbmF0ZWRTY3Jp
cHRzQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZS5zZWFyY2hJbkNvbnRlbnQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNvbmNhdGVuYXRlZFNjcmlwdHNDb250ZW50UHJvdmlkZXIucHJvdG90eXBl
Ll9jb25jYXRlbmF0ZVNjcmlwdHNDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBlLnJl
cXVlc3RTb3VyY2UuZGlkR2V0U2NyaXB0U291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
Y3JpcHQucHJvdG90eXBlLnJlcXVlc3RTb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNj
cmlwdC5wcm90b3R5cGUuc2VhcmNoSW5Db250ZW50KToKKwogMjAxMS0xMC0wNCAgUGF2ZWwgRmVs
ZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjogc3Rh
cnQgYWRkaW5nIFVJIGNvbXBvbmVudHMgdG8gdGhlIGNvbXBpbGF0aW9uIHByb2Nlc3MuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggY2FlMDY3OTJmZjY1MGE4Njhh
ZTEwMDFhMzYwNjg2ZTk4ZDEzYjVhOC4uZDE1YmE1MzdmOGFlNjVlYjczYTkzZDZhZjM1MzE0YjNh
ZDJkZTc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5q
c29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMTc2
NSw2ICsxNzY1LDE3IEBACiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlc3VtZXMg
SmF2YVNjcmlwdCBleGVjdXRpb24uIgogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAibmFtZSI6ICJzZWFyY2hJbkNvbnRlbnQiLAorICAgICAgICAgICAgICAg
ICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNjcmlwdElk
IiwgIiRyZWYiOiAiU2NyaXB0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWQgb2YgdGhlIHNjcmlwdCB0
byBzZWFyY2ggaW4uIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInF1ZXJ5Iiwg
InR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlN0cmluZyB0byBzZWFyY2ggZm9yLiIg
IH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJyZXR1cm5zIjogWworICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlc3VsdCIsICJ0eXBlIjogImFycmF5IiwgIml0
ZW1zIjogeyAiJHJlZiI6ICJQYWdlLlNlYXJjaE1hdGNoIiB9LCAiZGVzY3JpcHRpb24iOiAiTGlz
dCBvZiBzZWFyY2ggbWF0Y2hlcy4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJTZWFyY2hlcyBmb3IgZ2l2ZW4gc3RyaW5nIGluIHNjcmlwdCBj
b250ZW50LiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
Im5hbWUiOiAic2V0U2NyaXB0U291cmNlIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6
IFsKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzY3JpcHRJZCIsICIkcmVmIjogIlNj
cmlwdElkIiwgImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBzY3JpcHQgdG8gZWRpdC4iIH0sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAKaW5kZXggMGIyMTIwZGJhODBhZTdmMjkyZTMyOGZlYzU3NDNiMzMxOWU4MTI5ZC4uM2Q3MTIw
YTU1ODU2NjhjOGJkY2JlMGUxNmE3Yzk0YmMyZDFiNGZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKIAogI2lmIEVOQUJMRShK
QVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQorI2luY2x1ZGUgIkNvbnRl
bnRTZWFyY2hVdGlscy5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAi
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIK
QEAgLTMyMCw2ICszMjEsMTUgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBz
Y3JpcHRUb0luc3BlY3Rvck9iamVjdChTY3JpcHRPYmplY3Qgc2NyaXB0T2IKICAgICByZXR1cm4g
dmFsdWUtPmFzT2JqZWN0KCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2Vh
cmNoSW5Db250ZW50KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwg
Y29uc3QgU3RyaW5nJiBxdWVyeSwgUmVmUHRyPEluc3BlY3RvckFycmF5PiogcmVzdWx0cykKK3sK
KyAgICBTY3JpcHRzTWFwOjppdGVyYXRvciBpdCA9IG1fc2NyaXB0cy5maW5kKHNjcmlwdElkKTsK
KyAgICBpZiAoaXQgIT0gbV9zY3JpcHRzLmVuZCgpKQorICAgICAgICAqcmVzdWx0cyA9IENvbnRl
bnRTZWFyY2hVdGlsczo6c2VhcmNoSW5UZXh0QnlMaW5lcyhxdWVyeSwgaXQtPnNlY29uZC5zb3Vy
Y2UpOworICAgIGVsc2UKKyAgICAgICAgKmVycm9yID0gIk5vIHNjcmlwdCBmb3IgaWQ6ICIgKyBz
Y3JpcHRJZDsKK30KKwogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRTY3JpcHRTb3Vy
Y2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTdHJp
bmcmIG5ld0NvbnRlbnQsIGNvbnN0IGJvb2wqIGNvbnN0IHByZXZpZXcsIFJlZlB0cjxJbnNwZWN0
b3JBcnJheT4qIG5ld0NhbGxGcmFtZXMsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQp
CiB7CiAgICAgYm9vbCBwcmV2aWV3T25seSA9IHByZXZpZXcgJiYgKnByZXZpZXc7CkBAIC0zMzIs
OSArMzQyLDEzIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0U2NyaXB0U291cmNl
KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBzCiAgICAgICAgICpyZXN1bHQgPSBv
YmplY3Q7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0U2NyaXB0U291cmNl
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgU3RyaW5nKiBzY3JpcHRTb3Vy
Y2UpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldFNjcmlwdFNvdXJjZShFcnJvclN0
cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIFN0cmluZyogc2NyaXB0U291cmNl
KQogewotICAgICpzY3JpcHRTb3VyY2UgPSBtX3NjcmlwdHMuZ2V0KHNjcmlwdElkKS5zb3VyY2U7
CisgICAgU2NyaXB0c01hcDo6aXRlcmF0b3IgaXQgPSBtX3NjcmlwdHMuZmluZChzY3JpcHRJZCk7
CisgICAgaWYgKGl0ICE9IG1fc2NyaXB0cy5lbmQoKSkKKyAgICAgICAgKnNjcmlwdFNvdXJjZSA9
IGl0LT5zZWNvbmQuc291cmNlOworICAgIGVsc2UKKyAgICAgICAgKmVycm9yID0gIk5vIHNjcmlw
dCBmb3IgaWQ6ICIgKyBzY3JpcHRJZDsKIH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KGNvbnN0IFN0cmluZyYgYnJlYWtSZWFzb24s
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggMTg1YWFiODJlZWQ1MGYy
ZDc0YWNhNTVhNDRlZGRlNmI5ZjEzYTU2My4uNzNiMjc1NGUyOGEzMTdkOWU2YTlkM2E0ZGUzNzQ3
NjdkMTBmOGMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5oCkBAIC04MSw2ICs4MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92
ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCk7CiAg
ICAgdm9pZCBjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gbG9jYXRpb24pOwogCisgICAgdm9pZCBzZWFyY2hJbkNvbnRlbnQoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+Kik7CiAgICAgdm9pZCBzZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGNv
bnN0IGJvb2wqIGNvbnN0IHByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIG5ld0NhbGxG
cmFtZXMsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpOwogICAgIHZvaWQgZ2V0U2Ny
aXB0U291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgU3RyaW5nKiBz
Y3JpcHRTb3VyY2UpOwogICAgIHZvaWQgc2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChjb25z
dCBTdHJpbmcmIGJyZWFrUmVhc29uLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnRlbnRQ
cm92aWRlcnMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnRlbnRQ
cm92aWRlcnMuanMKaW5kZXggZDgwNDhmZWYwYTEyYTUzMmUwNjBlN2Y2NWYzZGJmYWViOWFhNTNk
ZS4uMjQ2YTFiYzAzMDVkNWZiNjVkM2Q2OTU4YWM1ZmVhYzE5MmM4MTJkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZW50UHJvdmlkZXJzLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29udGVudFByb3ZpZGVycy5q
cwpAQCAtNTAsNyArNTAsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFByb3ZpZGVyLnBy
b3RvdHlwZSA9IHsKIAogICAgIHNlYXJjaEluQ29udGVudDogZnVuY3Rpb24ocXVlcnksIGNhbGxi
YWNrKQogICAgIHsKLSAgICAgICAgY2FsbGJhY2soW10pOworICAgICAgICB0aGlzLl9zY3JpcHQu
c2VhcmNoSW5Db250ZW50KHF1ZXJ5LCBjYWxsYmFjayk7CiAgICAgfQogfQogCkBAIC02Nyw2NSAr
NjcsMTA4IEBAIFdlYkluc3BlY3Rvci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVy
ID0gZnVuY3Rpb24oc2NyaXB0cykKIH07CiAKIFdlYkluc3BlY3Rvci5Db25jYXRlbmF0ZWRTY3Jp
cHRzQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZSA9IHsKLSAgIHJlcXVlc3RDb250ZW50OiBmdW5j
dGlvbihjYWxsYmFjaykKLSAgIHsKLSAgICAgICB2YXIgc2NyaXB0cyA9IHRoaXMuX3NjcmlwdHMu
c2xpY2UoKTsKLSAgICAgICBzY3JpcHRzLnNvcnQoZnVuY3Rpb24oeCwgeSkgeyByZXR1cm4geC5s
aW5lT2Zmc2V0IC0geS5saW5lT2Zmc2V0IHx8IHguY29sdW1uT2Zmc2V0IC0geS5jb2x1bW5PZmZz
ZXQ7IH0pOwotICAgICAgIHZhciBzb3VyY2VzID0gW107Ci0gICAgICAgZnVuY3Rpb24gZGlkUmVx
dWVzdFNvdXJjZShzb3VyY2UpCi0gICAgICAgewotICAgICAgICAgICBzb3VyY2VzLnB1c2goc291
cmNlKTsKLSAgICAgICAgICAgaWYgKHNvdXJjZXMubGVuZ3RoID09IHNjcmlwdHMubGVuZ3RoKQot
ICAgICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fbWltZVR5cGUsIHRoaXMuX2NvbmNhdGVuYXRl
U2NyaXB0c0NvbnRlbnQoc2NyaXB0cywgc291cmNlcykpOwotICAgICAgIH0KLSAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgIHNjcmlwdHNb
aV0ucmVxdWVzdFNvdXJjZShkaWRSZXF1ZXN0U291cmNlLmJpbmQodGhpcykpOwotICAgfSwKKyAg
ICBnZXQgX3NvcnRlZFNjcmlwdHMoKQorICAgIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwor
ICAgICAgICB2YXIgc2NyaXB0cyA9IHRoaXMuX3NjcmlwdHMuc2xpY2UoKTsKKyAgICAgICAgc2Ny
aXB0cy5zb3J0KGZ1bmN0aW9uKHgsIHkpIHsgcmV0dXJuIHgubGluZU9mZnNldCAtIHkubGluZU9m
ZnNldCB8fCB4LmNvbHVtbk9mZnNldCAtIHkuY29sdW1uT2Zmc2V0OyB9KTsKKyAgICAgICAgCisg
ICAgICAgIHZhciBsaW5lTnVtYmVyID0gMDsKKyAgICAgICAgdmFyIGNvbHVtbk51bWJlciA9IDA7
CisKKyAgICAgICAgdmFyIHNjcmlwdE9wZW5UYWdMZW5ndGggPSAiPHNjcmlwdD4iLmxlbmd0aDsK
KyAgICAgICAgdmFyIHNjcmlwdENsb3NlVGFnTGVuZ3RoID0gIjwvc2NyaXB0PiIubGVuZ3RoOwor
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgIGNvbHVtbk51bWJlciArPSBzY3JpcHRPcGVuVGFnTGVuZ3RoOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgaWYgKGxpbmVOdW1iZXIgPiBzY3JpcHRzW2ldLmxpbmVPZmZzZXQg
fHwgKGxpbmVOdW1iZXIgPT09IHNjcmlwdHNbaV0ubGluZU9mZnNldCAmJiBjb2x1bW5OdW1iZXIg
PiBzY3JpcHRzW2ldLmNvbHVtbk9mZnNldCkpCisgICAgICAgICAgICAgICAgY29udGludWU7IAor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgcmVzdWx0LnB1c2goc2NyaXB0c1tpXSk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGxpbmVOdW1iZXIgPSBzY3JpcHRzW2ldLmVuZExpbmU7
CisgICAgICAgICAgICBjb2x1bW5OdW1iZXIgPSBzY3JpcHRzW2ldLmVuZENvbHVtbjsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgY29sdW1uTnVtYmVyICs9IHNjcmlwdENsb3NlVGFnTGVuZ3Ro
OworICAgICAgICB9ICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCisg
ICAgcmVxdWVzdENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFy
IHNjcmlwdHMgPSB0aGlzLl9zb3J0ZWRTY3JpcHRzOworICAgICAgICB2YXIgc291cmNlcyA9IFtd
OworICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0U291cmNlKHNvdXJjZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgc291cmNlcy5wdXNoKHNvdXJjZSk7CisgICAgICAgICAgICBpZiAoc291cmNl
cy5sZW5ndGggPT0gc2NyaXB0cy5sZW5ndGgpCisgICAgICAgICAgICAgICAgY2FsbGJhY2sodGhp
cy5fbWltZVR5cGUsIHRoaXMuX2NvbmNhdGVuYXRlU2NyaXB0c0NvbnRlbnQoc2NyaXB0cywgc291
cmNlcykpOworICAgICAgICB9CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5s
ZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHNjcmlwdHNbaV0ucmVxdWVzdFNvdXJjZShkaWRSZXF1
ZXN0U291cmNlLmJpbmQodGhpcykpOworICAgIH0sCiAKICAgICBzZWFyY2hJbkNvbnRlbnQ6IGZ1
bmN0aW9uKHF1ZXJ5LCBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGNhbGxiYWNrKFtdKTsKKyAg
ICAgICAgdmFyIHJlc3VsdHMgPSB7fTsKKyAgICAgICAgdmFyIHNjcmlwdHMgPSB0aGlzLl9zb3J0
ZWRTY3JpcHRzOworICAgICAgICB2YXIgc2NyaXB0c0xlZnQgPSBzY3JpcHRzLmxlbmd0aDsKKwor
ICAgICAgICBmdW5jdGlvbiBtYXliZUNhbGxiYWNrKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKCFzY3JpcHRzTGVmdCkgeworICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBbXTsKKyAg
ICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyArK2kpCisg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQocmVzdWx0c1tzY3JpcHRz
W2ldLnNjcmlwdElkXSk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNlYXJjaENhbGxiYWNrKHNj
cmlwdCwgc2VhcmNoTWF0Y2hlcykKKyAgICAgICAgeworICAgICAgICAgICAgcmVzdWx0c1tzY3Jp
cHQuc2NyaXB0SWRdID0gW107CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlYXJj
aE1hdGNoZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICB2YXIgc2VhcmNoTWF0Y2gg
PSB7fTsKKyAgICAgICAgICAgICAgICBzZWFyY2hNYXRjaC5saW5lTnVtYmVyID0gc2VhcmNoTWF0
Y2hlc1tpXS5saW5lTnVtYmVyICsgc2NyaXB0LmxpbmVPZmZzZXQ7CisgICAgICAgICAgICAgICAg
c2VhcmNoTWF0Y2gubGluZUNvbnRlbnQgPSBzZWFyY2hNYXRjaGVzW2ldLmxpbmVDb250ZW50Owor
ICAgICAgICAgICAgICAgIHJlc3VsdHNbc2NyaXB0LnNjcmlwdElkXS5wdXNoKHNlYXJjaE1hdGNo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNjcmlwdHNMZWZ0LS07CisgICAgICAgICAg
ICBtYXliZUNhbGxiYWNrLmNhbGwodGhpcyk7CisgICAgICAgIH0KKworICAgICAgICBtYXliZUNh
bGxiYWNrKCk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7ICsr
aSkKKyAgICAgICAgICAgIHNjcmlwdHNbaV0uc2VhcmNoSW5Db250ZW50KHF1ZXJ5LCBzZWFyY2hD
YWxsYmFjay5iaW5kKHRoaXMsIHNjcmlwdHNbaV0pKTsKICAgICB9LAogCi0gICBfY29uY2F0ZW5h
dGVTY3JpcHRzQ29udGVudDogZnVuY3Rpb24oc2NyaXB0cywgc291cmNlcykKLSAgIHsKLSAgICAg
ICB2YXIgY29udGVudCA9ICIiOwotICAgICAgIHZhciBsaW5lTnVtYmVyID0gMDsKLSAgICAgICB2
YXIgY29sdW1uTnVtYmVyID0gMDsKLQotICAgICAgIGZ1bmN0aW9uIGFwcGVuZENodW5rKGNodW5r
KQotICAgICAgIHsKLSAgICAgICAgICAgY29udGVudCArPSBjaHVuazsKLSAgICAgICAgICAgdmFy
IGxpbmVFbmRpbmdzID0gY2h1bmsubGluZUVuZGluZ3MoKTsKLSAgICAgICAgICAgdmFyIGxpbmVD
b3VudCA9IGxpbmVFbmRpbmdzLmxlbmd0aDsKLSAgICAgICAgICAgaWYgKGxpbmVDb3VudCA9PT0g
MSkKLSAgICAgICAgICAgICAgIGNvbHVtbk51bWJlciArPSBjaHVuay5sZW5ndGg7Ci0gICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgbGluZU51bWJlciArPSBsaW5lQ291bnQgLSAxOwot
ICAgICAgICAgICAgICAgY29sdW1uTnVtYmVyID0gbGluZUVuZGluZ3NbbGluZUNvdW50IC0gMV0g
LSBsaW5lRW5kaW5nc1tsaW5lQ291bnQgLSAyXSAtIDE7Ci0gICAgICAgICAgIH0KLSAgICAgICB9
Ci0KLSAgICAgICB2YXIgc2NyaXB0T3BlblRhZyA9ICI8c2NyaXB0PiI7Ci0gICAgICAgdmFyIHNj
cmlwdENsb3NlVGFnID0gIjwvc2NyaXB0PiI7Ci0gICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBz
Y3JpcHRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgIGlmIChsaW5lTnVtYmVyID4gc2NyaXB0
c1tpXS5saW5lT2Zmc2V0IHx8IChsaW5lTnVtYmVyID09PSBzY3JpcHRzW2ldLmxpbmVPZmZzZXQg
JiYgY29sdW1uTnVtYmVyID4gc2NyaXB0c1tpXS5jb2x1bW5PZmZzZXQgLSBzY3JpcHRPcGVuVGFn
Lmxlbmd0aCkpCi0gICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAvLyBGaWxs
IHRoZSBnYXAgd2l0aCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMuCi0gICAgICAgICAgIHdoaWxlIChs
aW5lTnVtYmVyIDwgc2NyaXB0c1tpXS5saW5lT2Zmc2V0KQotICAgICAgICAgICAgICAgYXBwZW5k
Q2h1bmsoIlxuIik7Ci0gICAgICAgICAgIHdoaWxlIChjb2x1bW5OdW1iZXIgPCBzY3JpcHRzW2ld
LmNvbHVtbk9mZnNldCAtIHNjcmlwdE9wZW5UYWcubGVuZ3RoKQotICAgICAgICAgICAgICAgYXBw
ZW5kQ2h1bmsoIiAiKTsKLQotICAgICAgICAgICAvLyBBZGQgc2NyaXB0IHRhZy4KLSAgICAgICAg
ICAgYXBwZW5kQ2h1bmsoc2NyaXB0T3BlblRhZyk7Ci0gICAgICAgICAgIGFwcGVuZENodW5rKHNv
dXJjZXNbaV0pOwotICAgICAgICAgICBhcHBlbmRDaHVuayhzY3JpcHRDbG9zZVRhZyk7Ci0gICAg
ICAgfQotCi0gICAgICAgcmV0dXJuIGNvbnRlbnQ7Ci0gICB9CisgICAgX2NvbmNhdGVuYXRlU2Ny
aXB0c0NvbnRlbnQ6IGZ1bmN0aW9uKHNjcmlwdHMsIHNvdXJjZXMpCisgICAgeworICAgICAgICB2
YXIgY29udGVudCA9ICIiOworICAgICAgICB2YXIgbGluZU51bWJlciA9IDA7CisgICAgICAgIHZh
ciBjb2x1bW5OdW1iZXIgPSAwOworCisgICAgICAgIHZhciBzY3JpcHRPcGVuVGFnID0gIjxzY3Jp
cHQ+IjsKKyAgICAgICAgdmFyIHNjcmlwdENsb3NlVGFnID0gIjwvc2NyaXB0PiI7CisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAg
Ly8gRmlsbCB0aGUgZ2FwIHdpdGggd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgorICAgICAgICAgICAg
Zm9yICh2YXIgbmV3TGluZXNDb3VudCA9IHNjcmlwdHNbaV0ubGluZU9mZnNldCAtIGxpbmVOdW1i
ZXI7IG5ld0xpbmVzQ291bnQgPiAwOyAtLW5ld0xpbmVzQ291bnQpIHsKKyAgICAgICAgICAgICAg
ICBjb2x1bW5OdW1iZXIgPSAwOworICAgICAgICAgICAgICAgIGNvbnRlbnQgKz0gIlxuIjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAodmFyIHNwYWNlc0NvdW50ID0gc2NyaXB0c1tp
XS5jb2x1bW5PZmZzZXQgLSBjb2x1bW5OdW1iZXIgLSBzY3JpcHRPcGVuVGFnLmxlbmd0aDsgc3Bh
Y2VzQ291bnQgPiAwOyAtLXNwYWNlc0NvdW50KQorICAgICAgICAgICAgICAgIGNvbnRlbnQgKz0g
IiAiOworCisgICAgICAgICAgICAvLyBBZGQgc2NyaXB0IHRhZy4KKyAgICAgICAgICAgIGNvbnRl
bnQgKz0gc2NyaXB0T3BlblRhZzsKKyAgICAgICAgICAgIGNvbnRlbnQgKz0gc291cmNlc1tpXTsK
KyAgICAgICAgICAgIGNvbnRlbnQgKz0gc2NyaXB0Q2xvc2VUYWc7CisgICAgICAgICAgICBsaW5l
TnVtYmVyID0gc2NyaXB0c1tpXS5lbmRMaW5lOworICAgICAgICAgICAgY29sdW1uTnVtYmVyID0g
c2NyaXB0c1tpXS5lbmRDb2x1bW4gKyBzY3JpcHRDbG9zZVRhZy5sZW5ndGg7CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gY29udGVudDsKKyAgICB9CiB9CiAKIFdlYkluc3BlY3Rvci5Db25j
YXRlbmF0ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanMKaW5kZXggYjM2ZTA3YTRlMjljNDc0NWU2MmNhNGM2
YjAwNjE2M2RjMTgwYzY4Zi4uOGU4NTdmYWM1YmRiNzFkOGRkNGVlYjdlMmY4YzI3MGI1MWEyZjhk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanMKQEAg
LTQ5LDEyICs0OSwyNCBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICBmdW5jdGlvbiBkaWRHZXRTY3JpcHRTb3VyY2UoZXJyb3IsIHNvdXJjZSkKICAgICAgICAg
ewotICAgICAgICAgICAgdGhpcy5fc291cmNlID0gc291cmNlOworICAgICAgICAgICAgdGhpcy5f
c291cmNlID0gZXJyb3IgPyAiIiA6IHNvdXJjZTsKICAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMu
X3NvdXJjZSk7CiAgICAgICAgIH0KICAgICAgICAgRGVidWdnZXJBZ2VudC5nZXRTY3JpcHRTb3Vy
Y2UodGhpcy5zY3JpcHRJZCwgZGlkR2V0U2NyaXB0U291cmNlLmJpbmQodGhpcykpOwogICAgIH0s
CiAKKyAgICBzZWFyY2hJbkNvbnRlbnQ6IGZ1bmN0aW9uKHF1ZXJ5LCBjYWxsYmFjaykKKyAgICB7
CisgICAgICAgIGZ1bmN0aW9uIGlubmVyQ2FsbGJhY2soZXJyb3IsIHNlYXJjaE1hdGNoZXMpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICAgICBjb25zb2xl
LmVycm9yKGVycm9yKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHNlYXJjaE1hdGNoZXMgfHwgW10p
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBEZWJ1Z2dlckFnZW50LnNlYXJjaEluQ29u
dGVudCh0aGlzLnNjcmlwdElkLCBxdWVyeSwgaW5uZXJDYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAg
ICB9LAorICAgIAogICAgIGVkaXRTb3VyY2U6IGZ1bmN0aW9uKG5ld1NvdXJjZSwgY2FsbGJhY2sp
CiAgICAgewogICAgICAgICBmdW5jdGlvbiBkaWRFZGl0U2NyaXB0U291cmNlKGVycm9yLCBjYWxs
RnJhbWVzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109633</attachid>
            <date>2011-10-04 09:55:45 -0700</date>
            <delta_ts>2011-10-04 11:32:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69015-20111004205543.patch</filename>
            <type>text/plain</type>
            <size>30639</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY1ODQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmY2M1OGI3YzI0MTQ2NTczZWFkMDVi
MTAxYzk1Y2ExZjlmMTc0MjEzLi5lMjhmOTNkZTI4ZWU1ZDFkZjJkMGM3Y2VlN2QzNjBlN2I1Mjg5
ODcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMTAtMDQgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBv
cnQgZm9yIHNlYXJjaCBpbiBzY3JpcHQgY29udGVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MDE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS10
cmVlL3Jlc291cmNlLXRyZWUtdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfUmVzb3VyY2VU
cmVlVGVzdCk6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzLXRlc3Qu
anM6CisgICAgICAgIChpbml0aWFsaXplX1Jlc291cmNlVGVzdC5JbnNwZWN0b3JUZXN0LnJ1bkFm
dGVyUmVzb3VyY2VzQXJlRmluaXNoZWQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9SZXNvdXJjZVRl
c3QuSW5zcGVjdG9yVGVzdC5fcnVuQWZ0ZXJSZXNvdXJjZXNBcmVGaW5pc2hlZCk6CisgICAgICAg
IChpbml0aWFsaXplX1Jlc291cmNlVGVzdC5JbnNwZWN0b3JUZXN0Ll9ydW5BZnRlclJlc291cmNl
c0FyZUZpbmlzaGVkLm1heWJlQ2FsbGJhY2spOgorICAgICAgICAoaW5pdGlhbGl6ZV9SZXNvdXJj
ZVRlc3QuSW5zcGVjdG9yVGVzdC5fcnVuQWZ0ZXJSZXNvdXJjZXNBcmVGaW5pc2hlZC5hZGRTbmlm
ZmVyKToKKyAgICAgICAgKGluaXRpYWxpemVfUmVzb3VyY2VUZXN0Lkluc3BlY3RvclRlc3QuX3J1
bkFmdGVyUmVzb3VyY2VzQXJlRmluaXNoZWQucmVzb3VyY2VBZGRlZFRvRnJhbWUpOgorICAgICAg
ICAoaW5pdGlhbGl6ZV9SZXNvdXJjZVRlc3QuSW5zcGVjdG9yVGVzdC5fcnVuQWZ0ZXJSZXNvdXJj
ZXNBcmVGaW5pc2hlZC52aXNpdCk6CisgICAgICAgIChpbml0aWFsaXplX1Jlc291cmNlVGVzdCk6
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3Jlc291cmNlcy9zZWFyY2gt
Y29uY2F0ZW5hdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9y
L3NlYXJjaC9zZWFyY2gtaW4tY29uY2F0ZW5hdGVkLXNjcmlwdC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tY29uY2F0
ZW5hdGVkLXNjcmlwdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9zZWFyY2gvc2VhcmNoLWluLXJlc291cmNlLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9p
bnNwZWN0b3Ivc2VhcmNoL3NlYXJjaC1pbi1zY3JpcHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLXNjcmlwdC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLXRl
c3QuanM6CisgICAgICAgIChpbml0aWFsaXplX1NlYXJjaFRlc3QpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9kZWJ1Z2dlci9jb250ZW50LXByb3ZpZGVycy5odG1sOgorICAgICAgICAqIHBsYXRmb3Jt
L3F0L1NraXBwZWQ6CisKIDIwMTEtMTAtMDQgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFVwZGF0ZSBleHBlY3RhdGlvbnMgZm9yIHN2Zy9X
M0MtU1ZHLTEuMS9wc2VydmVycy1ncmFkLTA2LWIuc3ZnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS10cmVlL3Jlc291cmNlLXRyZWUtdGVzdC5q
cyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXRyZWUvcmVzb3Vy
Y2UtdHJlZS10ZXN0LmpzCmluZGV4IGJhZDc1YmQ1ZmZmNzhhMmU3ZmU3NmE0YWJlMDg0OGJlZTIy
YWE2ZTIuLjgwYTIxODAxNzk2MTNmMTYyNDQyMGE5YTQ5MWY4YmMxZWJlYjI4OTggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXRyZWUvcmVzb3Vy
Y2UtdHJlZS10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jl
c291cmNlLXRyZWUvcmVzb3VyY2UtdHJlZS10ZXN0LmpzCkBAIC04NiwzMiArODYsNCBAQCBJbnNw
ZWN0b3JUZXN0LmR1bXBSZXNvdXJjZVRyZWVFdmVyeXRoaW5nID0gZnVuY3Rpb24oKQogICAgIElu
c3BlY3RvclRlc3QuZHVtcFJlc291cmNlc1RyZWUoKTsKIH0KIAotSW5zcGVjdG9yVGVzdC5ydW5B
ZnRlclJlc291cmNlc0FyZUZpbmlzaGVkID0gZnVuY3Rpb24ocmVzb3VyY2VVUkxzLCBjYWxsYmFj
aykKLXsKLSAgICBJbnNwZWN0b3JUZXN0Ll9ydW5BZnRlclJlc291cmNlc0FyZUZpbmlzaGVkKHJl
c291cmNlVVJMcy5rZXlTZXQoKSwgY2FsbGJhY2spOwotfQotCi1JbnNwZWN0b3JUZXN0Ll9ydW5B
ZnRlclJlc291cmNlc0FyZUZpbmlzaGVkID0gZnVuY3Rpb24ocmVzb3VyY2VVUkxzLCBjYWxsYmFj
aykKLXsKLSAgICBmdW5jdGlvbiB2aXNpdChyZXNvdXJjZSkKLSAgICB7Ci0gICAgICAgIGlmICgh
cmVzb3VyY2UuZmluaXNoZWQpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICBm
b3IgKHZhciB1cmwgaW4gcmVzb3VyY2VVUkxzKSB7Ci0gICAgICAgICAgICBpZiAocmVzb3VyY2Uu
dXJsLmluZGV4T2YodXJsKSAhPT0gLTEpCi0gICAgICAgICAgICAgICAgZGVsZXRlIHJlc291cmNl
VVJMc1t1cmxdOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhyZXNvdXJj
ZVVSTHMpLmxlbmd0aCkgewotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdmFyIHN1Y2NlZWRlZCA9IFdlYklu
c3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5mb3JBbGxSZXNvdXJjZXModmlzaXQpOwotICAgIGlm
ICghc3VjY2VlZGVkKQotICAgICAgICBzZXRUaW1lb3V0KEluc3BlY3RvclRlc3QuX3J1bkFmdGVy
UmVzb3VyY2VzQXJlRmluaXNoZWQuYmluZChJbnNwZWN0b3JUZXN0LCByZXNvdXJjZVVSTHMsIGNh
bGxiYWNrKSwgMCk7Ci19Ci0KIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZXMtdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3Jlc291cmNlcy10ZXN0LmpzCmluZGV4IDIwNzM5ZjU1OGNhMmE3ZDVlY2U4ODQ4N2Rl
ZGY0ODQ2NzcyZjNiMzcuLjYxNjkxMGMxOWE3OTAyMDYyMjE2YTc4NjhjMGFmMTM5YzFjMzRiNzQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy10
ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy10
ZXN0LmpzCkBAIC0yNyw0ICsyNyw1MCBAQCBJbnNwZWN0b3JUZXN0LnJlc291cmNlVVJMQ29tcGFy
ZXIgPSBmdW5jdGlvbihyMSwgcjIpCiAgICAgcmV0dXJuIHIxLnJlcXVlc3QudXJsLmxvY2FsZUNv
bXBhcmUocjIucmVxdWVzdC51cmwpOwogfQogCitJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUmVzb3Vy
Y2VzQXJlRmluaXNoZWQgPSBmdW5jdGlvbihyZXNvdXJjZVVSTHMsIGNhbGxiYWNrKQoreworICAg
IEluc3BlY3RvclRlc3QuX3J1bkFmdGVyUmVzb3VyY2VzQXJlRmluaXNoZWQocmVzb3VyY2VVUkxz
LmtleVNldCgpLCBjYWxsYmFjayk7Cit9CisKK0luc3BlY3RvclRlc3QuX3J1bkFmdGVyUmVzb3Vy
Y2VzQXJlRmluaXNoZWQgPSBmdW5jdGlvbihyZXNvdXJjZVVSTHMsIGNhbGxiYWNrKQoreworICAg
IGZ1bmN0aW9uIGNoZWNrUmVzb3VyY2UocmVzb3VyY2UpCisgICAgeworICAgICAgICBmb3IgKHZh
ciB1cmwgaW4gcmVzb3VyY2VVUkxzKSB7CisgICAgICAgICAgICBpZiAocmVzb3VyY2UudXJsLmlu
ZGV4T2YodXJsKSAhPT0gLTEpCisgICAgICAgICAgICAgICAgZGVsZXRlIHJlc291cmNlVVJMc1t1
cmxdOworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gbWF5YmVDYWxsYmFjaygpCisg
ICAgeworICAgICAgICBpZiAoIU9iamVjdC5rZXlzKHJlc291cmNlVVJMcykubGVuZ3RoKSB7Cisg
ICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRTbmlmZmVyKHJlc291cmNlKQorICAgIHsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVN
b2RlbC5wcm90b3R5cGUsICJfYWRkUmVzb3VyY2VUb0ZyYW1lIiwgcmVzb3VyY2VBZGRlZFRvRnJh
bWUuYmluZCh0aGlzKSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcmVzb3VyY2VBZGRlZFRvRnJh
bWUocmVzb3VyY2UpCisgICAgeworICAgICAgICBjaGVja1Jlc291cmNlKHJlc291cmNlKTsKKyAg
ICAgICAgaWYgKCFtYXliZUNhbGxiYWNrKCkpCisgICAgICAgICAgICBhZGRTbmlmZmVyKCk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gdmlzaXQocmVzb3VyY2UpCisgICAgeworICAgICAgICBjaGVj
a1Jlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgcmV0dXJuIG1heWJlQ2FsbGJhY2soKTsKKyAg
ICB9CisKKyAgICB2YXIgc3VjY2VlZGVkID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVs
LmZvckFsbFJlc291cmNlcyh2aXNpdCk7CisgICAgaWYgKCFzdWNjZWVkZWQpCisgICAgICAgIGFk
ZFNuaWZmZXIoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3Ivc2VhcmNoL3Jlc291cmNlcy9zZWFyY2gtY29uY2F0ZW5hdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvcmVzb3VyY2VzL3NlYXJjaC1jb25j
YXRlbmF0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjhmZjY0YzJiYmYyNjliMDZlMjBhZjMwMTA0ODMy
ZjYzZDgxNDdhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3Ivc2VhcmNoL3Jlc291cmNlcy9zZWFyY2gtY29uY2F0ZW5hdGVkLmh0bWwKQEAgLTAsMCAr
MSwzMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBzZWFyY2hUZXN0VW5p
cXVlU3RyaW5nKCkKK3sKKyAgICB2YXIgdmFyaWFibGUgPSAwOworICAgIC8vIHNlYXJjaFRlc3RV
bmlxdWVTdHJpbmcgdHdvIG9jY3VyZW5jZXMgb24gdGhlIHNhbWUgbGluZSBzZWFyY2hUZXN0VW5p
cXVlU3RyaW5nCisgICAgdmFyIHZhcmlhYmxlMiA9IDA7Cit9Cis8L3NjcmlwdD48c2NyaXB0Pgor
ZnVuY3Rpb24gZG9Tb21ldGhpbmcoKQoreworICAgIHNlYXJjaFRlc3RVbmlxdWVTdHJpbmcoKTsK
KyAgICAvLyBTRUFSQ0hUZXN0VW5pcXVlU3RyaW5nKCk7Cit9Cis8L3NjcmlwdD4KKzxsaW5rIGhy
ZWY9InNlYXJjaC5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPHNjcmlw
dD4KK2Z1bmN0aW9uIHNlYXJjaFRlc3RVbmlxdWVTdHJpbmcyKCkKK3sKKyAgICB2YXIgdmFyaWFi
bGUgPSAwOworICAgIC8qIHNlYXJjaFRlc3RVbmlxdWVTdHJpbmcgdHdvIG9jY3VyZW5jZXMgb24g
dGhlIHNhbWUgbGluZSBzZWFyY2hUZXN0VW5pcXVlU3RyaW5nICovIH0gPC9zY3JpcHQ+PHNjcmlw
dD4gZnVuY3Rpb24gZG9Tb21ldGhpbmcyKCkgeyBzZWFyY2hUZXN0VW5pcXVlU3RyaW5nKCk7Cisg
ICAgLy8gU0VBUkNIVGVzdFVuaXF1ZVN0cmluZygpOworfQorPC9zY3JpcHQ+Cis8L3NjcmlwdD4K
Kzxib2R5PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLWNvbmNhdGVuYXRlZC1zY3JpcHQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3NlYXJj
aC1pbi1jb25jYXRlbmF0ZWQtc2NyaXB0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YWI0OGE1
MmI5NTBjODcwNzE4OGNkNTEwNjkxNzQ3ZjY0M2NmOGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3NlYXJjaC1pbi1jb25jYXRlbmF0
ZWQtc2NyaXB0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitUZXN0cyBjb25jYXRlbmF0
ZWQgc2NyaXB0IHNlYXJjaCBpbiBpbnNwZWN0b3IgZGVidWdnZXIgYWdlbnQuCisKK0J1ZyA2OTAx
NSAgCitEZWJ1Z2dlciB3YXMgZW5hYmxlZC4KK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0
b3Ivc2VhcmNoL3Jlc291cmNlcy9zZWFyY2gtY29uY2F0ZW5hdGVkLmh0bWwKK1NlYXJjaCBtYXRj
aGVzOiAKK2xpbmVOdW1iZXI6IDMsIGxpbmU6ICdmdW5jdGlvbiBzZWFyY2hUZXN0VW5pcXVlU3Ry
aW5nKCknCitsaW5lTnVtYmVyOiA2LCBsaW5lOiAnICAgIC8vIHNlYXJjaFRlc3RVbmlxdWVTdHJp
bmcgdHdvIG9jY3VyZW5jZXMgb24gdGhlIHNhbWUgbGluZSBzZWFyY2hUZXN0VW5pcXVlU3RyaW5n
JworbGluZU51bWJlcjogMTIsIGxpbmU6ICcgICAgc2VhcmNoVGVzdFVuaXF1ZVN0cmluZygpOycK
K2xpbmVOdW1iZXI6IDEzLCBsaW5lOiAnICAgIC8vIFNFQVJDSFRlc3RVbmlxdWVTdHJpbmcoKTsn
CitsaW5lTnVtYmVyOiAxOCwgbGluZTogJ2Z1bmN0aW9uIHNlYXJjaFRlc3RVbmlxdWVTdHJpbmcy
KCknCitsaW5lTnVtYmVyOiAyMSwgbGluZTogJyAgICAvKiBzZWFyY2hUZXN0VW5pcXVlU3RyaW5n
IHR3byBvY2N1cmVuY2VzIG9uIHRoZSBzYW1lIGxpbmUgc2VhcmNoVGVzdFVuaXF1ZVN0cmluZyAq
LyB9ICcKK2xpbmVOdW1iZXI6IDIxLCBsaW5lOiAnIGZ1bmN0aW9uIGRvU29tZXRoaW5nMigpIHsg
c2VhcmNoVGVzdFVuaXF1ZVN0cmluZygpOycKK2xpbmVOdW1iZXI6IDIyLCBsaW5lOiAnICAgIC8v
IFNFQVJDSFRlc3RVbmlxdWVTdHJpbmcoKTsnCisKK0RlYnVnZ2VyIHdhcyBkaXNhYmxlZC4KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3NlYXJj
aC1pbi1jb25jYXRlbmF0ZWQtc2NyaXB0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLWNvbmNhdGVuYXRlZC1zY3JpcHQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44MWEwYTM3OTc2YWRkOTlhYzIzNDFhYTlmY2VhOWJkZjVjNWRjYjRiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3NlYXJjaC1p
bi1jb25jYXRlbmF0ZWQtc2NyaXB0Lmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Rl
YnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNlYXJjaC10ZXN0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICAvLyBUaGlzIGZpbGUg
c2hvdWxkIG5vdCBtYXRjaCBzZWFyY2ggcXVlcnkuCisgICAgdmFyIHRleHQgPSAic2VhcmNoVGVz
dCIgKyAiVW5pcXVlU3RyaW5nIjsKKyAgICBJbnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0
KHN0ZXAxKTsKKworICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICB7CisgICAgICAgIEluc3BlY3Rv
clRlc3QucnVuQWZ0ZXJSZXNvdXJjZXNBcmVGaW5pc2hlZChbInNlYXJjaC1jb25jYXRlbmF0ZWQu
aHRtbCJdLCBzdGVwMik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5zaG93U2NyaXB0U291cmNlKCJzZWFyY2gtY29uY2F0ZW5hdGVk
Lmh0bWwiLCBzdGVwMyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDMoKQorICAgIHsKKyAg
ICAgICAgdmFyIHVybCA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3NlYXJjaC9y
ZXNvdXJjZXMvc2VhcmNoLWNvbmNhdGVuYXRlZC5odG1sIjsKKyAgICAgICAgdmFyIHNjcmlwdHMg
PSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRzRm9yVVJMKHVybCk7CisgICAgICAg
IHZhciBjb250ZW50UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbmNhdGVuYXRlZFNjcmlw
dHNDb250ZW50UHJvdmlkZXIoc2NyaXB0cyk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KHVybCk7CisgICAgICAgIGNvbnRlbnRQcm92aWRlci5zZWFyY2hJbkNvbnRlbnQodGV4dCwg
c3RlcDQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXA0KHNlYXJjaE1hdGNoZXMpCisgICAg
eworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWFyY2hNYXRjaGVzKHNlYXJjaE1hdGNoZXMp
OworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVidWdnZXJUZXN0KCk7CisgICAgfQor
fQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRlc3RzIGNvbmNhdGVuYXRlZCBzY3Jp
cHQgc2VhcmNoIGluIGluc3BlY3RvciBkZWJ1Z2dlciBhZ2VudC48L3A+Cis8YSBocmVmPSJodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkwMTUiPkJ1ZyA2OTAxNTwvYT4K
KworPGlmcmFtZSBzcmM9InJlc291cmNlcy9zZWFyY2gtY29uY2F0ZW5hdGVkLmh0bWwiIG9ubG9h
ZD0icnVuVGVzdCgpIj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tcmVzb3VyY2UuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tcmVzb3VyY2Uu
aHRtbAppbmRleCAwMzI3NGE2ZDU5ZGNjMTc4Yzg4NGU0NGY2YzVmOWNkY2Y1MjYyNTYyLi42NGMx
YWJkMzVlMWFlNDI0NDAzOTRmOWFhN2Q3NTYxMmY5MjZhMjhhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLXJlc291cmNlLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3NlYXJjaC1pbi1y
ZXNvdXJjZS5odG1sCkBAIC0xLDEzICsxLDE0IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBz
cmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0ic2VhcmNoLXRlc3QuanMiPjwv
c2NyaXB0PgogPHNjcmlwdD4KIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIC8vIFRoaXMgZmlsZSBz
aG91bGQgbm90IG1hdGNoIHNlYXJjaCBxdWVyeS4KICAgICB2YXIgdGV4dCA9ICJzZWFyY2hUZXN0
IiArICJVbmlxdWVTdHJpbmciOwotICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJSZXNvdXJjZXNB
cmVDcmVhdGVkKFsic2VhcmNoLmpzIl0sIHN0ZXAyKTsKKyAgICBJbnNwZWN0b3JUZXN0LnJ1bkFm
dGVyUmVzb3VyY2VzQXJlRmluaXNoZWQoWyJzZWFyY2guanMiXSwgc3RlcDIpOwogCiAgICAgZnVu
Y3Rpb24gc3RlcDIoKQogICAgIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tc2NyaXB0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tc2NyaXB0LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41NzUxN2NlNmY4OWU5NTBiN2M0M2Q0ZmI2MjVlZGIxNmRkODk5Y2Yz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2Vh
cmNoL3NlYXJjaC1pbi1zY3JpcHQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3Rz
IHNjcmlwdCBzZWFyY2ggaW4gaW5zcGVjdG9yIGRlYnVnZ2VyIGFnZW50LgorCitCdWcgNjkwMTUg
IAorRGVidWdnZXIgd2FzIGVuYWJsZWQuCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9y
L3NlYXJjaC9yZXNvdXJjZXMvc2VhcmNoLmpzCitTZWFyY2ggbWF0Y2hlczogCitsaW5lTnVtYmVy
OiAwLCBsaW5lOiAnZnVuY3Rpb24gc2VhcmNoVGVzdFVuaXF1ZVN0cmluZygpJworbGluZU51bWJl
cjogMywgbGluZTogJyAgICAvLyBzZWFyY2hUZXN0VW5pcXVlU3RyaW5nIHR3byBvY2N1cmVuY2Vz
IG9uIHRoZSBzYW1lIGxpbmUgc2VhcmNoVGVzdFVuaXF1ZVN0cmluZycKK2xpbmVOdW1iZXI6IDks
IGxpbmU6ICcgICAgc2VhcmNoVGVzdFVuaXF1ZVN0cmluZygpOycKK2xpbmVOdW1iZXI6IDEwLCBs
aW5lOiAnICAgIC8vIFNFQVJDSFRlc3RVbmlxdWVTdHJpbmcoKTsnCisKK0RlYnVnZ2VyIHdhcyBk
aXNhYmxlZC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
c2VhcmNoL3NlYXJjaC1pbi1zY3JpcHQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tc2NyaXB0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTc1ZjU2ZmIx
MTI3ZmIxNmZiY2FjYzkyMjAyZDZkYjQ5NzFkMzIwMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tc2NyaXB0Lmh0bWwK
QEAgLTAsMCArMSw0NiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0
b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InNlYXJjaC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICAvLyBUaGlzIGZpbGUgc2hvdWxkIG5vdCBtYXRjaCBzZWFyY2ggcXVl
cnkuCisgICAgdmFyIHRleHQgPSAic2VhcmNoVGVzdCIgKyAiVW5pcXVlU3RyaW5nIjsKKyAgICBJ
bnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0KHN0ZXAxKTsKKworICAgIGZ1bmN0aW9uIHN0
ZXAxKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJSZXNvdXJjZXNBcmVG
aW5pc2hlZChbInNlYXJjaC5qcyJdLCBzdGVwMik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3Rl
cDIoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zaG93U2NyaXB0U291cmNlKCJzZWFy
Y2guanMiLCBzdGVwMyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDMoKQorICAgIHsKKyAg
ICAgICAgdmFyIHNjcmlwdHMgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRzRm9y
VVJMKCJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3NlYXJjaC9yZXNvdXJjZXMvc2Vh
cmNoLmpzIik7CisgICAgICAgIHZhciBzY3JpcHQgPSBzY3JpcHRzWzBdOworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdChzY3JpcHQuc291cmNlVVJMKTsKKyAgICAgICAgc2NyaXB0LnNl
YXJjaEluQ29udGVudCh0ZXh0LCBzdGVwNCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDQo
c2VhcmNoTWF0Y2hlcykKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlYXJjaE1h
dGNoZXMoc2VhcmNoTWF0Y2hlcyk7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVEZWJ1
Z2dlclRlc3QoKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGVz
dHMgc2NyaXB0IHNlYXJjaCBpbiBpbnNwZWN0b3IgZGVidWdnZXIgYWdlbnQuPC9wPgorPGEgaHJl
Zj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MDE1Ij5CdWcgNjkw
MTU8L2E+CisKKzxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2VhcmNoLmh0bWwiIG9ubG9hZD0icnVu
VGVzdCgpIj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtdGVzdC5qcwppbmRleCBiNzlmZGYzMGI0OGQ3
YTkzN2E5MWQyODk2NTliMDAyM2M3ZWViMjRmLi42NTFiOGRmMTgxYzMxYjM4YTVkODZkMDk3YTNm
YzcyM2E2NmY1MGFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9zZWFyY2gvc2VhcmNoLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3Ivc2VhcmNoL3NlYXJjaC10ZXN0LmpzCkBAIC0xNiw1MCArMTYsNCBAQCBJbnNwZWN0b3JU
ZXN0LmR1bXBTZWFyY2hNYXRjaGVzID0gZnVuY3Rpb24oc2VhcmNoTWF0Y2hlcykKICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CiB9OwogCi1JbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUmVz
b3VyY2VzQXJlQ3JlYXRlZCA9IGZ1bmN0aW9uKHJlc291cmNlVVJMcywgY2FsbGJhY2spCi17Ci0g
ICAgSW5zcGVjdG9yVGVzdC5fcnVuQWZ0ZXJSZXNvdXJjZXNBcmVDcmVhdGVkKHJlc291cmNlVVJM
cy5rZXlTZXQoKSwgY2FsbGJhY2spOwotfQotCi1JbnNwZWN0b3JUZXN0Ll9ydW5BZnRlclJlc291
cmNlc0FyZUNyZWF0ZWQgPSBmdW5jdGlvbihyZXNvdXJjZVVSTHMsIGNhbGxiYWNrKQotewotICAg
IGZ1bmN0aW9uIGNoZWNrUmVzb3VyY2UocmVzb3VyY2UpCi0gICAgewotICAgICAgICBmb3IgKHZh
ciB1cmwgaW4gcmVzb3VyY2VVUkxzKSB7Ci0gICAgICAgICAgICBpZiAocmVzb3VyY2UudXJsLmlu
ZGV4T2YodXJsKSAhPT0gLTEpCi0gICAgICAgICAgICAgICAgZGVsZXRlIHJlc291cmNlVVJMc1t1
cmxdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gbWF5YmVDYWxsYmFjaygpCi0g
ICAgewotICAgICAgICBpZiAoIU9iamVjdC5rZXlzKHJlc291cmNlVVJMcykubGVuZ3RoKSB7Ci0g
ICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBhZGRTbmlmZmVyKHJlc291cmNlKQotICAgIHsKLSAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVN
b2RlbC5wcm90b3R5cGUsICJfYmluZFJlc291cmNlVVJMIiwgb25SZXNvdXJjZUJpbmQuYmluZCh0
aGlzKSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gb25SZXNvdXJjZUJpbmQocmVzb3VyY2UpCi0g
ICAgewotICAgICAgICBjaGVja1Jlc291cmNlKHJlc291cmNlKTsKLSAgICAgICAgaWYgKCFtYXli
ZUNhbGxiYWNrKCkpCi0gICAgICAgICAgICBhZGRTbmlmZmVyKCk7Ci0gICAgfQotCi0gICAgZnVu
Y3Rpb24gdmlzaXQocmVzb3VyY2UpCi0gICAgewotICAgICAgICBjaGVja1Jlc291cmNlKHJlc291
cmNlKTsKLSAgICAgICAgcmV0dXJuIG1heWJlQ2FsbGJhY2soKTsKLSAgICB9Ci0KLSAgICB2YXIg
c3VjY2VlZGVkID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLmZvckFsbFJlc291cmNl
cyh2aXNpdCk7Ci0gICAgaWYgKCFzdWNjZWVkZWQpCi0gICAgICAgIGFkZFNuaWZmZXIoKTsKLX0K
LQogfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9jb250ZW50
LXByb3ZpZGVycy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2NvbnRlbnQt
cHJvdmlkZXJzLmh0bWwKaW5kZXggMmYxNWYzNDkwNjUwMDg1NjMwNjRmMDUwNGQ2ZWQyZWFmMjE3
YmRkYy4uMThjYWU1Y2NkZWY4YzhmMWY2OTkwNDk4ODVhN2M0MDA5OWU4ZjQ1ZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2NvbnRlbnQtcHJvdmlkZXJzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2NvbnRlbnQtcHJvdmlkZXJzLmh0
bWwKQEAgLTE1LDcgKzE1LDkgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgY2Fs
bGJhY2soc291cmNlKTsKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICBnZXQgbGluZU9mZnNl
dCgpIHsgcmV0dXJuIHJhbmdlWzBdOyB9LAotICAgICAgICAgICAgZ2V0IGNvbHVtbk9mZnNldCgp
IHsgcmV0dXJuIHJhbmdlWzFdOyB9CisgICAgICAgICAgICBnZXQgY29sdW1uT2Zmc2V0KCkgeyBy
ZXR1cm4gcmFuZ2VbMV07IH0sCisgICAgICAgICAgICBnZXQgZW5kTGluZSgpIHsgcmV0dXJuIHJh
bmdlWzJdOyB9LAorICAgICAgICAgICAgZ2V0IGVuZENvbHVtbigpIHsgcmV0dXJuIHJhbmdlWzNd
OyB9CiAgICAgICAgIH07CiAgICAgfQogCkBAIC0zNywxMCArMzksMTAgQEAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgICAgIGZ1bmN0aW9uIHRlc3RDb25jYXRlbmF0ZWRTY3JpcHRzQ29udGVudFByb3Zp
ZGVyKG5leHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHZhciBzY3JpcHRzID0gW107Ci0gICAg
ICAgICAgICBzY3JpcHRzLnB1c2goY3JlYXRlTW9ja1NjcmlwdCgiMSIsICJcbmZ1bmN0aW9uIGJh
eigpXG57XG4gIHJldHVybiAwO1xufVxuIiwgWzMsIDIwXSkpOwotICAgICAgICAgICAgc2NyaXB0
cy5wdXNoKGNyZWF0ZU1vY2tTY3JpcHQoIjIiLCAiZnVuY3Rpb24gZm9vKCkgeyByZXR1cm4gMDsg
fSIsIFswLCAxMF0pKTsKLSAgICAgICAgICAgIHNjcmlwdHMucHVzaChjcmVhdGVNb2NrU2NyaXB0
KCIzIiwgImZ1bmN0aW9uIGJhcigpIHsgcmV0dXJuIDA7IH0iLCBbMSwgNzBdKSk7Ci0gICAgICAg
ICAgICBzY3JpcHRzLnB1c2goY3JlYXRlTW9ja1NjcmlwdCgiNCIsICJ0aGlzIHNob3VsZCBub3Qg
YXBwZWFyIGluIGRpc3BsYXllZCBjb250ZW50IiwgWzAsIDIwXSkpOworICAgICAgICAgICAgc2Ny
aXB0cy5wdXNoKGNyZWF0ZU1vY2tTY3JpcHQoIjEiLCAiXG5mdW5jdGlvbiBiYXooKVxue1xuICBy
ZXR1cm4gMDtcbn1cbiIsIFszLCAyMCwgNywgMF0pKTsKKyAgICAgICAgICAgIHNjcmlwdHMucHVz
aChjcmVhdGVNb2NrU2NyaXB0KCIyIiwgImZ1bmN0aW9uIGZvbygpIHsgcmV0dXJuIDA7IH0iLCBb
MCwgMTAsIDAsIDM4XSkpOworICAgICAgICAgICAgc2NyaXB0cy5wdXNoKGNyZWF0ZU1vY2tTY3Jp
cHQoIjMiLCAiZnVuY3Rpb24gYmFyKCkgeyByZXR1cm4gMDsgfSIsIFsxLCA3MCwgMSwgOThdKSk7
CisgICAgICAgICAgICBzY3JpcHRzLnB1c2goY3JlYXRlTW9ja1NjcmlwdCgiNCIsICJ0aGlzIHNo
b3VsZCBub3QgYXBwZWFyIGluIGRpc3BsYXllZCBjb250ZW50IiwgWzAsIDIwLCAwLCA2M10pKTsK
ICAgICAgICAgICAgIHZhciBjb250ZW50UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbmNh
dGVuYXRlZFNjcmlwdHNDb250ZW50UHJvdmlkZXIoc2NyaXB0cyk7CiAgICAgICAgICAgICBmdW5j
dGlvbiBkaWRSZXF1ZXN0Q29udGVudChtaW1lVHlwZSwgY29udGVudCkKICAgICAgICAgICAgIHsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IDQ2NDM1Y2IyZTY5YWI2NTRlM2FiZWI5YTQ4ZDg3
MjU5NTgyMWVhZTQuLjg1NjhjYTI3M2E1YjY2MmE0ZmM4ZDM2NzczMDg0YWY1ZTkyNDM3ZjAgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtMjM4NSw5ICsyMzg1LDMgQEAgaHR0cC90ZXN0cy9t
dWx0aXBhcnQvc3RvcC1jcmFzaC5odG1sCiAjIE9uZSB0ZXN0IGZhaWxlZCBhZnRlciByOTYyNjAK
ICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MjU3CiBpbnNwZWN0
b3Ivc3R5bGVzL3N0eWxlcy1kaXNhYmxlLXRoZW4tY2hhbmdlLmh0bWwKLQotIyBbUXRdIFJFR1JF
U1NJT04ocjk1NTI2KTogSXQgbWFkZSAzIGluc3BlY3RvciB0ZXN0cyBmYWlsCi0jIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTI2NQotaHR0cC90ZXN0cy9pbnNwZWN0
b3Ivc2VhcmNoL3NlYXJjaC1pbi1jb25jYXRlbmF0ZWQtc2NyaXB0Lmh0bWwKLWh0dHAvdGVzdHMv
aW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tc2NyaXB0Lmh0bWwKLWluc3BlY3Rvci9kZWJ1Z2dl
ci9zY3JpcHQtZm9ybWF0dGVyLmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ODljOTVjOWM1ZTE3ZGRhYTlj
N2ZlYzRiMGUyOTc4YWQzY2ZkYjQyLi41YzUxZTZjYThjODQ2MWUwZjIwMGU2MmEzNzk0ZTNjMzRm
NzZmYTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMTAtMDQgIFZzZXZvbG9k
IFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QWRkIHN1cHBvcnQgZm9yIHNlYXJjaCBpbiBzY3JpcHQgY29udGVudC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MDE1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvaW5zcGVj
dG9yL3NlYXJjaC9zZWFyY2gtaW4tY29uY2F0ZW5hdGVkLXNjcmlwdC5odG1sCisgICAgICAgICAg
ICAgICBodHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLXNjcmlwdC5odG1sCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c2VhcmNoSW5Db250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmdldFNjcmlwdFNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0NvbnRlbnRQcm92aWRlcnMuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVu
dFByb3ZpZGVyLnByb3RvdHlwZS5zZWFyY2hJbkNvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbmNhdGVuYXRlZFNjcmlwdHNDb250ZW50UHJvdmlkZXIucHJvdG90eXBlLl9zb3J0ZWRT
Y3JpcHRzLnZhcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uY2F0ZW5hdGVkU2NyaXB0c0Nv
bnRlbnRQcm92aWRlci5wcm90b3R5cGUuX3NvcnRlZFNjcmlwdHMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvbmNhdGVuYXRlZFNjcmlwdHNDb250ZW50UHJvdmlkZXIucHJvdG90eXBlLnJlcXVl
c3RDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29u
dGVudFByb3ZpZGVyLnByb3RvdHlwZS5zZWFyY2hJbkNvbnRlbnQubWF5YmVDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ29uY2F0ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92aWRlci5w
cm90b3R5cGUuc2VhcmNoSW5Db250ZW50LnNlYXJjaENhbGxiYWNrKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZS5zZWFy
Y2hJbkNvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbmNhdGVuYXRlZFNjcmlwdHND
b250ZW50UHJvdmlkZXIucHJvdG90eXBlLl9jb25jYXRlbmF0ZVNjcmlwdHNDb250ZW50KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TY3JpcHQucHJvdG90eXBlLnJlcXVlc3RTb3VyY2UuZGlkR2V0U2NyaXB0U291cmNlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBlLnJlcXVlc3RTb3VyY2UpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdC5wcm90b3R5cGUuc2VhcmNoSW5Db250ZW50KToK
KwogMjAxMS0xMC0wNCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3Rvcjogc3RhcnQgYWRkaW5nIFVJIGNvbXBvbmVudHMgdG8gdGhlIGNv
bXBpbGF0aW9uIHByb2Nlc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24K
aW5kZXggY2FlMDY3OTJmZjY1MGE4NjhhZTEwMDFhMzYwNjg2ZTk4ZDEzYjVhOC4uZDE1YmE1Mzdm
OGFlNjVlYjczYTkzZDZhZjM1MzE0YjNhZDJkZTc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbgpAQCAtMTc2NSw2ICsxNzY1LDE3IEBACiAgICAgICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIlJlc3VtZXMgSmF2YVNjcmlwdCBleGVjdXRpb24uIgogICAgICAgICAg
ICAgfSwKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJzZWFyY2hJbkNv
bnRlbnQiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInNjcmlwdElkIiwgIiRyZWYiOiAiU2NyaXB0SWQiLCAiZGVzY3JpcHRp
b24iOiAiSWQgb2YgdGhlIHNjcmlwdCB0byBzZWFyY2ggaW4uIiB9LAorICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInF1ZXJ5IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjog
IlN0cmluZyB0byBzZWFyY2ggZm9yLiIgIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlc3Vs
dCIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJQYWdlLlNlYXJjaE1hdGNo
IiB9LCAiZGVzY3JpcHRpb24iOiAiTGlzdCBvZiBzZWFyY2ggbWF0Y2hlcy4iIH0KKyAgICAgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTZWFyY2hlcyBmb3Ig
Z2l2ZW4gc3RyaW5nIGluIHNjcmlwdCBjb250ZW50LiIKKyAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAic2V0U2NyaXB0U291cmNlIiwKICAgICAg
ICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJzY3JpcHRJZCIsICIkcmVmIjogIlNjcmlwdElkIiwgImRlc2NyaXB0aW9uIjogIklkIG9mIHRo
ZSBzY3JpcHQgdG8gZWRpdC4iIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggMGIyMTIwZGJhODBhZTdmMjkyZTMyOGZl
YzU3NDNiMzMxOWU4MTI5ZC4uM2Q3MTIwYTU1ODU2NjhjOGJkY2JlMGUxNmE3Yzk0YmMyZDFiNGZi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaCIKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5T
UEVDVE9SKQorI2luY2x1ZGUgIkNvbnRlbnRTZWFyY2hVdGlscy5oIgogI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKQEAgLTMyMCw2ICszMjEsMTUgQEAgc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBzY3JpcHRUb0luc3BlY3Rvck9iamVjdChTY3JpcHRPYmpl
Y3Qgc2NyaXB0T2IKICAgICByZXR1cm4gdmFsdWUtPmFzT2JqZWN0KCk7CiB9CiAKK3ZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6c2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nKiBlcnJvciwg
Y29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiogcmVzdWx0cykKK3sKKyAgICBTY3JpcHRzTWFwOjppdGVyYXRvciBpdCA9IG1f
c2NyaXB0cy5maW5kKHNjcmlwdElkKTsKKyAgICBpZiAoaXQgIT0gbV9zY3JpcHRzLmVuZCgpKQor
ICAgICAgICAqcmVzdWx0cyA9IENvbnRlbnRTZWFyY2hVdGlsczo6c2VhcmNoSW5UZXh0QnlMaW5l
cyhxdWVyeSwgaXQtPnNlY29uZC5zb3VyY2UpOworICAgIGVsc2UKKyAgICAgICAgKmVycm9yID0g
Ik5vIHNjcmlwdCBmb3IgaWQ6ICIgKyBzY3JpcHRJZDsKK30KKwogdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpzZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJp
bmcmIHNjcmlwdElkLCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGNvbnN0IGJvb2wqIGNvbnN0
IHByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIG5ld0NhbGxGcmFtZXMsIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpCiB7CiAgICAgYm9vbCBwcmV2aWV3T25seSA9IHByZXZp
ZXcgJiYgKnByZXZpZXc7CkBAIC0zMzIsOSArMzQyLDEzIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6c2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5n
JiBzCiAgICAgICAgICpyZXN1bHQgPSBvYmplY3Q7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6Z2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3Jp
cHRJZCwgU3RyaW5nKiBzY3JpcHRTb3VyY2UpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmdldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyaXB0
SWQsIFN0cmluZyogc2NyaXB0U291cmNlKQogewotICAgICpzY3JpcHRTb3VyY2UgPSBtX3Njcmlw
dHMuZ2V0KHNjcmlwdElkKS5zb3VyY2U7CisgICAgU2NyaXB0c01hcDo6aXRlcmF0b3IgaXQgPSBt
X3NjcmlwdHMuZmluZChzY3JpcHRJZCk7CisgICAgaWYgKGl0ICE9IG1fc2NyaXB0cy5lbmQoKSkK
KyAgICAgICAgKnNjcmlwdFNvdXJjZSA9IGl0LT5zZWNvbmQuc291cmNlOworICAgIGVsc2UKKyAg
ICAgICAgKmVycm9yID0gIk5vIHNjcmlwdCBmb3IgaWQ6ICIgKyBzY3JpcHRJZDsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KGNv
bnN0IFN0cmluZyYgYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRh
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmgKaW5kZXggMTg1YWFiODJlZWQ1MGYyZDc0YWNhNTVhNDRlZGRlNmI5ZjEzYTU2My4uNzNiMjc1
NGUyOGEzMTdkOWU2YTlkM2E0ZGUzNzQ3NjdkMTBmOGMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCkBAIC04MSw2ICs4MSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIGJyZWFrcG9pbnRJZCk7CiAgICAgdm9pZCBjb250aW51ZVRvTG9jYXRpb24oRXJyb3JT
dHJpbmcqLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbG9jYXRpb24pOwogCisgICAgdm9p
ZCBzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBj
b25zdCBTdHJpbmcmIHF1ZXJ5LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+Kik7CiAgICAgdm9pZCBz
ZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25z
dCBTdHJpbmcmIG5ld0NvbnRlbnQsIGNvbnN0IGJvb2wqIGNvbnN0IHByZXZpZXcsIFJlZlB0cjxJ
bnNwZWN0b3JBcnJheT4qIG5ld0NhbGxGcmFtZXMsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBy
ZXN1bHQpOwogICAgIHZvaWQgZ2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiBzY3JpcHRJZCwgU3RyaW5nKiBzY3JpcHRTb3VyY2UpOwogICAgIHZvaWQgc2NoZWR1bGVQ
YXVzZU9uTmV4dFN0YXRlbWVudChjb25zdCBTdHJpbmcmIGJyZWFrUmVhc29uLCBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0NvbnRlbnRQcm92aWRlcnMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0NvbnRlbnRQcm92aWRlcnMuanMKaW5kZXggZDgwNDhmZWYwYTEyYTUz
MmUwNjBlN2Y2NWYzZGJmYWViOWFhNTNkZS4uZGY3ZmEzOTUyMjVkMzE1NTZjM2Y1MmY4NWU2MmMz
ZmE5YmJmNzhjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Db250ZW50UHJvdmlkZXJzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQ29udGVudFByb3ZpZGVycy5qcwpAQCAtNTAsNyArNTAsNyBAQCBXZWJJbnNwZWN0b3Iu
U2NyaXB0Q29udGVudFByb3ZpZGVyLnByb3RvdHlwZSA9IHsKIAogICAgIHNlYXJjaEluQ29udGVu
dDogZnVuY3Rpb24ocXVlcnksIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgY2FsbGJhY2soW10p
OworICAgICAgICB0aGlzLl9zY3JpcHQuc2VhcmNoSW5Db250ZW50KHF1ZXJ5LCBjYWxsYmFjayk7
CiAgICAgfQogfQogCkBAIC02Nyw2NSArNjcsMTA5IEBAIFdlYkluc3BlY3Rvci5Db25jYXRlbmF0
ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVyID0gZnVuY3Rpb24oc2NyaXB0cykKIH07CiAKIFdlYklu
c3BlY3Rvci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZSA9IHsK
LSAgIHJlcXVlc3RDb250ZW50OiBmdW5jdGlvbihjYWxsYmFjaykKLSAgIHsKLSAgICAgICB2YXIg
c2NyaXB0cyA9IHRoaXMuX3NjcmlwdHMuc2xpY2UoKTsKLSAgICAgICBzY3JpcHRzLnNvcnQoZnVu
Y3Rpb24oeCwgeSkgeyByZXR1cm4geC5saW5lT2Zmc2V0IC0geS5saW5lT2Zmc2V0IHx8IHguY29s
dW1uT2Zmc2V0IC0geS5jb2x1bW5PZmZzZXQ7IH0pOwotICAgICAgIHZhciBzb3VyY2VzID0gW107
Ci0gICAgICAgZnVuY3Rpb24gZGlkUmVxdWVzdFNvdXJjZShzb3VyY2UpCi0gICAgICAgewotICAg
ICAgICAgICBzb3VyY2VzLnB1c2goc291cmNlKTsKLSAgICAgICAgICAgaWYgKHNvdXJjZXMubGVu
Z3RoID09IHNjcmlwdHMubGVuZ3RoKQotICAgICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fbWlt
ZVR5cGUsIHRoaXMuX2NvbmNhdGVuYXRlU2NyaXB0c0NvbnRlbnQoc2NyaXB0cywgc291cmNlcykp
OwotICAgICAgIH0KLSAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyAr
K2kpCi0gICAgICAgICAgIHNjcmlwdHNbaV0ucmVxdWVzdFNvdXJjZShkaWRSZXF1ZXN0U291cmNl
LmJpbmQodGhpcykpOwotICAgfSwKKyAgICBfc29ydGVkU2NyaXB0czogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgaWYgKCF0aGlzLl9zb3J0ZWRTY3JpcHRzQXJyYXkpIHsKKyAgICAgICAgICAg
IHRoaXMuX3NvcnRlZFNjcmlwdHNBcnJheSA9IFtdOworICAgICAgICAgICAgCisgICAgICAgICAg
ICB2YXIgc2NyaXB0cyA9IHRoaXMuX3NjcmlwdHMuc2xpY2UoKTsKKyAgICAgICAgICAgIHNjcmlw
dHMuc29ydChmdW5jdGlvbih4LCB5KSB7IHJldHVybiB4LmxpbmVPZmZzZXQgLSB5LmxpbmVPZmZz
ZXQgfHwgeC5jb2x1bW5PZmZzZXQgLSB5LmNvbHVtbk9mZnNldDsgfSk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIHZhciBzY3JpcHRPcGVuVGFnTGVuZ3RoID0gIjxzY3JpcHQ+Ii5sZW5ndGg7
CisgICAgICAgICAgICB2YXIgc2NyaXB0Q2xvc2VUYWdMZW5ndGggPSAiPC9zY3JpcHQ+Ii5sZW5n
dGg7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghc2NyaXB0cy5sZW5ndGgpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NvcnRlZFNjcmlwdHNBcnJheTsKKyAgICAgICAgICAg
IHRoaXMuX3NvcnRlZFNjcmlwdHNBcnJheS5wdXNoKHNjcmlwdHNbMF0pOworICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzY3JpcHRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAg
ICAgdmFyIHByZXZpb3VzU2NyaXB0ID0gdGhpcy5fc29ydGVkU2NyaXB0c0FycmF5W3RoaXMuX3Nv
cnRlZFNjcmlwdHNBcnJheS5sZW5ndGggLSAxXTsKKworICAgICAgICAgICAgICAgIHZhciBjb2x1
bW5OdW1iZXIgPSBwcmV2aW91c1NjcmlwdC5lbmRDb2x1bW4gKyBzY3JpcHRDbG9zZVRhZ0xlbmd0
aCArIHNjcmlwdE9wZW5UYWdMZW5ndGg7ICAgIAorICAgICAgICAgICAgICAgIGlmIChwcmV2aW91
c1NjcmlwdC5lbmRMaW5lID4gc2NyaXB0c1tpXS5saW5lT2Zmc2V0IHx8IChzY3JpcHRzW2kgLSAx
XS5lbmRMaW5lID09PSBzY3JpcHRzW2ldLmxpbmVPZmZzZXQgJiYgY29sdW1uTnVtYmVyID4gc2Ny
aXB0c1tpXS5jb2x1bW5PZmZzZXQpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAgICAgICAgIHRoaXMuX3NvcnRlZFNjcmlwdHNBcnJheS5wdXNoKHNjcmlwdHNbaV0p
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzLl9zb3J0ZWRT
Y3JpcHRzQXJyYXk7CisgICAgfSwKKworICAgIHJlcXVlc3RDb250ZW50OiBmdW5jdGlvbihjYWxs
YmFjaykKKyAgICB7CisgICAgICAgIHZhciBzY3JpcHRzID0gdGhpcy5fc29ydGVkU2NyaXB0cygp
OworICAgICAgICB2YXIgc291cmNlcyA9IFtdOworICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0
U291cmNlKHNvdXJjZSkKKyAgICAgICAgeworICAgICAgICAgICAgc291cmNlcy5wdXNoKHNvdXJj
ZSk7CisgICAgICAgICAgICBpZiAoc291cmNlcy5sZW5ndGggPT0gc2NyaXB0cy5sZW5ndGgpCisg
ICAgICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fbWltZVR5cGUsIHRoaXMuX2NvbmNhdGVuYXRl
U2NyaXB0c0NvbnRlbnQoc2NyaXB0cywgc291cmNlcykpOworICAgICAgICB9CisgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHNjcmlw
dHNbaV0ucmVxdWVzdFNvdXJjZShkaWRSZXF1ZXN0U291cmNlLmJpbmQodGhpcykpOworICAgIH0s
CiAKICAgICBzZWFyY2hJbkNvbnRlbnQ6IGZ1bmN0aW9uKHF1ZXJ5LCBjYWxsYmFjaykKICAgICB7
Ci0gICAgICAgIGNhbGxiYWNrKFtdKTsKKyAgICAgICAgdmFyIHJlc3VsdHMgPSB7fTsKKyAgICAg
ICAgdmFyIHNjcmlwdHMgPSB0aGlzLl9zb3J0ZWRTY3JpcHRzKCk7CisgICAgICAgIHZhciBzY3Jp
cHRzTGVmdCA9IHNjcmlwdHMubGVuZ3RoOworCisgICAgICAgIGZ1bmN0aW9uIG1heWJlQ2FsbGJh
Y2soKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoc2NyaXB0c0xlZnQpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB2YXIgcmVzdWx0ID0gW107CisgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChyZXN1bHRzW3NjcmlwdHNbaV0uc2NyaXB0SWRdKTsK
KyAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzZWFyY2hDYWxsYmFjayhzY3JpcHQsIHNlYXJjaE1hdGNoZXMpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJlc3VsdHNbc2NyaXB0LnNjcmlwdElkXSA9IFtdOworICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBzZWFyY2hNYXRjaGVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAg
ICAgICAgdmFyIHNlYXJjaE1hdGNoID0ge307CisgICAgICAgICAgICAgICAgc2VhcmNoTWF0Y2gu
bGluZU51bWJlciA9IHNlYXJjaE1hdGNoZXNbaV0ubGluZU51bWJlciArIHNjcmlwdC5saW5lT2Zm
c2V0OworICAgICAgICAgICAgICAgIHNlYXJjaE1hdGNoLmxpbmVDb250ZW50ID0gc2VhcmNoTWF0
Y2hlc1tpXS5saW5lQ29udGVudDsKKyAgICAgICAgICAgICAgICByZXN1bHRzW3NjcmlwdC5zY3Jp
cHRJZF0ucHVzaChzZWFyY2hNYXRjaCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzY3Jp
cHRzTGVmdC0tOworICAgICAgICAgICAgbWF5YmVDYWxsYmFjay5jYWxsKHRoaXMpOworICAgICAg
ICB9CisKKyAgICAgICAgbWF5YmVDYWxsYmFjaygpOworICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHNjcmlwdHMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBzY3JpcHRzW2ldLnNlYXJjaElu
Q29udGVudChxdWVyeSwgc2VhcmNoQ2FsbGJhY2suYmluZCh0aGlzLCBzY3JpcHRzW2ldKSk7CiAg
ICAgfSwKIAotICAgX2NvbmNhdGVuYXRlU2NyaXB0c0NvbnRlbnQ6IGZ1bmN0aW9uKHNjcmlwdHMs
IHNvdXJjZXMpCi0gICB7Ci0gICAgICAgdmFyIGNvbnRlbnQgPSAiIjsKLSAgICAgICB2YXIgbGlu
ZU51bWJlciA9IDA7Ci0gICAgICAgdmFyIGNvbHVtbk51bWJlciA9IDA7Ci0KLSAgICAgICBmdW5j
dGlvbiBhcHBlbmRDaHVuayhjaHVuaykKLSAgICAgICB7Ci0gICAgICAgICAgIGNvbnRlbnQgKz0g
Y2h1bms7Ci0gICAgICAgICAgIHZhciBsaW5lRW5kaW5ncyA9IGNodW5rLmxpbmVFbmRpbmdzKCk7
Ci0gICAgICAgICAgIHZhciBsaW5lQ291bnQgPSBsaW5lRW5kaW5ncy5sZW5ndGg7Ci0gICAgICAg
ICAgIGlmIChsaW5lQ291bnQgPT09IDEpCi0gICAgICAgICAgICAgICBjb2x1bW5OdW1iZXIgKz0g
Y2h1bmsubGVuZ3RoOwotICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgIGxpbmVOdW1i
ZXIgKz0gbGluZUNvdW50IC0gMTsKLSAgICAgICAgICAgICAgIGNvbHVtbk51bWJlciA9IGxpbmVF
bmRpbmdzW2xpbmVDb3VudCAtIDFdIC0gbGluZUVuZGluZ3NbbGluZUNvdW50IC0gMl0gLSAxOwot
ICAgICAgICAgICB9Ci0gICAgICAgfQotCi0gICAgICAgdmFyIHNjcmlwdE9wZW5UYWcgPSAiPHNj
cmlwdD4iOwotICAgICAgIHZhciBzY3JpcHRDbG9zZVRhZyA9ICI8L3NjcmlwdD4iOwotICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICBp
ZiAobGluZU51bWJlciA+IHNjcmlwdHNbaV0ubGluZU9mZnNldCB8fCAobGluZU51bWJlciA9PT0g
c2NyaXB0c1tpXS5saW5lT2Zmc2V0ICYmIGNvbHVtbk51bWJlciA+IHNjcmlwdHNbaV0uY29sdW1u
T2Zmc2V0IC0gc2NyaXB0T3BlblRhZy5sZW5ndGgpKQotICAgICAgICAgICAgICAgY29udGludWU7
Ci0KLSAgICAgICAgICAgLy8gRmlsbCB0aGUgZ2FwIHdpdGggd2hpdGVzcGFjZSBjaGFyYWN0ZXJz
LgotICAgICAgICAgICB3aGlsZSAobGluZU51bWJlciA8IHNjcmlwdHNbaV0ubGluZU9mZnNldCkK
LSAgICAgICAgICAgICAgIGFwcGVuZENodW5rKCJcbiIpOwotICAgICAgICAgICB3aGlsZSAoY29s
dW1uTnVtYmVyIDwgc2NyaXB0c1tpXS5jb2x1bW5PZmZzZXQgLSBzY3JpcHRPcGVuVGFnLmxlbmd0
aCkKLSAgICAgICAgICAgICAgIGFwcGVuZENodW5rKCIgIik7Ci0KLSAgICAgICAgICAgLy8gQWRk
IHNjcmlwdCB0YWcuCi0gICAgICAgICAgIGFwcGVuZENodW5rKHNjcmlwdE9wZW5UYWcpOwotICAg
ICAgICAgICBhcHBlbmRDaHVuayhzb3VyY2VzW2ldKTsKLSAgICAgICAgICAgYXBwZW5kQ2h1bmso
c2NyaXB0Q2xvc2VUYWcpOwotICAgICAgIH0KLQotICAgICAgIHJldHVybiBjb250ZW50OwotICAg
fQorICAgIF9jb25jYXRlbmF0ZVNjcmlwdHNDb250ZW50OiBmdW5jdGlvbihzY3JpcHRzLCBzb3Vy
Y2VzKQorICAgIHsKKyAgICAgICAgdmFyIGNvbnRlbnQgPSAiIjsKKyAgICAgICAgdmFyIGxpbmVO
dW1iZXIgPSAwOworICAgICAgICB2YXIgY29sdW1uTnVtYmVyID0gMDsKKworICAgICAgICB2YXIg
c2NyaXB0T3BlblRhZyA9ICI8c2NyaXB0PiI7CisgICAgICAgIHZhciBzY3JpcHRDbG9zZVRhZyA9
ICI8L3NjcmlwdD4iOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgICAgIC8vIEZpbGwgdGhlIGdhcCB3aXRoIHdoaXRlc3BhY2UgY2hh
cmFjdGVycy4KKyAgICAgICAgICAgIGZvciAodmFyIG5ld0xpbmVzQ291bnQgPSBzY3JpcHRzW2ld
LmxpbmVPZmZzZXQgLSBsaW5lTnVtYmVyOyBuZXdMaW5lc0NvdW50ID4gMDsgLS1uZXdMaW5lc0Nv
dW50KSB7CisgICAgICAgICAgICAgICAgY29sdW1uTnVtYmVyID0gMDsKKyAgICAgICAgICAgICAg
ICBjb250ZW50ICs9ICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKHZhciBz
cGFjZXNDb3VudCA9IHNjcmlwdHNbaV0uY29sdW1uT2Zmc2V0IC0gY29sdW1uTnVtYmVyIC0gc2Ny
aXB0T3BlblRhZy5sZW5ndGg7IHNwYWNlc0NvdW50ID4gMDsgLS1zcGFjZXNDb3VudCkKKyAgICAg
ICAgICAgICAgICBjb250ZW50ICs9ICIgIjsKKworICAgICAgICAgICAgLy8gQWRkIHNjcmlwdCB0
YWcuCisgICAgICAgICAgICBjb250ZW50ICs9IHNjcmlwdE9wZW5UYWc7CisgICAgICAgICAgICBj
b250ZW50ICs9IHNvdXJjZXNbaV07CisgICAgICAgICAgICBjb250ZW50ICs9IHNjcmlwdENsb3Nl
VGFnOworICAgICAgICAgICAgbGluZU51bWJlciA9IHNjcmlwdHNbaV0uZW5kTGluZTsKKyAgICAg
ICAgICAgIGNvbHVtbk51bWJlciA9IHNjcmlwdHNbaV0uZW5kQ29sdW1uICsgc2NyaXB0Q2xvc2VU
YWcubGVuZ3RoOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNvbnRlbnQ7CisgICAgfQog
fQogCiBXZWJJbnNwZWN0b3IuQ29uY2F0ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92aWRlci5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRQcm92aWRlci5wcm90b3R5cGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzCmluZGV4IGIz
NmUwN2E0ZTI5YzQ3NDVlNjJjYTRjNmIwMDYxNjNkYzE4MGM2OGYuLjhlODU3ZmFjNWJkYjcxZDhk
ZDRlZWI3ZTJmOGMyNzBiNTFhMmY4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0LmpzCkBAIC00OSwxMiArNDksMjQgQEAgV2ViSW5zcGVjdG9yLlNjcmlw
dC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZnVuY3Rpb24gZGlkR2V0U2NyaXB0U291cmNlKGVy
cm9yLCBzb3VyY2UpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuX3NvdXJjZSA9IHNvdXJj
ZTsKKyAgICAgICAgICAgIHRoaXMuX3NvdXJjZSA9IGVycm9yID8gIiIgOiBzb3VyY2U7CiAgICAg
ICAgICAgICBjYWxsYmFjayh0aGlzLl9zb3VyY2UpOwogICAgICAgICB9CiAgICAgICAgIERlYnVn
Z2VyQWdlbnQuZ2V0U2NyaXB0U291cmNlKHRoaXMuc2NyaXB0SWQsIGRpZEdldFNjcmlwdFNvdXJj
ZS5iaW5kKHRoaXMpKTsKICAgICB9LAogCisgICAgc2VhcmNoSW5Db250ZW50OiBmdW5jdGlvbihx
dWVyeSwgY2FsbGJhY2spCisgICAgeworICAgICAgICBmdW5jdGlvbiBpbm5lckNhbGxiYWNrKGVy
cm9yLCBzZWFyY2hNYXRjaGVzKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXJyb3IpCisg
ICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7CisgICAgICAgICAgICBjYWxsYmFj
ayhzZWFyY2hNYXRjaGVzIHx8IFtdKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgRGVi
dWdnZXJBZ2VudC5zZWFyY2hJbkNvbnRlbnQodGhpcy5zY3JpcHRJZCwgcXVlcnksIGlubmVyQ2Fs
bGJhY2suYmluZCh0aGlzKSk7CisgICAgfSwKKyAgICAKICAgICBlZGl0U291cmNlOiBmdW5jdGlv
bihuZXdTb3VyY2UsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gZGlkRWRpdFNj
cmlwdFNvdXJjZShlcnJvciwgY2FsbEZyYW1lcykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109659</attachid>
            <date>2011-10-04 11:32:17 -0700</date>
            <delta_ts>2011-10-05 03:14:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69015-20111004223215.patch</filename>
            <type>text/plain</type>
            <size>30491</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY2MjAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ZDhhZTZkMDg5ZDZhNmQ0MDYzMjlk
NjU2YjE5NjE5NjYxYzRkNTgyLi5lOGVlMDM5Njg4NTBkNDE2Zjc4NDQ4NTQyNzhkOTYxNDNmYjFl
ZGY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMTAtMDQgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBv
cnQgZm9yIHNlYXJjaCBpbiBzY3JpcHQgY29udGVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MDE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS10
cmVlL3Jlc291cmNlLXRyZWUtdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfUmVzb3VyY2VU
cmVlVGVzdCk6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzLXRlc3Qu
anM6CisgICAgICAgIChpbml0aWFsaXplX1Jlc291cmNlVGVzdC5JbnNwZWN0b3JUZXN0LnJ1bkFm
dGVyUmVzb3VyY2VzQXJlRmluaXNoZWQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9SZXNvdXJjZVRl
c3QuSW5zcGVjdG9yVGVzdC5fcnVuQWZ0ZXJSZXNvdXJjZXNBcmVGaW5pc2hlZCk6CisgICAgICAg
IChpbml0aWFsaXplX1Jlc291cmNlVGVzdC5JbnNwZWN0b3JUZXN0Ll9ydW5BZnRlclJlc291cmNl
c0FyZUZpbmlzaGVkLm1heWJlQ2FsbGJhY2spOgorICAgICAgICAoaW5pdGlhbGl6ZV9SZXNvdXJj
ZVRlc3QuSW5zcGVjdG9yVGVzdC5fcnVuQWZ0ZXJSZXNvdXJjZXNBcmVGaW5pc2hlZC5hZGRTbmlm
ZmVyKToKKyAgICAgICAgKGluaXRpYWxpemVfUmVzb3VyY2VUZXN0Lkluc3BlY3RvclRlc3QuX3J1
bkFmdGVyUmVzb3VyY2VzQXJlRmluaXNoZWQucmVzb3VyY2VBZGRlZFRvRnJhbWUpOgorICAgICAg
ICAoaW5pdGlhbGl6ZV9SZXNvdXJjZVRlc3QuSW5zcGVjdG9yVGVzdC5fcnVuQWZ0ZXJSZXNvdXJj
ZXNBcmVGaW5pc2hlZC52aXNpdCk6CisgICAgICAgIChpbml0aWFsaXplX1Jlc291cmNlVGVzdCk6
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3Jlc291cmNlcy9zZWFyY2gt
Y29uY2F0ZW5hdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9y
L3NlYXJjaC9zZWFyY2gtaW4tY29uY2F0ZW5hdGVkLXNjcmlwdC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tY29uY2F0
ZW5hdGVkLXNjcmlwdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9zZWFyY2gvc2VhcmNoLWluLXJlc291cmNlLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9p
bnNwZWN0b3Ivc2VhcmNoL3NlYXJjaC1pbi1zY3JpcHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLXNjcmlwdC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLXRl
c3QuanM6CisgICAgICAgIChpbml0aWFsaXplX1NlYXJjaFRlc3QpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9kZWJ1Z2dlci9jb250ZW50LXByb3ZpZGVycy5odG1sOgorICAgICAgICAqIHBsYXRmb3Jt
L3F0L1NraXBwZWQ6CisKIDIwMTEtMTAtMDMgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTMx
NwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2Ut
dHJlZS9yZXNvdXJjZS10cmVlLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9yZXNvdXJjZS10cmVlL3Jlc291cmNlLXRyZWUtdGVzdC5qcwppbmRleCBiYWQ3NWJkNWZm
Zjc4YTJlN2ZlNzZhNGFiZTA4NDhiZWUyMmFhNmUyLi44MGEyMTgwMTc5NjEzZjE2MjQ0MjBhOWE0
OTFmOGJjMWViZWIyODk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9yZXNvdXJjZS10cmVlL3Jlc291cmNlLXRyZWUtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS10cmVlL3Jlc291cmNlLXRyZWUtdGVzdC5q
cwpAQCAtODYsMzIgKzg2LDQgQEAgSW5zcGVjdG9yVGVzdC5kdW1wUmVzb3VyY2VUcmVlRXZlcnl0
aGluZyA9IGZ1bmN0aW9uKCkKICAgICBJbnNwZWN0b3JUZXN0LmR1bXBSZXNvdXJjZXNUcmVlKCk7
CiB9CiAKLUluc3BlY3RvclRlc3QucnVuQWZ0ZXJSZXNvdXJjZXNBcmVGaW5pc2hlZCA9IGZ1bmN0
aW9uKHJlc291cmNlVVJMcywgY2FsbGJhY2spCi17Ci0gICAgSW5zcGVjdG9yVGVzdC5fcnVuQWZ0
ZXJSZXNvdXJjZXNBcmVGaW5pc2hlZChyZXNvdXJjZVVSTHMua2V5U2V0KCksIGNhbGxiYWNrKTsK
LX0KLQotSW5zcGVjdG9yVGVzdC5fcnVuQWZ0ZXJSZXNvdXJjZXNBcmVGaW5pc2hlZCA9IGZ1bmN0
aW9uKHJlc291cmNlVVJMcywgY2FsbGJhY2spCi17Ci0gICAgZnVuY3Rpb24gdmlzaXQocmVzb3Vy
Y2UpCi0gICAgewotICAgICAgICBpZiAoIXJlc291cmNlLmZpbmlzaGVkKQotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICAgICAgZm9yICh2YXIgdXJsIGluIHJlc291cmNlVVJMcykgewot
ICAgICAgICAgICAgaWYgKHJlc291cmNlLnVybC5pbmRleE9mKHVybCkgIT09IC0xKQotICAgICAg
ICAgICAgICAgIGRlbGV0ZSByZXNvdXJjZVVSTHNbdXJsXTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmICghT2JqZWN0LmtleXMocmVzb3VyY2VVUkxzKS5sZW5ndGgpIHsKLSAgICAgICAgICAgIGNh
bGxiYWNrKCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHZhciBzdWNjZWVkZWQgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuZm9yQWxs
UmVzb3VyY2VzKHZpc2l0KTsKLSAgICBpZiAoIXN1Y2NlZWRlZCkKLSAgICAgICAgc2V0VGltZW91
dChJbnNwZWN0b3JUZXN0Ll9ydW5BZnRlclJlc291cmNlc0FyZUZpbmlzaGVkLmJpbmQoSW5zcGVj
dG9yVGVzdCwgcmVzb3VyY2VVUkxzLCBjYWxsYmFjayksIDApOwotfQotCiB9OwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzLXRlc3QuanMgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMtdGVzdC5qcwppbmRleCAy
MDczOWY1NThjYTJhN2Q1ZWNlODg0ODdkZWRmNDg0Njc3MmYzYjM3Li42MTY5MTBjMTlhNzkwMjA2
MjIxNmE3ODY4YzBhZjEzOWMxYzM0Yjc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZXMtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZXMtdGVzdC5qcwpAQCAtMjcsNCArMjcsNTAgQEAgSW5zcGVj
dG9yVGVzdC5yZXNvdXJjZVVSTENvbXBhcmVyID0gZnVuY3Rpb24ocjEsIHIyKQogICAgIHJldHVy
biByMS5yZXF1ZXN0LnVybC5sb2NhbGVDb21wYXJlKHIyLnJlcXVlc3QudXJsKTsKIH0KIAorSW5z
cGVjdG9yVGVzdC5ydW5BZnRlclJlc291cmNlc0FyZUZpbmlzaGVkID0gZnVuY3Rpb24ocmVzb3Vy
Y2VVUkxzLCBjYWxsYmFjaykKK3sKKyAgICBJbnNwZWN0b3JUZXN0Ll9ydW5BZnRlclJlc291cmNl
c0FyZUZpbmlzaGVkKHJlc291cmNlVVJMcy5rZXlTZXQoKSwgY2FsbGJhY2spOworfQorCitJbnNw
ZWN0b3JUZXN0Ll9ydW5BZnRlclJlc291cmNlc0FyZUZpbmlzaGVkID0gZnVuY3Rpb24ocmVzb3Vy
Y2VVUkxzLCBjYWxsYmFjaykKK3sKKyAgICBmdW5jdGlvbiBjaGVja1Jlc291cmNlKHJlc291cmNl
KQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgdXJsIGluIHJlc291cmNlVVJMcykgeworICAgICAg
ICAgICAgaWYgKHJlc291cmNlLnVybC5pbmRleE9mKHVybCkgIT09IC0xKQorICAgICAgICAgICAg
ICAgIGRlbGV0ZSByZXNvdXJjZVVSTHNbdXJsXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1
bmN0aW9uIG1heWJlQ2FsbGJhY2soKQorICAgIHsKKyAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhy
ZXNvdXJjZVVSTHMpLmxlbmd0aCkgeworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkU25p
ZmZlcihyZXNvdXJjZSkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLCAiX2FkZFJlc291cmNlVG9G
cmFtZSIsIHJlc291cmNlQWRkZWRUb0ZyYW1lLmJpbmQodGhpcykpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHJlc291cmNlQWRkZWRUb0ZyYW1lKHJlc291cmNlKQorICAgIHsKKyAgICAgICAgY2hl
Y2tSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgIGlmICghbWF5YmVDYWxsYmFjaygpKQorICAg
ICAgICAgICAgYWRkU25pZmZlcigpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHZpc2l0KHJlc291
cmNlKQorICAgIHsKKyAgICAgICAgY2hlY2tSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgIHJl
dHVybiBtYXliZUNhbGxiYWNrKCk7CisgICAgfQorCisgICAgdmFyIHN1Y2NlZWRlZCA9IFdlYklu
c3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5mb3JBbGxSZXNvdXJjZXModmlzaXQpOworICAgIGlm
ICghc3VjY2VlZGVkKQorICAgICAgICBhZGRTbmlmZmVyKCk7Cit9CisKIH0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9yZXNvdXJjZXMvc2VhcmNo
LWNvbmNhdGVuYXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2Vh
cmNoL3Jlc291cmNlcy9zZWFyY2gtY29uY2F0ZW5hdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI4ZmY2
NGMyYmJmMjY5YjA2ZTIwYWYzMDEwNDgzMmY2M2Q4MTQ3YQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9yZXNvdXJjZXMvc2VhcmNoLWNv
bmNhdGVuYXRlZC5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
PgorZnVuY3Rpb24gc2VhcmNoVGVzdFVuaXF1ZVN0cmluZygpCit7CisgICAgdmFyIHZhcmlhYmxl
ID0gMDsKKyAgICAvLyBzZWFyY2hUZXN0VW5pcXVlU3RyaW5nIHR3byBvY2N1cmVuY2VzIG9uIHRo
ZSBzYW1lIGxpbmUgc2VhcmNoVGVzdFVuaXF1ZVN0cmluZworICAgIHZhciB2YXJpYWJsZTIgPSAw
OworfQorPC9zY3JpcHQ+PHNjcmlwdD4KK2Z1bmN0aW9uIGRvU29tZXRoaW5nKCkKK3sKKyAgICBz
ZWFyY2hUZXN0VW5pcXVlU3RyaW5nKCk7CisgICAgLy8gU0VBUkNIVGVzdFVuaXF1ZVN0cmluZygp
OworfQorPC9zY3JpcHQ+Cis8bGluayBocmVmPSJzZWFyY2guY3NzIiByZWw9InN0eWxlc2hlZXQi
IHR5cGU9InRleHQvY3NzIj4KKzxzY3JpcHQ+CitmdW5jdGlvbiBzZWFyY2hUZXN0VW5pcXVlU3Ry
aW5nMigpCit7CisgICAgdmFyIHZhcmlhYmxlID0gMDsKKyAgICAvKiBzZWFyY2hUZXN0VW5pcXVl
U3RyaW5nIHR3byBvY2N1cmVuY2VzIG9uIHRoZSBzYW1lIGxpbmUgc2VhcmNoVGVzdFVuaXF1ZVN0
cmluZyAqLyB9IDwvc2NyaXB0PjxzY3JpcHQ+IGZ1bmN0aW9uIGRvU29tZXRoaW5nMigpIHsgc2Vh
cmNoVGVzdFVuaXF1ZVN0cmluZygpOworICAgIC8vIFNFQVJDSFRlc3RVbmlxdWVTdHJpbmcoKTsK
K30KKzwvc2NyaXB0PgorPC9zY3JpcHQ+Cis8Ym9keT4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3NlYXJjaC1p
bi1jb25jYXRlbmF0ZWQtc2NyaXB0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tY29uY2F0ZW5hdGVkLXNjcmlwdC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGFiNDhhNTJiOTUwYzg3MDcxODhjZDUxMDY5MTc0N2Y2NDNjZjhk
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Nl
YXJjaC9zZWFyY2gtaW4tY29uY2F0ZW5hdGVkLXNjcmlwdC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNyBAQAorVGVzdHMgY29uY2F0ZW5hdGVkIHNjcmlwdCBzZWFyY2ggaW4gaW5zcGVjdG9yIGRl
YnVnZ2VyIGFnZW50LgorCitCdWcgNjkwMTUgIAorRGVidWdnZXIgd2FzIGVuYWJsZWQuCitodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3NlYXJjaC9yZXNvdXJjZXMvc2VhcmNoLWNvbmNh
dGVuYXRlZC5odG1sCitTZWFyY2ggbWF0Y2hlczogCitsaW5lTnVtYmVyOiAzLCBsaW5lOiAnZnVu
Y3Rpb24gc2VhcmNoVGVzdFVuaXF1ZVN0cmluZygpJworbGluZU51bWJlcjogNiwgbGluZTogJyAg
ICAvLyBzZWFyY2hUZXN0VW5pcXVlU3RyaW5nIHR3byBvY2N1cmVuY2VzIG9uIHRoZSBzYW1lIGxp
bmUgc2VhcmNoVGVzdFVuaXF1ZVN0cmluZycKK2xpbmVOdW1iZXI6IDEyLCBsaW5lOiAnICAgIHNl
YXJjaFRlc3RVbmlxdWVTdHJpbmcoKTsnCitsaW5lTnVtYmVyOiAxMywgbGluZTogJyAgICAvLyBT
RUFSQ0hUZXN0VW5pcXVlU3RyaW5nKCk7JworbGluZU51bWJlcjogMTgsIGxpbmU6ICdmdW5jdGlv
biBzZWFyY2hUZXN0VW5pcXVlU3RyaW5nMigpJworbGluZU51bWJlcjogMjEsIGxpbmU6ICcgICAg
Lyogc2VhcmNoVGVzdFVuaXF1ZVN0cmluZyB0d28gb2NjdXJlbmNlcyBvbiB0aGUgc2FtZSBsaW5l
IHNlYXJjaFRlc3RVbmlxdWVTdHJpbmcgKi8gfSAnCitsaW5lTnVtYmVyOiAyMSwgbGluZTogJyBm
dW5jdGlvbiBkb1NvbWV0aGluZzIoKSB7IHNlYXJjaFRlc3RVbmlxdWVTdHJpbmcoKTsnCitsaW5l
TnVtYmVyOiAyMiwgbGluZTogJyAgICAvLyBTRUFSQ0hUZXN0VW5pcXVlU3RyaW5nKCk7JworCitE
ZWJ1Z2dlciB3YXMgZGlzYWJsZWQuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tY29uY2F0ZW5hdGVkLXNjcmlwdC5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3NlYXJjaC1pbi1jb25jYXRl
bmF0ZWQtc2NyaXB0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFhMGEzNzk3NmFkZDk5YWMyMzQxYWE5ZmNl
YTliZGY1YzVkY2I0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tY29uY2F0ZW5hdGVkLXNjcmlwdC5odG1sCkBAIC0w
LDAgKzEsNDcgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRl
c3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJzZWFyY2gtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgLy8gVGhpcyBmaWxlIHNob3VsZCBub3QgbWF0Y2ggc2VhcmNoIHF1ZXJ5Lgor
ICAgIHZhciB0ZXh0ID0gInNlYXJjaFRlc3QiICsgIlVuaXF1ZVN0cmluZyI7CisgICAgSW5zcGVj
dG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChzdGVwMSk7CisKKyAgICBmdW5jdGlvbiBzdGVwMSgp
CisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUmVzb3VyY2VzQXJlRmluaXNo
ZWQoWyJzZWFyY2gtY29uY2F0ZW5hdGVkLmh0bWwiXSwgc3RlcDIpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHN0ZXAyKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2hvd1NjcmlwdFNv
dXJjZSgic2VhcmNoLWNvbmNhdGVuYXRlZC5odG1sIiwgc3RlcDMpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHN0ZXAzKCkKKyAgICB7CisgICAgICAgIHZhciB1cmwgPSAiaHR0cDovLzEyNy4wLjAu
MTo4MDAwL2luc3BlY3Rvci9zZWFyY2gvcmVzb3VyY2VzL3NlYXJjaC1jb25jYXRlbmF0ZWQuaHRt
bCI7CisgICAgICAgIHZhciBzY3JpcHRzID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2Ny
aXB0c0ZvclVSTCh1cmwpOworICAgICAgICB2YXIgY29udGVudFByb3ZpZGVyID0gbmV3IFdlYklu
c3BlY3Rvci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVyKHNjcmlwdHMpOworICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCh1cmwpOworICAgICAgICBjb250ZW50UHJvdmlk
ZXIuc2VhcmNoSW5Db250ZW50KHRleHQsIHN0ZXA0KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBz
dGVwNChzZWFyY2hNYXRjaGVzKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU2Vh
cmNoTWF0Y2hlcyhzZWFyY2hNYXRjaGVzKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0
ZURlYnVnZ2VyVGVzdCgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
cD5UZXN0cyBjb25jYXRlbmF0ZWQgc2NyaXB0IHNlYXJjaCBpbiBpbnNwZWN0b3IgZGVidWdnZXIg
YWdlbnQuPC9wPgorPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY5MDE1Ij5CdWcgNjkwMTU8L2E+CisKKzxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2VhcmNo
LWNvbmNhdGVuYXRlZC5odG1sIiBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2Vh
cmNoLWluLXJlc291cmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9z
ZWFyY2gvc2VhcmNoLWluLXJlc291cmNlLmh0bWwKaW5kZXggMDMyNzRhNmQ1OWRjYzE3OGM4ODRl
NDRmNmM1ZjljZGNmNTI2MjU2Mi4uNjRjMWFiZDM1ZTFhZTQyNDQwMzk0ZjlhYTdkNzU2MTJmOTI2
YTI4YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNo
L3NlYXJjaC1pbi1yZXNvdXJjZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tcmVzb3VyY2UuaHRtbApAQCAtMSwxMyArMSwxNCBAQAog
PGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9InNlYXJjaC10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0
KCkKIHsKICAgICAvLyBUaGlzIGZpbGUgc2hvdWxkIG5vdCBtYXRjaCBzZWFyY2ggcXVlcnkuCiAg
ICAgdmFyIHRleHQgPSAic2VhcmNoVGVzdCIgKyAiVW5pcXVlU3RyaW5nIjsKLSAgICBJbnNwZWN0
b3JUZXN0LnJ1bkFmdGVyUmVzb3VyY2VzQXJlQ3JlYXRlZChbInNlYXJjaC5qcyJdLCBzdGVwMik7
CisgICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclJlc291cmNlc0FyZUZpbmlzaGVkKFsic2VhcmNo
LmpzIl0sIHN0ZXAyKTsKIAogICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLXNjcmlw
dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gv
c2VhcmNoLWluLXNjcmlwdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTc1MTdjZTZmODllOTUw
YjdjNDNkNGZiNjI1ZWRiMTZkZDg5OWNmMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tc2NyaXB0LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDEzIEBACitUZXN0cyBzY3JpcHQgc2VhcmNoIGluIGluc3BlY3RvciBkZWJ1
Z2dlciBhZ2VudC4KKworQnVnIDY5MDE1ICAKK0RlYnVnZ2VyIHdhcyBlbmFibGVkLgoraHR0cDov
LzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9zZWFyY2gvcmVzb3VyY2VzL3NlYXJjaC5qcworU2Vh
cmNoIG1hdGNoZXM6IAorbGluZU51bWJlcjogMCwgbGluZTogJ2Z1bmN0aW9uIHNlYXJjaFRlc3RV
bmlxdWVTdHJpbmcoKScKK2xpbmVOdW1iZXI6IDMsIGxpbmU6ICcgICAgLy8gc2VhcmNoVGVzdFVu
aXF1ZVN0cmluZyB0d28gb2NjdXJlbmNlcyBvbiB0aGUgc2FtZSBsaW5lIHNlYXJjaFRlc3RVbmlx
dWVTdHJpbmcnCitsaW5lTnVtYmVyOiA5LCBsaW5lOiAnICAgIHNlYXJjaFRlc3RVbmlxdWVTdHJp
bmcoKTsnCitsaW5lTnVtYmVyOiAxMCwgbGluZTogJyAgICAvLyBTRUFSQ0hUZXN0VW5pcXVlU3Ry
aW5nKCk7JworCitEZWJ1Z2dlciB3YXMgZGlzYWJsZWQuCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tc2NyaXB0Lmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLXNjcmlwdC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjk3NWY1NmZiMTEyN2ZiMTZmYmNhY2M5MjIwMmQ2ZGI0OTcxZDMyMDIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFy
Y2gvc2VhcmNoLWluLXNjcmlwdC5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9kZWJ1
Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzZWFyY2gtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgLy8gVGhpcyBmaWxlIHNo
b3VsZCBub3QgbWF0Y2ggc2VhcmNoIHF1ZXJ5LgorICAgIHZhciB0ZXh0ID0gInNlYXJjaFRlc3Qi
ICsgIlVuaXF1ZVN0cmluZyI7CisgICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChz
dGVwMSk7CisKKyAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JU
ZXN0LnJ1bkFmdGVyUmVzb3VyY2VzQXJlRmluaXNoZWQoWyJzZWFyY2guanMiXSwgc3RlcDIpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRl
c3Quc2hvd1NjcmlwdFNvdXJjZSgic2VhcmNoLmpzIiwgc3RlcDMpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHN0ZXAzKCkKKyAgICB7CisgICAgICAgIHZhciBzY3JpcHRzID0gV2ViSW5zcGVjdG9y
LmRlYnVnZ2VyTW9kZWwuc2NyaXB0c0ZvclVSTCgiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3Bl
Y3Rvci9zZWFyY2gvcmVzb3VyY2VzL3NlYXJjaC5qcyIpOworICAgICAgICB2YXIgc2NyaXB0ID0g
c2NyaXB0c1swXTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoc2NyaXB0LnNvdXJj
ZVVSTCk7CisgICAgICAgIHNjcmlwdC5zZWFyY2hJbkNvbnRlbnQodGV4dCwgc3RlcDQpOworICAg
IH0KKworICAgIGZ1bmN0aW9uIHN0ZXA0KHNlYXJjaE1hdGNoZXMpCisgICAgeworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmR1bXBTZWFyY2hNYXRjaGVzKHNlYXJjaE1hdGNoZXMpOworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVidWdnZXJUZXN0KCk7CisgICAgfQorfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRlc3RzIHNjcmlwdCBzZWFyY2ggaW4gaW5zcGVjdG9yIGRl
YnVnZ2VyIGFnZW50LjwvcD4KKzxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02OTAxNSI+QnVnIDY5MDE1PC9hPgorCis8aWZyYW1lIHNyYz0icmVzb3VyY2Vz
L3NlYXJjaC5odG1sIiBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLXRl
c3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLXRl
c3QuanMKaW5kZXggYjc5ZmRmMzBiNDhkN2E5MzdhOTFkMjg5NjU5YjAwMjNjN2VlYjI0Zi4uNjUx
YjhkZjE4MWMzMWIzOGE1ZDg2ZDA5N2EzZmM3MjNhNjZmNTBhYyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNoL3NlYXJjaC10ZXN0LmpzCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtdGVzdC5qcwpAQCAt
MTYsNTAgKzE2LDQgQEAgSW5zcGVjdG9yVGVzdC5kdW1wU2VhcmNoTWF0Y2hlcyA9IGZ1bmN0aW9u
KHNlYXJjaE1hdGNoZXMpCiAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwogfTsKIAot
SW5zcGVjdG9yVGVzdC5ydW5BZnRlclJlc291cmNlc0FyZUNyZWF0ZWQgPSBmdW5jdGlvbihyZXNv
dXJjZVVSTHMsIGNhbGxiYWNrKQotewotICAgIEluc3BlY3RvclRlc3QuX3J1bkFmdGVyUmVzb3Vy
Y2VzQXJlQ3JlYXRlZChyZXNvdXJjZVVSTHMua2V5U2V0KCksIGNhbGxiYWNrKTsKLX0KLQotSW5z
cGVjdG9yVGVzdC5fcnVuQWZ0ZXJSZXNvdXJjZXNBcmVDcmVhdGVkID0gZnVuY3Rpb24ocmVzb3Vy
Y2VVUkxzLCBjYWxsYmFjaykKLXsKLSAgICBmdW5jdGlvbiBjaGVja1Jlc291cmNlKHJlc291cmNl
KQotICAgIHsKLSAgICAgICAgZm9yICh2YXIgdXJsIGluIHJlc291cmNlVVJMcykgewotICAgICAg
ICAgICAgaWYgKHJlc291cmNlLnVybC5pbmRleE9mKHVybCkgIT09IC0xKQotICAgICAgICAgICAg
ICAgIGRlbGV0ZSByZXNvdXJjZVVSTHNbdXJsXTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1
bmN0aW9uIG1heWJlQ2FsbGJhY2soKQotICAgIHsKLSAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhy
ZXNvdXJjZVVSTHMpLmxlbmd0aCkgewotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gYWRkU25p
ZmZlcihyZXNvdXJjZSkKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLCAiX2JpbmRSZXNvdXJjZVVS
TCIsIG9uUmVzb3VyY2VCaW5kLmJpbmQodGhpcykpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIG9u
UmVzb3VyY2VCaW5kKHJlc291cmNlKQotICAgIHsKLSAgICAgICAgY2hlY2tSZXNvdXJjZShyZXNv
dXJjZSk7Ci0gICAgICAgIGlmICghbWF5YmVDYWxsYmFjaygpKQotICAgICAgICAgICAgYWRkU25p
ZmZlcigpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHZpc2l0KHJlc291cmNlKQotICAgIHsKLSAg
ICAgICAgY2hlY2tSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgIHJldHVybiBtYXliZUNhbGxi
YWNrKCk7Ci0gICAgfQotCi0gICAgdmFyIHN1Y2NlZWRlZCA9IFdlYkluc3BlY3Rvci5yZXNvdXJj
ZVRyZWVNb2RlbC5mb3JBbGxSZXNvdXJjZXModmlzaXQpOwotICAgIGlmICghc3VjY2VlZGVkKQot
ICAgICAgICBhZGRTbmlmZmVyKCk7Ci19Ci0KIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvY29udGVudC1wcm92aWRlcnMuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9jb250ZW50LXByb3ZpZGVycy5odG1sCmluZGV4IDJmMTVmMzQ5MDY1
MDA4NTYzMDY0ZjA1MDRkNmVkMmVhZjIxN2JkZGMuLjE4Y2FlNWNjZGVmOGM4ZjFmNjk5MDQ5ODg1
YTdjNDAwOTllOGY0NWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9jb250ZW50LXByb3ZpZGVycy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9jb250ZW50LXByb3ZpZGVycy5odG1sCkBAIC0xNSw3ICsxNSw5IEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgICAgICAgICAgICAgIGNhbGxiYWNrKHNvdXJjZSk7CiAgICAgICAgICAgICB9LAog
ICAgICAgICAgICAgZ2V0IGxpbmVPZmZzZXQoKSB7IHJldHVybiByYW5nZVswXTsgfSwKLSAgICAg
ICAgICAgIGdldCBjb2x1bW5PZmZzZXQoKSB7IHJldHVybiByYW5nZVsxXTsgfQorICAgICAgICAg
ICAgZ2V0IGNvbHVtbk9mZnNldCgpIHsgcmV0dXJuIHJhbmdlWzFdOyB9LAorICAgICAgICAgICAg
Z2V0IGVuZExpbmUoKSB7IHJldHVybiByYW5nZVsyXTsgfSwKKyAgICAgICAgICAgIGdldCBlbmRD
b2x1bW4oKSB7IHJldHVybiByYW5nZVszXTsgfQogICAgICAgICB9OwogICAgIH0KIApAQCAtMzcs
MTAgKzM5LDEwIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBmdW5jdGlvbiB0ZXN0Q29uY2F0
ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92aWRlcihuZXh0KQogICAgICAgICB7CiAgICAgICAgICAg
ICB2YXIgc2NyaXB0cyA9IFtdOwotICAgICAgICAgICAgc2NyaXB0cy5wdXNoKGNyZWF0ZU1vY2tT
Y3JpcHQoIjEiLCAiXG5mdW5jdGlvbiBiYXooKVxue1xuICByZXR1cm4gMDtcbn1cbiIsIFszLCAy
MF0pKTsKLSAgICAgICAgICAgIHNjcmlwdHMucHVzaChjcmVhdGVNb2NrU2NyaXB0KCIyIiwgImZ1
bmN0aW9uIGZvbygpIHsgcmV0dXJuIDA7IH0iLCBbMCwgMTBdKSk7Ci0gICAgICAgICAgICBzY3Jp
cHRzLnB1c2goY3JlYXRlTW9ja1NjcmlwdCgiMyIsICJmdW5jdGlvbiBiYXIoKSB7IHJldHVybiAw
OyB9IiwgWzEsIDcwXSkpOwotICAgICAgICAgICAgc2NyaXB0cy5wdXNoKGNyZWF0ZU1vY2tTY3Jp
cHQoIjQiLCAidGhpcyBzaG91bGQgbm90IGFwcGVhciBpbiBkaXNwbGF5ZWQgY29udGVudCIsIFsw
LCAyMF0pKTsKKyAgICAgICAgICAgIHNjcmlwdHMucHVzaChjcmVhdGVNb2NrU2NyaXB0KCIxIiwg
IlxuZnVuY3Rpb24gYmF6KClcbntcbiAgcmV0dXJuIDA7XG59XG4iLCBbMywgMjAsIDcsIDBdKSk7
CisgICAgICAgICAgICBzY3JpcHRzLnB1c2goY3JlYXRlTW9ja1NjcmlwdCgiMiIsICJmdW5jdGlv
biBmb28oKSB7IHJldHVybiAwOyB9IiwgWzAsIDEwLCAwLCAzOF0pKTsKKyAgICAgICAgICAgIHNj
cmlwdHMucHVzaChjcmVhdGVNb2NrU2NyaXB0KCIzIiwgImZ1bmN0aW9uIGJhcigpIHsgcmV0dXJu
IDA7IH0iLCBbMSwgNzAsIDEsIDk4XSkpOworICAgICAgICAgICAgc2NyaXB0cy5wdXNoKGNyZWF0
ZU1vY2tTY3JpcHQoIjQiLCAidGhpcyBzaG91bGQgbm90IGFwcGVhciBpbiBkaXNwbGF5ZWQgY29u
dGVudCIsIFswLCAyMCwgMCwgNjNdKSk7CiAgICAgICAgICAgICB2YXIgY29udGVudFByb3ZpZGVy
ID0gbmV3IFdlYkluc3BlY3Rvci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVyKHNj
cmlwdHMpOwogICAgICAgICAgICAgZnVuY3Rpb24gZGlkUmVxdWVzdENvbnRlbnQobWltZVR5cGUs
IGNvbnRlbnQpCiAgICAgICAgICAgICB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCBmZGQ5
MGE2NGEzMDkyNGJkZjMzNDNiMTVlZjRkZTI5OWViMzdhZWJjLi4yMzk5Zjk1ZDkzM2VjNDgwYzRm
NDJjNWIxOGQ3ZGM2Zjg1NGM5OTBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTIzODUs
OSArMjM4NSwzIEBAIGh0dHAvdGVzdHMvbXVsdGlwYXJ0L3N0b3AtY3Jhc2guaHRtbAogIyBPbmUg
dGVzdCBmYWlsZWQgYWZ0ZXIgcjk2MjYwCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02OTI1NwogaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtZGlzYWJsZS10aGVuLWNo
YW5nZS5odG1sCi0KLSMgW1F0XSBSRUdSRVNTSU9OKHI5NTUyNik6IEl0IG1hZGUgMyBpbnNwZWN0
b3IgdGVzdHMgZmFpbAotIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjkyNjUKLWh0dHAvdGVzdHMvaW5zcGVjdG9yL3NlYXJjaC9zZWFyY2gtaW4tY29uY2F0ZW5hdGVk
LXNjcmlwdC5odG1sCi1odHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLXNjcmlw
dC5odG1sCi1pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0LWZvcm1hdHRlci5odG1sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggYmFkNTlhMjkyODQxOThjODI5NmY5MWIwNDMxNGQyOTkzNTEyNTZjMi4uYmY1NTY5Mzlm
MTI0NjBiYmFhNDc4ZWIxOTg0ZDBkNmM0Mzk3ZWY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDExLTEwLTA0ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBzdXBwb3J0IGZvciBzZWFyY2ggaW4gc2NyaXB0
IGNvbnRlbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02OTAxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBodHRwL3Rlc3RzL2luc3BlY3Rvci9zZWFyY2gvc2VhcmNoLWluLWNvbmNhdGVuYXRl
ZC1zY3JpcHQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3Ivc2VhcmNo
L3NlYXJjaC1pbi1zY3JpcHQuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5q
c29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJjaEluQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRTY3JpcHRTb3Vy
Y2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZW50UHJvdmlkZXJzLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRQcm92aWRlci5wcm90b3R5cGUuc2VhcmNoSW5Db250
ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVudFBy
b3ZpZGVyLnByb3RvdHlwZS5fc29ydGVkU2NyaXB0cy52YXIpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbmNhdGVuYXRlZFNjcmlwdHNDb250ZW50UHJvdmlkZXIucHJvdG90eXBlLl9zb3J0ZWRT
Y3JpcHRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVu
dFByb3ZpZGVyLnByb3RvdHlwZS5yZXF1ZXN0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29uY2F0ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92aWRlci5wcm90b3R5cGUuc2VhcmNoSW5D
b250ZW50Lm1heWJlQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbmNhdGVuYXRl
ZFNjcmlwdHNDb250ZW50UHJvdmlkZXIucHJvdG90eXBlLnNlYXJjaEluQ29udGVudC5zZWFyY2hD
YWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uY2F0ZW5hdGVkU2NyaXB0c0NvbnRl
bnRQcm92aWRlci5wcm90b3R5cGUuc2VhcmNoSW5Db250ZW50KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZS5fY29uY2F0
ZW5hdGVTY3JpcHRzQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3Jp
cHQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZS5yZXF1ZXN0U291
cmNlLmRpZEdldFNjcmlwdFNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0LnBy
b3RvdHlwZS5yZXF1ZXN0U291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHQucHJv
dG90eXBlLnNlYXJjaEluQ29udGVudCk6CisKIDIwMTEtMTAtMDMgIERhdmlkIEh5YXR0ICA8aHlh
dHRAYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02OTMxNwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4
IDk2ZjFmM2ZmMjY5YjY5MDZlYzQ3NWFhMjcxYzE2YjE3MjY2YjhmODYuLjg4YjllOTllOTdkYzMz
OWRhYWNkMGEwNGMwMDc4ZjllZjlkZjQ3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb24KQEAgLTE3NzIsNiArMTc3MiwxNyBAQAogICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJSZXN1bWVzIEphdmFTY3JpcHQgZXhlY3V0aW9uLiIKICAgICAgICAgICAgIH0s
CiAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAic2VhcmNoSW5Db250ZW50
IiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJzY3JpcHRJZCIsICIkcmVmIjogIlNjcmlwdElkIiwgImRlc2NyaXB0aW9uIjog
IklkIG9mIHRoZSBzY3JpcHQgdG8gc2VhcmNoIGluLiIgfSwKKyAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJxdWVyeSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJTdHJp
bmcgdG8gc2VhcmNoIGZvci4iICB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAg
ICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXN1bHQiLCAi
dHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiUGFnZS5TZWFyY2hNYXRjaCIgfSwg
ImRlc2NyaXB0aW9uIjogIkxpc3Qgb2Ygc2VhcmNoIG1hdGNoZXMuIiB9CisgICAgICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2VhcmNoZXMgZm9yIGdpdmVu
IHN0cmluZyBpbiBzY3JpcHQgY29udGVudC4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICJuYW1lIjogInNldFNjcmlwdFNvdXJjZSIsCiAgICAgICAgICAg
ICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2Ny
aXB0SWQiLCAiJHJlZiI6ICJTY3JpcHRJZCIsICJkZXNjcmlwdGlvbiI6ICJJZCBvZiB0aGUgc2Ny
aXB0IHRvIGVkaXQuIiB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDBiMjEyMGRiYTgwYWU3ZjI5MmUzMjhmZWM1NzQz
YjMzMTllODEyOWQuLjNkNzEyMGE1NTg1NjY4YzhiZGNiZTBlMTZhN2M5NGJjMmQxYjRmYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmgiCiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElOU1BFQ1RP
UikKKyNpbmNsdWRlICJDb250ZW50U2VhcmNoVXRpbHMuaCIKICNpbmNsdWRlICJJbmplY3RlZFNj
cmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogI2luY2x1ZGUgIklu
c3BlY3RvckZyb250ZW5kLmgiCkBAIC0zMjAsNiArMzIxLDE1IEBAIHN0YXRpYyBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gc2NyaXB0VG9JbnNwZWN0b3JPYmplY3QoU2NyaXB0T2JqZWN0IHNj
cmlwdE9iCiAgICAgcmV0dXJuIHZhbHVlLT5hc09iamVjdCgpOwogfQogCit2b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OnNlYXJjaEluQ29udGVudChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0
IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4qIHJlc3VsdHMpCit7CisgICAgU2NyaXB0c01hcDo6aXRlcmF0b3IgaXQgPSBtX3Njcmlw
dHMuZmluZChzY3JpcHRJZCk7CisgICAgaWYgKGl0ICE9IG1fc2NyaXB0cy5lbmQoKSkKKyAgICAg
ICAgKnJlc3VsdHMgPSBDb250ZW50U2VhcmNoVXRpbHM6OnNlYXJjaEluVGV4dEJ5TGluZXMocXVl
cnksIGl0LT5zZWNvbmQuc291cmNlKTsKKyAgICBlbHNlCisgICAgICAgICplcnJvciA9ICJObyBz
Y3JpcHQgZm9yIGlkOiAiICsgc2NyaXB0SWQ7Cit9CisKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6c2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBz
Y3JpcHRJZCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBjb25zdCBib29sKiBjb25zdCBwcmV2
aWV3LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBuZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiogcmVzdWx0KQogewogICAgIGJvb2wgcHJldmlld09ubHkgPSBwcmV2aWV3ICYm
ICpwcmV2aWV3OwpAQCAtMzMyLDkgKzM0MiwxMyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OnNldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgcwog
ICAgICAgICAqcmVzdWx0ID0gb2JqZWN0OwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmdldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQs
IFN0cmluZyogc2NyaXB0U291cmNlKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRT
Y3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBT
dHJpbmcqIHNjcmlwdFNvdXJjZSkKIHsKLSAgICAqc2NyaXB0U291cmNlID0gbV9zY3JpcHRzLmdl
dChzY3JpcHRJZCkuc291cmNlOworICAgIFNjcmlwdHNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zY3Jp
cHRzLmZpbmQoc2NyaXB0SWQpOworICAgIGlmIChpdCAhPSBtX3NjcmlwdHMuZW5kKCkpCisgICAg
ICAgICpzY3JpcHRTb3VyY2UgPSBpdC0+c2Vjb25kLnNvdXJjZTsKKyAgICBlbHNlCisgICAgICAg
ICplcnJvciA9ICJObyBzY3JpcHQgZm9yIGlkOiAiICsgc2NyaXB0SWQ7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChjb25zdCBT
dHJpbmcmIGJyZWFrUmVhc29uLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmlu
ZGV4IDE4NWFhYjgyZWVkNTBmMmQ3NGFjYTU1YTQ0ZWRkZTZiOWYxM2E1NjMuLjczYjI3NTRlMjhh
MzE3ZDllNmE5ZDNhNGRlMzc0NzY3ZDEwZjhjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtODEsNiArODEsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZW1vdmVCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBicmVha3BvaW50SWQpOwogICAgIHZvaWQgY29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5n
KiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGxvY2F0aW9uKTsKIAorICAgIHZvaWQgc2Vh
cmNoSW5Db250ZW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgY29uc3Qg
U3RyaW5nJiBxdWVyeSwgUmVmUHRyPEluc3BlY3RvckFycmF5PiopOwogICAgIHZvaWQgc2V0U2Ny
aXB0U291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgY29uc3QgU3Ry
aW5nJiBuZXdDb250ZW50LCBjb25zdCBib29sKiBjb25zdCBwcmV2aWV3LCBSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+KiBuZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0
KTsKICAgICB2b2lkIGdldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
c2NyaXB0SWQsIFN0cmluZyogc2NyaXB0U291cmNlKTsKICAgICB2b2lkIHNjaGVkdWxlUGF1c2VP
bk5leHRTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJiBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Db250ZW50UHJvdmlkZXJzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Db250ZW50UHJvdmlkZXJzLmpzCmluZGV4IDc3ODZjYmU0ZTk5ZTcwYWY0NjQ3
M2ZiYTM0MmQ1ZDJmNWFhYjA1ODguLmEzNDY4ZWY1YmQyYWYyMzUxMWRjYmJmNTI5ZmViMTNlNjdm
OTc5ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29u
dGVudFByb3ZpZGVycy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0NvbnRlbnRQcm92aWRlcnMuanMKQEAgLTUwLDcgKzUwLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlw
dENvbnRlbnRQcm92aWRlci5wcm90b3R5cGUgPSB7CiAKICAgICBzZWFyY2hJbkNvbnRlbnQ6IGZ1
bmN0aW9uKHF1ZXJ5LCBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGNhbGxiYWNrKFtdKTsKKyAg
ICAgICAgdGhpcy5fc2NyaXB0LnNlYXJjaEluQ29udGVudChxdWVyeSwgY2FsbGJhY2spOwogICAg
IH0KIH0KIApAQCAtNjcsNjUgKzY3LDEwOCBAQCBXZWJJbnNwZWN0b3IuQ29uY2F0ZW5hdGVkU2Ny
aXB0c0NvbnRlbnRQcm92aWRlciA9IGZ1bmN0aW9uKHNjcmlwdHMpCiB9OwogCiBXZWJJbnNwZWN0
b3IuQ29uY2F0ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92aWRlci5wcm90b3R5cGUgPSB7Ci0gICBy
ZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oY2FsbGJhY2spCi0gICB7Ci0gICAgICAgdmFyIHNjcmlw
dHMgPSB0aGlzLl9zY3JpcHRzLnNsaWNlKCk7Ci0gICAgICAgc2NyaXB0cy5zb3J0KGZ1bmN0aW9u
KHgsIHkpIHsgcmV0dXJuIHgubGluZU9mZnNldCAtIHkubGluZU9mZnNldCB8fCB4LmNvbHVtbk9m
ZnNldCAtIHkuY29sdW1uT2Zmc2V0OyB9KTsKLSAgICAgICB2YXIgc291cmNlcyA9IFtdOwotICAg
ICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RTb3VyY2Uoc291cmNlKQotICAgICAgIHsKLSAgICAgICAg
ICAgc291cmNlcy5wdXNoKHNvdXJjZSk7Ci0gICAgICAgICAgIGlmIChzb3VyY2VzLmxlbmd0aCA9
PSBzY3JpcHRzLmxlbmd0aCkKLSAgICAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX21pbWVUeXBl
LCB0aGlzLl9jb25jYXRlbmF0ZVNjcmlwdHNDb250ZW50KHNjcmlwdHMsIHNvdXJjZXMpKTsKLSAg
ICAgICB9Ci0gICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsgKytpKQot
ICAgICAgICAgICBzY3JpcHRzW2ldLnJlcXVlc3RTb3VyY2UoZGlkUmVxdWVzdFNvdXJjZS5iaW5k
KHRoaXMpKTsKLSAgIH0sCisgICAgX3NvcnRlZFNjcmlwdHM6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIGlmICh0aGlzLl9zb3J0ZWRTY3JpcHRzQXJyYXkpCisgICAgICAgICAgICByZXR1cm4g
dGhpcy5fc29ydGVkU2NyaXB0c0FycmF5OworCisgICAgICAgIHRoaXMuX3NvcnRlZFNjcmlwdHNB
cnJheSA9IFtdOworICAgICAgICAKKyAgICAgICAgdmFyIHNjcmlwdHMgPSB0aGlzLl9zY3JpcHRz
LnNsaWNlKCk7CisgICAgICAgIHNjcmlwdHMuc29ydChmdW5jdGlvbih4LCB5KSB7IHJldHVybiB4
LmxpbmVPZmZzZXQgLSB5LmxpbmVPZmZzZXQgfHwgeC5jb2x1bW5PZmZzZXQgLSB5LmNvbHVtbk9m
ZnNldDsgfSk7CisgICAgICAgIAorICAgICAgICB2YXIgc2NyaXB0T3BlblRhZ0xlbmd0aCA9ICI8
c2NyaXB0PiIubGVuZ3RoOworICAgICAgICB2YXIgc2NyaXB0Q2xvc2VUYWdMZW5ndGggPSAiPC9z
Y3JpcHQ+Ii5sZW5ndGg7CisgICAgICAgIAorICAgICAgICB0aGlzLl9zb3J0ZWRTY3JpcHRzQXJy
YXkucHVzaChzY3JpcHRzWzBdKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzY3JpcHRz
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgcHJldmlvdXNTY3JpcHQgPSB0aGlzLl9z
b3J0ZWRTY3JpcHRzQXJyYXlbdGhpcy5fc29ydGVkU2NyaXB0c0FycmF5Lmxlbmd0aCAtIDFdOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgbGluZU51bWJlciA9IHByZXZpb3VzU2NyaXB0
LmVuZExpbmU7CisgICAgICAgICAgICB2YXIgY29sdW1uTnVtYmVyID0gcHJldmlvdXNTY3JpcHQu
ZW5kQ29sdW1uICsgc2NyaXB0Q2xvc2VUYWdMZW5ndGggKyBzY3JpcHRPcGVuVGFnTGVuZ3RoOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobGluZU51bWJlciA8IHNjcmlwdHNbaV0ubGlu
ZU9mZnNldCB8fCAobGluZU51bWJlciA9PT0gc2NyaXB0c1tpXS5saW5lT2Zmc2V0ICYmIGNvbHVt
bk51bWJlciA8PSBzY3JpcHRzW2ldLmNvbHVtbk9mZnNldCkpCisgICAgICAgICAgICAgICAgdGhp
cy5fc29ydGVkU2NyaXB0c0FycmF5LnB1c2goc2NyaXB0c1tpXSk7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHRoaXMuX3NvcnRlZFNjcmlwdHNBcnJheTsKKyAgICB9LAorCisgICAgcmVxdWVz
dENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFyIHNjcmlwdHMg
PSB0aGlzLl9zb3J0ZWRTY3JpcHRzKCk7CisgICAgICAgIHZhciBzb3VyY2VzID0gW107CisgICAg
ICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RTb3VyY2Uoc291cmNlKQorICAgICAgICB7CisgICAgICAg
ICAgICBzb3VyY2VzLnB1c2goc291cmNlKTsKKyAgICAgICAgICAgIGlmIChzb3VyY2VzLmxlbmd0
aCA9PSBzY3JpcHRzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9taW1l
VHlwZSwgdGhpcy5fY29uY2F0ZW5hdGVTY3JpcHRzQ29udGVudChzY3JpcHRzLCBzb3VyY2VzKSk7
CisgICAgICAgIH0KKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsg
KytpKQorICAgICAgICAgICAgc2NyaXB0c1tpXS5yZXF1ZXN0U291cmNlKGRpZFJlcXVlc3RTb3Vy
Y2UuYmluZCh0aGlzKSk7CisgICAgfSwKIAogICAgIHNlYXJjaEluQ29udGVudDogZnVuY3Rpb24o
cXVlcnksIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgY2FsbGJhY2soW10pOworICAgICAgICB2
YXIgcmVzdWx0cyA9IHt9OworICAgICAgICB2YXIgc2NyaXB0cyA9IHRoaXMuX3NvcnRlZFNjcmlw
dHMoKTsKKyAgICAgICAgdmFyIHNjcmlwdHNMZWZ0ID0gc2NyaXB0cy5sZW5ndGg7CisKKyAgICAg
ICAgZnVuY3Rpb24gbWF5YmVDYWxsYmFjaygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChz
Y3JpcHRzTGVmdCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHZhciBy
ZXN1bHQgPSBbXTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5n
dGg7ICsraSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KHJlc3VsdHNb
c2NyaXB0c1tpXS5zY3JpcHRJZF0pOworICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNlYXJjaENhbGxiYWNrKHNjcmlwdCwgc2VhcmNo
TWF0Y2hlcykKKyAgICAgICAgeworICAgICAgICAgICAgcmVzdWx0c1tzY3JpcHQuc2NyaXB0SWRd
ID0gW107CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlYXJjaE1hdGNoZXMubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICB2YXIgc2VhcmNoTWF0Y2ggPSB7fTsKKyAgICAg
ICAgICAgICAgICBzZWFyY2hNYXRjaC5saW5lTnVtYmVyID0gc2VhcmNoTWF0Y2hlc1tpXS5saW5l
TnVtYmVyICsgc2NyaXB0LmxpbmVPZmZzZXQ7CisgICAgICAgICAgICAgICAgc2VhcmNoTWF0Y2gu
bGluZUNvbnRlbnQgPSBzZWFyY2hNYXRjaGVzW2ldLmxpbmVDb250ZW50OworICAgICAgICAgICAg
ICAgIHJlc3VsdHNbc2NyaXB0LnNjcmlwdElkXS5wdXNoKHNlYXJjaE1hdGNoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHNjcmlwdHNMZWZ0LS07CisgICAgICAgICAgICBtYXliZUNhbGxi
YWNrLmNhbGwodGhpcyk7CisgICAgICAgIH0KKworICAgICAgICBtYXliZUNhbGxiYWNrKCk7Cisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7ICsraSkKKyAgICAgICAg
ICAgIHNjcmlwdHNbaV0uc2VhcmNoSW5Db250ZW50KHF1ZXJ5LCBzZWFyY2hDYWxsYmFjay5iaW5k
KHRoaXMsIHNjcmlwdHNbaV0pKTsKICAgICB9LAogCi0gICBfY29uY2F0ZW5hdGVTY3JpcHRzQ29u
dGVudDogZnVuY3Rpb24oc2NyaXB0cywgc291cmNlcykKLSAgIHsKLSAgICAgICB2YXIgY29udGVu
dCA9ICIiOwotICAgICAgIHZhciBsaW5lTnVtYmVyID0gMDsKLSAgICAgICB2YXIgY29sdW1uTnVt
YmVyID0gMDsKLQotICAgICAgIGZ1bmN0aW9uIGFwcGVuZENodW5rKGNodW5rKQotICAgICAgIHsK
LSAgICAgICAgICAgY29udGVudCArPSBjaHVuazsKLSAgICAgICAgICAgdmFyIGxpbmVFbmRpbmdz
ID0gY2h1bmsubGluZUVuZGluZ3MoKTsKLSAgICAgICAgICAgdmFyIGxpbmVDb3VudCA9IGxpbmVF
bmRpbmdzLmxlbmd0aDsKLSAgICAgICAgICAgaWYgKGxpbmVDb3VudCA9PT0gMSkKLSAgICAgICAg
ICAgICAgIGNvbHVtbk51bWJlciArPSBjaHVuay5sZW5ndGg7Ci0gICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgbGluZU51bWJlciArPSBsaW5lQ291bnQgLSAxOwotICAgICAgICAgICAg
ICAgY29sdW1uTnVtYmVyID0gbGluZUVuZGluZ3NbbGluZUNvdW50IC0gMV0gLSBsaW5lRW5kaW5n
c1tsaW5lQ291bnQgLSAyXSAtIDE7Ci0gICAgICAgICAgIH0KLSAgICAgICB9Ci0KLSAgICAgICB2
YXIgc2NyaXB0T3BlblRhZyA9ICI8c2NyaXB0PiI7Ci0gICAgICAgdmFyIHNjcmlwdENsb3NlVGFn
ID0gIjwvc2NyaXB0PiI7Ci0gICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0
aDsgKytpKSB7Ci0gICAgICAgICAgIGlmIChsaW5lTnVtYmVyID4gc2NyaXB0c1tpXS5saW5lT2Zm
c2V0IHx8IChsaW5lTnVtYmVyID09PSBzY3JpcHRzW2ldLmxpbmVPZmZzZXQgJiYgY29sdW1uTnVt
YmVyID4gc2NyaXB0c1tpXS5jb2x1bW5PZmZzZXQgLSBzY3JpcHRPcGVuVGFnLmxlbmd0aCkpCi0g
ICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAvLyBGaWxsIHRoZSBnYXAgd2l0
aCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMuCi0gICAgICAgICAgIHdoaWxlIChsaW5lTnVtYmVyIDwg
c2NyaXB0c1tpXS5saW5lT2Zmc2V0KQotICAgICAgICAgICAgICAgYXBwZW5kQ2h1bmsoIlxuIik7
Ci0gICAgICAgICAgIHdoaWxlIChjb2x1bW5OdW1iZXIgPCBzY3JpcHRzW2ldLmNvbHVtbk9mZnNl
dCAtIHNjcmlwdE9wZW5UYWcubGVuZ3RoKQotICAgICAgICAgICAgICAgYXBwZW5kQ2h1bmsoIiAi
KTsKLQotICAgICAgICAgICAvLyBBZGQgc2NyaXB0IHRhZy4KLSAgICAgICAgICAgYXBwZW5kQ2h1
bmsoc2NyaXB0T3BlblRhZyk7Ci0gICAgICAgICAgIGFwcGVuZENodW5rKHNvdXJjZXNbaV0pOwot
ICAgICAgICAgICBhcHBlbmRDaHVuayhzY3JpcHRDbG9zZVRhZyk7Ci0gICAgICAgfQotCi0gICAg
ICAgcmV0dXJuIGNvbnRlbnQ7Ci0gICB9CisgICAgX2NvbmNhdGVuYXRlU2NyaXB0c0NvbnRlbnQ6
IGZ1bmN0aW9uKHNjcmlwdHMsIHNvdXJjZXMpCisgICAgeworICAgICAgICB2YXIgY29udGVudCA9
ICIiOworICAgICAgICB2YXIgbGluZU51bWJlciA9IDA7CisgICAgICAgIHZhciBjb2x1bW5OdW1i
ZXIgPSAwOworCisgICAgICAgIHZhciBzY3JpcHRPcGVuVGFnID0gIjxzY3JpcHQ+IjsKKyAgICAg
ICAgdmFyIHNjcmlwdENsb3NlVGFnID0gIjwvc2NyaXB0PiI7CisgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgLy8gRmlsbCB0aGUg
Z2FwIHdpdGggd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgorICAgICAgICAgICAgZm9yICh2YXIgbmV3
TGluZXNDb3VudCA9IHNjcmlwdHNbaV0ubGluZU9mZnNldCAtIGxpbmVOdW1iZXI7IG5ld0xpbmVz
Q291bnQgPiAwOyAtLW5ld0xpbmVzQ291bnQpIHsKKyAgICAgICAgICAgICAgICBjb2x1bW5OdW1i
ZXIgPSAwOworICAgICAgICAgICAgICAgIGNvbnRlbnQgKz0gIlxuIjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGZvciAodmFyIHNwYWNlc0NvdW50ID0gc2NyaXB0c1tpXS5jb2x1bW5PZmZz
ZXQgLSBjb2x1bW5OdW1iZXIgLSBzY3JpcHRPcGVuVGFnLmxlbmd0aDsgc3BhY2VzQ291bnQgPiAw
OyAtLXNwYWNlc0NvdW50KQorICAgICAgICAgICAgICAgIGNvbnRlbnQgKz0gIiAiOworCisgICAg
ICAgICAgICAvLyBBZGQgc2NyaXB0IHRhZy4KKyAgICAgICAgICAgIGNvbnRlbnQgKz0gc2NyaXB0
T3BlblRhZzsKKyAgICAgICAgICAgIGNvbnRlbnQgKz0gc291cmNlc1tpXTsKKyAgICAgICAgICAg
IGNvbnRlbnQgKz0gc2NyaXB0Q2xvc2VUYWc7CisgICAgICAgICAgICBsaW5lTnVtYmVyID0gc2Ny
aXB0c1tpXS5lbmRMaW5lOworICAgICAgICAgICAgY29sdW1uTnVtYmVyID0gc2NyaXB0c1tpXS5l
bmRDb2x1bW4gKyBzY3JpcHRDbG9zZVRhZy5sZW5ndGg7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gY29udGVudDsKKyAgICB9CiB9CiAKIFdlYkluc3BlY3Rvci5Db25jYXRlbmF0ZWRTY3Jp
cHRzQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQ29u
dGVudFByb3ZpZGVyLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TY3JpcHQuanMKaW5kZXggYjM2ZTA3YTRlMjljNDc0NWU2MmNhNGM2YjAwNjE2M2RjMTgw
YzY4Zi4uOGU4NTdmYWM1YmRiNzFkOGRkNGVlYjdlMmY4YzI3MGI1MWEyZjhkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanMKQEAgLTQ5LDEyICs0OSwy
NCBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBmdW5jdGlv
biBkaWRHZXRTY3JpcHRTb3VyY2UoZXJyb3IsIHNvdXJjZSkKICAgICAgICAgewotICAgICAgICAg
ICAgdGhpcy5fc291cmNlID0gc291cmNlOworICAgICAgICAgICAgdGhpcy5fc291cmNlID0gZXJy
b3IgPyAiIiA6IHNvdXJjZTsKICAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX3NvdXJjZSk7CiAg
ICAgICAgIH0KICAgICAgICAgRGVidWdnZXJBZ2VudC5nZXRTY3JpcHRTb3VyY2UodGhpcy5zY3Jp
cHRJZCwgZGlkR2V0U2NyaXB0U291cmNlLmJpbmQodGhpcykpOwogICAgIH0sCiAKKyAgICBzZWFy
Y2hJbkNvbnRlbnQ6IGZ1bmN0aW9uKHF1ZXJ5LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGZ1
bmN0aW9uIGlubmVyQ2FsbGJhY2soZXJyb3IsIHNlYXJjaE1hdGNoZXMpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9y
KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHNlYXJjaE1hdGNoZXMgfHwgW10pOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBEZWJ1Z2dlckFnZW50LnNlYXJjaEluQ29udGVudCh0aGlzLnNj
cmlwdElkLCBxdWVyeSwgaW5uZXJDYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICB9LAorICAgIAog
ICAgIGVkaXRTb3VyY2U6IGZ1bmN0aW9uKG5ld1NvdXJjZSwgY2FsbGJhY2spCiAgICAgewogICAg
ICAgICBmdW5jdGlvbiBkaWRFZGl0U2NyaXB0U291cmNlKGVycm9yLCBjYWxsRnJhbWVzKQo=
</data>
<flag name="review"
          id="106945"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>